程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 對於Oracle的錯誤印象

對於Oracle的錯誤印象

編輯: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既然不會自動關閉,那麼萬一出現了控制文件誤刪除的情況,一定不要手工關閉當前的實例,只要實例不關閉,就可以輕松的查詢數據庫中的數據文件、日志文件等信息來重建控制文件,而一旦關閉了實例,由於缺失控制文件,實例將無法啟動,這時候要找到所有控制文件中包含的信息就比較困難了。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved