一、Oracle 控制文件
爲二進制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN備份
記錄了當前數據庫的結構信息,同時也包含數據文件及日誌文件的信息以及相關的狀態,歸檔信息等等
在參數文件中描述其位置,個數等等。通常採用分散放開,多路複用的原則。在mount階段被讀取,open階段一直被使用
維護數據庫一致性(數據庫啓動時會比較控制文件與聯機日誌文件中的ckpt,即起始scn號,如相等則正常啓動,否則需要介質恢復)
一個控制文件只能屬於一個數據庫
控制文件的任意修改將寫入到初始化參數中指定的所有控制文件中,讀取時則僅讀取第一個控制文件
控制文件只能連接一個數據庫,控制文件的大小一般不要超過MB,最多爲個,最少一個,互爲鏡像
控制文件中包含的內容
數據庫的名字、ID、創建的時間戳
表空間的名字
聯機日誌文件、數據文件的位置、個數、名字
聯機日誌的Sequence號碼
檢查點的信息
撤銷段的開始或結束
歸檔信息
備份信息
二、查看控制文件的相關信息
1.使用相關視圖來查看
V$CONTROLFILE --列出實例中所有控制文件的名字及狀態信息
V$PARAMETER --列出所有參數的位置及狀態信息
V$CONTROLFILE_RECORD_SECTION --列出控制文件中記錄的部分信息
SHOW PARAMETERCONTROL_FILES --列出控制文件的名字、狀態、位置等
2.使用STRINGS命令來查看控制文件中的具體內容
3.備份控制文件到平面文件(然後查看控制文件中的具體內容)
SQL> alter database backup controlfile to trace as '/u01/app/oracle/ctl.txt';
Database altered.
4.轉儲控制文件內容(查看控制文件中的具體內容)
alter session set events 'immediatetrace name CONTROLF level 12'; level表示級別
或 --level1 塊頭的內容 --level2 數據文件內容 --levle10 |12 所有內容
oradebug setmypid
oradebug dump controlf12
SQL> alter system set events 'immediatetrace name controlf level 10';
System altered.
SQL> showparameter user_dump;
NAME TYPE VALUE
----------------------------------------------- ------------------------------
user_dump_dest string /u01/app/oracle/admin/orcl/udu
mp
三、控制文件的管理
規劃原則:多路複用,建議存放到不同的磁盤或同一磁盤不同的分區
個數與位置及狀態管理:
查看控制文件的狀態是否與參數定義中的相吻合,當數據庫發生結構修改時,將修改內容同時寫入控制文件
備份管理
恢復管理
新建控制文件語句
spfile或pfile都可以實現對控制文件的個數及位置管理
spfile步驟
修改spfile參數中的control_files --alter system ... scope = spfile | both |memory
一致性關閉數據庫
增加或減少控制文件(cp or mv)
啓動數據庫使用spfile
驗證結果
pfile步驟
一致性關閉數據庫
修改pfile參數(vi或vim) 修改*.control_files=......這一段
增加或減少控制文件(cp or mv)
啓動數據庫使用pfile
驗證結果
--演示spfile修改控制文件
SQL> showparameter control_file
NAME TYPE VALUE
----------------------------------------------- ------------------------------
control_file_record_keep_time integer 7
control_files string /u01/app/oracle/oradata/orcl/c
ontrol01.ctl, /u01/app/oracle/
oradata/orcl/control02.ctl, /u
01/app/oracle/oradata/orcl/con
trol03.ctl
--將控制文件減少到一個
SQL> alter system set control_files = '/u01/app/oracle/oradata/orcl/control01.ctl' scope =spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instanceshut down.
SQL> startupmount
ORACLE instancestarted.
Total SystemGlobal Area 251658240 bytes
Fixed Size 1218796bytes
Variable Size 88082196bytes
Database Buffers 159383552bytes
RedoBuffers 2973696bytes
Database mounted.
--再次查看參數文件,已顯示爲一個
SQL> showparameter control_file
NAME TYPE VALUE
----------------------------------------------- ------------------------------
control_file_record_keep_time integer 7
control_files string /u01/app/oracle/oradata/orcl/c
ontrol01.ctl
--增加控制文件(在nomount狀態下即可修改)
SQL> alter system set control_files = '/u01/app/oracle/oradata/orcl/control01.ctl',
2 '/u01/app/oracle/oradata/orcl/control02.ctl',
3 '/u01/app/oracle/oradata/orcl/control03.ctl'
4 scope = spfile;
System altered.