7 x 24 在线支持!
oracle闪回查询flashback query恢复误删除delete数据遭遇Ora-08180 Ora-01555 ORA-08180: 未找到基于指定时间的快照
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com
prm-DUL下载地址:http://7xl1jo.com2.z0.glb.qiniucdn.com/DUL3206.zip
ORA-01555 oerr ora 1555 01555, 00000, "snapshot too old: rollback segment number %s with name \"%s\" too small" // *Cause: rollback records needed by a reader for consistent read are // overwritten by other writers // *Action: If in Automatic Undo Management mode, increase undo_retention // setting. Otherwise, use larger rollback segments ORA-08180 oerr ora 8180 08180, 00000, "no snapshot found based on specified time" // *Cause: Could not match the time to an SCN from the mapping table. // *Action: try using a larger time.
对于Oracle中的数据误删除可以分为以下几类(这里我们一般不考虑闪回数据库flashback database)
1、 误delete 删除表上的行 , 对策: 10g以后可以尝试闪回查询flashback query前提是快照未变得过久。这种情况下常规有RMAN备份的话,可以的话可以基于删除前的一个时间点做TSPTIR基于表空间的时间点恢复已达到恢复目的。 如果备份和闪回查询都不可用,则可以尝试使用PRM-DUL的恢复undelete数据功能,前提是被删除的数据行在数据块级别没有被彻底删除。
在这个场景中用户由于误操作了DELETE语句未加上where条件导致误删除了大量应用数据行,没有在第一时间发现。在几天后发现时再使用flashback query闪回查询却失败
ERROR ----------------------- SQL> select count(*) from APPTABLE as of timestamp systimestamp -4; COUNT(*) ---------- 13355 SQL> select count(*) from APPTABLE as of timestamp systimestamp -5; select count(*) from APPTABLE as of timestamp systimestamp -5 * ERROR at line 1: ORA-01555: snapshot too old: rollback segment number 3 with name "_SYSSMU3$" too small SQL> select count(*) from APPTABLE as of timestamp systimestamp -6; select count(*) from APPTABLE as of timestamp systimestamp -6 * ERROR at line 1: ORA-08180: no snapshot found based on specified time
在oracle 10g中闪回查询是不能查5天前的数据快照的,对于这个5天即便你的undo很足够也没有用,因为这个5天的时间是代码里写死的。
在oracle 11g里则没有这个限制了,对于查询限制的周期可以根据你的undo_management=AUTO自动去调整。
UNDO_RETENTION用来确认所能覆盖的最长的查询过往时间,RETENTION GUARANTEE则对这个时间做保证。以避免所需要的undo被覆盖重写。
这个5天的限制实际上是由于要记录事务scn和事务时间之间的关系而造成的。在10g中只记录5天中transaction scn和transaction time的对应关系。在oracle 11g中得以重新设计。
用户可能会遇到ORA-8180错误,假若发起的查询快照没有在SMON_SCN_TIME中有对应的时间或scn记录了。也可能遇到ORA-01555错误若undo数据真的被覆盖了。
对于不管是ORA-8180还是ORA-01555的闪回查询失败,都应当先考虑基于rman的TSPTIR来做恢复,若实在没有rman的有效物理备份,则可以考虑使用PRM-DUL的undelete功能来恢复这部分被误删除的记录。