Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2885809
  • 博文数量: 599
  • 博客积分: 16398
  • 博客等级: 上将
  • 技术积分: 6875
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-30 12:04
个人简介

WINDOWS下的程序员出身,偶尔也写一些linux平台下小程序, 后转行数据库行业,专注于ORACLE和DB2的运维和优化。 同时也是ios移动开发者。欢迎志同道合的朋友一起研究技术。 数据库技术交流群:58308065,23618606

文章分类

全部博文(599)

文章存档

2014年(12)

2013年(56)

2012年(199)

2011年(105)

2010年(128)

2009年(99)

分类: Oracle

2010-01-07 13:06:33

  每次执行OPEN RESETLOGS,数据库将进入新的原型。此时的备份对于数据库来说仍然有效(当
然最好做一次全备,毕竟日志序列号重置,产生的归档可能会覆盖原来的归档)。如果恢复的时
候是基于时间点的恢复,恢复时间点在当前数据库原型之中,一般没什么太大问题。如果恢复
时间点落在了先前的数据库原型中,此时在恢复的时候,需要将数据库打回相应的原型。
SQL> SELECT  HANDLE,COMPLETION_TIME FROM V$BACKUP_PIECE;

HANDLE                                             COMPLETION_TIME
-------------------------------------------------- -------------------
E:\BACKUP\FULL_0DL2KM06_1_1.BAK                    2010-01-04 17:04:14
E:\BACKUP\FULL_0GL2KM50_1_1.BAK                    2010-01-04 17:05:01
E:\BACKUP\FULL_0EL2KM06_1_1.BAK                    2010-01-04 17:05:04
E:\BACKUP\FULL_0FL2KM0I_1_1.BAK                    2010-01-04 17:05:05
E:\BACKUP\FULL_0HL2KM67_1_1.BAK                    2010-01-04 17:05:11
E:\BACKUP\ARC_0IL2KMA7_1_1.BAK                     2010-01-04 17:07:28
E:\BACKUP\ARC_0JL2KMA7_1_1.BAK                     2010-01-04 17:07:37
E:\BACKUP\ARC_0KL2KMA7_1_1.BAK                     2010-01-04 17:07:41

已选择8行。
SQL> SELECT INCARNATION#,STATUS,RESETLOGS_TIME FROM V$DATABASE_INCARNATION;
INCARNATION# STATUS  RESETLOGS_TIME
------------ ------- -------------------
           1 PARENT  2009-12-02 09:16:22
           2 PARENT  2010-01-04 12:03:28
           3 ORPHAN  2010-01-07 11:06:13
           4 CURRENT 2010-01-07 11:36:16

可见数据的备份时在原型2时备份的。如果恢复时间点落在了当前原型中,和一般恢复没什么区别。
 
RMAN>  RUN{
2> SET UNTIL TIME "to_date('2010-01-07 11:37:09','yyyy-mm-dd hh24:mi:ss')
3> RESTORE DATABASE;
4> RECOVER DATABASE;
5> }
正在执行命令: SET until clause
使用目标数据库控制文件替代恢复目录
启动 restore 于 07-1月 -10
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
分配的通道: ORA_DISK_2
通道 ORA_DISK_2: sid=154 devtype=DISK
分配的通道: ORA_DISK_3
通道 ORA_DISK_3: sid=153 devtype=DISK
未处理数据文件 8, 因为文件是只读的
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00004恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\USERS01.DBF
通道 ORA_DISK_1: 正在读取备份段 E:\BACKUP\FULL_0DL2KM06_1_1.BAK
通道 ORA_DISK_2: 正在开始恢复数据文件备份集
通道 ORA_DISK_2: 正在指定从备份集恢复的数据文件
正将数据文件00005恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\DATA01.DBF
正将数据文件00007恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\DWIDXTBS01.DBF
正将数据文件00009恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\PERFSTAT01.DBF
正将数据文件00010恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\ROLLBACK01.DBF
通道 ORA_DISK_2: 正在读取备份段 E:\BACKUP\FULL_0EL2KM06_1_1.BAK
通道 ORA_DISK_3: 正在开始恢复数据文件备份集
通道 ORA_DISK_3: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\SYSTEM01.DBF
正将数据文件00002恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\UNDOTBS01.DBF
正将数据文件00003恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\SYSAUX01.DBF
正将数据文件00006恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\DWTBS01.DBF
通道 ORA_DISK_3: 正在读取备份段 E:\BACKUP\FULL_0FL2KM0I_1_1.BAK
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = E:\BACKUP\FULL_0DL2KM06_1_1.BAK 标记 = TAG20100104T170157
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:07
通道 ORA_DISK_2: 已恢复备份段 1
段句柄 = E:\BACKUP\FULL_0EL2KM06_1_1.BAK 标记 = TAG20100104T170157
通道 ORA_DISK_2: 恢复完成, 用时: 00:02:38
通道 ORA_DISK_3: 已恢复备份段 1
段句柄 = E:\BACKUP\FULL_0FL2KM0I_1_1.BAK 标记 = TAG20100104T170157
通道 ORA_DISK_3: 恢复完成, 用时: 00:02:39
完成 restore 于 07-1月 -10
启动 recover 于 07-1月 -10
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
使用通道 ORA_DISK_3
未处理数据文件 8, 因为文件是只读的
正在开始介质的恢复
存档日志线程 1 序列 133 已作为文件 C:\ARCHIVELOG\ARC00133_0707400208.001 存在于磁盘

