2011年7月13日水曜日

[备份恢复] 基于表空间的时间点恢复 (stpitr)

注意
仅适用于归档模式
恢复集所包含的表空间必须自包含
辅助数据库必须包括 system, undo 和恢复集的表空间

1. 用户管理方式

1-1. 检查是否自包含

符合标准则返回0记录 
exec dbms_tts.transport_set_check('tbs',true,true);
select * from transport_set_violations;

1-2. 确认数据文件及备份
确认是否存在要恢复表空间的 datafile 的备份, 必须是恢复点之前的备份
确认是否存在辅助集的 datafile 和控制备份, 必须是恢复点之前的备份
select file_name from dba_data_files where tablespace_name in ('SYSTEM','UNDOTBS1');
select max(name) from v$controlfile;

1-3. 备份数据文件和控制文件
alter database begin backup;
cp /data/orcl/*.dbf /backup
alter database controlfile to file '/backup/control.ctl';
alter database end backup;

1-4. 确认 tspitr 之后会丢失的对象

如果有会被删除的对象, 应在 tspitr 之前 exp 导出, 在 tspitr 之后再导入
select owner,name from ts_pitr_objects_to_be_dropped where tablespace_name='USERS' and creation_time>to_date('2011-01-01 12:00:00','yyyy-mm-dd hh24:mi:ss');

1-5. 建立辅助例程服务
创建辅助实例 (
仅 windows 需要)
oradim -new -sid auxi -intpwd oracle

1-6. 创建辅助实例密码文件
orapwd file='/data/orapwauxi.ora' password=auxi entries=5

1-7. 创建辅助实例初始化参数文件并编辑参数
create pfile='/data/initauxi.ora' from spfile;
----------------
db_unique_name=auxi
control_files='/data/auxi/control.ctl'
db_file_name_convert=('/data/orcl','/data/auxi')
log_file_name_convert=('/data/orcl','/data/auxi')
----------------

1-8. 复制恢复集数据文件和辅助集文件及相关的日志文件
cp /backup/* /data/auxi/
cp /flash_recovery_area/orcl/archivelog/2011-01-01 /flash_recovery_area/auxi/archivelog/2011-01-01

1-9. 启动辅助例程并并 mount 数据库
export ORACLE_SID=auxi
sqlplus / as sysdba
startup nomount;
alter database mount clone database;

1-10. 使恢复集和辅助集数据文件 online
mount 后所有数据文件都是 offline 的, 需要把 system, undo, tbs表空间的数据文件 online
alter database datafile '/data/auxi/system01.dbf' online;
alter database datafile '/data/auxi/undotbs01.dbf' online;
alter database datafile '/data/auxi/tbs01.dbf' online;

1-11. 恢复辅助数据库到 TRPITR 时间点
recover database until time '2011-01-01 10:10:10' using backup controlfile;
auto

1-12. resetlogs 打开辅助数据库, 并查看时候恢复到所要状态
alter database open resetlogs;

1-13. 在辅助数据库上建立临时表空间
alter tablespace temp add tempfile '/data/auxi/temp02.dbf' size 5m reuse;

1-14. 导出辅助数据库的恢复集表空间
exp "'sys/test as sysdba'" point_in_time_recover=y tablespaces=tbs file=tbs.dmp

1-15. 使主数据库的恢复集表空间脱机
alter tablespace tbs offline;

1-16. 导入恢复集表空间到主数据库
cp /data/auxi/tbs01.dbf /data/orcl/tbs01.dbf
imp "'sys/admin@orcl as sysdba'" point_in_time_recover=y datafiles=/data/orcl/tbs.dbf file=tbs.dmp

1-17. 使主数据库恢复集表空间联机, 检查恢复结果
alter tablespace tbs online;

1-18. 删除辅助例程
sqlplus sys as sysdba
shutdown immediate;
rm -rfv /data/auxi/
rm -rfv /flash_recovery_area/auxi/
rm -rfv /u01/app/oracle/admin/auxi/
------------------------------------------------------------------------------------------------------------
RMAN方式 ???

0 件のコメント:

コメントを投稿