資料庫啟動的不同狀態

773281375發表於2014-03-07
一、資料庫啟動的狀態
1、先找到初始化檔案(spfile或pfile),這時資料庫處於nomount狀態
2、根據初始檔案找到控制檔案(Control File),這時資料庫處於mount狀態
3、根據控制檔案找到資料檔案(Data File)、重做日誌檔案(Redo File),這時資料庫處於open狀態

二、關閉資料庫的4個命令
1、shutdown immediate
不允許新的連線、不等待會話結束、不等待事務結束、做一個檢查點並關閉資料檔案。沒有結束的事務是自動rollback的。啟動時不需要對資料庫進行例項恢復。此命令最常用,即使資料庫還有事務在執行,還有人停留在資料庫上,都可以關閉資料庫。
2、shutdown abort
不允許新的連線、不等待會話結束、不等待事務結束、不做檢查點且沒有關閉資料檔案。啟動時資料庫將自動進行例項恢復。這個很少使用,一般資料庫在執行復雜的業務,而shutdown immediate命令不能關閉資料庫,並且需要快速關閉資料庫時使用。
3、shutdown transaction
不允許新的連線、不等待會話結束、等待事務結束、做一個檢查點並關閉資料檔案。啟動時資料庫不需要例項恢復。很少使用,在資料庫業務很重要時,需要等到事務處理完成才能關閉。
4、shutdown normal
不允許新的連線、等待會話結束、等待事務結束、做一個檢查點並關閉資料檔案。啟動時資料庫不需要例項恢復。很少使用,只有還有使用者儀在資料庫上,都不能正常關閉時使用。

三、資料庫三個狀態解析
1、nomount狀態:一般在維護資料庫時需要用到,比如對資料庫重要引數的修改,恢復資料庫的控制檔案及資料時都需要用到該狀態。
①把資料庫啟動到:startup nomount
②檢視資料庫例項狀態:select instance_name,status from v$instance;
③尋找資料庫初始化檔案的位置:show parameter spfile
④根據spfile建立pfile檔案:create pfile='c:\pfile.ora' from spfile;
⑤用初始化檔案pfile來啟動資料庫:
shutdown immdiate
startup nomount pfile='c:\pfile.ora'
2、mount狀態:在資料庫恢復資料時需要用到,而資料庫在配置資料庫備庫(Dataguard)時,資料庫的備庫處於mount狀態
①從nomount狀態更改為mount狀態:alter database mount;
②檢視空值檔案的具體位置:select name from v$controlfile;
③檢視空值檔案中的內容:
alter database backup controlfile to trace as 'c:\ct1.trc';
④啟動資料庫到mount狀態
shutdown immediate
startup mount
3、open狀態:資料庫已經正常執行,允許資料庫使用者訪問
①從mount狀態改為open狀態:alter database open;
②檢視資料庫的重做日誌位置:select member from v$logfile;

四、密碼檔案
1檢視資料庫是否允許使用者遠端登入資料庫
show parameter remote_login_passwordfile
注:EXCLUSIVE表示允許,NONE表示不允許
2、如何禁止資料庫使用者遠端登入資料庫
alter system set remote_login_passwordfile=none scope=spfile;
startup force;

五、查詢及說明表空間
select dt.tablespace_name as "表空間名稱",
       dt.block_size/1024 as "資料塊儲存大小單位(KB)",
       dt.status as "表空間狀態",
       dt.contents as "表空間內容",
       dt.logging as "是否有日誌紀錄"
 from dba_tablespaces dt;

①資料塊儲存大小單位(block_size):為Oracle資料庫在系統硬碟中儲存的最小單位,一般預設為8KB,如果需要儲存一些大物件資料,一般設定成16KB
②表空間狀態(status):ONLINE表示該空間處於聯機狀態,使用者可以訪問該表空間的資料;如果是OFFLINE,為離線狀態,使用者不能訪問該表空間的資料
③表空間的型別(contents):PERMANENT為該表空間的資料可以永久儲存,UNDO一般為還原表空間的資料,相當於回收站,只能儲存最近更改的資料,而TEMPORAY一般為臨時表空間的資料,這一類的資料不會永久儲存在系統的資料檔案中,只是在查詢或排序時,記憶體不夠時借用該空間臨時存放一下資料而已
④是否有日誌記錄(logging):重要需儲存的表空間,一般都為logging狀態,需要記錄相關日誌,像臨時表空間或者不重要的表空間則不需要記錄

六、查詢及說明資料檔案
select dt.tablespace_name as "表空間名稱",
       dt.file_name as "資料檔案路徑",
       dt.bytes/1024/1024 as "資料檔案大小(MB)",
       dt.autoextensible as "資料檔案是否自動擴充套件",
       dt.maxbytes as "資料檔案最大(MB)"
 from dba_data_files dt;
①資料庫檔案路徑:是Oracle資料庫的資料檔案在系統所在的磁碟位置
②資料檔案大小:可以看到每個資料檔案現在使用了多大空間
③是否自動擴充套件:一般為了節省磁碟空間,剛開始的資料檔案都設定的比較小,當資料不斷增多時,資料檔案會自動擴充套件,直至到達最大設定值
④資料檔案最大值:即該資料檔案最大的容量

七、查詢及說明重做日誌
select * from v$logfile;

①group#(組):可以看到資料庫中共有3組重做日誌
②status(狀態):stale為已經把資料提交到資料庫中,空白表示正在使用該檔案
③member(成員):為每組的成員,並列出路徑和名稱

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

相關文章