存档日志线程 1 序列 134 已作为文件 C:\ARCHIVELOG\ARC00134_0707400208.001 存在于磁盘

存档日志线程 1 序列 135 已作为文件 C:\ARCHIVELOG\ARC00135_0707400208.001 存在于磁盘

存档日志线程 1 序列 136 已作为文件 C:\ARCHIVELOG\ARC00136_0707400208.001 存在于磁盘

存档日志线程 1 序列 137 已作为文件 C:\ARCHIVELOG\ARC00137_0707400208.001 存在于磁盘

存档日志线程 1 序列 138 已作为文件 C:\ARCHIVELOG\ARC00138_0707400208.001 存在于磁盘
...................
...................
存档日志文件名 =C:\ARCHIVELOG\ARC00133_0707400208.001 线程 =1 序列 =133
存档日志文件名 =C:\ARCHIVELOG\ARC00134_0707400208.001 线程 =1 序列 =134
存档日志文件名 =C:\ARCHIVELOG\ARC00135_0707400208.001 线程 =1 序列 =135
存档日志文件名 =C:\ARCHIVELOG\ARC00136_0707400208.001 线程 =1 序列 =136
存档日志文件名 =C:\ARCHIVELOG\ARC00137_0707400208.001 线程 =1 序列 =137
存档日志文件名 =C:\ARCHIVELOG\ARC00138_0707400208.001 线程 =1 序列 =138
存档日志文件名 =C:\ARCHIVELOG\ARC00139_0707400208.001 线程 =1 序列 =139
存档日志文件名 =C:\ARCHIVELOG\ARC00140_0707400208.001 线程 =1 序列 =140
存档日志文件名 =C:\ARCHIVELOG\ARC00141_0707400208.001 线程 =1 序列 =141
存档日志文件名 =C:\ARCHIVELOG\ARC00142_0707400208.001 线程 =1 序列 =142
存档日志文件名 =C:\ARCHIVELOG\ARC00143_0707400208.001 线程 =1 序列 =143
存档日志文件名 =C:\ARCHIVELOG\ARC00156_0707400208.001 线程 =1 序列 =156
.................
.................
介质恢复完成, 用时: 00:01:56
完成 recover 于 07-1月 -10
 
如果恢复时间落在先前原型中,如果在当前的原型中RESTORE数据文件,会报RMAN-20207:
UNTIL TIME or RECOVERY WINDOW is before RESETLOGS time 错误。
 
SQL> SELECT INCARNATION#,STATUS,RESETLOGS_TIME FROM V$DATABASE_INCARNATION;
INCARNATION# STATUS  RESETLOGS_TIME
------------ ------- -------------------
           1 PARENT  2009-12-02 09:16:22
           2 PARENT  2010-01-04 12:03:28
           3 ORPHAN  2010-01-07 11:06:13
           4 CURRENT 2010-01-07 11:36:16
譬如当前数据库原型是4,我们将数据库恢复到2010-01-07 10:54:09,即恢复点落在了原型2中

RMAN>  RUN{
2> SET UNTIL TIME "to_date('2010-01-07 10:54:09','yyyy-mm-dd hh24:mi:ss'
3> RESTORE DATABASE;
4> RECOVER DATABASE;
5> }
正在执行命令: SET until clause
使用目标数据库控制文件替代恢复目录
 MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: set 命令 (在 01/07/2010 11:12:04 上) 失败
RMAN-20207: UNTIL TIME or RECOVERY WINDOW is before RESETLOGS time

