在Oracle 物理灾备上as of timestamp恢复表过程及疑问

今天同事打电话说通过如下语句查看表:

select * from sm.sm_qftjmx as of timestamp to_timestamp('2010-12-30 7:00:00','YYYY-MM-DD HH24:MI:SS')

时系统报如下错误

计算机生成了可选文字: 兰兔
O
回
ORA一01555:snapshottooold:rollback,egmen七number12四i七hname”多Y55MU12车“toosmall
l确定l{取,肖】}帮助(吩』

[@more@]

该系统有Oracle Data guard 方式实现的灾备中心,因此通过对如下语句建立了dblink

CREATE DATABASE LINK test_standby

CONNECT TO system IDENTIFIED BY kuqlan

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_qftjmx as 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 guardas of timestamp没有报错,但是还是去当前值。

既然read only 模式打开,因此原则上不需UNDO表空,再说物理DG环境下对UNDO好像没有特别的说明,为什么还要不报错了,是不是read only模式根本不查询old block version?

做个记录,后面慢慢研究吧;

请使用浏览器的分享功能分享到微信等