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

Oracle控制文件的恢復

編輯:Oracle數據庫基礎

如果Oracle控制文件是從備份中恢復的,下面就為您詳細介紹Oracle控制文件的恢復,供您參考,希望對您學習Oracle控制文件能有所幫助。

那麼數據庫在open過程中又將如何呢?

首先備份Oracle控制文件控制文件,打開數據庫,增進檢查點:

  1. [Oracle@jumper eygle]$ cp control01.ctl control01.ctl.bak  
  2. [Oracle@jumper eygle]$ sqlplus "/ as sysdba"  
  3.  
  4. SQL*Plus: Release 9.2.0.4.0 - Production on Fri Aug 11 10:46:05 2006  
  5.  
  6. Copyright (c) 1982, 2002, Oracle Corporation.   All rights reserved.  
  7.  
  8. Connected to an idle instance.  
  9.  
  10. SQL> startup  
  11. Oracle instance started.  
  12.  
  13. Total System Global Area   139531744 bytes  
  14. Fixed Size                    452064 bytes  
  15. Variable Size              121634816 bytes  
  16. Database Buffers            16777216 bytes  
  17. Redo Buffers                  667648 bytes  
  18. Database mounted.  
  19. Database opened.  
  20. SQL> alter system checkpoint;  
  21.  
  22. System altered.  
  23.  
  24. SQL> shutdown immediate;  
  25. Database closed.  
  26. Database dismounted.  
  27. Oracle instance shut down.  
  28. SQL> exit  
  29. Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production  
  30. With the Partitioning option  
  31. JServer Release 9.2.0.4.0 - Production  
  32.  

然後恢復舊的控制文件,mount數據庫,轉儲數據文件頭:

  1. [Oracle@jumper eygle]$ mv control01.ctl control01.ctl.n  
  2. [Oracle@jumper eygle]$ mv control01.ctl.bak control01.ctl   
  3. [Oracle@jumper eygle]$ sqlplus "/ as sysdba"  
  4.  
  5. SQL*Plus: Release 9.2.0.4.0 - Production on Fri Aug 11 10:46:50 2006  
  6.  
  7. Copyright (c) 1982, 2002, Oracle Corporation.   All rights reserved.  
  8.  
  9. Connected to an idle instance.  
  10.  
  11. SQL> startup mount;  
  12. Oracle instance started.  
  13.  
  14. Total System Global Area   139531744 bytes  
  15. Fixed Size                    452064 bytes  
  16. Variable Size              121634816 bytes  
  17. Database Buffers            16777216 bytes  
  18. Redo Buffers                  667648 bytes  
  19. Database mounted.  
  20. SQL> alter session set events 'immediate trace name file_hdrs level 10';  
  21.  
  22. Session altered.  
  23.  
  24. SQL> !  
  25.  

我們看Oracle控制文件控制文件的信息(選擇一個文件):

  1. DATA FILE #4:   
  2.    (name #4) /opt/Oracle/oradata/eygle/eygle01.dbf  
  3. creation size=0 block size=8192 status=0xe head=4 tail=4 dup=1 
  4. tablespace 4, index=4 krfil=4 prev_file=0 
  5. unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00  
  6. Checkpoint cnt:61 scn: 0x0000.002acb1e 08/11/2006 10:44:38  
  7. Stop scn: 0x0000.002acb1e 08/11/2006 10:44:38  
  8. Creation Checkpointed at scn:   0x0000.0015078d 06/06/2006 09:41:54  
  9.  

再看數據文件頭信息:

  1. FILE HEADER:  
  2.          Software vsn=153092096=0x9200000, Compatibility Vsn=134217728=0x8000000  
  3.          Db ID=1407686520=0x53e79778, Db Name='EYGLE' 
  4.          Activation ID=0=0x0  
  5.          Control Seq=989=0x3dd, File size=1280=0x500  
  6.          File Number=4Blksiz=8192, File Type=3 DATA  
  7. Tablespace #4 - EYGLE   rel_fn:4   
  8. Creation    at    scn: 0x0000.0015078d 06/06/2006 09:41:54  
  9. Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0  
  10. reset logs count:0x232bee1f scn: 0x0000.0007c781 recovered at 08/11/2006 10:11:26  
  11. status:0x0 root dba:0x00000000 chkpt cnt: 64 ctl cnt:63  
  12. begin-hot-backup file size: 0  
  13. Checkpointed at scn:   0x0000.002acb98 08/11/2006 10:46:24  
  14.  

我們注意到數據文件的chkpt cnt: 64 要大約控制文件的Checkpoint cnt:61,也就是說控制文件是舊的。

此時嘗試打開數據庫就會出現如下錯誤:

  1. [Oracle@jumper udump]$ sqlplus "/ as sysdba"  
  2.  
  3. SQL*Plus: Release 9.2.0.4.0 - Production on Fri Aug 11 10:51:20 2006  
  4.  
  5. Copyright (c) 1982, 2002, Oracle Corporation.   All rights reserved.  
  6.  
  7. Connected to:  
  8. Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production  
  9. With the Partitioning option  
  10. JServer Release 9.2.0.4.0 - Production  
  11.  
  12. SQL> alter database open;  
  13. alter database open  
  14. *  
  15. ERROR at line 1:  
  16. ORA-01122: database file 1 failed verification check  
  17. ORA-01110: data file 1: '/opt/Oracle/oradata/eygle/system01.dbf'  
  18. ORA-01207: file is more recent than controlfile - old controlfile  
  19.  

Oracle告訴我們,控制文件是舊的。此時我們可以通過重建控制文件或者從舊的數據備份開始恢復。

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