zoukankan      html  css  js  c++  java
  • 找回被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);

    进行闪回操作。

  • 相关阅读:
    一笔画问题(搜索)
    Sum
    js获取时间日期
    [Hibernate 的left join]Path expected for join!错误
    关于firefox下js中动态组装select时指定option的selected属性的失效
    mooltools扩展之前已经定义好的方法和json数据
    HttpSession, ActionContext, ServletActionContext 区别
    japidcontroller自动绑定的数据类型
    ConcurrentModificationException
    Hibernate中使用COUNT DISTINCT
  • 原文地址:https://www.cnblogs.com/caroline/p/2520046.html
Copyright © 2011-2022 走看看