1. 首页
  2. IT资讯

用flashback恢复存储过程

今天一个朋友问我,删除了一个存储过程是否可以恢复,想了想,恢复存储过程就相当于找到删除过程前SOURCE$表的数据,可以用flashback功能恢复。下面的测试过程。

首先建立存储过程:SQL> create or replace procedure p_test is 2 begin 3 null; 4 end p_test; 5 /Procedure createdSQL> col sysdate format a20SQL> select sysdate from dual;SYSDATE——————–2007-7-10 23:50:32SQL> drop procedure p_test;Procedure dropped要恢复存储过程首先需要知道该过程在删除前对应的OBJECT_ID,这个同样也可以用flashback得到。SQL> SELECT obj# FROM obj$ AS OF TIMESTAMP TO_TIMESTAMP(‘2007-7-10 23:50:32’, ‘YYYY-MM-DD HH24:MI:SS’) WHERE NAME=’P_TEST’; OBJ#———- 7346在实际中,为了更精确得到OBJ#,可能还需要限制所属用户等条件。要恢复过程,时间就是恢复SOURCE$表在过程被删除前的数据,这个用flashback是可以轻松做到的:SQL> SELECT * FROM source$ AS OF TIMESTAMP TO_TIMESTAMP(‘2007-7-10 23:50:32’, ‘YYYY-MM-DD HH24:MI:SS’) where obj#=7346 order by line; OBJ# LINE SOURCE———- ———- ——————————————————————————– 7346 1 procedure p_test is 7346 2 begin 7346 3 dbms_lock.sleep(60); 7346 4 Insert Into x Values(1); 7346 5 Commit; 7346 6 end p_test;6 rows selected从上面结果可以看到,存储过程已经恢复。注意:1、flashback是9i后才引起的,之前版本不能用这个方法恢复2、从删除到恢复时的时间间隔不能超过undo_retention的设定值

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/231499/viewspace-63834/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:布吉卡,转转请注明出处:http://www.cxybcw.com/195717.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code