데이터 베이스 MySQL 튜토리얼 表误删记录恢复操作

表误删记录恢复操作

Jun 07, 2016 pm 03:59 PM
다루다 다시 덮다 작동하다 기록

表误删记录恢复操作 最近处理了个用户误删delete table 的故障,这里做了一个简单的汇总,文章内容整理自pub 里的各位大师的精粹,我这里偷个懒直接拿来用下。 基本处理思路: 1.如果还没有提交,用rollback。(应该不大可能。) 2.如果提交时间超过5分钟以

表误删记录恢复操作

最近处理了个用户误删delete table 的故障,这里做了一个简单的汇总,文章内容整理自pub 里的各位大师的精粹,我这里偷个懒直接拿来用下。

基本处理思路:

1.如果还没有提交,用rollback。(应该不大可能。)

2.如果提交时间超过5分钟以上且小于undo_retention的设置,可以使用回闪功能。具体限制和操作可以参考:http://blog.itpub.net/post/468/15464

3.如果上述两条都不满足,可以使用logminer从redo中恢复,logminer的使用限制和描述可以参考:http://blog.itpub.net/post/468/13436

这里有一个使用logminer的简单的例子:http://blog.itpub.net/post/468/11764

4.如果这个日志已经重用且没有启用归档模式,那么你只能从备份中恢复了

2.使用闪回恢复表数据

2.1----flashback table

主要是是用undo 表空间的内容

注意:需要启用表的row movement

----格式化时间

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

SQL> select sysdate from dual;

SYSDATE

-------------------

2014-07-27 20:23:37

----enable row movement

Alter table xxx enable row movement:

----根据scn 闪回表:

SQL> flashback table kel.t1 to scn 896744;

---根据时间点闪回表:

SQL> flashback table kel.t1 to timestamp to_timestamp('2014-07-28 00:18:00','yyyy-mm-dd hh24:mi:ss');

2.2----flashback query:

flashback query只能看到某一个时间点的对象的状态,而不能看到某个时间段内的状态变化。

select * from tb as of timestamp to_timestamp('2014-07-27 20:23:37','yyyy-mm-dd hh24:mi:ss');

2.3-----flashback drop

用于恢复用户误删除的对象,包括表、索引等,依赖于tablespace recycle bin ,表空间回收站

初始化参数recyclebin参数用于控制是否启用recyclebin功能,缺省是ON

在recycle bin中,oracle可以区分不同用户的同名的表。

recycle bin的维护:

1、只能用于非系统表空间和本地管理的表空间

2、如果对象创建在本地管理的表空间,而关联对象,比如索引创建在字典管理的表空间上,则恢复时字段管理的表空间关联对象不能被恢复

3、对象是否能恢复成功,取决于对象空间是否被覆盖重用

4、不能对recycle bin中的内容进行DML和DDL的操作,只能做查询操作

5、对象的参考约束不能被恢复,也就是外键约束需要重建

手动清除recycle bin的空间:

purge tablespace kel

db_flashback_retention_target Default value 1440 (minutes)

闪回查询使用的是undo 信息

UNDO_RETENTION 理解:

The UNDO_RETENTION parameter is ignored for a fixed size undo tablespace. The database may overwrite unexpired undo information when tablespace space becomes low.

如果undo 表空间大小是固定的,则oracle会忽略 undo_retention 参数的设置,在undo 空间不足的情况下,oracle可能会覆盖未过期的undo 信息。

For an undo tablespace with the AUTOEXTEND option enabled, the database attempts to honor the minimum retention period specified by UNDO_RETENTION. When space is low, instead of overwriting unexpired undo information, the tablespace auto-extends. If the MAXSIZE clause is specified for an auto-extending undo tablespace, when the maximum size is reached, the database may begin to overwrite unexpired undo information.

当undo 是自动扩展的,oracle 会尽可能的保证 undo_retention 设置的undo保留时间;当undo 空间不够使oracle 会优先自动扩展undo 表空间,而不是去覆盖未过期的undo 信息,如果undo tbs 设置了 maxsize 参数,则在达到undo最大空间时,oracle可能就会去覆盖那些未过期的undo信息。

注意:对于在system表空间的中对象,使用闪回drop 无效,因为被drop的对象不会被放在 recyclebin 中:

