exp/imp(expdp/impdp)恢复损坏的数据块

当Oracle数据库的数据块损坏时,除了RMAN的blockrecover,还可通过exp/imp(expdp/impdp)进行恢复。通过导出未损坏记录,删除并重新导入数据,但这种方法可能丢失部分记录。如果损坏涉及索引,只需删除并重建索引。本文通过实例演示了如何使用exp/imp进行不完全恢复。
摘要由CSDN通过智能技术生成
    除了使用rman的blockrecover命令恢复损坏的数据块外,也可以使用exp/imp(expdp/impdp)命令进行恢复。方法是先用exp命令先导出没有损坏的记录,然后删除表,再使用imp命令导入数据,但是这种恢复方法会丢失记录。如果数据文件中包含索引的数据块有损坏,我们只用简单的删除索引再重建索引即可。下面的例子说明包含表记录的数据块怎么用exp/imp进行不完全恢复。

---创建测试表空间
SYS@orcl>create tablespace test datafile '/u01/app/oracle/oradata/orcl/test01.dbf' size 5m;
Tablespace created.

---创建测试表
SYS@orcl>create table scott.test tablespace test as select * from dba_objects where rownum<=3000;
Table created.

SYS@orcl>select count(*) from scott.test;
  COUNT(*)
----------
      3000

---查出包含行记录的数据块
SYS@orcl>select distinct dbms_rowid.rowid_block_number(rowid) from scott.test order by 1;
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
------------------------------------
                 131
                 132
                 133
                 134
                 135
                 136
                 137
                 138
                 139
                 140
                 141

DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
------------------------------------
                 142
                 143
                 145
                 146
                 147
                 148
                 149
                 150
                 151
                 152
                 153

DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
------------------------------------
                 154
                 155
                 156
                 157
                 158
                 159
                 161
                 162
                 163
                 164
                 165

DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值