AG阅读总结5.1——实例启动与关闭

1、启动数据库:

1,、数据库启动的方式:一般有三种方式可以启动数据库,sqlplus,recovery  manager(传说中的RMAN),enterprise manager(传说中的EM)。

2、理解初始化参数:初始化参数是干嘛的?其实,就是数据库实例的配置参数,当你运行statup命令的时候,数据库就会去找指定路径下的spfile(首先找spfile$oracle_sid.ora),如果没有找到再去找spfile.ora,这样的话对于rac来说,所有的是例都是根据同一个参数文件启动的,如果连这个都没有找到,那数据库就去找init$oracle_sid.ora..

对于linux,这个文件的默认路径是$ORACLE_HOME/dbs;

对于windows这个目录是%ORACLE_HOME%\database。

3、如何启动一个非默认初始化参数:我们知道,非默认的初始化参数肯定不在默认的路径里,我们的数据库会去默认路径找参数,怎么办呢?很简单,在默认路径下的默认初始参数里面加上非默认初始参数的文件路径就ok了。比如有这样一个默认的数据文件:spfilemydb.ora 我们可以在里面只加上一句话:spfile=/u01/oreacle/dbs/test_spfile.ora.

4、初始化参数和自动存储管理(ASM):dbca创建一个asm方式管理的数据库的时候,会把初始化参数创建在asm磁盘组,然后会在默认的路径下的参数写一行指向这个磁盘组的文件,跟3一样的。

5、数据库实例启动前的准备:环境变量正确——sqlplus /nolog——conn /as sysdba.到这一步,你已经连接了数据库,并准备启动一个实例。

6、启动并挂载,但是不打开数据库:STARTUP MOUNT.这个操作一般没见过,但是还是很有用的一般在如下方面会用到。(如果之前执行了startup nomount命令,现在就是nomount阶段,可以用命令:ALTER
DATABASE MOUNT。如果之前是是mount但是没有打开数据库,你可以执行如下语句:ALTER DATABASE OPNE)

启动和关闭redo log 的归档模式

执行整个数据库的复原操作

7、以限制模式打开一个实例:STARTUP RESTRICT .只允许本地的管理用户登录,不允许普通用户登录,一般用在如下场景:

执行导入导出数据;

执行一个data load;

执行特定的数据迁移或者数据库升级。

8、完全介质恢复模式启动:如果你知道有一个介质恢复需要去做,当打开一个数据库的时候,可以让恢复进程一起启动运行,命令:STARTUP OPEN RECOVER.

9、只读模式打开数据库:在这种模式下,数据文件和redo log 文件是不能写入的,你可以执行的操作是数据库恢复和改变数据库的状态等操作。并且这里此操作不生成redo 日志。命令:ALTER DATABASE OPEN READ ONLY;默认情况下打开数据库是用的这句(ALTER
DATABASE OPEN READ WRITE)

2、关闭数据库:

1、shutdown normal:如果shutdown不加后面的子句,默认就是这个,一旦执行了这个语句:

不允许新的connections。        等待所有当前连接的用户断开连接。

这就有个问题了,万一某个用户一直不断开,那这个语句就挂在这不动了。。。。所以一般不推荐使用这个语句。

2、shutdown immediate:

不允许新的connections,也不允许新的事物再开始。     

 任何没有提交的事务都要回滚,如果一个事务很长,这个关闭命令也会等待他回滚完成之后在关闭,所以有时候这个关闭也会等待很长的事务回滚的时间    

等待所有当前连接的用户断开连接。

不会等待当前连接的用户断开连接,隐式的回滚当前事务,并且立即断开连接

如果一切正常,再次启动数据库时不需要做任何的实例恢复工作。

3、shutdown transctional

不允许新的connections,也不允许新的事物再开始。   

所有的事务都完成,然后所有还跟实例连接的connections都断开。

到这个时候就像是在执行一个shutdown immediate。

4、shutdown abort:

不允许新的connections,也不允许新的事物再开始。   

当前正在执行的sql语句立即停止,没有完成的事务立即回滚,立即切断所有的连接。

关闭超时:

如果执行了一个关闭命令一个小时了,还没有反应,那数据库会报错,ORA-01013: user requested cancel of current operation  

静默状态的数据库:

只允许dba用户进行查询,获取,或者pl/sql等各种事务,不允许普通用户进行操作,这就是quiescing 。注意此时的dba只能是sys或者system的,不能是被授予了dba角色的普通用户。

静默状态和挂起状态是两种特殊的数据库状态。当数据库处于静默状态时,只有SYS和SYSTEM用户能够在数据库中进行操作。当数据库处于挂起状态时,数据库IO操作都被暂时停止。利用这两种数据库状态,DBA能够完成一些特殊的管理和维护操作。 

1:静默状态(quiesced state) 

在静默状态下,只有具有DBA权限的用户能够在数据库中执行查询/更新操作,运行PL/SQL程序,任何非DBA用户都不能在数据库中执行任何操作.如果DBA在非静默状态下执行某些操作时,必须排队等待其他用户的活动,这类操作包括如下两类:

