19.1、oracle數據庫實例的啟動分三步:
1、啟動oracle例程:
startup nomount;
#讀初始化參數文件,啟動實例,但不安裝數據庫。當數據庫以這個模式啟動時,參數文件被讀取,
#后台進程和內存結構被啟動,但它們不被附加或與數據庫的磁盤結構進行通信,數據庫是不可使用的,
#通常啟動到這里可以做create database,create or recreate control file,mount standby database
#等動作,修改parameter也是可以的。
2、讀取控制文件,加載數據庫:
alter database mount;
startup mount;
#啟動實例,打開控制文件,並加載了數據庫,但是數據庫沒有打開;
#startup mount 選項執行 startup nomount 選項的所有工作,但另外附加數據庫結構並與這些結構進
#行交互,這時Oracle從它用來查找和附加到主要數據庫結構的控制文件中獲得信息。當處於這個模式時,
#可以執行一些管理型任務,比如讀取 control file、recover dtabase、backup database、
#rename db files、change archivelog mode等;
3、打開數據庫:
alter database open;
startup
#是最全的,實例,數據庫加載,數據庫、日志文件打開都完成
#如果 STARTUP 命令行上沒有指定任何模式,STARTUP OPEN 選項就是默認的啟動模式。STARTUP OPEN
#選項執行 STARTUP NOMOUNT和STARTUP MOUNT選項的所有步驟,這個選項把數據庫變成對所有用戶
#都是可用的。
startup force:如果在用正常方式啟動數據庫時遇到了困難,可以使用 STARTUP FORCE 選項,STARTUP FORCE
選項首先異常關閉數據庫,然后重新啟動它。
STARTUP RESTRICT:選項啟動數據庫並把它置入OPEN模式,但只給擁有 RESTRICTED SESSION 權限的用戶賦予訪問權。
4、查看數據庫實例狀態:
select status from v$instance;
#為open狀態
19.2、關閉數據庫實例:
1、正常方式關閉數據庫實例:
shutdown normal;
2、立即方式關閉數據庫實例:
shutdown immediate;
#執行 shutdown immediate 數據庫並不立即關閉,而是在Oracle執行某些清除工作后才關閉(終止會話、釋放會話資源),
#當使用 shutdown 不能關閉數據庫時,shutdown immediate可以完成數據庫關閉的操作。
3、直接關閉數據庫實例:
shutdown abort;
#正在訪問數據庫的會話會被突然終止,如果數據庫中有大量操作正在執行,這時執行 shutdown abort 后,重新啟動數據庫
#需要很長時間,因為 shutdown abort 的時候,跟kill 進程是一樣的效果,數據庫立即關閉,這個時候文件狀態可能不一致,
#因為正常關閉數據庫會同步校驗各文件,使得重新啟動的時候文件時間點一致並且不用進行崩潰恢復,若檢查點信息一致,則
#做崩潰恢復,若檢查點信息不一致(正好在更新文件頭)則需要做介質恢復。這些問題都好處理,最怕的問題是這個時候系統
#有大量IO,結果這樣造成寫的突然中斷,碰巧造成文件塊的邏輯壞塊,那麻煩比較大一些,尤其是系統表空間的block損壞,
#雖然 shutdown abort 出錯的幾率很小,1000個人可能只有一個人碰到,但是我們還是要小心。正確的處理流程是,
#shutdown immediate,若數據庫遲遲不能 down下來,在 os 上觀察 IO 狀況,幾乎沒有 io 的時候另開一窗口 shutdown abort,
#幾乎不會出問題了。