【Vegas原创】控制文件损坏,使用trace文件恢复DB

2年前 (2022) 程序员胖胖胖虎阿
138 0 0

恢复前提:

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文件。

 

 

 

相关文章

暂无评论

暂无评论...