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);

    进行闪回操作。

  • 相关阅读:
    leetcode(js)算法605之种花问题
    如何使绝对定位内部元素不继承父级宽度,而是靠内容自动撑开宽度(转载)
    SQL连接查询、变量、运算符、分支、循环语句
    SQL主外键和子查询
    数据库函数
    数据库的备份恢复和部分操作语句
    SQL部分 数据库的建立 增删改查
    【转】毛玻璃特效
    Font Awesome符号字体
    form表单验证和事件
  • 原文地址:https://www.cnblogs.com/caroline/p/2520046.html
Copyright © 2011-2022 走看看