用闪回功能恢复被更改的存储过程

来源:互联网 发布:淘宝客服评价系统 编辑:程序博客网 时间:2024/06/03 20:00

关于闪回的介绍见前面 复习闪回功能

下面是我们在用户test里建的proc及更改

[sql] view plaincopy在CODE上查看代码片派生到我的代码片
  1. CREATE OR REPLACE PROCEDURE p_miji AS  
  2. BEGIN  
  3.   /*这儿是搭讪秘籍一百条*/  
  4.   NULL;  
  5. END;  
  6. /  
  7. BEGIN dbms_lock.sleep(2); END;  
  8. /  
  9. CREATE OR REPLACE PROCEDURE p_miji AS  
  10. BEGIN  
  11.   /*xxxxx*/  
  12.   /*20131212关键字屏蔽,知名不具*/  
  13.   NULL;  
  14. END;  
  15. /  
  16. COMMIT  
  17. /  

这数据被改掉了,这可不得了,一定要找回来,希望时间不算太晚,于是用sys用户做查询如下。

[sql] view plaincopy在CODE上查看代码片派生到我的代码片
  1. SELECT versions_starttime,  
  2.        versions_startscn,  
  3.        versions_endtime,  
  4.        versions_endscn,  
  5.        s.line,  
  6.        s.source  
  7.   FROM sys.source$ versions BETWEEN TIMESTAMP minvalue AND maxvalue s  
  8.  WHERE s.obj# = (SELECT o.obj#  
  9.                    FROM sys."_CURRENT_EDITION_OBJ" o, sys.user$ u  
  10.                   WHERE o.owner# = u.user#  
  11.                     AND (o.type# IN (7, 8, 9, 11, 12, 14, 22) OR  
  12.                         (o.type# = 13 AND o.subname IS NULL))  
  13.                     AND u.name = upper('test') /*owner*/  
  14.                     AND o.name = upper('p_miji') /*object_name*/  
  15.                  )  
  16.  ORDER BY 2 DESC NULLS LAST;  


ps:图片显示不全的,自个儿复制出来看


看来还有救,按所查信息直接取得对应的source即可。

[sql] view plaincopy在CODE上查看代码片派生到我的代码片
  1. SQL> SELECT text  
  2.   2    FROM dba_source as of scn 9460948  
  3.   3   WHERE NAME = upper('p_miji')  
  4.   4     AND owner = upper('test');  
  5. TEXT  
  6. --------------------------------------------------------------------------------  
  7. PROCEDURE p_miji AS  
  8. BEGIN  
  9.   /*这儿是搭讪秘籍一百条*/  
  10.   NULL;  
  11. END;  
  12.   
  13. SQL>   

收工搞定。
0 0
原创粉丝点击