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包只能标记坏块,但不能真正修复坏块.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

strictmath_Java StrictMath nextUp()方法与示例

strictmathStrictMath类nextUp()方法 (StrictMath Class nextUp() method) Syntax: 句法: public static float nextUp(float fl);public static double nextUp(double do);nextUp() method is available in java.lang package. nextUp()方法在java.lang包中可用。…

并发数据结构-1.1 并发的数据结构的设计

原文链接,译文链接,译者:董明鑫,校对:周可人 随着多个处理器共享同一内存的机器在商业上的广泛使用,并发编程的艺术也产生了巨大的变化。当前的趋势向着低功耗芯片级多线程(CMT)发展…

printstream_Java PrintStream close()方法与示例

printstreamPrintStream类close()方法 (PrintStream Class close() method) close() method is available in java.io package. close()方法在java.io包中可用。 close() method is used to close the underlying output stream. close()方法用于关闭基础输出流。 close() meth…

oracle底层执行顺序,select语句结构与执行顺序-Oracle

select语句结构与执行顺序select语句的结构与执行顺序,下面的序号代表执行顺序8 SELECT (9)DISTINCT11 1 ROM 3   JOIN 2   ON 4 WHERE 5 GROUP BY 6 WITH {CUBE | ROLLUP}7 HAVING 10 ORDER BY 补…

HDU 4923 Room and Moor(瞎搞题)

瞎搞题啊。找出1 1 0 0这样的序列,然后存起来,这样的情况下最好的选择是1的个数除以这段的总和。然后从前向后扫一遍。变扫边进行合并。每次合并。合并的是他的前驱。这样到最后从t-1找出的那条链就是最后满足条件的数的大小。Room and Moor Time Limit:…

java define_Java Long类的define()方法与示例

java define长类解码()方法 (Long class decode() method) decode() method is available in java.lang package. 在java.lang包中提供了define ()方法 。 decode() method is used to decode the given String value into a Long value. encode()方法用于将给定的String值解码…

linux修改文件用户组,linux命令 修改文件、文件夹所属用户、用户组

最近学习hadoop,在替换配置文件的时候,发现老是报错,没有权限替换。我们知道如何改变文件的用户组与拥有者了,那么,什么时候要使用chown或chgrp呢?或许你会觉得奇怪吧?是的,确实有时…

Kotlin 开篇

Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发官网地址:http://kotlinlang.org。JetBrains,作为目前广受欢迎的 Java IDE IntelliJ 的提供商,在 Apache 许可下已经开源其Kotlin 编程语言。开源地址:https:/…

inputstream示例_Java InputStream close()方法与示例

inputstream示例InputStream类close()方法 (InputStream Class close() method) close() method is available in java.io package. close()方法在java.io包中可用。 close() method is used to close this InputStream and free all system resources linked with this stream…

linux下的文件系统,Linux根文件系统(“/”文件系统)下的目录介绍

Linux下的文件存储与Windows完全不同,Windows将系统文件存储在系统盘(比如说C:\下)Linux根本没有盘符到概念只有一个根文件系/,各个磁盘分区挂载在/media/下(或者/mnt/下)/下到如/etc,/proc,/bin,/dev,lib等很是让用惯了Windows的用户不解,下…

greenlet 详解

greenlet初体验回到顶部Greenlet是python的一个C扩展,来源于Stackless python,旨在提供可自行调度的‘微线程’, 即协程。generator实现的协程在yield value时只能将value返回给调用者(caller)。 而在greenlet中,target.switch&am…

Java Calendar toString()方法与示例

日历类toString()方法 (Calendar Class toString() method) toString() method is available in java.util package. toString()方法在java.util包中可用。 toString() method is used to string denotations of the calendar object. toString()方法用于对日历对象的符号进行字…

linux虚拟机怎么看var文件,一种获取Linux虚拟机内部日志的方法

一种获取Linux虚拟机内部日志的方法【技术领域】[0001]本发明涉及云计算管理技术领域,特别是指一种获取Linux虚拟机内部日志的方法。【背景技术】[0002]在云计算环境下,虚拟机被广泛使用,对于虚拟机的维护要求越来越高,当虚拟机出…

详细图解mongodb 3.4.1 win7x64安装

原文:http://www.cnblogs.com/yucongblog/p/6895983.html 详细图解,记录 win7 64 安装mongo数据库的过程。安装的版本是 MongoDB-win32-x86_64-2008plus-ssl-3.4.1-signed。 我下载的源文件:mongodb-win32-x86_64-2008plus-ssl-3.4.1-signed我…

java calendar_Java Calendar complete()方法与示例

java calendarCalendar类的complete()方法 (Calendar Class complete() method) complete() method is available in java.util package. complete()方法在java.util包中可用。 complete() method is used to fills in any non-set fields in the calendar fields. complete()方…

LXD 2.0 系列(十二):调试,及给 LXD 做贡献

介绍 终于要结束了!这个大约一年前开始的这系列文章的最后一篇博文。 LXD 入门安装与配置你的第一个 LXD 容器资源控制镜像管理远程主机及容器迁移LXD 中的 DockerLXD 中的 LXD实时迁移LXD 和 JujuLXD 和 OpenStack调试,及给 LXD 做贡献如果你从一开始就…

linux用ping命令测试网速,linux下面使用命令测试网速

大家都知道在speedtest是市面上最准确最全面的测速工具,但在linux命令行不能直接使用,所以我们就借助脚本调用speedtest的接口来利用他测试网速。1.下载speedtest-cli脚本:下载地址:https://raw.githubusercontent.com/sivel/spee…

Java ArrayList isEmpty()方法与示例

ArrayList类isEmpty()方法 (ArrayList Class isEmpty() method) isEmpty() method is available in java.util package. isEmpty()方法在java.util包中可用。 isEmpty() method is used to check whether this Arraylist is "empty" or "not empty". isEmp…

linux家用系统版本,查看linux系统版本

篇一:linux下如何查看系统和内核版本linux下如何查看系统和内核版本 1. 查看内核版本命令:1) [rootq1test01 ~]# cat /proc/versionLinux version 2.6.9-22.ELsmp (bhcompilecrowe.devel.redhat.com) (gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)) #1…

python中locked_Python锁类| 带示例的locked()方法

python中lockedPython Lock.locked()方法 (Python Lock.locked() Method) locked() is an inbuilt method of the Lock class of the threading module in Python. Locked()是Python中线程模块的Lock类的内置方法。 This method returns True if the lock is acquired by a th…