ITPub博客

利用RMAN做TSPITR

原创 Linux操作系统 作者:赵宇 时间:2009-07-22 17:33:39 0 删除 编辑

C:\Documents and Settings\zhao>set NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS
C:\Documents and Settings\zhao>rman target / nocatalog

恢复管理器: Release 10.2.0.1.0 - Production on 星期三 7月 22 16:55:25 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到目标数据库: AUXDB (DBID=551299096)
使用目标数据库控制文件替代恢复目录

RMAN> recover tablespace users
2> until time '2009-07-22 16:30:00'
3> auxiliary destination 'D:\oracle\product\10.2.0\flash_recovery_area\AUXDB';

启动 recover 于 2009-07-22 16:55:31
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=154 devtype=DISK
RMAN-05026: 警告: 假定以下表空间集适用于指定的时间点

表空间列表要求具有 UNDO 段
表空间 SYSTEM
表空间 UNDOTBS1

使用 SID='kBvC' 创建自动实例

供自动实例使用的初始化参数:
db_name=AUXDB
compatible=10.2.0.1.0
db_block_size=8192
db_files=200
db_unique_name=tspitr_AUXDB_kBvC
large_pool_size=1M
shared_pool_size=110M
#No auxiliary parameter file used
db_create_file_dest=D:\oracle\product\10.2.0\flash_recovery_area\AUXDB
control_files=D:\oracle\product\10.2.0\flash_recovery_area\AUXDB/cntrl_tspitr_AUXDB_kBvC.f


启动自动实例 AUXDB

Oracle 实例已启动

系统全局区域总计     205520896 字节

Fixed Size                     1248092 字节
Variable Size                146801828 字节
Database Buffers              50331648 字节
Redo Buffers                   7139328 字节
自动实例已创建

内存脚本的内容:
{
# set the until clause
set until  time "2009-07-22 16:30:00";
# restore the controlfile
restore clone controlfile;
# mount the controlfile
sql clone 'alter database mount clone database';
# archive current online log for tspitr to a resent until time
sql 'alter system archive log current';
# avoid unnecessary autobackups for structural changes during TSPITR
sql 'begin dbms_backup_restore.AutoBackupFlag(FALSE); end;';
}
正在执行内存脚本

正在执行命令: SET until clause

启动 restore 于 2009-07-22 16:56:03
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=37 devtype=DISK


删除自动实例
关闭自动实例
Oracle 实例已关闭
自动实例已删除

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 07/22/2009 16:56:04 上) 失败
RMAN-03015: 在存储的脚本Memory Script中出现错误
RMAN-06026: 有些目标没有找到 - 终止恢复
RMAN-06024: 没有找到控制文件的备份或副本来复原

 

 


RMAN> list backup of controlfile;


备份集列表
===================

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ -------------------
2       Full    7.08M      DISK        00:00:02     2009-07-22 16:39:43
        BP 关键字: 2   状态: AVAILABLE  已压缩: NO  标记: TAG20090722T163941
段名:D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\BACKUPSET\2009_07_22\O1_MF_NCNNF_TAG20090722T163941_56FN2G8S_.B
KP
  包括的控制文件: Ckp SCN: 848190       Ckp 时间: 2009-07-22 16:39:41

RMAN> recover tablespace users
2> until time '2009-07-22 16:39:50'
3> auxiliary destination 'D:\oracle\product\10.2.0\flash_recovery_area\AUXDB';

启动 recover 于 2009-07-22 16:58:10
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=146 devtype=DISK
RMAN-05026: 警告: 假定以下表空间集适用于指定的时间点

表空间列表要求具有 UNDO 段
表空间 SYSTEM
表空间 UNDOTBS1

使用 SID='ityk' 创建自动实例

供自动实例使用的初始化参数:
db_name=AUXDB
compatible=10.2.0.1.0
db_block_size=8192
db_files=200
db_unique_name=tspitr_AUXDB_ityk
large_pool_size=1M
shared_pool_size=110M
#No auxiliary parameter file used
db_create_file_dest=D:\oracle\product\10.2.0\flash_recovery_area\AUXDB
control_files=D:\oracle\product\10.2.0\flash_recovery_area\AUXDB/cntrl_tspitr_AUXDB_ityk.f


启动自动实例 AUXDB

Oracle 实例已启动

系统全局区域总计     205520896 字节

Fixed Size                     1248092 字节
Variable Size                146801828 字节
Database Buffers              50331648 字节
Redo Buffers                   7139328 字节
自动实例已创建

