学习笔记
也许大家都知道在ORACLE中如果执行了不完全恢复当前的日志文件是不能在使用的,所以我们必须使用RESETLOGS选项来打开数据库。9I的时候要求我们不然全恢复过后需要马上进行一次全备,也就是代表一个incarnation已经结束新的incarnation来临,老的incarnation里面的所有备份集是不能在新的incarnation中使用的(incarnation可以翻译为化身),但是10G 突破了这样的限制,在我看来新的incarnation不能使用老的incarnation的备份集是应当所以的,不过10G的这点突破也是一个很大进步了,那啥叫incarnation,其实很简单一个RESETLOGS后就会出现新的incarnation,表示RMAN备份一个时代的结束。下面做下试验,证明这两点。
RMAN> list incarnation;
正在使用目标数据库控制文件替代恢复目录
数据库原型列表
DB 关键字 Inc 关键字 DB 名 DB ID STATUS 重置 SCN 重置时间
------- ------- -------- ---------------- --- ---------- ----------
1 1 PP 2624386947 PARENT 1 09-3月 -04
2 2 PP 2624386947 CURRENT 318842 08-1月 -09
SQL> create table test
2 as
3 select * from dba_users;
RMAN> list archivelog all;
已存档的日志副本列表
关键字 Thrd Seq S 短时间 名称
------- ---- ------- - ---------- ----
1 1 6 A 08-1月 -09 E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00006_0
675595140.001
2 1 7 A 08-1月 -09 E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00007_0
675595140.001
3 1 8 A 08-1月 -09 E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00008_0
675595140.001
做全备
RMAN> backup format 'e:\data\data_%s_%p_%T.bak'
2> database plus archivelog delete all input
3> format 'e:\arc\arc_%s_%p_%T.bak'
4> ;
启动 backup 于 08-1月 -09
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动存档日志备份集
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =11 记录 ID=6 时间戳=675602823
输入存档日志线程 =1 序列 =12 记录 ID=7 时间戳=675602826
输入存档日志线程 =1 序列 =13 记录 ID=8 时间戳=675602829
输入存档日志线程 =1 序列 =14 记录 ID=9 时间戳=675602830
输入存档日志线程 =1 序列 =15 记录 ID=10 时间戳=675602831
输入存档日志线程 =1 序列 =16 记录 ID=11 时间戳=675602832
输入存档日志线程 =1 序列 =17 记录 ID=12 时间戳=675602865
通道 ORA_DISK_1: 正在启动段 1 于 08-1月 -09
通道 ORA_DISK_1: 已完成段 1 于 08-1月 -09
段 handle=E:\ARC\ARC_5_1_20090108.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
通道 ORA_DISK_1: 正在删除存档日志
存档日志文件名 =E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00011_0675595140.001
ID=6 时间戳 =675602823
存档日志文件名 =E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00012_0675595140.001
ID=7 时间戳 =675602826
存档日志文件名 =E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00013_0675595140.001
ID=8 时间戳 =675602829
存档日志文件名 =E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00014_0675595140.001
ID=9 时间戳 =675602830
存档日志文件名 =E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00015_0675595140.001
ID=10 时间戳 =675602831
存档日志文件名 =E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00016_0675595140.001
ID=11 时间戳 =675602832
存档日志文件名 =E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00017_0675595140.001
ID=12 时间戳 =675602865
完成 backup 于 08-1月 -09
启动 backup 于 08-1月 -09
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=E:\ORACLE\PRODUCT\10.1.0\ORADATA\PP\SYSTEM01.DB
输入数据文件 fno=00003 name=E:\ORACLE\PRODUCT\10.1.0\ORADATA\PP\SYSAUX01.DB
输入数据文件 fno=00002 name=E:\ORACLE\PRODUCT\10.1.0\ORADATA\PP\UNDOTBS01.D
输入数据文件 fno=00004 name=E:\ORACLE\PRODUCT\10.1.0\ORADATA\PP\USERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 08-1月 -09
通道 ORA_DISK_1: 已完成段 1 于 08-1月 -09
段 handle=E:\DATA\DATA_6_1_20090108.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:05:28
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 08-1月 -09
通道 ORA_DISK_1: 已完成段 1 于 08-1月 -09
段 handle=E:\DATA\DATA_7_1_20090108.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 08-1月 -09
启动 backup 于 08-1月 -09
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动存档日志备份集
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =18 记录 ID=13 时间戳=675603199
通道 ORA_DISK_1: 正在启动段 1 于 08-1月 -09
通道 ORA_DISK_1: 已完成段 1 于 08-1月 -09
段 handle=E:\ARC\ARC_8_1_20090108.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
通道 ORA_DISK_1: 正在删除存档日志
存档日志文件名 =E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00018_0675595140.001
ID=13 时间戳 =675603199
完成 backup 于 08-1月 -09
进行不完全恢复
RMAN> alter database open resetlogs;
数据库已打开
RMAN> list incarnation;
数据库原型列表
DB 关键字 Inc 关键字 DB 名 DB ID STATUS 重置 SCN 重置时间
------- ------- -------- ---------------- --- ---------- ----------
1 1 PP 2624386947 PARENT 1 09-3月 -04
2 2 PP 2624386947 PARENT 318842 08-1月 -09
3 3 PP 2624386947 CURRENT 335281 08-1月 -09
然后我们看到化身增加了。
然后创建TEST10表
create table test10
as
select * from dba_users;
不完全恢复我没有进程备份
然后再来一次恢复
RMAN> restore database;
启动 restore 于 08-1月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=160 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到E:\ORACLE\PRODUCT\10.1.0\ORADATA\PP\SYSTEM01.DBF
正将数据文件00002恢复到E:\ORACLE\PRODUCT\10.1.0\ORADATA\PP\UNDOTBS01.DBF
正将数据文件00003恢复到E:\ORACLE\PRODUCT\10.1.0\ORADATA\PP\SYSAUX01.DBF
正将数据文件00004恢复到E:\ORACLE\PRODUCT\10.1.0\ORADATA\PP\USERS01.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = E:\DATA\DATA_2_1_20090108.BAK 标记 = TAG20090108T112325
通道 ORA_DISK_1: 恢复完成
完成 restore 于 08-1月 -09
RMAN> recover database;
启动 recover 于 08-1月 -09
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 1 已作为文件 E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00001_
75604590.001 存在于磁盘上
存档日志线程 1 序列 2 已作为文件 E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00002_
75604590.001 存在于磁盘上
存档日志线程 1 序列 3 已作为文件 E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00003_
75604590.001 存在于磁盘上
存档日志线程 1 序列 4 已作为文件 E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00004_
75604590.001 存在于磁盘上
存档日志线程 1 序列 5 已作为文件 E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00005_
75604590.001 存在于磁盘上
存档日志线程 1 序列 6 已作为文件 E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00006_
75604590.001 存在于磁盘上
存档日志文件名 =E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00001_0675604590.001 线
=1 序列 =1
存档日志文件名 =E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00002_0675604590.001 线
=1 序列 =2
存档日志文件名 =E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00003_0675604590.001 线
=1 序列 =3
存档日志文件名 =E:\ORACLE\PRODUCT\10.1.0\DB_1\RDBMS\ARC00004_0675604590.001 线
=1 序列 =4
完成介质的恢复
完成 recover 于 08-1月 -09
OK 我使用的是老的化身的备份集,恢复到了新的化身。
RMAN> list incarnation
2> ;
数据库原型列表
DB 关键字 Inc 关键字 DB 名 DB ID STATUS 重置 SCN 重置时间
------- ------- -------- ---------------- --- ---------- ----------
1 1 PP 2624386947 PARENT 1 09-3月 -04
2 2 PP 2624386947 PARENT 318842 08-1月 -09
3 3 PP 2624386947 CURRENT 335281 08-1月 -09
结论 :1、 新的incarnation在RESERTLOGS后出现。
2、10G恢复可以跨RESETLOGS点,也就是跨 incarnation;
如果有错误请指出 THX