ITPub博客

首页 > 数字化转型 > ERP > RMAN TSPITR的一个实例

RMAN TSPITR的一个实例

原创 ERP 作者:zsj3874 时间:2007-10-27 13:42:03 0 删除 编辑
RMAN TSPITR的一个实例[@more@]

目标库DB_NAME=ZHAO

INSTANCE_NAME=ZHAO


首先更改数据库为归档模式:
数据库为OPEN:
sql>alter system set log_archive_start=true scope=spfile;
sql>alter system set log_archive_dest='D:oracleproduct10.2.0oradatazhaoarchivelog' scope=spfile;
sql>alter system set log_archive_format='arc_%s_%t_%r.log' scope=spfile;
sql>startup force mount;
sql>alter database archivelog;
sql>alter database open;


创建相关的表空间和对象
sql>create tablespace test datafile 'D:oracleproduct10.2.0oradatazhaotest.dbf' size 100m extent management local uniform size 1m
segment space management auto;
sql>create user test identified by test default tablespace test temporary tablespace temp quota unlimited on test;
sql>grant connect,resource,dba to test;
sql>exit;
d:>sqlplus

sql>create table zsj_test1 as select * from dba_users;
sql>create table zsj_test2 as select * from dba_objects;


备份数据库
D:>rman targe /
rman>configure default device type to disk;
rman>configure device type disk parallelism 1;
rman>configure channel device type disk format 'e:db_backupdb_%U';
rman>backup full database plus archivelog;


然后执行一系列的操作,2007-10-26 16:45:50(要恢复到的时间点)时的结果是:zsj_test1(448条记录),zsj_test2(98条记录)
而后sql>alter system archive log current;(恢复终止的时间点必须在归档重做日志中吗??????恢复终止的时间点必须>=控制文件备份的时间点吗??????)
然后drop table zsj_test1,drop table zsj_test2.


sql>create pfile='e:aux1initaux1.ora' from spfile;
这里恢复集是:test,其它的都是辅助集(包括undo,system表空间)
1.不通过orapwd建立密码文件了,不通过net connectivity连接了,使用本地操作系统认证
2.为辅助实例建立pfile:
在e:aux1initaux1.ora下添加如下几行:
db_name=zhao #等同于目标库
lock_name_space=aux1 #不同于同一oracle_home下的任何数据库(即不同于使用同一个bin目录的其它数据库)
db_file_name_convert=('D:oracleproduct10.2.0oradatazhao','E:aux1') #只转换辅助集,不转换恢复集,且辅助集必须和目标库的不一样
log_file_name_convert=('D:oracleproduct10.2.0oradatazhao','E:aux1')
control_files=e:aux1AUX1_CONTROL.CTL #辅助实例的控制文件,必须不同于主库的控制文件,复原的控制文件将复原到这个位置
log_archive_start=false #辅助实例必须是非归档模式?

3.windows下建立服务(UNIX下不需要)
d:>oradim -new -sid aux1 -syspwd zsj3874 -startmode manual -pfile e:aux1initaux1.ora

4:启动辅助实例
d:>set oracle_sid=aux1
d:>sqlplus "/as sysdba"
sql>startup nomount pfile=e:aux1initaux1.ora #随后还要复原控制文件呢,所以是nomount状态

5:进行TSPITR:
D:>set oracle_sid=aux1
d:>rman target auxiliary / trace e:aux1tspitr.trc
rman>
run
{
allocate auxiliary channel a1 device type disk;
allocate channel c1 device type disk;
recover tablespace "TEST" until time "to_date('2007-10-26 16:45:50','yyyy-mm-dd hh24:mi:ss')";
#只这个,使用目标库已经配置的通道为什么不可以?
#注意test是RMAN里面的一个关键字,recover...test,所以应该加上" ",且TEST为大写的,因为数据字典中是大写的.
}
修改了recover.bsq中有关create tablespace aux_tspitr_tmp的一行记录


大致的过程如下:
1.startup nomount pfile=e:aux1initaux1.ora启动辅助库到nomount状态
2.复原控制文件到辅助库pfile中control_files指定的位置处,改变辅助库到mount状态
3.因为主库此时是open的,所以把恢复集表空间offline for recover
4.为辅助库set new for 恢复集和辅助集的文件(辅助集的文件必须不同,恢复集的文件可以相同,也可以不同)
5.restore恢复集和辅助集的文件到辅助库指定的位置
6.switch datafile使得辅助库的控制文件中的数据文件指向新的位置
7.把辅助库的恢复集和辅助集的文件都online(因为此时辅助库是mount)
8.recover until time
9.alter clone database open resetlogs(打开辅助库)
10.导出
11.导入

你需要做的善后工作是:
1.sql>alter tablespace test online(主库上)
2.删除辅助库和实例:
sql>shutdown abort;(辅助库上)
D:>oradim -delete -sid aux1
删除辅助文件:辅助的数据文件,辅助库的控制文件,辅助库的联机重做日志文件(都是复原出来的),tablespace aux_tspitr_tmp的数据文件(创建出来的),辅助库的pfile(自己创建的)


补充的东西:
set newname for datafile:可以重命名辅助集和恢复集的所有文件,优先级最高
configure auxname for datafile 可以重命名辅助集和恢复集的所有文件,优先级次高
辅助库的pfile中db_file_name_convert只可以重命名辅助集的所有文件,优先级最低

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

上一篇: 你没有做到的事
请登录后发表评论 登录
全部评论
  • 博文量
    16
  • 访问量
    45722