【Vegas原创】控制文件损坏,使用trace文件恢复DB
恢复前提:
1,需要有老的数据备份:
RMAN> backup database;
2,能在trace文件中找到control文件的create脚本:
SQL> alter database backup controlfile to trace;
解决方案:
1,
SQL> shutdown abort
ORACLE 例程已经关闭。
2,
SQL> startup nomount;
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1292036 bytes
Variable Size 297797884 bytes
Database Buffers 306184192 bytes
Redo Buffers 7094272 bytes
3,打开udump相应的trc文件,重建control file
SQL> CREATE CONTROLFILE REUSE DATABASE "ORAWIN" RESETLOGS ARCHIVELOG 2 MAXLOGFILES 16 3 MAXLOGMEMBERS 3 4 MAXDATAFILES 100 5 MAXINSTANCES 8 6 MAXLOGHISTORY 292 7 LOGFILE 8 GROUP 1 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAWIN\REDO01.LOG' SIZE 50M, 9 GROUP 2 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAWIN\REDO02.LOG' SIZE 50M, 10 GROUP 3 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAWIN\REDO03.LOG' SIZE 50M 11 -- STANDBY LOGFILE 12 DATAFILE 13 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAWIN\SYSTEM01.DBF', 14 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAWIN\UNDOTBS01.DBF', 15 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAWIN\SYSAUX01.DBF', 16 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAWIN\USERS01.DBF' 17 CHARACTER SET ZHS16GBK 18 ;
控制文件已创建
4,
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: ??????????? RESETLOGS ? NORESETLOGS ??
5,
SQL> alter database open resetlogs;
数据库已更改。
注意:
如果是数据库正常down机的,那么创建控制文件后直接可以打开数据库,不需resetlogs。
补充:
6,
SQL> select * from v$tempfile;
未选定行
7,
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
UNDOTBS1
INDX
TOOLS
USERS
TEMP
补充结论:因重建了控制文件,temp文件没有了,需要重新建立temp文件。
喜欢请赞赏一下啦^_^