--============================= -- Oracle 控制文件(CONTROLFILE) --============================= 一、Oracle --列出实例中所有控制文件的名字及状态信息 V$PARAMETER --列出所有参数的位置及状态信息 V$CONTROLFILE_RECORD_SECTION --列出控制文件中记录的部分信息 backup current controlfile; backup database include current controlfile; -- 或者设置RMAN 为自动备份 RMAN > configure controlfile autobackup on; --演示备份 --用于归档模式下的恢复,直接覆盖到控制文件 SQL> alter database backup controlfile --用于重建控制文件 SQL> alter database backup controlfile to trace as '/u01/app/oracle/recreate_controlfile.txt
,相应的sequence以及change#全部发生了变化 idle> SELECT controlfile_type, controlfile_sequence#, controlfile_change #,controlfile_time,open_resetlogs 2 FROM v$database; CONTROL CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE #,controlfile_time,open_resetlogs 2 FROM v$database; CONTROL CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE controlfile_type, controlfile_sequence#, controlfile_change#,controlfile_time,open_resetlogs 2 FROM v$database; CONTROL CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE# CONTROLFILE_TIME OPEN_RESETL ---
这里就记录一下controlfile的重建 在其他正常的数据库上创建controlfile trace SQL> alter database backup controlfile to trace; 指定trace文件的生成路径 SQL> alter database backup controlfile to trace as '/tmp/controlfile.trc'; trace R10105/udump/ % ls -ltr 一个完整的trace请参考附件 你可以修改trace文件的路径等具体参数值,并提取其中的创建脚本 STARTUP NOMOUNT CREATE CONTROLFILE 同时,重建controlfile分为NORESETLOGS和RESETLOGS两种,根据需求选择相应的脚本。 最后的最后,这一切,都是噩梦,还是做好有效备份,有备无患,才是王道!! 附件: Oracle重建控制文件 - Rebuild controlfile
通常在当前控制文件丢失,或者当前的控制文件与需要恢复的控制文件不一致的情况下,我们需要重新创建一个控制文件或者使用 unsing backup controlfile方式来恢复控制文件。 说简单点,只要是备份的控制文件与当前的控制文件不一致进行恢复数据库,就需要使用到 unsing backup controlfile方式,而一旦使用了该方式,则需使用resetlgos选项来打开数据库。 有关控制文件的介绍请参考: Oracle 控制文件(CONTROLFILE) using backup controlfile 请参考:理解 using backup controlfile 一、基于备份控制文件的恢复注意事项 使用unsing backup controlfile方 式时,在恢复期间,一旦归档目的地以及归档格式发生变化,或添加新的联机日志成员将收到RMAN-06054错误信息。 方式来恢复 2、使用unsing backup controlfile方式来恢复,需要使用resetlogs方式来打开数据库 3、尽可能配置RMAN备份使其自动备份控制文件
更新控制文件 sqlplus '/ as sysdba' SQL> select name from v$controlfile; NAME ------- ------------------------------------------------------------------------- +DATA01/test/controlfile 启动数据库值nomount rac其中一节点 rman target / RMAN>restore controlfile from '+DATA1/test/controlfile/current.200.165920580 修改controlfile参数 sqlplus / as sysdba SQL> alter system set control_files='+DATA01/test/controlfile/current .200.165920580','+FRA01/test/controlfile/current.200.693721750' scope=spfile sid='*'; 6.
if (XLogRecPtrIsInvalid(lastCheckPointRecPtr) || lastCheckPoint.redo <= ControlFile->checkPointCopy.redo LWLockAcquire(ControlFileLock, LW_EXCLUSIVE); if (ControlFile->state == DB_IN_ARCHIVE_RECOVERY && ControlFile ->checkPointCopy.redo < lastCheckPoint.redo){ ControlFile->prevCheckPoint = ControlFile->checkPoint ; ControlFile->checkPoint = lastCheckPointRecPtr;//checkpoint的位置 ControlFile->checkPointCopy = lastCheckPoint; ControlFile->time = (pg_time_t) time(NULL); ...
配置Oracle数据库控制文件冗余的操作过程: 查看数据字典v$controlfile来获取现有控制文件信息 SQL> set lines 200; SQL> col name for a50; SQL /control02.ctl','/backup/cams/controlfile/control03.ctl' 创建路径 mkdir -p /file/cams/controlfile mkdir - p /backup/cams/controlfile 拷贝现有控制文件至存储路径中 SQL> ! ls /file/cams/controlfile control02.ctl SQL> ! (3)修改完成后建议进行检查,查看v$controlfile以及服务器上的物理控制文件。
CONTROLFILE AUTOBACKUP on;相应的关闭和恢复默认配置命令:CONFIGURE CONTROLFILE AUTOBACKUP off;CONFIGURE CONTROLFILE autobackup on;configure controlfile autobackup format for device type disk to '/cfs01/backup/conf/conf _%F';configure controlfile autobackup clear;configrue controlfile autobackup format for device type disk clear;configrue snapshot controlfile name to '/cfs01/backup/snapcf/scontrofile.snp';configrue snapshot controlfile name clear;并行数:configure device type disk|stb parallelism 2;configure device type disk|stb
CONTROLFILE TO TRACE [RESETLOGS|NORESETLOGS]; ② RMAN手动备份控制文件: BACKUP CURRENT CONTROLFILE; BACKUP CURRENT CONTROLFILE FORMAT '/home/oracle/oracle_bk/orclasm/ctl_%d_%T_%s_%p.bak'; BACKUP AS COPY CURRENT CONTROLFILE CONFIGURE CONTROLFILE AUTOBACKUP ON; RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK 当数据库处于归档模式且设置了“CONFIGURE CONTROLFILE AUTOBACKUP ON;”时,若数据库的结构发生了变化(例如添加或删除表空间),则也会自动对控制文件进行备份。 前提是数据库处于归档模式,并且CONTROLFILE AUTOBACKUP设置为ON。但是,从Oracle 11gR2开始,引入了控制文件自动备份延迟创建的特性。
在之前做一个测试演示的时候,使用的是11gR2的库,在说rman的备份配置的时候有一个功能时控制文件的自动备份, CONFIGURE CONTROLFILE AUTOBACKUP ON/OFF; 然后自己简单介绍了下 ,说controlfile autobackup功能还是蛮实用的,一般还是建议开启。 RMAN CONTROLFILE AUTOBACKUP NOT CREATED DURING DB STRUCTURE CHANGE (文档 ID 1068182.1) 在这篇文章中解释了这个延时的原因 FIX Beginning with Oracle Database Release 11g Release 2, Controlfile Autobackup Deferral feature change on the database and it's also expected that no message about controlfile autobackup creation
1、首先读取ControlFile->checkPoint指向的checkpoint 2、如果读取失败,slave直接abort退出,master再次读取ControlFile->prevCheckPoint 指向的checkpoint StartupXLOG-> |--checkPointLoc = ControlFile->checkPoint; |--record = ReadCheckpointRecord 1、ControlFile->checkPoint % XLOG_BLCKSZ < SizeOfXLogShortPHD 2、ReadRecord(xlogreader, ControlFile->checkPoint XLogReadRecord(xlogreader, ControlFile->checkPoint, &errormsg) targetPagePtr = ControlFile->checkPoint - (ControlFile->checkPoint % XLOG_BLCKSZ); targetRecOff = ControlFile->checkPoint % XLOG_BLCKSZ;
Oracle9i新特点:SPFILE的使用 --How to backup and restore spfile and controlfile using autobackup option Last All rights reserved. connected to target database: HSJF (DBID=1052178311) RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; using target database controlfile instead of recovery catalog old RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP OFF; new RMAN configuration parameters: CONFIGURE CONTROLFILE parameters: CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters are successfully
; RMAN> list backup of spfile; 如果备份集文件不存在,那么肯定会报这个错误,另外backuppiece过期了,那么上面命令就会显示spfile或controlfile RMAN> restore spfile from autobackup; 2:RMAN通道(CHANNEL)配置不正确 参考官方文档:Restore of controlfile autobackup If a 'list backup of controlfile" shows the backup as on tape, a tape channel must be allocated. Cannot restore controlfile from RMAN backup (文档 ID 1054412.1) 解决方案: After reinstalling the Lite Speed Media Manager the controlfile was able to restore successfully.
在一个备份的case上遇到备份控制文件报错ORA-245,最终通过修改snapshot controlfile默认位置到ASM磁盘组后解决。 RMAN> backup current controlfile format '/tmp/current_%d_%s_%p_%T.ctl'; Starting backup at 12-JAN-22 AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default CONFIGURE NAME TO '/opt/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_prod1.f'; # default 修改 SNAPSHOT CONTROLFILE parameters: CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+DATA/PROD/snapcf_prod1.f'; new RMAN configuration
full_LOG.log << RMAN_BACKUP run{ CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oradata1/backup/$foldername /controlfile%F'; allocate channel c1 device type disk; allocate channel c2 device type disk; allocate AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oradata1/backup/$foldername /controlfile%F'; allocate channel c1 device type disk; allocate channel c2 device type disk; allocate
format '/tmp/bak/control_%U_%T.ctl'; 关闭数据库删除控制文件 RMAN> select name from v$controlfile; /fdisk1/data/ ordata1400/ORCL1400/controlfile/o1_mf_gh6v41fk_.ctl /fdisk1/data/fast_recovery/ORCL1400/controlfile/o1 _mf_gh6v41gz_.ctl [mingjie.gmj@ecs /tmp/bak]$ rm /fdisk1/data/ordata1400/ORCL1400/controlfile/o1_mf_gh6v41fk _.ctl [mingjie.gmj@ecs /tmp/bak]$ rm /fdisk1/data/fast_recovery/ORCL1400/controlfile/o1_mf_gh6v41gz_. /o1_mf_gh6v41fk_.ctl output file name=/fdisk1/data/fast_recovery/ORCL1400/controlfile/o1_mf_gh6v41gz_
RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS 3 CONTROLFILE AUTOBACKUP ON 4 CONTROLFILE AUTOBACKUP FORMAT FOR WINDOW OF 2 DAYS; CONFIGURE BACKUP OPTIMIZATION ON; CONFIGURE DEFAULT DEVICE TYPE TO DISK; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/oracle_bk TRUE ; # default CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK; CONFIGURE SNAPSHOT CONTROLFILE
. */ START_CRIT_SECTION(); if (shutdown) { LWLockAcquire(ControlFileLock, LW_EXCLUSIVE); ControlFile (ControlFileLock); } 停机检查点先要更新控制文件,更新ControlFile的状态和时间。 ->state = DB_SHUTDOWNED; ControlFile->prevCheckPoint = ControlFile->checkPoint; ControlFile->checkPoint = ProcLastRecPtr; ControlFile->checkPointCopy = checkPoint; ControlFile->time = (pg_time_t) time(NULL ; ControlFile->minRecoveryPointTLI = 0; 更新控制文件信息。
CREATE CONTROLFILE REUSE DATABASE “ORCL” RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 查询控制文件当前序列号:序列号为12233 select CONTROLFILE_CREATED, CONTROLFILE_SEQUENCE#,CONTROLFILE_CHANGE#, CURRENT_SCN select CONTROLFILE_CREATED, CONTROLFILE_SEQUENCE#,CONTROLFILE_CHANGE#, CURRENT_SCN from v$database ?
recoveryTargetTLI 1)归档恢复点比checkpoint中记录的时间线大,那么选择归档恢复点作为目标时间线 2)否则,checkpoint记录中的时间线作为目标时间线 StartupXLOG-> if (ControlFile ->minRecoveryPointTLI > ControlFile->checkPointCopy.ThisTimeLineID) recoveryTargetTLI = ControlFile ->minRecoveryPointTLI; else recoveryTargetTLI = ControlFile->checkPointCopy.ThisTimeLineID; ... 2