内存脚本的内容:
{
# set the until clause
set until  time "2009-07-22 16:39:50";
# restore the controlfile
restore clone controlfile;
# mount the controlfile
sql clone 'alter database mount clone database';
# archive current online log for tspitr to a resent until time
sql 'alter system archive log current';
# avoid unnecessary autobackups for structural changes during TSPITR
sql 'begin dbms_backup_restore.AutoBackupFlag(FALSE); end;';
}
正在执行内存脚本

正在执行命令: SET until clause

启动 restore 于 2009-07-22 16:58:42
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=37 devtype=DISK

通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在复原控制文件
通道 ORA_AUX_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\BACKUPSET\2009_07_22\O1_MF_NCNNF
_TAG20090722T163941_56FN2G8S_.BKP
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\BACKUPSET\2009_07_22\O1_MF_NCNNF_TAG20090722T163941_56FN2G8
S_.BKP 标记 = TAG20090722T163941
通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:05
输出文件名=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\CNTRL_TSPITR_AUXDB_ITYK.F
完成 restore 于 2009-07-22 16:58:49

sql 语句: alter database mount clone database

sql 语句: alter system archive log current

sql 语句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;
释放的通道: ORA_DISK_1
释放的通道: ORA_AUX_DISK_1

内存脚本的内容:
{
# generated tablespace point-in-time recovery script
# set the until clause
set until  time "2009-07-22 16:39:50";
plsql <<<-- tspitr_2
declare
  sqlstatement       varchar2(512);
  offline_not_needed exception;
  pragma exception_init(offline_not_needed, -01539);
begin
  sqlstatement := 'alter tablespace '||  'USERS' ||' offline for recover';
  krmicd.writeMsg(6162, sqlstatement);
  krmicd.execSql(sqlstatement);
exception
  when offline_not_needed then
    null;
end; >>>;
# set an omf destination filename for restore
set newname for clone datafile  1 to new;
# set an omf destination filename for restore
set newname for clone datafile  2 to new;
# set an omf destination tempfile
set newname for clone tempfile  1 to new;
# set a destination filename for restore
set newname for datafile  4 to
 "D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS.258.692722797";
# rename all tempfiles
switch clone tempfile all;
# restore the tablespaces in the recovery set plus the auxilliary tablespaces
restore clone datafile  1, 2, 4;
switch clone datafile all;
#online the datafiles restored or flipped
sql clone "alter database datafile  1 online";
#online the datafiles restored or flipped
sql clone "alter database datafile  2 online";
#online the datafiles restored or flipped
sql clone "alter database datafile  4 online";
# make the controlfile point at the restored datafiles, then recover them
recover clone database tablespace  "USERS", "SYSTEM", "UNDOTBS1" delete archivelog;
alter clone database open resetlogs;
# PLUG HERE the creation of a temporary tablespace if export fails due to lack
# of temporary space.
# For example in Unix these two lines would do that:
#sql clone "create tablespace aux_tspitr_tmp
#           datafile ''/tmp/aux_tspitr_tmp.dbf'' size 500K";
}
正在执行内存脚本

正在执行命令: SET until clause

sql 语句: alter tablespace USERS offline for recover

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

临时文件 1 在控制文件中已重命名为 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\TSPITR_A\DATAFILE\O1_MF_TEMP_%U_.T
MP

启动 restore 于 2009-07-22 16:58:59
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=39 devtype=DISK


删除自动实例
关闭自动实例
Oracle 实例已关闭
自动实例已删除

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 07/22/2009 16:59:01 上) 失败
RMAN-03015: 在存储的脚本Memory Script中出现错误
RMAN-06026: 有些目标没有找到 - 终止恢复
RMAN-06023: 没有找到数据文件2的副本来恢复
RMAN-06023: 没有找到数据文件1的副本来恢复

 


TSPITR:
C:\Documents and Settings\zhao>rman target / nocatalog

恢复管理器: Release 10.2.0.1.0 - Production on 星期三 7月 22 17:10:42 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到目标数据库: AUXDB (DBID=551299096)
使用目标数据库控制文件替代恢复目录

RMAN> recover tablespace users
2> until time '2009-07-22 17:11:00'
3> auxiliary destination 'D:\oracle\product\10.2.0\flash_recovery_area\AUXDB';

启动 recover 于 2009-07-22 17:20:07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=146 devtype=DISK
RMAN-05026: 警告: 假定以下表空间集适用于指定的时间点

