分享

oracle flashback闪回功能之--恢复存储过程篇

 tony_de 2010-09-06
超级好用的oracle 闪回功能之--恢复存储过程篇
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┠※┃名称:oracle 闪回功能之--恢复存储过程篇
┠※┃说明:将存储过程恢复到某一指定时间段。
┠※┃作者:zlj113
┠※┃时间:20091225
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

 
 经常有在工作中误操作导至程存过程被替换或被删除的现象产生。给工作带来一定的麻烦,可能需要重新写一次代码,若过程比较短重写一次还能接受,若是那种比较长的存储过程重要则是需要付出相当大的代价的。好在oracle10G就开始提供了 一种强大的闪回flashback 功能,可以针对误删除的数据,表,存储过程等进行恢复。
废话就先不说了,看看详细的恢复过程吧^^....
首先需要用SYS登陆到PLSQL Devplore 中,选择 sysdba 的权限 ,若用其它的用户登陆则在下面的操作中会提示出权限不足的警告
第三种方法:
SQL> set pagesize 0
SQL> column text format a4000
SQL> spool C:\7.text
Started spooling to C:\7.text
SQL> SELECT text
       FROM DBA_source AS OF TIMESTAMP TO_TIMESTAMP('2009-12-25 10:07:00', 'YYYY-MM-DD HH24:MI:SS')
      WHERE OWNER = '用户名'
        AND NAME = ‘存储过程名’
       ORDER BY LINE
     ;
SQL> spool off;
这种方法就不用事先查询出存储过程的ID只需要知道名字和用户即可.
第一种方法:
在Command窗体里依次输入:
set pagesize 0
column text format a4000 --格式化text 列的数据 a4000表示 文字 按4000长度显示
spool c:\1.text -- 这句是指一会将结果输出到文件,如果存储过程比较小则可以采用第2种方法)
select text From source$ as of timestamp to_timestamp('2009-12-25 12:21:38', 'yyyy-mm-dd hh24:mi:ss') where obj#=55110; --这里的时间点就是你想要恢复什么时候的存储过程. 而obj#=55110 这个55110是你存储过程相对应的ID号, 可以在事先用select object_id from dba_objects where object_name ='存储过程名注意大小写是敏感的'; 查出所对应的ID号。
spool off;
 
然后你就可以到c:盘下找到1.txt文件里面就会有你2009-12-25 12:21:38时存储过程的内容啦!
怎么样,是不是超好用呀!
第二种方法:
 select *From source$ as of timestamp to_timestamp('2009-12-25 12:21:38', 'yyyy-mm-dd hh24:mi:ss') where obj#=55110;

这种方法呢,就只是把存储过程的内容显示在表格里了,需要自己复制粘贴出来。适合比较短小的存储过程。
 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zlj113/archive/2009/12/25/5075983.aspx

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多