----确认是否启用recyclebin功能

SQL> show parameter recyclebin

----可以通过视图来进行查看recycle bin中的对象列表:

select object_name as recycle_name,original_name from recyclebin;

----可以像查看普通表一样,来查看recycle bin 中对象的内容:

select count(*) from "BIN$/ti6DA4axIDgQKjAbgFLmA==$0";

要使用flashback drop功能恢复误删除的表,需要做以下几点:

1、确认已删除的表在recycle bin中

2、使用flashback table来进行恢复

如果同名的表在recycle bin中存在,可以恢复到需要的那个表:

select count(*) from "BIN$/ti6DA4cxIDgQKjAbgFLmA==$0";--查看哪个是想恢复的表

---恢复表

flashback table "BIN$/ti6DA4exIDgQKjAbgFLmA==$0" to before drop;

---恢复表并且重命名为kel1

flashback table kel to before drop rename to kel1;

3.使用oracle logminer 来进行数据恢复:

logmnr其实是非常有用的一个恢复数据的工具,今天有人提到恢复700万的数据,我也做过几万条财务数据的恢复,借此小结一下。

--创建一个表来保存提取出来的sql
create table logmnr_content tablespace tools as select scn,cscn,TIMESTAMP,sql_undo from v$logmnr_contents where 1=0;

--通过dba_objects 查到表对应的 object_id and data_object_id ,用来在log中提取该表相关的sql_undo
select object_id,data_object_id from dba_objects where object_name = ???

--通过在os中找到的归档日志范围,进行联机提取
将undo sql 插入一个表中,比如我的日志序号范围是 5813 到 5850
为了防止临时空间不足,一个一个归档日志文件处理。

begin
for i in 8..24 loop

dbms_logmnr.add_logfile(LogFileName=>'/disk2/oradata/arch/crmcn/crmcn_1_'||i||'.arc');
dbms_logmnr.start_logmnr(Options => sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG);
dbms_logmnr.start_logmnr();

insert into logmnr_content(scn,cscn,TIMESTAMP,sql_undo )
select scn,cscn,TIMESTAMP,sql_undo from v$logmnr_contents
where DATA_OBJD# = 52528;

commit;
dbms_logmnr.end_logmnr();

end loop;
end

/
--将提取出来的sql通过动态sql执行插入表

declare
sql_str varchar2(4000);
begin
for c in (select * from logmnr_content) loop
sql_str := replace(c.sql_undo,';','');
execute immediate sql_str;
end loop;
commit;
end;

注意:如果在这段日志中还有其他对该表的操作的话,可以结合操作类型 OPERATION 和提交scn cscn 来判断到底是不是该恢复的这部分数据。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

핀둬둬에서 구매한 내역은 어디서 확인할 수 있나요? 구매한 내역은 어떻게 확인하나요? 핀둬둬에서 구매한 내역은 어디서 확인할 수 있나요? 구매한 내역은 어떻게 확인하나요? Mar 12, 2024 pm 07:20 PM

Pinduoduo 소프트웨어는 좋은 제품을 많이 제공하고 언제 어디서나 구입할 수 있으며 각 제품의 품질은 엄격하게 통제되고 모든 제품은 정품이며 우대 쇼핑 할인이 많아 누구나 온라인 쇼핑을 할 수 있습니다. 온라인으로 로그인하려면 휴대폰 번호를 입력하고, 온라인으로 여러 배송 주소와 연락처 정보를 추가하고, 다양한 카테고리의 제품 섹션을 언제든지 확인하고 구매하고 주문하세요. 집을 떠나지 않고도 편리함을 경험할 수 있습니다. 온라인 쇼핑 서비스를 이용하면 구매한 상품을 포함한 모든 구매 기록을 볼 수 있으며, 수십 개의 쇼핑 빨간 봉투와 쿠폰을 무료로 받을 수 있습니다. 이제 편집자가 자세한 온라인 정보를 제공합니다. Pinduoduo 사용자는 구매한 제품 기록을 볼 수 있습니다. 1. 휴대폰을 열고 핀둬둬 아이콘을 클릭하세요.

