场景:
控制文件丢失,有老的数据文件,日志问保存完整。做恢复操作。
模拟流程 :

(点击图片看大图)
模拟场景:
1)备份数据文件
alter database begin backup;
copy datafile;
alter database end backup;
2)备份控制文件到trace下,获取重建控制文件的执行语句
alter database backup controlfile to trace;
--切换日志文件,确保归档日志的最大的scn 大于控制文件检查点的scn(因为后面将使用RESETLOGS方式重建数据库,到时redo日志将丢失)
alter system switch logfile;
--获取归档日志文件信息
select * from v$loghist;
--获取trace文件路径
desc parameter user_dump_desc;
--打开控制文件重建脚本
cat /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_1622.trc
3)删除控制文件
--获取控制文件路径
select name from v$controfile;
--关闭数据库
shutdown immediate
--删除控制文件(模拟控制文件丢失)
rm control0*
4)把备份的数据文件拷贝回来
cp orcl.bak/* orcl/
5)重建控制文件,使用的语句均来自trace文件
--启动数据库到nomount
STARTUP NOMOUNT
--重建控制文件
CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'/u01/app/oracle/oradata/orcl/system01.dbf',
'/u01/app/oracle/oradata/orcl/sysaux01.dbf',
'/u01/app/oracle/oradata/orcl/undotbs01.dbf',
'/u01/app/oracle/oradata/orcl/example01.dbf',
'/u01/app/oracle/oradata/orcl/user01.dbf'
CHARACTER SET AL32UTF8
;
--数据库处于mount状态,验证如下:
select open_mode from v$database;
6)恢复数据库,重建incarnation表
RECOVER DATABASE USING BACKUP CONTROLFILE;
恢复临时文件
ALTER TABLESPACE TEMP03 ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp03.dbf'
SIZE 10485760 REUSE AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M;
完毕!
001.jpg
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29121762/viewspace-768672/
,如需转载,请注明出处,否则将追究法律责任。