Oracle 原理: 11g的启动和关闭

1.Oracle 11g启动中,读取参数文件的顺序。

9i之前,只有静态参数文件pfile,9i开始有了动态参数文件spfile,优先使用动态参数文件。查找参数文件路径可以在sql_plus查看: show param pfile;

11g启动数据库,Oracle先查找spfileSID.ora再找spfile.ora之后找initSID.ora、最后找init.ora。其中的SID是服务名,也叫Oracle系统标识符。如果这四个文件都不存在则数据库无法正常启动。

 

2.Oracle 11g中的四种状态。

   Oracle由数据库和实例组成。Oracle有四种状态:ShutDown 状态,数据库关闭状态;NoMount状态,实例启动状态,先读参数文件,分配了物理内存,启动了后台进程后状态;Mount状态,数据库装载完成,此状态在nomount状态之后还打开了控制文件,但用户表无法读取;Open 状态,数据库被打开,可以读用户表了。

  shutdown immediate可以把数据库关闭,变成shutdown状态,关闭状态时可以执行 startup nomount 来启动实例;可以从上图看出,关闭数据库的顺序开启数据库的顺序刚好相反,先关闭数据库 再卸载数据库 再关闭实例。

 启动实例时,会分配好物理内存和后台进程,由上图可以看出,SGA在此时已经分配完毕了,SGA包含了共享池,数据缓冲区、日志缓冲区等。而上面的例程指的就是实例,实例包含了SGA和后台进程。此时实例已经启动,可以查询v$bgprocess,和v$instance 表。可以执行 alter database mount;来装载数据库。

装载数据库完后,变成mount状态。这个过程主要装载的是控制文件,控制文件的内容主要就是数据库的物理结构。可以查看v$controlfile来查看控制文件信息了还可以查看v$database、v$tablespace、v$datafile;但是,此状态并没有装载数据文件,也就是查询用户表还无法做到。alter database open 打开数据库。打开数据库后就可以访问用户表了。

数据库启动命令:

startup [nomount|mount|open|force] [restrict] [pfile=filename];  只写一个startup就是直接开启数据库。

force 是强制的意思,startup force 不管数据库在什么状态,都会强制重启数据库到OPEN状态。 startup restrict 把数据库变成open状态,但是只有RESTRICTED SESSION 的权限用户才有资格登录。

 pfile 是静态参数文件: create pfile=‘[地址]’ from spfile;

可以到指定的路径打开自己的pfile。前缀orcl的参数只对orcl实例起作用,前缀为*的参数对所有实例起作用。在这里面,可以看见JAVA池大小,SGA大小,数据块大小为8192,数据库恢复文件的位置,控制文件位置等参数信息。

数据库关闭的方式有四种: shutdown Normal | TRANSACTIONAL | IMMEDIATE | ABORT ;

其中,normal 方式: 不允许新用户进行连接,等待已连接的所有用户自行断开连接后,再关闭数据库。

transactional 方式: 不允许新用户进行连接,等待已连接的用户做完自己的所有事务后,再关闭数据库

Immediate 方式:不允许新用户进行连接,Oracle回滚正在连接的用户的事务,全回滚完后关闭数据库

obort 方式: 直接收回内存和后台进程。和直接关机一样,此做法坏处多,不得已时不要用这个,可能会造成内存损坏。下次重启时会Oracle会进行比较漫长的数据库恢复。这个方式属于数据不正常关闭。