天天看点

我的oracle 9i学习日志(6)--Starting Up and shutting down a Database

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里的内容不会写入磁盘;下次启动会自动执行数据库恢复程序。

本文转自 d185740815 51CTO博客,原文链接:http://blog.51cto.com/luotaoyang/280377,如需转载请自行联系原作者