-------------------------------------TSPITR
1 简介:
把某几个表空间恢复到过去某个时间点,而其他的表空间保持现有的状态
2 适用环境:
1 truncate表等
3 相关术语
1 target time: 要恢复的时间点
2 recover set: 要恢复的表空间
3 auxiliary set: 恢复需要的表空间(system,undo)
4 auxiliary destination: 保存auxiliary instance的auxiliary set,cf,redo log文件,恢复后自 动删除
4 要求:
1 恢复的表空间集必须是自包含的。
违反自包含情况:
1 表空间集包含sys对象
2 表空间集中索引对应的表空间不在恢复的表空间中
3 表空间集没有包含分区表的所有的分区
4 表空间集包含了表所在表空间,但没包含log_segment所在表空间
查看是否自包含:
SELECT * FROM SYS.TS_PITR_CHECK
WHERE ( TS1_NAME IN ('TEST')
AND TS2_NAME NOT IN ('TEST'))
OR (TS1_NAME NOT IN ('TEST')
AND TS2_NAME IN ('TEST'));
返回没记录就代表是自包含的
5 根据对象的create时间查找恢复后可能丢失的对象
select * from ts_pitr_objects_to_be_dropped
--------------用户管理的TSPITR
1 建立测试表空间
2 备份数据库
backup database
3 建立测试表
4 把测试表空间恢复到建立表前的一个时间点
5 创建辅助例程的参数文件,修改下面的参数:
db_unique_name:不同与主库实例
control_files:cf位置
db_file_name_convert:主库和辅助库数据文件的对应
log_file_name_conver:主库和辅助库日志文件的对应
6 恢复辅助实例的数据文件到相应的位置
7 启动辅助实例,并且以clone方式装载数据库
alter database mount clone database
8 使system undo 表空间集 online
9 对辅助实例做不完全恢复
10 alter database open resetlogs方式打开数据库
11 在辅助实例上建立temp表空间
12 导出表空间的原数据
exp 'sys/test as sysdba' point_in_time_recover=y tablespaces=test file=d:\ts.dmp
13 使主数据库的test表空间脱机
alter tablespace test offline
14 拷贝辅助实例恢复完成的表空间集的数据文件到主数据库的原始位置,覆盖主数据库的文件
15 主库导入dmp文件
imp 'sys/test as sysdba' point_in_time_recover=y datafiles=d:\teset.dbf file=d:\ts.dmp
16 表空间联机
alter tablespace test online
17 查看恢复情况
-----注意db_file_name_convert, log_file_name_conver 的使用,如果指定这两个参数,cf里的df的名字会跟随
db_file_name_convert 变化,列子:
db_file_name_convert=('C:\oracle\product\10.2.0\oradata\test','d:\au')
select * from v$datafile 发现数据文件的名字都改成了d:\au\...
----------------rman 管理的tspitr
recover tablespace test until scn 345334 auxiliary destination 'e:\aui';
alter tablespace test online
----注意事项:
完成tspitr后,表空间集以前的备份都不能用了,要马上做表空间集上的备份。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69265/viewspace-557595/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/69265/viewspace-557595/