oracle啟動與關閉

pwz1688發表於2014-04-09
1、啟動(startup)
Oracle 資料庫的啟動主要包含三個步驟:
 啟動資料庫到 Nomount 狀態(啟動例項);
 啟動資料庫到 Mount 狀態 (開啟控制檔案);
 啟動資料庫到 Open 狀態 (開啟所有控制檔案中描述的檔案);
1.1、startup nomount
        在啟動的第一步驟,Oracle 首先尋找引數檔案(pfile / spfile),然後根據引數檔案中的設定 (如記憶體分配等設定) ,建立例項(INSTANCE),分配記憶體,啟動後臺程式。啟動過程中,oracle選擇引數檔案的順序是:
?/dbs/spfile@.ora  
?/dbs/spfile.ora
?/dbs/init@.ora 
注意:"?"代表 ORACLE_HOME , @ 代表資料庫的 sid,如果以上三個檔案都不存在,Oracle 將無法建立和啟動 instance(會報ORA-01078與ORA-00109錯誤,上一篇日誌提到過)。Oracle 在啟動過程中,會在特定的路徑中尋找引數檔案,在 Unix/Linux 下 的路徑為$ORACLE_HOME/dbs 目錄,在 WINDOWS 上的路徑為$ORACLE_HOME\database目錄。
例:
[oracle@localhost ~]$ cd $ORACLE_HOME/dbs
[oracle@localhost dbs]$ ls
hc_PROD.dat init.ora initPROD.ora lkPROD orapwPROD peshm_PROD_0
可以在SQL*PLUS中通過show parameter spfile命令來檢查資料庫是否使用了spfile檔案, 如果 value 不為 Null,則資料庫使用了 spfile 檔案,否則則沒使用:
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string
注:上面是使用init@.ora啟動時顯示的查詢結果
1.2、startup mount
        例項啟動到 nomount 狀態以後,Oracle 就可以從引數檔案中獲得控制檔案的位置資訊,然 後找到控制檔案,並且根據控制檔案中記錄的資料檔案位置進行資料檔案的存在性判斷。
1.2.1、控制檔案定位
       控制檔案一般有3個,且內容完全一致,是oracle為了安全而採用的映象手段,10g之前,在生產環境中,通常將控制檔案存放在不同的物理硬碟上,避免因為介質故障而同時損壞三個控制檔案。10g 開始,若設定了閃回恢復區(Flashback Recovery Area,通常閃回區和資料區位於不同硬碟儲存),則 Oracle 預設的就會將控制檔案分佈到不同的磁碟組,至此 Oracle 才算完成了控制檔案的真正映象安全保護。
      在nomount狀態,可以查詢 v$parameter檢視(show parameter control_files),獲得控制檔案資訊,這部分資訊來自啟動 的引數檔案;當資料庫 mount 之後,可以查詢 v$controlfile 檢視獲得關於控制檔案的資訊,此時,這部分資訊來自控制檔案: 
SQL> show parameter control_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/app/oracle/oradata/PROD/d
                                                 isk1/control01.ctl, /u01/app/o
                                                 racle/oradata/PROD/disk2/contr
                                                 ol01.ctl, /u01/app/oracle/orad
                                                 ata/PROD/disk3/control01.ctl
SQL> select * from v$controlfile;

STATUS NAME IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- -------------------------------------------------- --- ---------- --------------
        /u01/app/oracle/oradata/PROD/disk1/control01.ctl NO 16384 478
        /u01/app/oracle/oradata/PROD/disk2/control01.ctl NO 16384 478
        /u01/app/oracle/oradata/PROD/disk3/control01.ctl NO 16384 478
  因為 Oracle 的三個(預設的)控制檔案內容完全相同,如果只是損失了其中 1~2 個,可以複製完好的控制檔案,更改為相應的名稱,就可以啟動資料庫;如果丟失了所有的控制檔案,那 麼就需要恢復或重建控制檔案來開啟資料庫。
1.2.2、檢視告警日誌檔案所在路徑
當資料庫出現故障時,應該優先檢查 alert_.log,從中發現關於故障的詳細資訊。
11g之前,alert_.log 告警日誌檔案,位置由引數 background_dump_dest 定義:
SQL> show parameter background_dump_dest ;
從11g開始,alert 檔案的格式發生了變化,除原有的文字格式外,還引入了 XML格式,引入新引數diagnostic_dest:
SQL> show parameter diag ;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
diagnostic_dest string /u01/app/oracle/oradata/PROD/d ump
2、關閉(shutdown)
資料庫關閉有四種方式:NORMAL、IMMEDIATE、TRANSACTIONAL、ABORT。
下表列舉了這四種方式關閉資料庫的區別
關閉方式 A  I T N
允許新的連線 × × × ×
等待活動會話中止 × × ×
等待活動事務中止 × ×
強制 CheckPoint,關閉所有檔案 ×

2.1、SHUTDOWN NORMAL
shutdown命令的預設選項,發出命令後,不再允許新的連線到資料庫,但在關閉前,需等待當前連線的所有使用者都從資料庫中退出。下一次啟動時不需要進行任何例項恢復。因需等待連線使用者退出才可關閉,在生產環境下,這種方式幾乎無法關閉有大量使用者連線的資料庫,所以很少被採用。
2.2、SHUTDOWN IMMEDIATE
最為常用的一種關閉資料庫的方式,使用這個命令時,當前正在被 Oracle 處理的事務立即中斷,未提交的事務將全部回滾,系統不等待連線 到資料庫的使用者退出,強制斷開所有的連線使用者。然後執行檢查點,將變更資料全部寫回資料檔案,關閉資料庫。使用這種方式關閉資料庫,在下次啟動資料庫時不需要進行例項恢復,是 一種安全的資料庫關閉方式。 但是注意,如果資料庫系統繁忙,當前有大量事務執行(甚至是大事務正在處理),那麼使用此選項關閉資料庫也可能需要大量時間。 
2.3、SHUTDOWN TRANSACTIONAL
SHUTDOWN TRANSACTIONAL 選項僅在 Oracle 8i 後可用,使用該命令時,資料庫不再允許建立新的連線,禁止新事務的進行,但是允許當前活動事務執行完畢。  在所有活動的事務完成後,資料庫將和 SHUTDOWN IMMEDIATE 同樣的方式關閉資料庫。 
2.4、SHUTDOWN ABORT
SHUTDOWN ABORT 是最不推薦採用的關閉資料庫的方法,使用改選項,資料庫會立即終止所有使用者連線、中斷所有事務、立即關閉資料庫,使用這種方式關閉資料庫,未完成事務不會回滾,資料庫也不會執行檢查點,所以在下次啟動時,資料庫必須執行例項恢復,例項恢復可能會需要大量時間,資料庫的啟動因此可能需要等候很長時間。
Abort 的方式關閉資料庫,就類似於資料庫伺服器突然斷電,可能會導致不一致的情況出現,所以除非不得已,輕易不要使用這種方式關閉資料庫。
以下一些常見的場景會使用abort方式:
1)  資料庫或應用異常,其他方式無法關閉資料庫;
2)  因為馬上到來的斷電或其他維護情況,需要快速關閉資料庫;
3)  啟動異常後需要重新嘗試啟動;
4)  當使用 Shutdown Immediate 無法關閉時;
5)  需要快速重新啟動資料庫;
6)  Shutdown 超時或異常 ;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21251711/viewspace-1139040/,如需轉載,請註明出處,否則將追究法律責任。

相關文章