表空间列表要求具有 UNDO 段
表空间 SYSTEM
表空间 UNDOTBS1

使用 SID='phqE' 创建自动实例

供自动实例使用的初始化参数:
db_name=AUXDB
compatible=10.2.0.1.0
db_block_size=8192
db_files=200
db_unique_name=tspitr_AUXDB_phqE
large_pool_size=1M
shared_pool_size=110M
#No auxiliary parameter file used
db_create_file_dest=D:\oracle\product\10.2.0\flash_recovery_area\AUXDB
control_files=D:\oracle\product\10.2.0\flash_recovery_area\AUXDB/cntrl_tspitr_AUXDB_phqE.f


启动自动实例 AUXDB

Oracle 实例已启动

系统全局区域总计     205520896 字节

Fixed Size                     1248092 字节
Variable Size                146801828 字节
Database Buffers              50331648 字节
Redo Buffers                   7139328 字节
自动实例已创建

内存脚本的内容:
{
# set the until clause
set until  time "2009-07-22 17:11:00";
# restore the controlfile
restore clone controlfile;
# mount the controlfile
sql clone 'alter database mount clone database';
# archive current online log for tspitr to a resent until time
sql 'alter system archive log current';
# avoid unnecessary autobackups for structural changes during TSPITR
sql 'begin dbms_backup_restore.AutoBackupFlag(FALSE); end;';
}
正在执行内存脚本

正在执行命令: SET until clause

启动 restore 于 2009-07-22 17:20:40
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=37 devtype=DISK

通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在复原控制文件
通道 ORA_AUX_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\BACKUPSET\2009_07_22\O1_MF_NCNNF
_TAG20090722T170645_56FOPQ5V_.BKP
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\BACKUPSET\2009_07_22\O1_MF_NCNNF_TAG20090722T170645_56FOPQ5
V_.BKP 标记 = TAG20090722T170645
通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:01
输出文件名=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\CNTRL_TSPITR_AUXDB_PHQE.F
完成 restore 于 2009-07-22 17:20:43

sql 语句: alter database mount clone database

sql 语句: alter system archive log current

sql 语句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;
释放的通道: ORA_DISK_1
释放的通道: ORA_AUX_DISK_1

内存脚本的内容:
{
# generated tablespace point-in-time recovery script
# set the until clause
set until  time "2009-07-22 17:11:00";
# set an omf destination filename for restore
set newname for clone datafile  1 to new;
# set an omf destination filename for restore
set newname for clone datafile  2 to new;
# set an omf destination tempfile
set newname for clone tempfile  1 to new;
# set a destination filename for restore
set newname for datafile  4 to
 "D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS.258.692722797";
# rename all tempfiles
switch clone tempfile all;
# restore the tablespaces in the recovery set plus the auxilliary tablespaces
restore clone datafile  1, 2, 4;
switch clone datafile all;
#online the datafiles restored or flipped
sql clone "alter database datafile  1 online";
#online the datafiles restored or flipped
sql clone "alter database datafile  2 online";
#online the datafiles restored or flipped
sql clone "alter database datafile  4 online";
# make the controlfile point at the restored datafiles, then recover them
recover clone database tablespace  "USERS", "SYSTEM", "UNDOTBS1" delete archivelog;
alter clone database open resetlogs;
# PLUG HERE the creation of a temporary tablespace if export fails due to lack
# of temporary space.
# For example in Unix these two lines would do that:
#sql clone "create tablespace aux_tspitr_tmp
#           datafile ''/tmp/aux_tspitr_tmp.dbf'' size 500K";
}
正在执行内存脚本

正在执行命令: SET until clause

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

临时文件 1 在控制文件中已重命名为 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\TSPITR_A\DATAFILE\O1_MF_TEMP_%U_.T
MP

启动 restore 于 2009-07-22 17:20:53
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=39 devtype=DISK

通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\TSPITR_A\DATAFILE\O1_MF_SYSTEM_%U_.DBF
正将数据文件00002恢复到D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\TSPITR_A\DATAFILE\O1_MF_UNDOTBS1_%U_.DBF
通道 ORA_AUX_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\BACKUPSET\2009_07_22\O1_MF_NNNDF
_TAG20090722T170645_56FOO5H4_.BKP
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\BACKUPSET\2009_07_22\O1_MF_NNNDF_TAG20090722T170645_56FOO5H
4_.BKP 标记 = TAG20090722T170645
通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:46
通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00004恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS.258.692722797
通道 ORA_AUX_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\BACKUPSET\2009_07_22\O1_MF_NNNDF
_TAG20090722T170941_56FOTP2X_.BKP
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\BACKUPSET\2009_07_22\O1_MF_NNNDF_TAG20090722T170941_56FOTP2
X_.BKP 标记 = TAG20090722T170941
通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:02
完成 restore 于 2009-07-22 17:21:44

