當oracle丟失所有控制檔案後可以重新建立控制檔案來恢復資料庫

eric0435發表於2011-11-15
當oracle丟失所有控制檔案後可以重新建立控制檔案來使資料庫正常開啟
重新建立控制檔案的方法如下:
第一步是查詢出該資料的所有日誌檔案,資料檔案和控制檔案

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------

D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\REDO03.LOG
D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\REDO02.LOG
D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\REDO01.LOG
D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\REDO01A.LOG
D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\REDO02A.LOG
D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\REDO03A.LOG

6 rows selected.

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------

D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\SYSTEM01.DBF
D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\UNDOTBS01.DBF
D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\SYSAUX01.DBF
D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\USERS01.DBF
D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\EXAMPLE01.DBF
D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\OCP
D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\RCAT_TS

7 rows selected.

SQL> select value from v$parameter where name='control_files';

VALUE
--------------------------------------------------------------------------------

D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\CONTROL01.CTL, D:\ORACLE\PRODUCT\10.1.0\ORA

DATA\OCP\CONTROL02.CTL, D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\CONTROL03.CTL, D:\O

RACLE\PRODUCT\CONTROL04.CTL

第二步是關閉資料庫
shutdown
第三步是備份所有的日誌檔案和資料檔案
第四步是啟動資料庫到nomount的狀態
startup nomount
第五步是重新建立控制檔案,當重新建立控制檔案時如果你丟失了一個要新增到新建立的控制檔案中的一個日誌組,
在這種情況下資料庫要從丟失該日誌組的情況下恢復,如果你要重新命名資料庫的話你就是使用RESETLOGS語句,否則
你就使用NORESETLOGS語句.
CREATE CONTROLFILE reuse set
 DATABASE ocp
LOGFILE GROUP 1 ('D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\REDO01.LOG',
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\REDO01A.LOG') size 200m ,
GROUP 2 ('D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\REDO02.LOG',
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\REDO02A.LOG') size 200m,
GROUP 3 ('D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\REDO03.LOG',
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\REDO03A.LOG') size 200m
RESETLOGS
DATAFILE 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\SYSTEM01.DBF',
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\UNDOTBS01.DBF' ,
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\SYSAUX01.DBF' ,
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\USERS01.DBF' ,
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP\EXAMPLE01.DBF'
MAXLOGFILES 50
MAXLOGMEMBERS 3
MAXLOGHISTORY 400
MAXDATAFILES 200
MAXINSTANCES 6

第六步是在離線的磁碟上備份你新建立的控制檔案
第七步是編輯初始化引數檔案修改control_files引數指向你重新建立的引數檔案
第八步開啟資料庫,alter database open;如果你在重新建立控制檔案時使用了resetlogs語句的話那麼在開啟資料庫時
就得用alter database open resetlogs來開啟資料庫.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-711011/,如需轉載,請註明出處,否則將追究法律責任。

相關文章