source

새 코드로 바꾼 후 패키지 본문에서 이전 Oracle pl/sql 소스 코드를 복구할 수 있습니까?

lovecheck 2023. 7. 26. 22:11
반응형

새 코드로 바꾼 후 패키지 본문에서 이전 Oracle pl/sql 소스 코드를 복구할 수 있습니까?

나는 헤더와 코드가 많은 본문으로 오라클 PL/SQL 패키지를 만들었습니다.

나중에, 저는 실수로 코드를 다시 실행한 후에 그 시체에서 지웠습니다.CREATE OR REPLACE PACKAGE BODY...다른 소스 코드를 가진 문(사실은 다른 패키지 이름으로 저장하려고 했습니다).

패키지에서 교체된 이전 소스 코드를 복구할 수 있는 방법이 있습니까?

all_source에 대한 플래시백 쿼리를 사용하면 다시 가져올 수 있습니다.

예: 패키지 본문이 현재 버전 2에 있으며 표준 사용자로 이 쿼리를 실행합니다.

SQL> select text
  2  from all_source
  3  where name = 'CARPENTERI_TEST'
  4  and type = 'PACKAGE BODY';

TEXT


package body carpenteri_test
is

procedure do_stuff
is
begin
   dbms_output.put_line('version 2');
end do_stuff;

end carpenteri_test;

10 rows selected.

오늘 저녁 9시 30분경에 변경한 것으로 알고 있습니다. 그래서 SYSDBA 사용자로 연결한 후 다음 쿼리를 실행했습니다.

SQL> select text
  2  from all_source
  3  as of timestamp
  4  to_timestamp('04-JUN-2010 21:30:00', 'DD-MON-YYYY HH24:MI:SS')
  5  where name = 'CARPENTERI_TEST'
  6  and type = 'PACKAGE BODY';

TEXT
----------------------------------------------------------------------------

package body carpenteri_test
is

procedure do_stuff
is
begin
   dbms_output.put_line('version 1');
end do_stuff;

end carpenteri_test;

10 rows selected.

플래시백에 대한 자세한 내용은 여기를 참조하십시오.Tom Kyte는 여기에서 all_source와 함께 플래시백을 사용하는 방법도 시연합니다.

DDL 명령의 로깅/감사 또는 데이터베이스 백업이 활성화되어 있지 않은 경우에는 거의 확실하게 응답할 수 없습니다.

저장 프로시저를 포함한 데이터베이스 정의는 항상 소스 코드처럼 취급되고 코드 저장소에서 유지 관리되어야 합니다.

언급URL : https://stackoverflow.com/questions/2976682/can-i-recover-older-oracle-pl-sql-source-code-from-a-package-body-after-i-have-r

반응형