이 기사에서는 Oracle에 대한 관련 지식을 제공합니다. Oracle 데이터를 사용할 때 실수로 테이블의 데이터가 삭제되어 제출되었습니다. 다음은 Oracle 삭제로 인해 테이블 데이터가 실수로 삭제된 후 복구하는 방법에 대한 소개입니다. 모든 사람에게 도움이 되기를 바랍니다.
추천 튜토리얼: "Oracle Video Tutorial"
시간을 기준으로 복원
이 방법을 사용하려면 삭제 문을 실행하는 데 걸리는 시간을 대략적으로 알아야 합니다.
현재 시스템 시간 쿼리: select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from Dual;
select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss’) from dual;
假设在2022-04-02 16:27:11分钟,执行了删除语句delete from demo ;
delete from 데모;
이때 테이블의 데이터를 쿼리할 수 없습니다. 우리는 삭제 실행 시간을 알고 있으며, 1분 앞으로 밀고(삭제 실행 시간은 이전일 수 있으며 작을수록 좋습니다. 이 예는 예로서 1분이 걸립니다) 다음 명령문을 실행합니다select * from DEMO as of timestamp to_timestamp(‘2022-04-02 16:26:11',‘yyyy-mm-dd hh24:mi:ss');현재 데모 테이블 테이블에 데이터가 없지만 데모 테이블의 처음 1분 동안의 데이터를 쿼리할 수 있습니다. 복구 1: 이때 plsql 도구의 쿼리 결과 내보내기 기능을 통해 sql 파일을 내보낸 후, 데이터 복구를 위해 sql 파일에 있는 insert 문을 다시 실행하면 됩니다. 복구 2: 데이터 복구를 위해 다음 sql을 실행합니다:
flashback table DEMO to timestamp to_timestamp(‘2022-04-02 16:26:11',‘yyyy-mm-dd hh24:mi:ss');오류가 보고된 경우 ORA-08189: 행 이동 기능이 활성화되지 않았고 테이블을 플래시백할 수 없습니다. 그런 다음 실행합니다:
alter table DEMO enable row movement;를 추가한 후 테이블 행 이동 기능은 플래시백 문을 수행합니다. Restore오류가 보고되면: ORA-08194: 구체화된 뷰에서는 플래시백 테이블 작업이 허용되지 않습니다. 그런 다음 아래 설명된 대로 새 임시 테이블을 생성하여 복원합니다. 복구 3(새 임시 테이블 생성): 새 데모1 테이블을 생성하고 복구해야 할 데이터를 삽입합니다.
create table DEMO1 as select * from DEMO as of timestamp to_timestamp(‘2022-04-02 16:30:11',‘yyyy-mm-dd hh24:mi:ss');demo1 테이블의 데이터를 데모 테이블에 복구
insert into DEMO select * from DEMO1 where not exists (select * from DEMO where DEMO.id=DEMO1.id);복구 4(복구 기반 on scn):현재 scn 번호 쿼리
select current_scn from v$database;scn 번호를 일정량만큼 줄이고 삭제한 데이터를 볼 수 있을 때까지 명령문을 실행합니다.
select * from DEMO as of scn 166937913;적절한 scn 번호를 사용하여 sql 문을 실행합니다. 데이터 복구를 위한
flashback table DEMO to scn 166937913;추천 튜토리얼: " Oracle Video Tutorial》🎜
위 내용은 Oracle 인스턴스 구문 분석 삭제에서 실수로 테이블 데이터를 삭제한 후 복구하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!