数据文件 1 已转换成数据文件副本
输入数据文件副本 recid=7 stamp=692904104 文件名=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\TSPITR_A\DATAFILE\O1
_MF_SYSTEM_56FPHS7B_.DBF
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=8 stamp=692904105 文件名=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\TSPITR_A\DATAFILE\O1
_MF_UNDOTBS1_56FPHSBQ_.DBF

sql 语句: alter database datafile  1 online

sql 语句: alter database datafile  2 online

sql 语句: alter database datafile  4 online

启动 recover 于 2009-07-22 17:21:46
使用通道 ORA_AUX_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 3 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH1\ARC00003_0692832926.001 存在于磁盘上
存档日志线程 1 序列 4 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH1\ARC00004_0692832926.001 存在于磁盘上
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH1\ARC00003_0692832926.001 线程 =1 序列 =3
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH1\ARC00004_0692832926.001 线程 =1 序列 =4
介质恢复完成, 用时: 00:00:04
完成 recover 于 2009-07-22 17:21:55

数据库已打开

内存脚本的内容:
{
#online the tablespace will be exported
sql clone "alter tablespace  USERS online";
# export the tablespaces in the recovery set
host 'exp userid =\"/@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=oracle)(ARGV0=oraclephqE)(ARGS=^'(DESCRIPTION=(LOCAL
=YES)(ADDRESS=(PROTOCOL=beq)))^')(ENVS=^'ORACLE_SID=phqE^'))(CONNECT_DATA=(SID=phqE))) as sysdba\" point_in_time_recove
r=y tablespaces=
 USERS file=
tspitr_a.dmp';
# shutdown clone before import
shutdown clone immediate
# import the tablespaces in the recovery set
host 'imp userid =\"/@ as sysdba\" point_in_time_recover=y file=
tspitr_a.dmp';
# online/offline the tablespace imported
sql "alter tablespace  USERS online";
sql "alter tablespace  USERS offline";
# enable autobackups in case user does open resetlogs from RMAN after TSPITR
sql 'begin dbms_backup_restore.AutoBackupFlag(TRUE); end;';
}
正在执行内存脚本

sql 语句: alter tablespace  USERS online


Export: Release 10.2.0.1.0 - Production on 星期三 7月 22 17:22:17 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
注: 将不导出表数据 (行)

即将导出表空间时间点恢复对象...
对于表空间 USERS...
. 正在导出簇定义
. 正在导出表定义
. 正在导出引用完整性约束条件
. 正在导出触发器
. 终止时间点恢复
成功终止导出, 没有出现警告。
主机命令完成
sql 语句: alter tablespace  USERS online

sql 语句: alter tablespace  USERS offline

sql 语句: begin dbms_backup_restore.AutoBackupFlag(TRUE); end;

删除自动实例
自动实例已删除
已删除辅助实例文件 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\CNTRL_TSPITR_AUXDB_PHQE.F
已删除辅助实例文件 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\TSPITR_A\DATAFILE\O1_MF_SYSTEM_56FPHS7B_.DBF
已删除辅助实例文件 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\TSPITR_A\DATAFILE\O1_MF_UNDOTBS1_56FPHSBQ_.DBF
已删除辅助实例文件 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\TSPITR_A\DATAFILE\O1_MF_TEMP_56FPKXLK_.TMP
已删除辅助实例文件 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\TSPITR_A\ONLINELOG\O1_MF_1_56FPKMNZ_.LOG
已删除辅助实例文件 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\TSPITR_A\ONLINELOG\O1_MF_2_56FPKOQG_.LOG
已删除辅助实例文件 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AUXDB\TSPITR_A\ONLINELOG\O1_MF_3_56FPKQM1_.LOG
完成 recover 于 2009-07-22 17:22:51

 

总结,开始TSPITR失败的原因在于,恢复的时间早于备份控制文件的时间。而第2词失败原因在没有恢复表空间相关的数据文件的备份。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/175005/viewspace-609933/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-25

  • 博文量
    73
  • 访问量
    892154