1.某些操作在执行过程,如果有其他用户访问操作的对象,该操作将会失败.比如,当DBA正在为某个表添加一个新的字段时,如果有用户恰好正在使用这个表,添加字段的操作将失败.

2.某些操作在执行过程中产生的中间结果不应当被其他用户看到.比如,假设DBA要执行一项分为多个步骤的操作:首先导出一个表的数据,然后删除这个表,最后再重新导入数据建立新的表,以达到重建该表的目的.而如果有某个用户在删除表之后,重建表之前访问这个表,将会得到错误的结果.

如果没有静默功能,要保证成功完成上述类型的操作必须首先关闭数据库,然后再使用受限模式打开数据库.这样做的代价是很大的,尤其是在必须保证数据库不间断运行的环境中.而使用数据库进入静默状态可以快速达到相同的目的,但是却并不需要中断数据库的运行.处于静默状态时只允许SYS和SYSTEM两个DBA操作操作,其他用户即使被授予DBA角色或SYSDBA权限也不能够在静默状态的数据库中进行操作.因此,静默状态是比受限状态更为"干净"的状态.

SQL> alter system quiesce restricted; 

执行上面的语句后,数据库将等待所有正在运行的非DBA用户会话主动终止,同时不再允许开始任何新的非DBA用户会话。当所有的非DBA用户的活动会话都被成功暂停后,alter
system quiesce restricted语句执行完毕,这是数据库被认为处于静默状态。在静默状态中,即使某个非DBA用户试图执行一条SQL语句强行激活某个会话,该SQL语句也会挂起。当数据库从静默状态中恢复时,停止的会话将继续执行,前面被挂起的SQL语句也会继续执行。 

由于等待所有的非DBA用户会话都被终止可能会需要很长一段时间,在这个过程中如果执行alter
system语句的会话被意外中止,进入静默状态的操作将被撤销,已经暂停的会话将被恢复。 

SQL> alter system unquiesce; 

执行上面的语句将从静默状态恢复为正常状态。从静默状态恢复后,所有被暂停的会话和挂起的SQL语句将自动继续执行。可以通过使用动态性能视图V$INSTANCE来查询当前数据库是否处于静默状态。V$INSTANCE.ACTIVE_STATUS字段显示了数据库当前的活动状态: 

NORMAL正常状态QUIESCING正在进入静默状态(仍然存在活动的非DBA用户会话)
QUIESCED静默状态(已经没有活动的非DBA用户会话) 

备注:当数据库处于静默状态时,不能通过复制数据文件的方法来对数据库进行备份,因为静默状态中联机数据文件仍然处于读写状态。只能在数据库关闭状态或者挂起状态下才能对数据库物理文件进行复制操作。 

2:挂起状态 

SQL> ALTER SYSTEM SUSPEND;

上面的语句将数据库处于挂起状态,数据库所有的物理文件(控制文件/数据文件以及重做日志文件)的I/O操作都被暂停。这样能够保证数据库在没有任何I/O操作的情况下进行物理备份。挂起的状态与静默状态的区别是:它并不禁止非DBA用户的数据库操作,只是暂时停止所有用户的I/O操作。 

当数据库处于挂起状态时,可以首先为数据库创建磁盘镜像,然后再从镜像中分离出备份文件,这样就提供了一种进行数据库备份和恢复的替代方法。在数据库进入挂起状态时,当前所有的I/O操作能够继续进行,但是所有新提交的I/O不会执行,而是被放入一个等待队列中。一旦数据库恢复到正常状态,这些I/O操作将从队列中取出并继续执行。

在rac环境中,当你执行了这个alter system suspend操作,不会只挂起一个数据库,oracle内部的锁机制会传播这个命令到所有活动的节点实例上,挂起左右的实例,但是如果这个时候正好有人有start了一个实例,这个实例不会被挂起了。

SQL> ALTER SYSTEM RESUME;

这个针对挂起重新启用的语句,suspend和resume可以在rac上不同的实例执行,比如有3个实例分别为1,2,3我们再1上执行了alter system suspend ,对三个实例都挂起了,这时,我们可以在1,2,3上任何一个执行alter system resume。对三个实例进行恢复。

可以通过使用动态性能视图V$INSTANCE来查询当前数据库是否处于挂起状态。V$INSTANCE.DATABASE_STATUS字段显示了数据库当前的活动状态: 

SUSPENDED挂起状态ACTIVED正常状态(非挂起状态) 

SQL> ALTER SYSTEM SUSPEND;

System altered

SQL> SELECT DATABASE_STATUS FROM V$INSTANCE;

DATABASE_STATUS

---------

SUSPENDED 

SQL> ALTER SYSTEM RESUME;

System altered

SQL> SELECT DATABASE_STATUS FROM V$INSTANCE;

DATABASE_STATUS

---------

ACTIVE

