在执行恢复后,应该检查数据库的alert文件,看是否出现控制文件中的数据文件名称和数据字典中数据文件名称无法一一对应的现象。
这篇文章描述通过RESETLOGS方式打开数据库时,如果发现不一致情况及解决方法。
如果是利用备份的控制文件,除了数据文件的新增和删除以外,不会出现不一致的情况。这种不一致的情况更多的是出现在手工重建控制文件过程中。
SQL> CONN /@TEST AS SYSDBA
已连接。
SQL> ALTER TABLESPACE INDX READ ONLY;
表空间已更改。
SQL> ALTER TABLESPACE TOOLS OFFLINE;
表空间已更改。
SQL> SELECT 'ALTER TABLESPACE ' || TABLESPACE_NAME || ' BEGIN BACKUP;'
2 FROM DBA_TABLESPACES WHERE CONTENTS != 'TEMPORARY' AND STATUS = 'ONLINE';
'ALTERTABLESPACE'||TABLESPACE_NAME||'BEGINBACKUP;'
-------------------------------------------------------------
ALTER TABLESPACE SYSTEM BEGIN BACKUP;
ALTER TABLESPACE UNDOTBS1 BEGIN BACKUP;
ALTER TABLESPACE USERS BEGIN BACKUP;
ALTER TABLESPACE YANGTK BEGIN BACKUP;
SQL> ALTER TABLESPACE SYSTEM BEGIN BACKUP;
表空间已更改。
SQL> ALTER TABLESPACE UNDOTBS1 BEGIN BACKUP;
表空间已更改。
SQL> ALTER TABLESPACE USERS BEGIN BACKUP;
表空间已更改。
SQL> ALTER TABLESPACE YANGTK BEGIN BACKUP;
表空间已更改。
SQL> HOST COPY F:ORACLEORADATATEST*.DBF F:ORACLEBACKUPTEST20060307
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE RESETLOGS;
数据库已更改。
SQL> SELECT 'ALTER TABLESPACE ' || TABLESPACE_NAME || ' END BACKUP;'
2 FROM DBA_TABLESPACES WHERE CONTENTS != 'TEMPORARY' AND STATUS = 'ONLINE';
'ALTERTABLESPACE'||TABLESPACE_NAME||'ENDBACKUP;'
-----------------------------------------------------------
ALTER TABLESPACE SYSTEM END BACKUP;
ALTER TABLESPACE UNDOTBS1 END BACKUP;
ALTER TABLESPACE USERS END BACKUP;
ALTER TABLESPACE YANGTK END BACKUP;
SQL> ALTER TABLESPACE SYSTEM END BACKUP;
表空间已更改。
SQL> ALTER TABLESPACE UNDOTBS1 END BACKUP;
表空间已更改。
IXDBA.NET技术社区SQL> ALTER TABLESPACE USERS END BACKUP;
表空间已更改。
SQL> ALTER TABLESPACE YANGTK END BACKUP;
表空间已更改。
假设在恢复过程中,发现丢失了所有控制文件和备份的控制文件。那么需要手工重建控制文件,而这时候手工重建控制文件可能会遗漏部分数据文件。
创建控制文件的脚本应该如下:
CREATE CONTROLFILE REUSE DATABASE "TEST" RESETLOGS ARCHIVELOG
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 680
LOGFILE
GROUP 1 'F:ORACLEORADATATESTREDO01.LOG' SIZE 100M,
GROUP 2 'F:ORACLEORADATATESTREDO02.LOG' SIZE 100M,
GROUP 3 'F:ORACLEORADATATESTREDO03.LOG' SIZE 100M
DATAFILE
'F:ORACLEORADATATESTSYSTEM01.DBF',
'F:ORACLEORADATATESTUNDOTBS01.DBF',
'F:ORACLEORADATATESTUSERS01.DBF',
'F:ORACLEORADATATESTYANGTK01.DBF'
CHARACTER SET ZHS16GBK
;
但是由于没有将脚本保存到trace文件中,而完全通过手工创建。因此,在创建的时候丢失了USERS01.DBF。
SQL> SHUTDOWN IMMEDIATE
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> HOST DEL F:ORACLEORADATATEST*.CTL
SQL> HOST COPY F:ORACLEBACKUPTEST20060307* F:ORACLEORADATATEST
SQL> STARTUP NOMOUNT
ORACLE 例程已经启动。
Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 50331648 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes