不完全恢复-ctl-create_script

--不完全恢复-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';  --归档日志注册到新创建的控制文件里



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值