--不完全恢复-ctl-create_script
controlfile 备份的方法
1. 冷备份
2. RMAN可以实时备份控制文件
3. 备份控制文件的生成脚本
S1. alter database backup controlfile to trace noresetlogs; --生成在UDUMP中,创建控制文件生成脚本
或者 alter database backup controlfile to trace --
--在tsid_ora_5176.trc中摘录如下
--begin
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\ONLINELOG\O1_MF_1_954OTLCM_.LOG' SIZE 100M,
GROUP 2 'C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\ONLINELOG\O1_MF_2_954QNYS9_.LOG' SIZE 100M,
GROUP 3 'C:\ORADATA\TEST\AUTOLOG\REDO03.LOG' SIZE 50M,
GROUP 4 'C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\ONLINELOG\O1_MF_4_954OZ7PV_.LOG' SIZE 100M
-- STANDBY LOGFILE
DATAFILE
'C:\ORADATA\TEST\SYSTEM01.DBF',
'C:\ORADATA\TEST\UNDOTBS01.DBF',
'C:\ORADATA\TEST\SYSAUX01.DBF',
'C:\ORADATA\TEST\USERS01.DBF',
'C:\ORADATA\TEST\USERS02.DBF',
'C:\ORADATA\TEST\TEST01.DBF',
'C:\ORADATA\TEST\TEST02.DBF',
'C:\ORADATA\TEST\TEST03.DBF',
'C:\ORADATA\TEST\UNDOTBS02.DBF',
'C:\ORADATA\TEST\TEST.DBF',
'C:\ORADATA\TEST\TEST2.DBF'
CHARACTER SET ZHS16GBK
;
--end
select sequence#,first_change#,next_change#,next_time from v$archived_log --归档日志
alter database backup controlfile to trace as 'D:\oracle_bak\controlfile\controlfile1.txt' resetlogs; --resetlogs 指定控制文件生成脚本的位置
alter database backup controlfile to trace as 'D:\oracle_bak\controlfile\controlfile1.txt'; --指定控制文件生成脚本的位置
--模拟控制文件损坏
--生成的脚本该行有回车,导致sqlplus不能复制,删除空行即可(本行未删除)
SQL>
SQL> CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 'C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\ONLINELOG\O1_MF_1_954OTLCM_.LOG' SIZE 100M
9 GROUP 2 'C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\ONLINELOG\O1_MF_2_954QNYS9_.LOG' SIZE 100M
10 GROUP 3 'C:\ORADATA\TEST\AUTOLOG\REDO03.LOG' SIZE 50M,
11 GROUP 4 'C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\ONLINELOG\O1_MF_4_954OZ7PV_.LOG' SIZE 100M
12 -- STANDBY LOGFILE
13 DATAFILE
14 'C:\ORADATA\TEST\SYSTEM01.DBF',
15 'C:\ORADATA\TEST\UNDOTBS01.DBF',
16 'C:\ORADATA\TEST\SYSAUX01.DBF',
17 'C:\ORADATA\TEST\USERS01.DBF',
18 'C:\ORADATA\TEST\USERS02.DBF',
19 'C:\ORADATA\TEST\TEST01.DBF',
20 'C:\ORADATA\TEST\TEST02.DBF',
21 'C:\ORADATA\TEST\TEST03.DBF',
22 'C:\ORADATA\TEST\UNDOTBS02.DBF',
23 'C:\ORADATA\TEST\TEST.DBF',
24 'C:\ORADATA\TEST\TEST2.DBF'
25 CHARACTER SET ZHS16GBK
26 ;
控制文件已创建。 --创建成功后,oracle自动mount
select status from v$instance --mount
alter database open
--通过脚本创建控制文件来恢复控制文件损坏,原来控制文件里的信息不可避免的要丢失,比如归档日志序列重新开始
--可以把归档日志注册到新创建的控制文件里
select * from v$archived_log
D:\ORACLE_BAK\ARCHLOG\ARCH_1_828198684_1.LOG
D:\ORACLE_BAK\ARCHLOG\ARCH_112_821450997_1.LOG
SQL> alter database register physical logfile 'D:\ORACLE_BAK\ARCHLOG\ARCH_112_821450997_1.LOG'; --归档日志注册到新创建的控制文件里
select sequence#,first_change#,next_change#,next_time from v$archived_log --归档日志,发现丢掉的归档日志又出现了
alter database open resetlogs --当使用带resetlogs的脚本创建控制文件用该命令
SQL> show parameter control_files --记录控制文件位置
recover database using backup controlfile;--用备份的控制文件来恢复数据库
总结
--备份控制文件的生成脚本来恢复损坏的控制文件
S1. 创建控制文件生成脚本
alter database backup controlfile to trace as 'D:\oracle_bak\controlfile\controlfile1.txt' resetlogs; --resetlogs 指定控制文件生成脚本的位置
alter database backup c或者ontrolfile to trace as 'D:\oracle_bak\controlfile\controlfile1.txt'; --指定控制文件生成脚本的位置
S2.利用脚本创建控制文件
S1. startup nomount
S2. sqlplus中运行脚本
S3. alter database open / alter database open resetlogs --取决于运行哪种脚本
S3. (可选) alter database register physical logfile 'D:\ORACLE_BAK\ARCHLOG\ARCH_112_821450997_1.LOG'; --归档日志注册到新创建的控制文件里
不完全恢复-ctl-create_script
最新推荐文章于 2022-08-22 23:33:52 发布