时间: 2024-10-28 02:48:33

AG阅读总结5.1——实例启动与关闭的相关文章

AG阅读总结5.2——实例启动与关闭

转自一沙弥的世界的博文:原文地址:http://blog.csdn.net/robinson_0612/article/details/5542983     Oracle数据库实例的启动,严格来说应该是实例的启动,数据库仅仅是在实例启动后进行装载.Oracle数据启动的过程被划分为 几个不同的步骤,在不同的启动过程中,我们可以对其实现不同的操作,系统修复等等工作,因此了解Oracle数据启动.关闭是非常 有必要的.下面详细了Oracle Database 10g 数据库启动及关闭的过程.  

Activity配置、启动和关闭activity实例详解_Android

大家先看下效果图: Android为我们提供了四种应组件,分别为Activity.Service.Broadcast receivers和Content providers,这些组建也就是我们开发一个Android应用程序的基石.系统可以通过不同组建提供的切入点进入到开发的应用程序中.对用户来说不是所有的组建都是实际的切入点,但是他们之间都是相互依赖的,它们每一个作为存在的实体,扮演着特定的角色,作为独一无二的基石帮助开发者定义Android应用的行为.下面我将整理自己的Activity学习点滴

Activity配置、启动和关闭activity实例详解

大家先看下效果图: Android为我们提供了四种应组件,分别为Activity.Service.Broadcast receivers和Content providers,这些组建也就是我们开发一个Android应用程序的基石.系统可以通过不同组建提供的切入点进入到开发的应用程序中.对用户来说不是所有的组建都是实际的切入点,但是他们之间都是相互依赖的,它们每一个作为存在的实体,扮演着特定的角色,作为独一无二的基石帮助开发者定义Android应用的行为.下面我将整理自己的Activity学习点滴

Oracle数据库实例的启动和关闭过程

Oracle数据库实例的启动,严格来说应该是实例的启动,数据库仅仅是在实例启动后进行装载.Oracle数据启动的过程被划分为 几个不同的步骤,在不同的启动过程中,我们可以对其实现不同的操作,系统修复等等工作,因此了解Oracle数据启动.关闭是非常 有必要的.下面详细了Oracle Database 10g 数据库启动及关闭的过程. 一.数据库实例的启动 启动命令:starup [force][restrict] [pfile=...] [nomount] [mount] [open] 启动过程

Linux——oracle数据库实例启动关闭(转)

-->Oracle 数据库实例启动关闭过程 --================================       [root@robinson ~]# su - oracle     --查看未启动实例前的进程情况     [oracle@robinson ~]$ ps -aef |grep oracle     root      3332  3300  0 12:20 pts/1    00:00:00 su - oracle     oracle    3333  3332  

AG阅读总结2——用户登录

1.区分dba,sysdba ,sysoper三者区别: dba:只是一个角色.这个角色有个各种权限. sysdba:这个难于理解,但是我可以把它理解成 拥有特定权限的一个身份. 当我们执行这样一句话:conn scott/liu123 as sysdba.这时,scott用户以sysdba的身份登录数据库.非常值得注意的是,这时的用户是SYS. 我们可以执行 show user 来验证.其输出结果为 user is "SYS". sysoper:这也是一个拥有特定权限的一个身份,sc

Oracle 数据库实例启动关闭过程

--================================ -->Oracle 数据库实例启动关闭过程 --================================ /*     Oracle数据库实例的启动,严格来说应该是实例的启动,数据库仅仅是在实例启动后进行装载.Oracle数据启动的过程被划分为 几个不同的步骤,在不同的启动过程中,我们可以对其实现不同的操作,系统修复等等工作,因此了解Oracle数据启动.关闭是非常 有必要的.下面详细了Oracle Database

AG阅读总结7——跟踪文件总结

一.Oracle跟踪文件     Oracle跟踪文件分为三种类型,一种是后台报警日志文件,记录数据库在启动.关闭和运行期间后台进程的活动情况,如表空间创建.回滚段创建.某些alter命令.日志切换.错误消息等.在数据库出现故障时,应首先查看该文件,但文件中的信息与任何错误状态没有必然的联系. 后台报警日志文件保存BACKGROUND_DUMP_DEST参数指定的目录中,文件格式为 SIDALRT.LOG. 另一种类型是DBWR.LGWR.SMON等后台进程创建的后台跟踪文件.后台跟踪文件根据后

Oracle数据库的启动和关闭顺序实例讲解_oracle

 对于一个oracle数据库新手来说,怎么样进行管理oracle数据库呢? 首先从最简单的启动和关闭数据库来说,下面简单的介绍一下Oracle数据库的启动和关闭顺序实例讲解. 一.oralce的启动顺序: 1.先启动监听程序(对应端口1521) : []#lsnrctl start 2.启动oracle实例: []#sqlplus / as sysdba(回车) SQL>startup --启动的是环境变量中的默认数据库实例 $ORACLE_SID --如果启动多个实例:export ORACL