oracle drop 的表恢复,Oracle Drop表(purge)恢复(ODU)

本文详细介绍了如何通过Oracle ODU工具恢复误删除的表,步骤包括离线表空间、使用Logminer定位object_id、数据抽取、SQLldr加载和验证。实例演示了从创建测试表、删除并备份到恢复的完整流程。
摘要由CSDN通过智能技术生成

Oracle Drop

表(purge

)恢复

(ODU)

通过

ODU

恢复

drop

掉的表

(purge)

基本步骤如下

1:offline表所在表空间;

2:通过

logminer

挖出被

drop

表对应

object_id

3:使用

ODU

工具将表数据抽到文件中;

4:使用

sqlldr

将数据加载到数据库;

5:验证;

一:主备测试数据

1 创建测试表

odu_test

create table odu_test (a number,b varchar2(10),c nvarchar2(30),d varchar2(20),e date,f timestamp,g binary_float,h binary_double);

2 插入测试数据

insert into odu_test

select rownum,

lpad('x', 10),

'NC测试

'

|| rownum,

'ZHS测试

'

|| rownum,

sysdate + dbms_random.value(0, 100),

systimestamp + dbms_random.value(0, 100),

rownum + dbms_random.value(0, 10000),

rownum + dbms_random.value(0, 10000)

from dba_objects

where rownum <= 10000;

commit;

3 备份并删除表

odu_test

,模拟误删除

create table odu1 as select * from odu_test;

drop table odu_test purge;

二:恢复

1

offline表所在表空间

alter tablespace users offline;

2 使用

logminer

来查找被

drop

表的object_id

select group#,status from v$log;

select member from v$logfile where group#=1;

SQL> exec sys.dbms_logmnr.start_logmnr(options=>sys.dbms_logmnr.dict_from_online_catalog);

SQL> select scn,timestamp,sql_redo from v$logmnr_contents where operation='DDL' and sql_redo like '%odu_test%' order by 2 ;

......

990001 2017/12/27  drop table odu_test purge;

SQL>

select scn,timestamp,sql_redo from v$logmnr_contents where timestamp=to_date('2017-12-27','yyyy-mm-dd') order by 1;

SQL> create table logmnr_1 as (select * from  v$logmnr_contents;

SQL> exec sys.dbms_logmnr.end_logmnr;

select *from sys.logmnr_1 where scn='990001';

---DATA_OB# 87270

select * from sys.logmnr_1 where

/*operation='DDL' and*/

LOWER(sql_redo) like '%odu_test%' order by 2 ;

/*

delete from "SYS"."OBJ$" where

"OBJ#" = '87270' and "DATAOBJ#" = '87270' and

"OWNER#" = '84' and "NAME" = 'ODU_TEST' and

"NAMESPACE" = '1' and "SUBNAME" IS NULL and

"TYPE#" = '2' and "CTIME" = TO_DATE('27-12

-17', 'DD-MON-RR') and

"MTIME" = TO_DATE('27-12

-17', 'DD-MON-RR')

and "STIME" = TO_DATE('27-12

-17',

'DD-MON-RR') and "STATUS" = '1' and "REMOTEOWNER" IS NULL

and "LINKNAME" IS NULL and "FLAGS" = '0' and

"OID$" IS NULL and "SPARE1" = '6' and "SPARE2" =

'1' and "SPARE3" = '84' and "SPARE4" IS NULL and "SPARE5"

IS NULL and "SPARE6" IS NULL and ROWID = 'AAAAASAABAAAVKkABB';

*/

3 修改原

control.txt

文件

select d.TS#        ts,

d.FILE#      fno,

d.FILE#      fno,

d.NAME       filename,

d.BLOCK_SIZE block_size

from v$datafile d

order by ts;

0    1    1    D:\APP\ADMINISTRATOR\ORADATA\CJC\SYSTEM01.DBF  8192

1    2    2    D:\APP\ADMINISTRATOR\ORADATA\CJC\SYSAUX01.DBF  8192

2    3    3    D:\APP\ADMINISTRATOR\ORADATA\CJC\UNDOTBS01.DBF 8192

4    4    4    D:\APP\ADMINISTRATOR\ORADATA\CJC\USERS01.DBF   8192

---control.txt

387bd9ad5bc7d49e3b55165f4587ec9d.png

4 登录

odu

4d63c73d0ebb464892bdf0d43bc826b2.png

2315f55f2e61a6b7c9564afcc626dfb3.png

5

扫描数据

3f3e8c5271415acca2c62eea98caee9d.png

---

企业版

ODU

需要授权

c964dede43e2ac399ea55a6a8007c20b.png

---

本次实验使用测试版

ODU

6

恢复表

95ea7357670cadcd1cf57c74e6624eb3.png

21cec7020af358be361d58eb9160e95e.png

......

9018c1cf59d52bb93042ae57556f8c28.png

生成创建表的语句和控制文件

27c15d433f5654d96e21219aca0961f6.png

这个命令生成了如下文件

ODU_0000087270.ctl

ODU_0000087270.sql

CREATE TABLE "ODU_0000087270"

(

"C0001" NUMBER ,

"C0002" VARCHAR2(4000) ,

"C0003" NVARCHAR2(2000) ,

"C0004" VARCHAR2(4000) ,

"C0005" DATE ,

"C0006" DATE ,

"C0007" BINARY_FLOAT ,

"C0008" BINARY_DOUBLE

);

7 online

表空间

alter tablespace users online;

8 通过

sqlldr

加载数据

156a4c2cf6b7eaa9540b37ddec01fe76.png

9

验证数据

select count(*) from ODU_0000087270;

---10000

查看恢复后表数据

select * from ODU_0000087270;

259aaffc7ba497a053595517004dcd4c.png

......

查看备份表数据

398a1d65d31f493def27b3c34f188909.png

......

原文链接如下:

viewspace-2149476

viewspace-2149476

viewspace-2149476

欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!

5d08a1acd18f46b1ff7d6e4f4cfca88c.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值