Oracle啟動後對控制檔案的依賴
今天測試的時候糾正了一個錯誤的印象,一直認為如果當前控制檔案被誤刪除,會導致例項關閉。
而實際上,Oracle並不會結束當前的例項:
SQL> show parameter control_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/oracle/oradata/db01/contr
ol01.ctl, /u01/oracle/oradata/
db01/control02.ctl, /u01/oracl
e/oradata/db01/control03.ctl
SQL> select * from dual;
D
-
X
SQL> host
oracle:/home/oracle> cd /u01/oracle/oradata/db01
oracle:/u01/oracle/oradata/db01> ls -l *.ctl
-rw-r----- 1 oracle dba 9748480 May 24 12:55 control01.ctl
-rw-r----- 1 oracle dba 9748480 May 24 12:55 control02.ctl
-rw-r----- 1 oracle dba 9748480 May 24 12:55 control03.ctl
oracle:/u01/oracle/oradata/db01> rm control02.ctl
oracle:/u01/oracle/oradata/db01> exit
exit
SQL> select * from dual;
D
-
X
SQL> select instance_name, status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
db01 OPEN
SQL> alter system checkpoint;
System altered.
SQL> select instance_name, status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
db01 OPEN
SQL> alter system switch logfile;
System altered.
SQL> select instance_name, status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
db01 OPEN
SQL> col name format a50
SQL> select * from v$controlfile;
STATUS NAME IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- -------------------------------------------------- --- ---------- --------------
/u01/oracle/oradata/db01/control01.ctl NO 16384 594
/u01/oracle/oradata/db01/control02.ctl NO 16384 594
/u01/oracle/oradata/db01/control03.ctl NO 16384 594
SQL> select * from v$controlfile_record_section;
select * from v$controlfile_record_section
*
ERROR at line 1:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/oracle/oradata/db01/control02.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
SQL> select * from v$controlfile;
STATUS NAME IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- -------------------------------------------------- --- ---------- --------------
/u01/oracle/oradata/db01/control01.ctl NO 16384 594
/u01/oracle/oradata/db01/control02.ctl NO 16384 594
/u01/oracle/oradata/db01/control03.ctl NO 16384 594
可以看到,刪除了一個控制檔案之後,資料庫照常執行,甚至在發現一個控制檔案丟失之後,資料庫例項仍然處於開啟狀態,檢查一下alert檔案:
Thread 1 advanced to log sequence 21 (LGWR switch)
Current log# 3 seq# 21 mem# 0: /u01/oracle/oradata/db01/redo03.log
Sun May 24 13:00:58 2009
Errors in file /u01/oracle/diag/rdbms/db01/db01/trace/db01_m002_27935.trc:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/oracle/oradata/db01/control02.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
Sun May 24 13:24:09 2009
Errors in file /u01/oracle/diag/rdbms/db01/db01/trace/db01_m000_27986.trc:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/oracle/oradata/db01/control02.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
Sun May 24 14:01:49 2009
Errors in file /u01/oracle/diag/rdbms/db01/db01/trace/db01_m002_28082.trc:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/oracle/oradata/db01/control02.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
Sun May 24 14:24:59 2009
Errors in file /u01/oracle/diag/rdbms/db01/db01/trace/db01_m000_28132.trc:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/oracle/oradata/db01/control02.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
Sun May 24 14:59:29 2009
Errors in file /u01/oracle/diag/rdbms/db01/db01/trace/db01_m000_28204.trc:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/oracle/oradata/db01/control02.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
雖然Oracle認識到一個控制檔案出現了異常,但是Oracle並沒有關閉當前例項。測試發現,即使刪除了所有當前的控制檔案,當前例項依然處於開啟的狀態,並且只有需要訪問控制檔案的操作會報錯,其他操作仍然可以執行。
Oracle既然不會自動關閉,那麼萬一出現了控制檔案誤刪除的情況,一定不要手工關閉當前的例項,只要例項不關閉,就可以輕鬆的查詢資料庫中的資料檔案、日誌檔案等資訊來重建控制檔案,而一旦關閉了例項,由於缺失控制檔案,例項將無法啟動,這時候要找到所有控制檔案中包含的資訊就比較困難了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-604042/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Maven依賴管理:控制依賴的傳遞Maven
- Makefile 自動生成標頭檔案的依賴關係
- 對控制反轉和依賴注入的突然頓悟依賴注入
- 我對控制反轉以及依賴注入的認識依賴注入
- oracle控制檔案與資料庫啟動的關係Oracle資料庫
- requirements.txt 檔案宣告依賴UIREM
- 快取依賴(檔案、資料庫)快取資料庫
- 淺析依賴倒轉、控制反轉、IoC 容器、依賴注入。依賴注入
- 從github下好dirsearch後出現要下載檔案依賴錯誤Github
- 依賴注入和控制反轉依賴注入
- 反射,註解,動態代理,依賴注入控制反轉反射依賴注入
- 控制反轉,依賴注入,依賴倒置傻傻分不清楚?依賴注入
- saltstack對遞迴依賴條件(死迴圈依賴)的處理遞迴
- oracle中移動控制檔案、資料檔案、日誌檔案Oracle
- rimraf 命令強制刪除依賴庫檔案
- gcc 標頭檔案依賴關係 分析工具GC
- Oracle 控制檔案Oracle
- 依賴倒置、依賴注入和控制反轉傻傻分不清楚?依賴注入
- .NET IoC模式依賴反轉(DIP)、控制反轉(Ioc)、依賴注入(DI)模式依賴注入
- 前端理解依賴注入(控制反轉)前端依賴注入
- Oracle 控制檔案的重建Oracle
- 增加oracle的控制檔案Oracle
- Makefile基礎 4. 自動處理標頭檔案的依賴關係
- oracle控制檔案複製、移動方式Oracle
- java 控制反轉和依賴注入的理解Java依賴注入
- oracle用備份的控制檔案恢復後不用resetlogs開啟方式的恢復Oracle
- 開啟 控制檔案自動備份下,引數檔案、控制檔案全部丟失恢復
- Springboot專案中需整合的依賴集和檔案配置Spring Boot
- maven打包時過濾檔案及排除依賴包Maven
- Hive實戰UDF 外部依賴檔案找不到的問題Hive
- 面試官:你是如何理解Java中依賴倒置和依賴注入以及控制反轉的?面試Java依賴注入
- 在Oracle中移動資料檔案、控制檔案和日誌檔案Oracle
- Spring 控制反轉和依賴注入Spring依賴注入
- 控制反轉(IoC)與依賴注入(DI)依賴注入
- Oracle重建控制檔案Oracle
- ORACLE 新增控制檔案Oracle
- ORACLE控制檔案管理Oracle
- oracle 重建控制檔案Oracle