• 找回被create or replace覆盖的PL/SQL对象


    参考网址:http://www.oracledatabase12g.com/

          在开发的过程中,可能由于某些程序员执行了create or replace方法,覆盖了之前的同名的PL/SQL对象或者是视图等。

          这里需要使用到Oracle的新版本提供的闪回的功能-FLASHBACK QUERY.

    1、查询当前的SCN

    1 SELECT Dbms_Flashback.Get_System_Change_Number, Current_Scn FROM V$database

    2、查询系统中最小的SCN号(当前系统支持的)

    1 SELECT min(SCN) FROM sys.Smon_Scn_Time 

    3、SCN和TIMESTAMP之间的相互转换:

    1 SELECT Timestamp_To_Scn(SYSDATE - 1) SCN,
    2        To_Char(Scn_To_Timestamp(790000), 'yyyy-mm-dd hh:mi:ss') TIMESTAMP
    3   FROM Dual

    4、存储过程的闪回操作:需要使用ALL_SOURCE表,并且在系统用户下(SYS)

    建立过程:

     1 CREATE OR REPLACE PROCEDURE Test_Create_Or_Replace IS
     2 BEGIN
     3   NULL;
     4   NULL;
     5   NULL;
     6   NULL;
     7   NULL;
     8   NULL;
     9   NULL;
    10   NULL;
    11   NULL;
    12 END Test_Create_Or_Replace;

    当前的SCN:

    查询当前SCN对应的ALL_SOURCE中的Test_Create_Or_Replace的信息:

    1 SELECT *
    2   FROM All_Source AS OF Scn 927331
    3  WHERE Owner = 'SCOTT'
    4    AND NAME = 'TEST_CREATE_OR_REPLACE';

    将过程进行修改:

    1 CREATE OR REPLACE PROCEDURE Test_Create_Or_Replace IS
    2 BEGIN
    3   NULL;
    4 END Test_Create_Or_Replace;

    --查询最新的信息:

    所以可用使用:

    1 SELECT *
    2   FROM All_Source AS OF Scn 927331
    3  WHERE Owner = 'SCOTT'
    4    AND NAME = 'TEST_CREATE_OR_REPLACE';

    查询该SCN点的数据.

    同理可得,可以对视图进行闪回操作,可以找出误删除的视图信息。需要使用ALL_VIEWS进行闪回操作

    也可以使用:

    SELECT *
      FROM All_Source AS OF Timestamp   scn_to_timestamp(927331);

    进行闪回操作。

  • 相关阅读:
    前缀判断 蓝桥杯
    dedecms 网站内容静态化和动态化的切换
    dedecms 频道标签 channel.lib.php的分析
    JavaScript通过闭包解决只能取得包含函数中任何变量最后一个值的问题
    JavaScript闭包 取for循环i 【转】
    JavaScript装饰模式
    JavaScript闭包意义谈
    JavaScriptjs闭包测试
    JavaScript闭包的作用谈(转)
    Zend Engine 简介
  • 原文地址:https://www.cnblogs.com/caroline/p/2520046.html
Copyright © 2020-2023  润新知