Oacle 오 버 레이 된 저장 과정 을 어떻게 복구 합 니까?

만약 당신 이 부주의 로 이전의 저장 과정 을 덮어 썼 다 면,빨리 되 돌아 가 야 합 니 다.시간 이 길 수록 되 돌아 갈 가능성 이 적 습 니 다.원 리 는 매우 간단 하 다.저장 과정의 정 의 는 바로 데이터 사전 이다.데이터 사전 을 수정 하 는 것 은 일반 표를 수정 하 는 데이터 와 다 르 지 않다.이때 수정 전의 내용 을 undo 에 넣 을 것 이다.우 리 는 이 점 에 따라 반 짝 일 수 있다.그래서 나 는 되도록 빨리 해 야 한다 고 말 했다.그렇지 않 으 면 찾 을 수 없다.다음은 실험 을 해 보 겠 습 니 다.1.사용자 TEST 에서 14:31 에 저장 과정 을 만 듭 니 다
 
create or replace procedure GG_TEST
as l_cnt number;
begin
for i in 1 .. 10000
loop
execute immediate 'select count(*) from t where x = ' || i into l_cnt;
end loop;

end;
2.사용자 TEST 에서 14:33 에 저장 과정 을 삭제 합 니 다
 
drop procedure GG_TEST;
sys 계 정 에 로그 인 합 니 다
 
create table p_temp as
select *
from dba_source as of timestamp TO_TIMESTAMP('2014-05-04 14:33:00', 'YYYY-MM-DD HH24:MI:SS')
where TYPE = 'PROCEDURE'
And owner = 'TEST'
And Name = 'GG_TEST';


select text
from p_temp
where name like upper('%GG_TEST%')
and owner = 'TEST'

order by line;

TEXT
---------------------------------------------------------------------------
procedure GG_TEST
as l_cnt number;
begin
for i in 1 .. 10000
loop
execute immediate 'select count(*) from t where x = ' || i into l_cnt;
end loop;
end;

좋은 웹페이지 즐겨찾기