今天一个朋友问机器中多个地方出现一个文件SNCFORCL.ORA,文件还不小,每个都有十几M,大小相等。
SNCF{SID}.ORA是RMAN的控制文件快照。当RMAN信息存储在控制文件中时,RMAN会使用这个快照文件以便维护备份信息。
RMAN> connect target sys/admin@pisc
连接到目标数据库: PISC (DBID=588620064)
RMAN> show snapshot controlfile name;
使用目标数据库控制文件替代恢复目录
RMAN 配置参数为:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:ORACLE10GR2DATABASESNCFPISC.ORA'; # default
实际上,当控制文件损坏时,可以使用这个快照恢复控制文件,进而恢复数据库。下面是ITPUB论坛中的一个测试过程。
------------------------------------------------------------------------------------------------------------------------------------------------
1、先作备份,没有使用catalog
F:\ORACLE\bin>rman target / nocatalog
恢复管理器: 版本10.1.0.4.0 - Production
Copyright (c) 1995, 2004, Oracle. All rights reserved.
连接到目标数据库: MARKET2 (DBID=2894056775)
正在使用目标数据库控制文件替代恢复目录
RMAN> show all;
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'H:\rmanback\spctl\2894056775_%F.C
TL';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'F:\ORACLE\DATABASE\SNCFPSI2.ORA'; # default
RMAN>
RMAN> run
2> {allocate channel d1 type disk;
3> backup as compressed backupset incremental level = 0 database
4> format 'H:\rmanback\level\level_%d%s%p%t%T';
5> sql 'alter system archive log current';
6> release channel d1;
7> }
分配的通道: d1
通道 d1: sid=137 devtype=DISK
启动 backup 于 2006-11-06 11:54:58
通道 d1: 启动压缩的增量级别 0 数据文件备份集
通道 d1: 正在指定备份集中的数据文件
输入数据文件 fno=00002 name=H:\ORACLELOG\ASM\MARKET2\DATAFILE\O1_MF_UNDOTBS1_2M6MNHD6_.DBF
输入数据文件 fno=00006 name=H:\ORACLELOG\ASM\MARKET2\DATAFILE\O1_MF_BD_CUMAN_2M6MQ4HN_.DBF
输入数据文件 fno=00001 name=H:\ORACLELOG\ASM\MARKET2\DATAFILE\O1_MF_SYSTEM_2M6MOWN0_.DBF
输入数据文件 fno=00009 name=H:\ORACLELOG\ASM\MARKET2\DATAFILE\O1_MF_SYSAUX_2M6MRH7B_.DBF
输入数据文件 fno=00005 name=H:\ORACLELOG\ASM\MARKET2\DATAFILE\O1_MF_TOOLS_2M6MSLPG_.DBF
输入数据文件 fno=00004 name=H:\ORACLELOG\ASM\MARKET2\DATAFILE\O1_MF_INDX_2M6MT2C7_.DBF
输入数据文件 fno=00003 name=H:\ORACLELOG\ASM\MARKET2\DATAFILE\O1_MF_DRSYS_2M6MTB1Y_.DBF
通道 d1: 正在启动段 1 于 2006-11-06 11:55:03
通道 d1: 已完成段 1 于 2006-11-06 12:02:10
段 handle=H:\RMANBACK\LEVEL\LEVEL_MARKET2235160579330120061106 comment=NONE
通道 d1: 备份集已完成, 经过时间:00:07:10
完成 backup 于 2006-11-06 12:02:11
启动 Control File and SPFILE Autobackup 于 2006-11-06 12:02:12
段 handle=H:\RMANBACK\SPCTL\2894056775_C-2894056775-20061106-00.CTL comment=NONE
完成 Control File and SPFILE Autobackup 于 2006-11-06 12:02:29
sql 语句: alter system archive log current
释放的通道: d1
RMAN> exit
备份后创建对象。
SYS@PSI2>connect test2/1
已连接。
TEST2@PSI2>select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
GL_DETAIL TABLE
GL_DETAIL2 TABLE
TEST2@PSI2>create table gl_detail3 as select * from GL_DETAIL where rownum <= 1000;
表已创建。
取时间点,只恢复到此
TEST2@PSI2>select sysdate from dual;
SYSDATE
-------------------
2006-11-06 14:19:09
gl_detail4表不被恢复
TEST2@PSI2>create table gl_detail4 as select * from GL_DETAIL where rownum <= 1000;
表已创建。
TEST2@PSI2>connect / as sysdba
已连接。
SYS@PSI2>alter system archive log current;
系统已更改。
SYS@PSI2>archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 13965
下一个存档日志序列 13967
当前日志序列 13967
SYS@PSI2>shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
恢复管理器完成。
F:\ORACLE\bin>rman target / nocatalog
恢复管理器: 版本10.1.0.4.0 - Production
Copyright (c) 1995, 2004, Oracle. All rights reserved.
已连接到目标数据库 (未启动)
RMAN> startup nomount;
Oracle 例程已启动
系统全局区域总计 448790528 字节
Fixed Size 789648 字节
Variable Size 212857712 字节
Database Buffers 234881024 字节
Redo Buffers 262144 字节
用控制文件的快照恢复
RMAN> restore controlfile from 'F:\ORACLE\database\SNCFPSI2.ORA';
启动 restore 于 2006-11-06 14:25:32
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=160 devtype=DISK
通道 ORA_DISK_1: 已复制控制文件副本
输出文件名=D:\ORACLE\ORADATA\MARKET2\CONTROL01.CTL
输出文件名=D:\ORACLE\ORADATA\MARKET2\CONTROL02.CTL
输出文件名=D:\ORACLE\ORADATA\MARKET2\CONTROL03.CTL
完成 restore 于 2006-11-06 14:25:40
RMAN> alter database mount;
数据库已装载
释放的通道: ORA_DISK_1
RMAN> run
2> {allocate channel d1 type disk;
3> set until time '2006-11-06 14:19:09'; -- 指定恢复时间点
4> restore database;
5> recover database;
6> release channel d1;
7> }
分配的通道: d1
通道 d1: sid=160 devtype=DISK
正在执行命令: SET until clause
启动 restore 于 2006-11-06 14:27:34
启动 implicit crosscheck backup 于 2006-11-06 14:27:34
已交叉检验的 4 对象
完成 implicit crosscheck backup 于 2006-11-06 14:27:50
启动 implicit crosscheck copy 于 2006-11-06 14:27:50
完成 implicit crosscheck copy 于 2006-11-06 14:27:57
搜索恢复区域中的所有文件
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13953_2NXFJO98_.ARC
文件名: H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13954_2NXG3CH4_.ARC
文件名: H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13955_2NXGPB5V_.ARC
文件名: H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13956_2NXH97YR_.ARC
文件名: H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13957_2NXHW52X_.ARC
文件名: H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13958_2NXJH57B_.ARC
文件名: H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13959_2NXK2289_.ARC
文件名: H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13960_2NXKNVG5_.ARC
文件名: H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13961_2NXL7HH4_.ARC
文件名: H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13962_2NXLTCJM_.ARC
文件名: H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13963_2NXMF1K2_.ARC
文件名: H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13964_2NXMZRPG_.ARC
文件名: H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13965_2NXNLGNZ_.ARC
文件名: H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13966_2NXO0OCQ_.ARC
通道 d1: 正在开始恢复数据文件备份集
通道 d1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到H:\ORACLELOG\ASM\MARKET2\DATAFILE\O1_MF_SYSTEM_2M6MOWN0_.DBF
正将数据文件00002恢复到H:\ORACLELOG\ASM\MARKET2\DATAFILE\O1_MF_UNDOTBS1_2M6MNHD6_.DBF
正将数据文件00003恢复到H:\ORACLELOG\ASM\MARKET2\DATAFILE\O1_MF_DRSYS_2M6MTB1Y_.DBF
正将数据文件00004恢复到H:\ORACLELOG\ASM\MARKET2\DATAFILE\O1_MF_INDX_2M6MT2C7_.DBF
正将数据文件00005恢复到H:\ORACLELOG\ASM\MARKET2\DATAFILE\O1_MF_TOOLS_2M6MSLPG_.DBF
正将数据文件00006恢复到H:\ORACLELOG\ASM\MARKET2\DATAFILE\O1_MF_BD_CUMAN_2M6MQ4HN_.DBF
正将数据文件00009恢复到H:\ORACLELOG\ASM\MARKET2\DATAFILE\O1_MF_SYSAUX_2M6MRH7B_.DBF
通道 d1: 已恢复备份段 1
段句柄 = H:\RMANBACK\LEVEL\LEVEL_MARKET2235160579330120061106 标记 = TAG20061106T115500
通道 d1: 恢复完成
完成 restore 于 2006-11-06 14:37:14
启动 recover 于 2006-11-06 14:37:15
正在开始介质的恢复
存档日志线程 1 序列 13952 已作为文件 H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13952_
2NXDYRRW_.ARC 存在于磁盘上
存档日志线程 1 序列 13953 已作为文件 H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13953_
2NXFJO98_.ARC 存在于磁盘上
存档日志线程 1 序列 13954 已作为文件 H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13954_
2NXG3CH4_.ARC 存在于磁盘上
存档日志线程 1 序列 13955 已作为文件 H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13955_
2NXGPB5V_.ARC 存在于磁盘上
存档日志线程 1 序列 13956 已作为文件 H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13956_
2NXH97YR_.ARC 存在于磁盘上
存档日志线程 1 序列 13957 已作为文件 H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13957_
2NXHW52X_.ARC 存在于磁盘上
存档日志线程 1 序列 13958 已作为文件 H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13958_
2NXJH57B_.ARC 存在于磁盘上
存档日志线程 1 序列 13959 已作为文件 H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13959_
2NXK2289_.ARC 存在于磁盘上
存档日志线程 1 序列 13960 已作为文件 H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13960_
2NXKNVG5_.ARC 存在于磁盘上
存档日志线程 1 序列 13961 已作为文件 H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13961_
2NXL7HH4_.ARC 存在于磁盘上
存档日志线程 1 序列 13962 已作为文件 H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13962_
2NXLTCJM_.ARC 存在于磁盘上
存档日志线程 1 序列 13963 已作为文件 H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13963_
2NXMF1K2_.ARC 存在于磁盘上
存档日志线程 1 序列 13964 已作为文件 H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13964_
2NXMZRPG_.ARC 存在于磁盘上
存档日志线程 1 序列 13965 已作为文件 H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13965_
2NXNLGNZ_.ARC 存在于磁盘上
存档日志线程 1 序列 13966 已作为文件 H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13966_
2NXO0OCQ_.ARC 存在于磁盘上
存档日志文件名 =H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13952_2NXDYRRW_.ARC 线程 =1
序列 =13952
存档日志文件名 =H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13953_2NXFJO98_.ARC 线程 =1
序列 =13953
存档日志文件名 =H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13954_2NXG3CH4_.ARC 线程 =1
序列 =13954
存档日志文件名 =H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13955_2NXGPB5V_.ARC 线程 =1
序列 =13955
存档日志文件名 =H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13956_2NXH97YR_.ARC 线程 =1
序列 =13956
存档日志文件名 =H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13957_2NXHW52X_.ARC 线程 =1
序列 =13957
存档日志文件名 =H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13958_2NXJH57B_.ARC 线程 =1
序列 =13958
存档日志文件名 =H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13959_2NXK2289_.ARC 线程 =1
序列 =13959
存档日志文件名 =H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13960_2NXKNVG5_.ARC 线程 =1
序列 =13960
存档日志文件名 =H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13961_2NXL7HH4_.ARC 线程 =1
序列 =13961
存档日志文件名 =H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13962_2NXLTCJM_.ARC 线程 =1
序列 =13962
存档日志文件名 =H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13963_2NXMF1K2_.ARC 线程 =1
序列 =13963
存档日志文件名 =H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13964_2NXMZRPG_.ARC 线程 =1
序列 =13964
存档日志文件名 =H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13965_2NXNLGNZ_.ARC 线程 =1
序列 =13965
存档日志文件名 =H:\ORACLELOG\ASM\MARKET2\ARCHIVELOG\2006_11_06\O1_MF_1_13966_2NXO0OCQ_.ARC 线程 =1
序列 =13966
完成介质的恢复
完成 recover 于 2006-11-06 14:39:33
释放的通道: d1
SYS@PSI2>archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 13965
下一个存档日志序列 13967
当前日志序列 13967
SYS@PSI2>shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SYS@PSI2>
SYS@PSI2>connect test2/1
已连接。
TEST2@PSI2>select table_name from tabs; -- 没有GL_DETAIL4表,说明不完全恢复成功
TABLE_NAME
------------------------------
GL_DETAIL2
GL_DETAIL
GL_DETAIL3
TEST2@PSI2>