oracle 11g跳过坏块,oracle 使用Dbms_Repair跳过坏块
原博文:
http://blog.chinaunix.net/uid-77311-id-3051382.html
使用Dbms_Repair跳过坏块
步骤1:表tb_test中有坏块(模拟坏块同方法1)
SQL> select count(1) from hxl.tb_test;
select count(1) from hxl.tb_test
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 5, block # 12)
ORA-01110: data file 5: '/u01/app/oracle/oradata/oracl/hxl01.dbf'
步骤2:创建 REPAIR_TABLE 表Declare
Begin
-- create repair table
Dbms_Repair.Admin_Tables(Table_Name => 'REPAIR_TABLE',
Table_Type => Dbms_Repair.Repair_Table,
Action => Dbms_Repair.Create_Action,
Tablespace => 'SYSTEM');
End;
步骤3:创建 ORPHAN_KEY_TABLEDeclare
Begin
-- Create orphan key table
Dbms_Repair.Admin_Tables(Table_Type => Dbms_Repair.Orphan_Table,
Action => Dbms_Repair.Create_Action,
Tablespace => 'SYSTEM');
End;
步骤4:找出坏块执行过程Check_Object后会将关于损坏和修补的指导信息装入Repair Table.
Declare
Rpr_Count Int;
Begin
Rpr_Count := 0;
Dbms_Repair.Check_Object(Schema_Name => 'HXL',
Object_Name => 'TB_TEST',
Repair_Table_Name => 'REPAIR_TABLE',
Corrupt_Count => Rpr_Count);
Dbms_Output.Put_Line('repair count: ' || To_Char(Rpr_Count));
End;
该过程执行完成后,坏块的信息会加载到repair_table表中.SQL> select object_id,tablespace_id,relative_file_id,block_id from repair_table;
OBJECT_ID TABLESPACE_ID RELATIVE_FILE_ID BLOCK_ID
---------- ------------- ---------------- ----------
51663 6 5 12
步骤5:修正坏块FIX_CORRUPT_BLOCKS procedure用来根据repair table中的信息修正指定objects中的坏块.
当这个块被标识为坏了以后,做全表扫描将引起ORA-1578.
Declare
Fix_Count Int;
Begin
Fix_Count := 0;
Dbms_Repair.Fix_Corrupt_Blocks(Schema_Name => 'HXL',
Object_Name => 'TB_TEST',
Object_Type => Dbms_Repair.Table_Object,
Repair_Table_Name => 'REPAIR_TABLE',
Fix_Count => Fix_Count);
Dbms_Output.Put_Line('fix count: ' || To_Char(Fix_Count));
End;
步骤6:找出坏块中记录的index entries(因为该测试表TB_TEST没有任何索引,该步骤跳过)
-- DUMP_ORPHAN_KEYS将会显示指向数据坏块中记录的index entries
Declare
Key_Count Int;
Begin
Key_Count := 0;
Dbms_Repair.Dump_Orphan_Keys(Schema_Name => 'HXL',
Object_Name => 'TB_A_PK',
Object_Type => Dbms_Repair.Index_Object,
Repair_Table_Name => 'REPAIR_TABLE',
Orphan_Table_Name => 'ORPHAN_KEY_TABLE',
Key_Count => Key_Count);
Dbms_Output.Put_Line('orphan key count: ' || To_Char(Key_Count));
End;
步骤7:跳过坏块-- 使用DBMS_REPAIR.SKIP_CORRUPT_BLOCKS来跳过坏块
Declare
Begin
Dbms_Repair.Skip_Corrupt_Blocks(Schema_Name => 'HXL',
Object_Name => 'TB_TEST',
Object_Type => Dbms_Repair.Table_Object,
Flags => Dbms_Repair.Skip_Flag);
End;
过程执行完成后,可以全扫描该表.SQL> select count(1) from hxl.tb_test;
COUNT(1)
----------
1568
备注:Dbms_Repair包只能标记坏块,但不能真正修复坏块.
oracle 11g跳过坏块,oracle 使用Dbms_Repair跳过坏块相关推荐
- centos 6.5 安装 oracle 11g,安装Centos6.5 安装Oracle 11g详细过程
CentOS6.5安装oracle 11G数据库详细过程安装环境 1台l inux虚拟机 CentOS6.564位系统,内存4G,CPU 2核磁盘50G Oracle软件版本l inux.x64 ...
- ubuntu 14.04 安装oracle 11g,ubuntu 14.04 安装 oracle 11g
参考:http://www.linuxidc.com/Linux/2015-03/115264.htm (1)Oracle要求swap最少为3.69G (2)apt-get install rpm l ...
- 玩转oracle 11g(1):Oracle 11g的安装
由于工作需要,本人现在要对oracle 11g做一段攻坚战,先从安装开始 基本是傻瓜程序,网上也有大量教程 1 安装数据库软件 安装前准备工作 a.必须使用超级用户安装(adminstrator) b ...
- oracle 11g 环境,Linux彻底清理Oracle 11g RAC环境方案
参考文档: Linux环境下11.2.0.3 rac的快速卸载脚本 在Oracle 11.1和Oracle 10.1,10.2上,都是官方提供手工清理RAC环境的方法的(比如环境有问题,或者RAC安装 ...
- oracle 11g第二版课后答案,oracle 11g(钱慎一)课后习题答案
oracle 11g数据库基础与应用教程(钱慎一)含1-8章课后习题答案 一.选择题 1. 若关系的某一属性组的值能唯一地标识一个元组,我们称之为( B ). A.主码 B.候选码 C.外码 D.联系 ...
- oracle 11g r2(64bit) for windows7,Oracle 11g R2 for Win7旗舰版(64位)的安装步骤
1.下载Oracle 11g R2 for Windows的版本 下载地址:[url]http://www.oracle.com/technetwork/database/enterprise-edi ...
- Linux下Oracle 11g安装(3)—— Oracle安装篇
文章目录 Oracle安装说明 Oracle安装 1.启动安装程序 2.选择安装选项 3.选择数据库类型 4.选择安装版本 5.选择安装目录 6.指定OraInventory目录 7.系统环境检测 8 ...
- oracle 11g proc/c...,Windows下Oracle 11g的下载与安装
一.Oracle下载 二.Oracle安装 1.安装准备 Oracle的安装包下载以后是两个压缩包,同时选中两个压缩包右击进行解压 2.解压完成如下图所示 3.双击 setup.exe 文件进行安装, ...
- oracle 11g 逻辑备库,通过Oracle 11g 逻辑standby实现BI的需求
逻辑standby用的很少,特别是在11g,物理standby也可以只读打开并实时应用,物理standby也可以做滚动升级.不过,最近有一个用户需求,要建一个报表系统数据库,想到可以试试逻辑stand ...
- oracle 11g dul,dul 10支持oracle 11g r2
以前一直以为dul对应的版本只能恢复最高的数据库版本一致,今天测试发现dul 10可以恢复11g最新版的数据库. 模拟环境 SQL> select * from v$version; BANNE ...
最新文章
- 深入地下,实地探访!不用人挖煤的智能煤矿长什么样?
- SonarQube6.2源码解析(二)
- [模板]平面最近点对
- 终于有人把监督学习讲明白了
- cxf调用接口的几种方式_Java调用CXF WebService接口的两种方式实例
- L2C中CtempGen层语义保持证明中环境匹配的定义
- Flink 上传的Jar包去哪里了
- 直指Adobe的龌龊行径
- list 删除_算法面试题:一个List,要求删除里面的男生,不用Linq和Lamda,求各种解,并说明优缺点!...
- 四川传媒学院计算机应用技术分数,四川传媒学院历年各专业录取文化最低控制分数线一览表...
- FileZilla Client中文乱码
- 由于找不到MSVCR100.dll,无法继续执行代码解决方法
- Messenger:使用消息的跨进程通信 (Message.replyTo()的使用)
- key mysql_调整MySQL中的key_reads
- (11)企业合并长期股权投资
- 简单三步操作实现任意用户连接云服务器中的MYSQL数据库
- 37岁京东程序员“被猝死”,当事人辟谣:已报警
- Flutter返回页面时刷新页面
- 共享自习室无人自习室源码
- Python字典操作大全
热门文章
- php怎么实现点卡充值,利用自动发卡程序的点卡充值传奇脚本
- flutter listview 滚动到指定位置_Flutter 布局原理及实战
- python当前时间怎么弄_python获取当前时间
- php如何新建xml文件,PHP中的生成XML文件的4种方法分享
- Latex 加空格的方法
- sed教程入门与实例练习(一)
- C# Collection was modified;enumeration operation may not execute
- 初始化bean(二)—— 缓存部分
- 《程序设计与数据结构》第八周学习总结
- 共享马扎的火爆,原来是一场营销!