oracle数据库启动从nomount到open
oracle数据库启动过程中的3种状态:
■ nomount
■ mount
■ open
下面详细介绍oracle数据库从nomount到open的过程
在启动数据库前需要使用拥有sysdba或者sysoper系统特权的用户连接到数据库实例.启动或者
关闭数据库。
nomount:
1、查找初始化参数文件,如果没有找到,oracle数据库将不能被启动,这时候可以在startup
命令后面指定spfile,pfile来启动数据库.默认存在3个初始化参数文件,默认的位置在:
$oracle_home/dbs/spfilesid.ora //sid指的是实例名.
$oracle_home/dbs/spfile.ora
$oracle_home/dbs/initsid.ora
oracle将会按照上面的顺序,查找各初始化参数文件,如果排在前面的初始化参数文件已经
被找到那么oracle将忽略后面的初始化文件。以找到的第一个初始化参数文件启动oracle实例.如
果oracle没有找到初始化参数文件,实例将不会被构建,当然数据库也就不会被启动了。
说是说默认有3个初始换参数文件,但是你的数据库有几个就要眼见为实了。
[oracle@zeng ~]$ cd $ORACLE_HOME/dbs
[oracle@zeng dbs]$ ll
total 32
-rw-rw----. 1 oracle oinstall 1544 Feb 5 22:14 hc_DBUA0.dat
-rw-rw----. 1 oracle oinstall 1544 Feb 16 22:37 hc_oracle.dat
-rw-r--r--. 1 oracle oinstall 2851 Feb 16 23:15 init.ora
-rw-r-----. 1 oracle oinstall 24 Feb 5 22:28 lkORACLE
-rw-r-----. 1 oracle oinstall 1536 Feb 7 12:24 orapworacle
drwx------. 2 oracle oinstall 4096 Feb 5 22:14 peshm_DBUA0_0
drwx------. 2 oracle oinstall 4096 Feb 5 22:28 peshm_oracle_0
-rw-r-----. 1 oracle oinstall 2560 Feb 6 03:12 spfileoracle.ora
看,我的数据库中只存在两个初始化参数文件,分别是:
spfileoracle.ora(spfile)
init.ora(pfile)
命名也与默认的方式有些不一样。
spfile是二进制文件,不能用正常的方式,打开查看编辑。pfile是文本文件,可以用于
编辑产生spfile文件.
下面是pfile中的部分内容.
[oracle@zeng dbs]$ vi init.ora
###############################################################################
# Change '' to point to the oracle base (the one you specify at
# install time)
db_name='ORCL'
memory_target=1G
processes = 150
audit_file_dest='/admin/orcl/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='/flash_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest=''
dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
# You may want to ensure that control files are created on separate physical
# devices
control_files = (ora_control1, ora_control2)
compatible ='11.2.0'
2、读取初始化参数文件的内容,确定各项初始化参数的值。
3、依据初始化参数的值,构造SGA.
4、依据初始化参数的值,创建oracle后台进程.
5、打开alert log,trace files以正确的语法把启动过程中的详细参数设置写入alert log。
在momount阶段可以用于执行数据库创建,某些备份与恢复工作。
alert log是由参数background_dump_dest设定的,可以通过下面的方式来查看一下
SQL> show parameter background_dump_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest string /opt/oracle11g/diag/rdbms/orac
le/oracle/trace
alert log file和trace files是存储在trace文件夹内的.在实例启动过程中如果发现日志
文件不存在将会被创建,如果存在日志信息将会被添加在里面,如果启动过程中出现了什么
问题将会在相同的位置产生trace files。alert log文件是文本文件,一般格式是:alert_sid.log
该文件会随着实例启动与运行容量不断增大,你可以选择删除该文件,在数据库运行过程中
也可以删除该文件。不过不建议删除该文件,占不了多大空间的,删除它干嘛.
mount:
nomount状态的数据库,可以通过读取控制文件来mount数据库,这时候实例就开始和某个
数据库关联起来了。oracle是通过读取初始化参数文件来知道控制文件存放的位置与数量的。
如果任何的控制文件损坏或者丢失数据库将不能被mount。可以通过control_files参数来查看
控制文件的位置与数量
SQL> show parameter control_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /opt/oracle11g/oradata/oracle/
oracle/control01.ctl, /opt/ora
cle11g/oradata/oracle/oracle/c
ontrol02.ctl, /opt/oracle11g/o
radata/oracle/oracle/control03
.ctl
控制文件中记录着数据文件与在线重做日志的位置与数量,这些信息oracle在mount阶段还
不会去验证,这些信息将用于open阶段。在mount阶段只有数据库管理员可以访问。
open:
1、打开除了undo表空间以外的所有的在线数据文件。
如果在数据库shutdown 以前有表空间已经offline了,oracle在启动过程中会忽略这些表空间
不会去打开该表空间中的数据文件。
2、获得一个undo表空间。
如果有多个undo表空间可用,那么将使用undo_tablespace参数指定的undo表空间。如果该
参数没有指定,将使用查找到的第一个可以的undo表空间。
3、打开所有在线重做日志。
如果任何数据文件或者在线重做日志文件损坏丢失,数据库将停留在mount阶段.在某些情况
下需要执行恢复工作。
当数据库open以后普通用户就可以创建会话登录数据库与数据库交互.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26110315/viewspace-716659/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26110315/viewspace-716659/