CPU를 너무 많이 점유하는 WIN10 서비스 호스트의 동작 과정 CPU를 너무 많이 점유하는 WIN10 서비스 호스트의 동작 과정 Mar 27, 2024 pm 02:41 PM

1. 먼저 작업 표시줄의 빈 공간을 마우스 오른쪽 버튼으로 클릭하고 [작업 관리자] 옵션을 선택하거나, 시작 로고를 마우스 오른쪽 버튼으로 클릭한 후 [작업 관리자] 옵션을 선택합니다. 2. 열린 작업 관리자 인터페이스에서 맨 오른쪽에 있는 [서비스] 탭을 클릭합니다. 3. 열린 [서비스] 탭에서 아래의 [서비스 열기] 옵션을 클릭하세요. 4. 열리는 [서비스] 창에서 [InternetConnectionSharing(ICS)] 서비스를 마우스 오른쪽 버튼으로 클릭한 후 [속성] 옵션을 선택하세요. 5. 열리는 속성 창에서 [연결 프로그램]을 [사용 안 함]으로 변경하고 [적용]을 클릭한 후 [확인]을 클릭하세요. 6. 시작 로고를 클릭한 후 종료 버튼을 클릭하고 [다시 시작]을 선택한 후 컴퓨터를 다시 시작합니다.

TikTok에서 채팅 스파크를 복원하는 방법 TikTok에서 채팅 스파크를 복원하는 방법 Mar 16, 2024 pm 01:25 PM

창의성과 활력이 넘치는 짧은 동영상 플랫폼 Douyin에서는 다양하고 흥미로운 콘텐츠를 즐길 수 있을 뿐만 아니라, 같은 생각을 가진 친구들과 심도 있는 소통을 할 수 있습니다. 그중에서도 채팅 스파크는 두 당사자 간의 상호 작용 강도를 나타내는 중요한 지표이며, 종종 의도치 않게 우리와 친구 사이의 감정적 유대에 불을 붙입니다. 그러나 때로는 어떤 이유로 인해 채팅 스파크가 끊어질 수 있습니다. 그렇다면 채팅 스파크를 복원하려면 어떻게 해야 합니까? 이 튜토리얼 가이드는 모든 사람에게 도움이 되기를 바라며 콘텐츠 전략에 대해 자세히 소개합니다. Douyin 채팅의 불꽃을 복원하는 방법은 무엇입니까? 1. Douyin 메시지 페이지를 열고 채팅할 친구를 선택하세요. 2. 서로 메시지를 보내고 채팅을 해보세요. 3. 3일 동안 지속적으로 메시지를 보내면 스파크 로고를 받을 수 있습니다. 3일 단위로 서로 사진이나 동영상을 보내보세요

삭제된 엠모다이어리 복구하는 방법 삭제된 엠모다이어리 복구하는 방법 Feb 27, 2024 pm 04:40 PM

Emmo Diary는 기분을 기록하기 위해 특별히 고안된 소프트웨어로 매일 중요하거나 사소한 일을 기록할 수 있는 개인 일기 공간을 제공합니다. 독특한 감정 인식 기술을 통해 Emmo Diary는 감정을 더 잘 이해하고 처리하는 데 도움을 줄 수 있습니다. 하지만 때로는 내 일기장이 실수로 삭제되어 복원 방법을 모르는 경우가 있습니다. 따라서 이 튜토리얼 가이드는 도움이 필요한 모든 사람에게 도움이 되기를 바라며 자세한 복구 가이드를 제공합니다. Emmo는 어떻게 이전 일기를 검색할 수 있나요? 1. Emmo 선택 화면 좌측 하단의 [설정] 아이콘을 클릭하여 진입합니다. 2. 화면에서 [데이터 백업 및 복원] 아이콘을 선택하고 해당 작업에 들어갑니다.

Xiaohongshu에서 삭제된 댓글을 복원하는 방법은 무엇입니까? 삭제된 댓글에 대한 팁이 있나요? Xiaohongshu에서 삭제된 댓글을 복원하는 방법은 무엇입니까? 삭제된 댓글에 대한 팁이 있나요? Mar 27, 2024 am 11:56 AM

