> 데이터 베이스 > MySQL 튜토리얼 > Oracle恢复被误编译覆盖的存储过程

Oracle恢复被误编译覆盖的存储过程

WBOY
풀어 주다: 2016-06-07 17:24:11
원래의
1073명이 탐색했습니다.

在写Oracle存储过程时候,是在以前已经写好的过程基础上修改的,想换个名字,由于疏忽没有改名字就编译了,编译完才意识到。这时

同事在写Oracle存储过程时候,是在以前已经写好的过程基础上修改的,想换个名字,由于疏忽没有改名字就编译了,编译完才意识到。这时原来的那个已经没有了。找我想办法恢复回原来的那个过程。

通过查资料想到个方法,也不知道成不成,只能当做试试。

SELECT * FROM source$
 AS OF TIMESTAMP TO_TIMESTAMP('2012-9-6 16:50:32', 'YYYY-MM-DD HH24:MI:SS')
where source like '%sp_copy_project%'
  order by line;

只查到一些简单的信息,不够恢复数据的。

上边的是原来那个,下边的是刚编译的。

      OBJ#      LINE SOURCE
---------- ---------- --------------------------------------------------------------------------------
    190762          1 procedure        sp_copy_project(old_pro_id number, domain_id number, new_pro_id
    190471          1 procedure sp_copy_project(dxid number, rtn out number, msg out varchar2(4000)) i
 
于是有用下边这句,查到了需要的信息。选了一个往前30分钟的时间点。

select * from dba_source
AS OF TIMESTAMP TO_TIMESTAMP('2012-9-6 16:20:00', 'YYYY-MM-DD HH24:MI:SS')
where  name like upper('%sp_copy_project%') and owner ='YWMX'
order by line;

 

过程是一行一行的,,于是把全选将其贴到plsql编辑器里,

文本被接起来,格式也正好。

在前边加上 “create or replace ”,重新编译,

被覆盖的过程回来了。

linux

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