>  기사  >  데이터 베이스  >  실수로 삭제된 Oracle 데이터베이스를 신속하게 복구하는 세 가지 방법

실수로 삭제된 Oracle 데이터베이스를 신속하게 복구하는 세 가지 방법

WBOY
WBOY앞으로
2022-06-01 12:02:287338검색

이 기사에서는 Oracle에 대한 관련 지식을 제공하며, Oracle 데이터베이스에서 실수로 데이터를 삭제하는 것과 관련된 문제를 주로 소개하고, 전체 데이터베이스 백업 및 아카이브 로그 활용을 고려하지 않고 데이터를 빠르게 복원하는 방법을 살펴보겠습니다. 함께하면 모두에게 도움이 되기를 바랍니다.

실수로 삭제된 Oracle 데이터베이스를 신속하게 복구하는 세 가지 방법

추천 튜토리얼: "Oracle Video Tutorial"

오라클 데이터베이스의 데이터가 실수로 삭제되었습니다. 전체 데이터베이스 백업 및 아카이브 로그 활용을 고려하지 않고 데이터를 빠르게 복원하는 방법은 무엇입니까?

3가지 방법이 있습니다.

1. 데이터 복구에는 삭제 삭제 방법에 적합한 플래시백 방법을 사용합니다.

먼저 삭제된 데이터의 시점을 가져옵니다:

select * from v$sql where sql_text like '%table_name%' ;
1

sql_text 내용에 따라 code> 결과에서 <code>delete를 찾아 해당 명령문에 해당하는 sql_text内容,找到delete执行语句对应的删除时间点,执行下面语句查询出删除的数据。

select * from table_name as of timestamp to_timestamp(‘删除时间点’,‘yyyy-mm-dd hh24:mi:ss’)
where (删除时的条件)
12

检查数据无误后,执行下面操作,将数据插回原表中。注意主键不重复

insert into table_name
select * from from table_name as of timestamp to_timestamp(‘删除时间点’,‘yyyy-mm-dd hh24:mi:ss’)
where (删除时的条件)
123

2. 利用oracle虚拟回收站功能

原理是因为oracle数据库在删除表时会将删除信息存放于某虚拟回收站中而非直接清空,在此种状态下数据库标记该表的数据库为可以复写,所以在该块未被重新使用前依然可以恢复数据。该方法多用于drop删除。

首先查询user_table视图,找到被删除的表:

select table_name,dropped from user_tables;
select object_name,original_name,type,droptime from user_recyclebin;
12

注意此时的,object_nameoriginal_name就是回收站存放的表名和原来删除的表名,如果表名没有被重新命名,可以通过下面语句进行恢复:

flashback table original_name to before drop;
1

如果不知道源表名,或者需要重新命名新的表名存放数据,则可以通过回收站中的object_name进行恢复,命令如下:

flashback table object_name to before drop new_table_name;
1

3. 用oracle数据库的闪回功能可以将数据库恢复到过去某一状态

注意,此时是整库恢复,具体语法如下:

SQL>alter database flashback on
SQL>flashback database to scn SCNNO;
SQL>flashback database to timestamp to_timestamp(‘frombyte 2021-09-02 23:59:59’,‘yyyy-mm-dd hh24:mi:ss’);
123

4. 彻底删除数据

如果确定需要删除的数据又不想无谓的占用空间,我们可以使用以下3种方式:

  1. 采用truncate方式进行截断。(不能进行数据回恢复)
  2. 在drop时加上purge选项:drop table table_name purge
  3. 通过删除recyclebin区域来永久性删除表 ,drop table table_name cascade constraints purge table table_name;

5. 关于清空回收站

  1. 删除当前用户回收站

    purge recyclebin;

  2. 删除全体用户在回收站的数据

    purge dba_recyclebin;삭제 시점

    을 실행하고, 다음 명령문을 실행하여 삭제된 데이터를 쿼리합니다.
  3. rrreee
데이터가 올바른지 확인한 후 다음 작업을 수행하여 데이터를 원래 테이블에 다시 삽입하세요.

기본키가 반복되지 않는다는 점에 주의하세요rrreee

2. 오라클 가상 휴지통 기능을 사용하세요🎜🎜🎜오라클 데이터베이스는 테이블을 삭제할 때 삭제 정보를 테이블에 저장하기 때문입니다. 직접 지우는 대신 가상 🎜recycle bin🎜 이 상태에서 데이터베이스는 테이블을 🎜덮어쓰기 가능🎜으로 표시하므로 블록🎜이 재사용되지 않기 전에도 데이터를 복구할 수 있습니다. 이 방법은 주로 🎜삭제에 사용됩니다. 🎜🎜🎜먼저 user_table 뷰를 쿼리하여 삭제된 테이블을 찾습니다. 🎜rrreee🎜 이때 object_nameoriginal_name은 다음 위치에 저장됩니다. 휴지통 테이블 이름과 원래 삭제된 테이블 이름이 변경되지 않은 경우 다음 명령문을 통해 복원할 수 있습니다. 🎜rrreee🎜원본 테이블 이름을 모르거나 이름을 변경해야 하는 경우 데이터를 저장할 새 테이블 이름은 휴지통 object_name을 사용하여 복원할 수 있습니다. 명령은 다음과 같습니다. 🎜rrreee🎜🎜3 데이터베이스를 복원하려면 oracle 데이터베이스의 플래시백 기능을 사용하세요. 🎜🎜🎜이것이 🎜전체 데이터베이스 복구🎜라는 점에 유의하세요. 구체적인 구문은 다음과 같습니다. 🎜rrreee🎜🎜4 데이터를 완전히 삭제합니다. 🎜🎜🎜데이터를 삭제해야 한다고 확신하는 경우 불필요하게 공간을 차지하고 싶지 않다면 다음 3가지 방법을 사용할 수 있습니다. 🎜
  1. Truncate 방법을 사용하세요. (데이터 복구 불가) 🎜
  2. 드롭 시 퍼지 옵션 추가: drop table table_name purge🎜
  3. recyclebin 영역을 삭제하여 테이블을 영구 삭제 , drop table table_name cascade Constraints purge table table_name;🎜🎜🎜🎜5. 휴지통 비우기 정보🎜🎜
    1. 🎜현재 사용자 휴지통 삭제🎜🎜purge recyclebin; 🎜🎜<li>🎜휴지통에 있는 모든 사용자 데이터 삭제🎜🎜<code>purge dba_recyclebin;🎜🎜🎜🎜권장 튜토리얼: "🎜Oracle Video Tutorial🎜"🎜🎜

위 내용은 실수로 삭제된 Oracle 데이터베이스를 신속하게 복구하는 세 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제