
--數(shù)據(jù)庫實(shí)例啟動(dòng)的三個(gè)階段: NOMOUNT(START):打開初始化參數(shù)文件 MOUNT:打開控制文件 OPEN:打開數(shù)據(jù)文件和日志文件 --控制文件 控制文件的作用:管理數(shù)據(jù)庫的狀態(tài)和描述數(shù)據(jù)庫的物理結(jié)構(gòu)信息。 控制文件主要包含如下信息: 數(shù)據(jù)庫名 數(shù)據(jù)庫標(biāo)識符DBID 數(shù)據(jù)
--數(shù)據(jù)庫實(shí)例啟動(dòng)的三個(gè)階段:
NOMOUNT(START):打開初始化參數(shù)文件
MOUNT:打開控制文件
OPEN:打開數(shù)據(jù)文件和日志文件
--控制文件
控制文件的作用:管理數(shù)據(jù)庫的狀態(tài)和描述數(shù)據(jù)庫的物理結(jié)構(gòu)信息。
控制文件主要包含如下信息:
數(shù)據(jù)庫名
數(shù)據(jù)庫標(biāo)識符DBID
數(shù)據(jù)庫創(chuàng)建時(shí)間戳
數(shù)據(jù)庫字符集
數(shù)據(jù)文件信息
臨時(shí)文件信息
在線重做日志信息
近期的歸檔日志信息
表空間信息
RMAN 信息庫
檢查點(diǎn)信息
損壞的數(shù)據(jù)塊注冊表
還原點(diǎn)信息
RESET_SCN
臟數(shù)據(jù)塊的數(shù)量
-------------All about DBID
1. DBID 在數(shù)據(jù)庫創(chuàng)建時(shí)自動(dòng)生成
2. Oracle 不保證兩個(gè)同名數(shù)據(jù)庫DBID一定唯一
3. DBID 在數(shù)據(jù)庫創(chuàng)建后永遠(yuǎn)不變,除非使用 $ORACLE_HOME/bin/nid 修改數(shù)據(jù)庫名稱時(shí)自動(dòng)生成新的 DBID
4. 在未使用 FRA 時(shí),通過控制文件的自動(dòng)備份 restore 控制文件時(shí),會遇到 ORA-06495 錯(cuò)誤(在11R2嘗試時(shí)未出現(xiàn)此錯(cuò)誤)
5. DBID 和數(shù)據(jù)庫名一樣,不僅存在于控制文件,還存在于數(shù)據(jù)文件、日志文件頭部,用于判斷控制文件、數(shù)據(jù)文件和日志文件是否屬于同一數(shù)據(jù)庫
--獲取數(shù)據(jù)庫的 DBID
1. v$database.dbid
SQL> select dbid from v$database;
DBID
----------
2127893003
2.控制文件的自動(dòng)備份文件名(前提是自動(dòng)備份沒有放在FRA上,F(xiàn)RA使用OMF管理方式不會顯式地顯示DBID信息)
[oracle@ora dbs]$ ls -lrt c*
-rw-r----- 1 oracle asmadmin 48005120 Oct 28 15:09 c-2127893003-20131028-00
--------------2127893003 即為 DBID
3.執(zhí)行轉(zhuǎn)儲命令查看各種數(shù)據(jù)文件的文件頭信息
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
1 1 1 10485760 512 2 NO CURRENT 459088 28-OCT-13 2.8147E+14
2 1 0 10485760 512 2 YES UNUSED 0 0
3 1 0 10485760 512 2 YES UNUSED 0 0
SQL> alter system dump logfile '+DATA/test/onlinelog/group_1.266.829746583';
System altered.
SQL> select value from v$diag_info where name='Default Trace File';
VALUE
------------------------------------------------------------
/u01/app/oracle/diag/rdbms/test/test/trace/test_ora_7538.trc
[oracle@ora dbs]$ grep -i 'db id' /u01/app/oracle/diag/rdbms/test/test/trace/test_ora_7538.trc
Db ID=2127893003=0x7ed5120b, Db Name='TEST'
4.如果使用了 catalog ,還可以在查詢 catalog 數(shù)據(jù)庫中的 DB 表
select * from catalog_user.DB;
-----------數(shù)據(jù)庫物理信息
在數(shù)據(jù)庫處于 mount 狀態(tài)(datafile和logfile均未open)時(shí),可以查詢記錄在控制文件中的相應(yīng)動(dòng)態(tài)視圖獲取數(shù)據(jù)庫的物理結(jié)構(gòu)
v$database
v$archive_log
v$datafile
v$tempfile
v$log
v$logfile
v$recover_file
-----------控制文件序列號
控制文件序列號用于判斷控制文件是否過時(shí)的因素“之一”,在控制文件被更新后就會增長。控制文件的更新包括檢查點(diǎn)信息更新,表空間的增刪操作等。
控制文件序列號也存在于數(shù)據(jù)文件和日志文件,只不過它們是在自身的文件頭被更新時(shí)從當(dāng)時(shí)的控制文件復(fù)制而來。
控制文件的更新次數(shù)總是比數(shù)據(jù)文件和日志文件多,因?yàn)槊慨?dāng)數(shù)據(jù)文件和日志文件頭被更新時(shí),控制文件都會復(fù)制其部分內(nèi)容,同時(shí)控制文件
的某些操作比如增量檢查點(diǎn)只會更新控制文件而不會更新日志文件盒數(shù)據(jù)文件。
查看 v$database 和 v$kcvfh 可以查看當(dāng)前控制文件記錄的控制文件序列號和各個(gè)數(shù)據(jù)文件頭部所記錄的控制文件序列號。
SQL> select CONTROLFILE_SEQUENCE# from v$database;
CONTROLFILE_SEQUENCE#
---------------------
1160
SQL> select hxfil as file#, fhcsq from x$kcvfh;
FILE# FHCSQ
---------- ----------
1 1128
2 1128
3 1128
4 1128
-----------控制文件檢查點(diǎn) SCN
控制文件檢查點(diǎn) SCN 也是判斷控制文件是否過時(shí)的要素之一。檢查點(diǎn)分為完全檢查點(diǎn)和增量檢查點(diǎn),完全檢查點(diǎn)會把 SCN 更新至數(shù)據(jù)文件頭和控制文件中,
而增量檢查點(diǎn)只會將SCN更新至控制文件。無論哪種檢查點(diǎn),其SCN在控制文件中都稱為控制文件檢查點(diǎn)SCN(有別于數(shù)據(jù)庫檢查點(diǎn)SCN)
select CONTROLFILE_CHANGE# from v$database;
CONTROLFILE_CHANGE#
-------------------
464297
每當(dāng)控制文件發(fā)生變化(增刪文件、日志切換、完全或增量檢查點(diǎn)),控制文件檢查點(diǎn)SCN的值都會上升。該SCN的值一定大于或等于 current redo log 的低位 SCN
同時(shí),控制文件檢查點(diǎn) SCN 的值一定大于所有數(shù)據(jù)文件頭部的檢查點(diǎn)SCN號,否則該控制文件就會被認(rèn)為過時(shí),實(shí)例無法啟動(dòng)。
select controlfile_change# from v$database
union all
select first_change# from v$log where status = 'CURRENT';
CONTROLFILE_CHANGE#
-------------------
466258
465700
------------數(shù)據(jù)庫檢查點(diǎn) SCN
控制文件中保存的數(shù)據(jù)庫檢查點(diǎn)SCN實(shí)際上市所有數(shù)據(jù)文件頭中最小的檢查點(diǎn)SCN。Oracle 根據(jù)該值與每個(gè) redo 日志的高低為SCN一一比較,確定恢復(fù)數(shù)據(jù)文件時(shí)
所需的第一個(gè) redo 或歸檔日志
v$database 中的 checkpoint_change# 和 v$datafile_header 中的 checkpoint_change# 應(yīng)該一致
SQL> select checkpoint_change# from v$database
2 union all
3 select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
465700
465700
465700
465700
465700
------------online redo 的高低水位 SCN
SQL> select GROUP#,FIRST_CHANGE#,NEXT_CHANGE#,status from v$log;
GROUP# FIRST_CHANGE# NEXT_CHANGE# STATUS
---------- ------------- ------------ ----------------
1 459088 465700 INACTIVE
2 465700 2.8147E+14 CURRENT
3 0 0 UNUSED
FIRST_CHANGE#:低位SCN redo log 中的第一個(gè) redo entry
NEXT_CHANGE#:高位SCN下一個(gè)日志文件中的第一個(gè) redo entry
------------RMAN 信息庫
RMAN 配置、閃回日志路徑、重做日志歷史、歸檔路徑及屬性、RMAN 備份集信息、RMAN image copy 信息、RMAN 備份集和RMAN IMAGE COPY 中損壞的數(shù)據(jù)塊
數(shù)據(jù)文件壞塊信息等
------------還原點(diǎn)信息
還原點(diǎn)主要通過 create restore point 命令創(chuàng)建,是SCN的別名,主要用于 flashback 技術(shù)
------------resetlog SCN
使用resetlog選項(xiàng)open數(shù)據(jù)塊時(shí)的SCN值,也存在于數(shù)據(jù)文件和日志文件頭部。每次打開數(shù)據(jù)庫時(shí)都會檢查他們是否一致
作者:xiangsir
QQ:444367417
MSN:xiangsir@hotmail.com
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com