加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle 恢复被覆盖的存储过程

发布时间:2020-12-12 16:15:38 所属栏目:百科 来源:网络整理
导读:--很多时候,存储过程一不小心就被覆盖掉了。很焦急的我们,无手可入,不知道如何恢复,google,百度,问同事啊,都没有办法解决。 这里介绍一下恢复的过程,2个步骤就搞定。 --登录到sys用户下,创建临时表(600表示600秒之前的,最后一个存储过程) SQL cr

--很多时候,存储过程一不小心就被覆盖掉了。很焦急的我们,无手可入,不知道如何恢复,google,百度,问同事啊,都没有办法解决。
这里介绍一下恢复的过程,2个步骤就搞定。

--登录到sys用户下,创建临时表(600表示600秒之前的,最后一个存储过程)

SQL> create table ML_TEST_PROTEMP
  2  as
  3  select * from all_source  as of timestamp (systimestamp -interval'600'second)
  4  where TYPE = 'PROCEDURE' And owner = 'MOSS_V4'
  5  And Name = 'SP_DD' ;
 
Table created



--查看被覆盖的存储过程

SQL> select text from ML_TEST_PROTEMP  
  2  where  name like upper('%sp_dd%') and owner ='MOSS_V4'  
  3  order by line;    
TEXT  
--------------------------------------------------------------------------------  
PROCEDURE sp_dd(  
                       i_username1       VARCHAR2,i_top_username    VARCHAR2 DEFAULT NULL  
                      )  
AS  
BEGIN  
    EXECUTE IMMEDIATE 'ALTER SESSION SET current_schema='||i_top_username;  
    FOR v_cur IN (SELECT * from all_tables WHERE owner=i_top_username  )  
    LOOP  
        BEGIN  
        EXECUTE IMMEDIATE 'GRANT ALL ON ' || i_top_username||'.'||v_cur.table_na  
        EXCEPTION  
        WHEN OTHERS THEN  
          k_log.sp_error('赋权异常:'||v_cur.table_name);  
          RAISE;  
          END;  
    END LOOP;  
    k_log.sp_error('赋权成功');  
   
TEXT  
--------------------------------------------------------------------------------  
    EXCEPTION  
      WHEN OTHERS THEN  
        k_log.sp_error('赋权异常');  
        RAISE;  
END sp_dd;  
   
25 rows selected  
   
SQL> 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读