最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

记一次Oracle坏块修复过程

来源:懂视网 责编:小采 时间:2020-11-09 14:56:52
文档

记一次Oracle坏块修复过程

记一次Oracle坏块修复过程:昨天接备份同事电话反应在进行RMAN冷备的过程中报如下错,某个表空间备份失败。RMAN-00571: ================================== 昨天接备份同事电话反应在进行RMAN冷备的过程中报如下错,某个表空间备份失败。RMAN-00571: =========
推荐度:
导读记一次Oracle坏块修复过程:昨天接备份同事电话反应在进行RMAN冷备的过程中报如下错,某个表空间备份失败。RMAN-00571: ================================== 昨天接备份同事电话反应在进行RMAN冷备的过程中报如下错,某个表空间备份失败。RMAN-00571: =========

昨天接备份同事电话反应在进行RMAN冷备的过程中报如下错,某个表空间备份失败。RMAN-00571: ==================================

昨天接备份同事电话反应在进行RMAN冷备的过程中报如下错,某个表空间备份失败。
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ch00 channel at 04/25/2015 22:02:30
ORA-19566: exceeded limit of 0 corrupt blocks for file +DATA/dbrac/datafile/tbs_11.11.435678937

经过分析发现坏块导致,且坏块不属于任何对象(空块),,以下是本次坏块修复步骤:
1、查找坏块
1)使用RMAN查找坏块
验证整个数据库:
Rman> backup validate check logical database ;
注:当数据库版本低于11g且非归档模式,以上命令必须在数据库处于mounted状态执行
验证单个datafile
Rman> backup validate check logical datafile 11 ;
而后执行以下SQL查看坏块:
SQL>Select * from v$database_block_corruption ;

例如:
validate.sh
#!/bin/bash
source /home/Oracle/.bash_profile
$ORACLE_HOME/bin/rman log=/home/oracle/users/validate.log < connect target /
Backup validate check logical datafile 11 ;
exit;
EOF

2)使用DBV查找坏块:
dbv userid=system/system file='+DATA/dbrac/datafile/tbs_11.11.435678937' blocksize=32768

2、确认坏块是否不属于任何对象
select segment_name, segment_type, owner
from dba_extents
where file_id =
and between block_id
and block_id + blocks -1;
例如:
alter session force parallel query parallel 10;
select segment_name, segment_type, owner
from dba_extents
where file_id = 11
and 184959440 between block_id
and block_id + blocks -1;

3、确认块在 dba_free_space存在
Select * from dba_free_space where file_id=
and between block_id and block_id + blocks -1;
例如:
Select * from dba_free_space where file_id= 11 and 184959440 between block_id and block_id + blocks -1;

4、创建表
create table s (
n number,
c varchar2(4000)
) nologging tablespace pctfree 99;
例如:
create table users.s (
n number,
c varchar2(4000)
) nologging tablespace TBS_11 pctfree 99;


select segment_name,tablespace_name from dba_segments
where segment_name='S' ;

Select table_name,tablespace_name from dba_tables where table_name='S' ;

5、创建触发器
CREATE OR REPLACE TRIGGER corrupt_trigger
AFTER INSERT ON users.s
REFERENCING OLD AS p_old NEW AS new_p
FOR EACH ROW
DECLARE
corrupt EXCEPTION;
BEGIN
IF (dbms_rowid.rowid_block_number(:new_p.rowid)=&blocknumber)
and (dbms_rowid.rowid_relative_fno(:new_p.rowid)=&filenumber) THEN
RAISE corrupt;
END IF;
EXCEPTION
WHEN corrupt THEN
RAISE_APPLICATION_ERROR( -20000, 'Corrupt block has been formatted');
END;
/

6、分配空间创建在有坏块的datafile上的表
注:
i)因为ASSM会自动确定下一个区段的大小,所以在ASSM的表空间上,需要创建多个表及
不断的分配空间给这些表,直到坏块被分配至其中一个对象。
ii)设置datafile的AUTOEXTEND为OFF

1)查找坏块的extent size
Select BYTES from dba_free_space where file_id= and between
block_id and block_id + blocks -1;

例如:
alter database datafile '+DATA/dbrac/datafile/tbs_11.11.435678937' autoextend off;

SQL> Select BYTES from dba_free_space where file_id=11 and 184959440 between
2 block_id and block_id + blocks -1;


BYTES
----------
29360128

2)不断allocate直到坏块是S表的一部分
如果步骤1输出结果是64K,执行以下SQL:
alter table users.s
allocate extent (DATAFILE '+DATA/dbrac/datafile/tbs_11.11.435678937' SIZE 64K);

如果大于64K使用以下
BEGIN
for i in 1..1000000 loop
EXECUTE IMMEDIATE 'alter table users.s allocate extent (DATAFILE '||'''+DATA/dbrac/datafile/tbs_11.11.435678937'''||'SIZE 64K) ';
end loop;
end ;
/

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

记一次Oracle坏块修复过程

记一次Oracle坏块修复过程:昨天接备份同事电话反应在进行RMAN冷备的过程中报如下错,某个表空间备份失败。RMAN-00571: ================================== 昨天接备份同事电话反应在进行RMAN冷备的过程中报如下错,某个表空间备份失败。RMAN-00571: =========
推荐度:
标签: 修复 恢复 过程
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top