此时我们需要将数据库的当前原型设置为恢复时间点所在的数据库原型。本例中为2.
 
RMAN> RESET DATABASE TO INCARNATION 2;
 
将数据库重置为原型 2
RMAN> list incarnation;
使用目标数据库控制文件替代恢复目录
数据库原型列表
DB 关键字  Inc 关键字 DB 名  DB ID            STATUS  重置 SCN  重置时间
------- ------- -------- ---------------- --- ---------- ----------
1       1       TOMSYAN  3691161958       PARENT  1          02-12月-09
2       2       TOMSYAN  3691161958       CURRENT 3033490099 04-1月 -10
3       3       TOMSYAN  3691161958       ORPHAN  3033706758 07-1月 -10
4       4       TOMSYAN  3691161958       ORPHAN  3033706759 07-1月 -10
RMAN> RUN{
2> SET UNTIL TIME "to_date('2010-01-07 10:54:09','yyyy-mm-dd hh24:mi:ss')";
3> RESTORE DATABASE;
4> RECOVER DATABASE;
5> }
正在执行命令: SET until clause
启动 restore 于 07-1月 -10
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
分配的通道: ORA_DISK_2
通道 ORA_DISK_2: sid=154 devtype=DISK
分配的通道: ORA_DISK_3
通道 ORA_DISK_3: sid=153 devtype=DISK
未处理数据文件 8, 因为文件是只读的
通道 ORA_DISK_2: 正在开始恢复数据文件备份集
通道 ORA_DISK_2: 正在指定从备份集恢复的数据文件
正将数据文件00005恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\DATA01.DBF
正将数据文件00007恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\DWIDXTBS01.DBF
正将数据文件00009恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\PERFSTAT01.DBF
正将数据文件00010恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\ROLLBACK01.DBF
通道 ORA_DISK_2: 正在读取备份段 E:\BACKUP\FULL_0EL2KM06_1_1.BAK
通道 ORA_DISK_3: 正在开始恢复数据文件备份集
通道 ORA_DISK_3: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\SYSTEM01.DBF
.................
.................
段句柄 = E:\BACKUP\FULL_0EL2KM06_1_1.BAK 标记 = TAG20100104T170157
通道 ORA_DISK_2: 恢复完成, 用时: 00:02:35
通道 ORA_DISK_3: 已恢复备份段 1
段句柄 = E:\BACKUP\FULL_0FL2KM0I_1_1.BAK 标记 = TAG20100104T170157
通道 ORA_DISK_3: 恢复完成, 用时: 00:02:35
完成 restore 于 07-1月 -10
启动 recover 于 07-1月 -10
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
使用通道 ORA_DISK_3
未处理数据文件 8, 因为文件是只读的
正在开始介质的恢复
存档日志线程 1 序列 133 已作为文件 C:\ARCHIVELOG\ARC00133_0707400208.001 存在于
磁盘上
存档日志线程 1 序列 134 已作为文件 C:\ARCHIVELOG\ARC00134_0707400208.001 存在于
磁盘上
存档日志线程 1 序列 135 已作为文件 C:\ARCHIVELOG\ARC00135_0707400208.001 存在于
磁盘上
.................
.................
介质恢复完成, 用时: 00:02:54
完成 recover 于 07-1月 -10
 
RMAN> SQL 'ALTER DATABASE OPEN RESETLOGS';
 
sql 语句: ALTER DATABASE OPEN RESETLOGS
 
RMAN> LIST INCARNATION;

数据库原型列表
DB 关键字  Inc 关键字 DB 名  DB ID            STATUS  重置 SCN  重置时间
------- ------- -------- ---------------- --- ---------- ----------
1       1       TOMSYAN  3691161958       PARENT  1          02-12月-09
2       2       TOMSYAN  3691161958       PARENT  3033490099 04-1月 -10
3       3       TOMSYAN  3691161958       ORPHAN  3033706758 07-1月 -10
4       4       TOMSYAN  3691161958       ORPHAN  3033706759 07-1月 -10
5       5       TOMSYAN  3691161958       CURRENT 3033706759 07-1月 -10
 
 
阅读(1602) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

TOMSYAN2010-04-21 10:30:30

在SQLPLUS下执行一下: ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'

chinaunix网友2010-04-21 09:07:09

我SELECT INCARNATION#,STATUS,RESETLOGS_TIME FROM V$DATABASE_INCARNATION; INCARNATION# STATUS RESETLOGS_TIME 获取的resetlogs_time怎么只有年月天,没有小时、分,这个可以设置么?