根据表空间的TSPITR恢复


一般而言,数据库如果需要不完全恢复,那么整个数据库都是要利用备份来前滚和回滚的(untill子句)。是造成数据损失的。

1.创建辅助数据库aux:

set ORACLE_SID=aux

新建一个目录,以存入辅助数据库aux


mkdir F:auxdb


(2)

(3) oradim –new –sid aux -USRPWD jos -INTPWD jos

查询获取再要恢复的时间后是否还有其他对象的生成,切记恢复侯这些数据是会丢失的。

SELECT owner, name, tablespace_name, to_char(creation_time, 'YYYY-MM-DD:HH24:MI:SS')
FROM sys.ts_pitr_objects_to_be_dropped
WHERE tablespace_name IN ('POOLDB_MEDIUM')
AND creation_time > to_date('2002-MAY-29:11:50:00','YYYY-MON-DD:HH24:MI:SS')
ORDER BY tablespace_name, creation_time(依据对象创建时间来查)


Determine the relationships between objects that overlap the recovery boundaries by querying
TS_PIRT_CHECK view, if it returns rows, solve the problem then proceed.

SELECT * FROM sys.ts_pitr_check WHERE (ts1_name IN ('TS1','TS2') AND ts2_name NOT IN ('TS1','TS2')) OR (ts1_name NOT IN

('TS1','TS2') AND ts2_name IN ('TS1','TS2'));

In this case, TS1=POOLDB_MEDIUM, and there is TS2. If the query returns rows, add the returned
Tablespace name to the in list till no row returns, then proceed to solve the problem before continue


2.加入监听设置和网络连接配置。


lisner文件中: (SID_DESC =


(GLOBAL_DBNAME = aux)


(ORACLE_HOME = F:auxdb)


(SID_NAME = aux)


)

tnsname文件中

aux =


(DESCRIPTION =


(ADDRESS_LIST =


(ADDRESS = (PROTOCOL = TCP)(HOST = rainny-eb128e61)(PORT = 1521))


)


(CONNECT_DATA =


(SERVER = DEDICATED)


(SERVICE_NAME = aux)


)


)


4.复制一份initsid.ora参数文件和所有控制文件到aux存入的目录f:auxdb,重命名为initaux.ora,并修改内容,在此例中,目标数据是

rainny,RMAN CATALOG数据库是OEMREP,辅助数据库是aux.注意:


DB_NAME

和目标数据库相同,此例为rainny


LOCK_NAME_SPACE

如果是辅助数据库和目标数据库是同一台机器,则设值为:_目标数据库名,此例为:_rainny


DB_FILE_NAME_CONVERT

实际就是目标数据库和辅助数据的对应目录,如目标数据库数据文件目录为: D:oracle_homeoradatarainny,辅助数据库名录为: F:auxdb,则此

参数值可设为如下:


db_file_name_convert=("D:oracle_homeoradatarainny","F:auxdb")


LOG_FILE_NAME_CONVERT

同上


CONTROL_FILES

目标数据有多少个控制文件,这里也要设多少个,只不过目录改成辅助数据库的目录,文件相同.此例设值为:


control_files=("F:auxdbCONTROL01.CTL","F:auxdbCONTROL02.CTL",


"F:auxdbCONTROL03.CTL")


REMOTE_LOGIN_PASSWORDFILE

设成:EXCLUSIVE


COMPATIBLE

与目标数据库相同


DB_BLOCK_SIZE

与目标数据库相同


对主数据库的准备,包括将日志归档。对包含有待恢复的表空间的回滚段offline,对该表空间本身offline。同时生成控制文件的生成脚本

alter system backup controlfile TO TRACE,以便辅助数据库可以由此来重新对应数据文件的位置等。

5.在sqlplus中以nomount方式启辅助数据库实例


C:>SQLPLUS /NOLOG
SQL> CONN SYS/JOS@AUX AS SYSDBA;


Connected to an idle instance


SQL> startup nomount pfile='F:auxdbinitaux.ora';


ORACLE instance started.


Total System Global Area 135338868 bytes


Fixed Size 453492 bytes


Variable Size 109051904 bytes


Database Buffers 25165824 bytes


Redo Buffers 667648 bytes


6.在进行表空间时间点恢复之前,首先你要有想要恢复到那个时间点的数据库备份集,否则,无法进行时间点恢复.


7.连到rman

可以先由控制文件生成语句为辅助数据创建控制文件(nomount下)。

再start mount下recover database using backup controlfile until time ‘2002-08-13:17:12:00’;

alter database open resetlogs;

在open下exp 'sys/sys as sysdba' point_in_time_recover=y tablespaces=pooldb_medium
file=exptest.dmp’
( if you got ora-3217, then you are hit a bug which is fixed in 9I, work around: drop
temp tablespace)

把辅助库的文件置为脱机且拷贝该文件到主库目录。
以下步骤不知道对否。
C:>rman target sys/sys@rainny catalog catalog/catalog@oemrep auxiliary sys/jos@aux


RMAN> recover tablespace APP01 UNTIL TIME "TO_DATE('2006/12/22 12:00:00','YYYY/MM/DD HH24:MI:SS')";


Ok,现在就开始进行表空间的时间点恢复啦!

在主库上执行:
imp 'sys/sys as sysdba' point_in_time_recover=y tablespaces=pooldb_medium file=exptest.dmp
再将表空间置为online的即可。

不过,到了oracle10g,可不用这么麻烦了,我们会首先选择database flashback,将整个数据库rollback到某一个时间点,而不是表空间时间点恢复.

[@more@]

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

转载于:http://blog.itpub.net/288166/viewspace-967585/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值