由于在做开发的时候,是多个同事同时对同一个包进行操作,如果在对package body 做Edit之前,没有进行Refresh操作,极易造成包的覆盖。如果覆盖,只能通过闪存进行恢复。
1.以SYS用户登录数据库,先找对象的OBJ号码
SELECT obj#
FROM obj$ AS OF TIMESTAMP TO_TIMESTAMP('2011-11-21 11:30:00', 'YYYY-MM-DD HH24:MI:SS')
WHERE NAME = ' PKG_QT_QTSWTS';
--AS OF TIMESTAMP TO_TIMESTAMP('2011-11-21 11:30:00', 'YYYY-MM-DD HH24:MI:SS')为闪回查询时间,表示查询2011-11-21 11:30:00之前--的版本
查询结果
264699
264700
2.查询旧版本数据
--查询出来的为包头
SELECT source FROM source$ AS OF TIMESTAMP TO_TIMESTAMP('2011-11-21 11:30:00', 'YYYY-MM-DD HH24:MI:SS') where obj# = 264675;
--查询出来的为包体
SELECT source FROM source$ AS OF TIMESTAMP TO_TIMESTAMP('2011-11-21 11:30:00', 'YYYY-MM-DD HH24:MI:SS') where obj# = 264676;
oracel 闪回空间有大小限制,如果数据库的写入操作过于频繁,机遇lru的方式 会把以前的数据覆盖,所以闪回查询的时间不是没有限制,是有查询时间的限制。