该系统有Oracle Data guard方式实现的灾备中心,因此通过对如下语句建立了dblink
CREATEDATABASELINKtest_standby
CONNECTTOsystemIDENTIFIEDBYkuqlan
USING'standby';
将管理模式的standby数据库切换至只读模式
$sqlplus“/as sysdba”
SQL>alter database recover managed standby database cancel;
SQL>alter database open read only;
在备库执行语句如下as of timestamp后没有报错。
select* from sm.sm_qftjmxas of timestamp to_timestamp('2010-12-30 7:00:00','YYYY-MM-DD HH24:MI:SS')
在生产库通过如下语句生成了“过去”的记录表:
create table sm.sm_qftjmx_befor7 as select * from sm.sm_qftjmx@test_standby as of timestamp to_timestamp('2010-12-30 7:00:00','YYYY-MM-DD HH24:MI:SS')
将只读模式standby数据库切换至管理模式
$sqlplus“/as sysdba”
SQL>alter database recover managed standby database disconnect from session;
通过如下语句删除临时创建的db link
DROP DATABASE LINK test_standby
最遗憾的是同事说我恢复过来的sm.sm_qftjmx_befor7表和生产库的原表一样…
看来物理data guard对as of timestamp没有报错,但是还是去当前值。
既然read only模式打开,因此原则上不需UNDO表空,再说物理DG环境下对UNDO好像没有特别的说明,为什么还要不报错了,是不是read only模式根本不查询old block version?
做个记录,后面慢慢研究吧;