Xiaohongshu는 사용자가 쇼핑 경험, 생활 세부 정보 등을 공유할 수 있는 인기 있는 소셜 전자상거래 플랫폼입니다. 사용 중에 일부 사용자의 댓글이 삭제되는 현상이 발생할 수 있습니다. 그렇다면 Xiaohongshu에서 삭제된 댓글을 복원하는 방법은 무엇입니까? 1. Xiaohongshu에서 삭제된 댓글을 복원하는 방법은 무엇입니까? 실수로 댓글이 삭제된 것으로 밝혀진 경우 사용자는 공식 Xiaohongshu 팀이 해당 댓글을 복원할 때까지 기다릴 수 있습니다. 이 경우에는 잠시 후 공식팀에서 자동으로 댓글을 처리하고 재개할 수 있으므로 인내심을 갖고 기다리는 것이 가장 좋습니다. 댓글이 삭제된 경우 유사한 콘텐츠를 다시 게시해 보세요. 하지만 다시 게시할 때 콘텐츠가 Xiaohongshu 커뮤니티 가이드라인을 준수하는지 확인하여 다시 삭제되지 않도록 하세요. 3. Xiaohongshu 고객 서비스에 문의하십시오. 귀하의 댓글이 실수라고 생각되는 경우

Linux Deploy 작업 단계 및 주의사항 Linux Deploy 작업 단계 및 주의사항 Mar 14, 2024 pm 03:03 PM

LinuxDeploy 작업 단계 및 주의 사항 LinuxDeploy는 사용자가 Android 장치에 다양한 Linux 배포판을 신속하게 배포하여 모바일 장치에서 완전한 Linux 시스템을 경험할 수 있도록 도와주는 강력한 도구입니다. 이 기사에서는 LinuxDeploy의 작동 단계와 주의 사항을 자세히 소개하고 독자가 이 도구를 더 잘 사용할 수 있도록 구체적인 코드 예제를 제공합니다. 작업 단계: Linux 설치배포: 먼저 설치

PHP에서 특수 문자를 처리하고 작은따옴표를 변환하는 방법을 알아보세요. PHP에서 특수 문자를 처리하고 작은따옴표를 변환하는 방법을 알아보세요. Mar 27, 2024 pm 12:39 PM

PHP 개발 과정에서 특수 문자를 처리하는 것은 일반적인 문제이며, 특히 문자열 처리에서는 특수 문자가 이스케이프되는 경우가 많습니다. 그중에서도 특수 문자를 작은따옴표로 변환하는 것은 상대적으로 일반적인 요구 사항입니다. 왜냐하면 PHP에서는 작은따옴표가 문자열을 래핑하는 일반적인 방법이기 때문입니다. 이 기사에서는 PHP에서 특수 문자 변환 작은따옴표를 처리하는 방법을 설명하고 구체적인 코드 예제를 제공합니다. PHP에서 특수 문자에는 작은따옴표('), 큰따옴표("), 백슬래시() 등이 포함되지만 이에 국한되지는 않습니다.

win10 부팅 암호를 얻기 위해 F2 키를 누르는 것을 잊은 경우 수행할 작업 win10 부팅 암호를 얻기 위해 F2 키를 누르는 것을 잊은 경우 수행할 작업 Feb 28, 2024 am 08:31 AM

아마도 많은 사용자들이 집에 사용하지 않는 컴퓨터가 여러 대 있고, 오랫동안 사용하지 않았기 때문에 시동 암호를 완전히 잊어버렸기 때문에 암호를 잊어버린 경우 어떻게 해야 하는지 알고 싶습니까? 그럼 함께 살펴볼까요? win10 부팅 암호를 입력하는 데 F2 키를 잊어버린 경우 어떻게 해야 합니까? 1. 컴퓨터의 전원 버튼을 누른 다음 컴퓨터를 켤 때 F2 키를 누릅니다(컴퓨터 브랜드마다 BIOS에 들어가는 버튼이 다릅니다). 2. BIOS 인터페이스에서 보안 옵션을 찾으세요(컴퓨터 브랜드에 따라 위치가 다를 수 있음). 일반적으로 상단의 설정 메뉴에 있습니다. 3. 그런 다음 SupervisorPassword 옵션을 찾아 클릭합니다. 4. 이때 사용자는 자신의 비밀번호를 볼 수 있으며 동시에 옆에 있는 활성화를 찾아 Dis로 전환합니다.

See all articles