Starting Up a Database
1、NOMOUNT
这个状态下oracle server完成下列任务:
a.读取初始化参数文件;
b.为SGA分配内存;
c.启动后台进程;
d.打开alertSID.log文件和跟踪文件
数据库必须被命名,即初始化文件或在startup命令里指定DB_NAME的值。
2、MOUNT
关联一个数据库与在nomount启动的instance;定位并打开按参数文件指定的control files;读取数据文件和重做日志文件的名字和状态。但在这个阶段不会确认数据文件和重做日志文件的存在。
在这个阶段只能做一些指定数据库维护工作,如:重命名数据文件、开启或关闭归档模式、数据恢复(这些操作只能在此状态下做)。
3、OPEN
打开数据库文件和重做日志文件。这时数据库就可以被正常访问。这个阶段会确认相关文件能否被打开和数据库记录的一致性,否则会报错。如果有必要SMON将开始恢复工作。
4、STARTUP Command
STARTUP [FORCE] [RESTRICT] [PFILE=filename][OPEN[RECOVER][database]|MOUNT|NOMOUNT]
force:强制启动或关闭(相当于执行shutdown abort)正在运行的instance,并重新启动。常在数据库无法正常启动(可能是由于上次关闭instance后内存空间分配不正常所致)的情况下使用。?
restrict:只允许有RESTRICTED SESSION特权的用户访问
pfile:指定启动的pfile文件。
open recover db0:启动时恢复数据。
nomount/mount:启动数据库至nomount或mount状态。
5、将数据库从nomount状态转变成mount状态或从mount状态转变为open状态:ALTER DATABASE { MOUNT | OPEN }。注意:不能从nomount状态直接转变为open状态,启动顺序只能是这样:shutdown->nomount->mount->open->shutdown。
6、Restricted Mode
在限制模式下,只有拥有限制会话特权的用户可以登录。
进入限制模式有两种方式:STARTUP RESTRICT 或 ALTER SYSTEM ENABLE RESTRICTED SESSION;
启用或禁用restrict模式:ALTER SYSTEM [ {ENABLE|DISABLE} RESTRICTED SESSION ]。
7、终止一个会话
用于在将数据库置于restrict模式下时可能要终止其他用户的会话,或管理员主动终止某个用户的会话。
ALTER SYSTEM KILL SESSION 'integer1,integer2'
? integer1: Value of the SID column in the V$SESSION view
? integer2: Value of the SERIAL# column in the V$SESSION view
终止会话过程:
a.回滚用户当前事务
b.释放当前锁定的表或行
c.释放保留给客户的资源
8、只读模式
在mount状态下用下面命令可以切换到只读模式:
ALTER DATABASE OPEN READ ONLY;
在mount状态下用下面命令可以切换到一般模式:
ALTER DATABASE OPEN READ WRITE;
只读模式只是不产生redo log file,所以只要不涉及产生重做数据的操作都可以做,如:数据库恢复、数据库文件的offline和online 等。
注意:只读模式和一般模式不能互相切换。
问题:
SQL> alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-16005: database requires recovery
ALTER DATABASE OPEN [READ WRITE| READ ONLY]
解决方案:SQL> startup open recover lty(数据库名字)
Shutting Down the Database
注:A = ABORT I = IMMEDIATE T = TRANSACTIONAL N = NORMAL
命令:SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]
shutdown normal:不建立新连接;将redo buffers里的内容写入磁盘;关闭instance前必须所有等待用户主动断开连接;
查看未提交的事务:
SQL> select addr,status from v$transaction;
ADDR STATUS
-------- ----------------
59AF4CF4 ACTIVE
shutdown immediate:不建立新连接;中断正在执行的sql语句;回滚未提交的事务;断开在线用户;将redo buffers里的内容写入磁盘;关闭instance。
shutdown transactional:不建立新连接;客户端无法发起新的事务;客户端事务处理完成后断开客户端连接;将redo buffers里的内容写入磁盘;关闭instance。
shutdown abort:立即关闭instance;redo buffers里的内容不会写入磁盘;下次启动会自动执行数据库恢复程序。