oracle資料庫啟動從nomount到open

pingley發表於2012-02-17
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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章