dbv 检查数据文件是否有坏块
oracle用户下执行dbv file='/var/oradata/test/system01.dbf' 检查这个文件是否有坏块
示例如下:
1.获取所有数据文件的检查脚本
select 'dbv file='||''''||name||'''' from v$datafile; --得出所有数据文件的检查脚本
dbv file='/var/oradata/test/system01.dbf'
dbv file='/var/oradata/test/TEST_D_TEST86_TEMP2.dbf'
dbv file='/var/oradata/test/sysaux01.dbf'
dbv file='/var/oradata/test/undotbs01.dbf'
2.将以上都放到1.sh文件中
vi 1.sh
dbv file='/var/oradata/test/system01.dbf'
dbv file='/var/oradata/test/TEST_D_TEST86_TEMP2.dbf'
dbv file='/var/oradata/test/sysaux01.dbf'
dbv file='/var/oradata/test/undotbs01.dbf'
3.执行脚本sh 1.sh > 1.log >2&1
4.最后查看结果
cat 1.log | egrep "FILE|Total Pages Marked Corrupt"
如果每个文件的Total Pages Marked Corrupt这一列都是0的话证明没有坏块。
补充说明:sql语句的拼接。
select 'dbv file='||''''||name||'''' from v$datafile;
用||进行拼接,其他字符串需要使用两个单引号括起来,特殊字符也需要用单引号进行转义。
select tablespace_name,segment_type,owner,segment_name from dba_extents where file_id=28 and 3085095 between block_id AND block_id + blocks - 1;
案例分享:
用dbv扫的时候发现某个文件坏了4个块:
dbv扫描之后,视图V$DATABASE_BLOCK_CORRUPTION为空,不确定是哪个块号有问题。
于是用如下的语句找出具体哪个文件的块坏了
发现是69号文件的1772816,1772885,1773338,1773402这4个块坏了。
具体语句如下:(因为是from dual,所以随便查那个库都可以)
select dbms_utility.data_block_address_file(291179792),dbms_utility.data_block_address_block(291179792),
dbms_utility.data_block_address_file(291179861),dbms_utility.data_block_address_block(291179861), dbms_utility.data_block_address_file(291180314),dbms_utility.data_block_address_block(291180314), dbms_utility.data_block_address_file(291180378),dbms_utility.data_block_address_block(291180378)
from dual;
再根据如下语句查这些块对应的对象是哪个
SELECT segment_type, owner, segment_name
FROM dba_extents
WHERE (file_id = 69 and 1772816 between block_id AND block_id + blocks - 1)
or
(file_id = 69 and 1772885 between block_id AND block_id + blocks - 1)
or
(file_id = 69 and 1773338 between block_id AND block_id + blocks - 1)
or
(file_id = 69 and 1773402 between block_id AND block_id + blocks - 1)
如果对应的对象是lob对象的话,再查这个lob是属于哪个表
select e.owner, l.table_name, l.segment_name
from dba_extents e, dba_lobs l
where e.owner = l.owner
and e.segment_name = l.segment_name
and e.segment_type = 'LOBSEGMENT'
and l.segment_name='SYS_LOB0001459936C00001$$';
停业务,重建表
如果是表的lob字段损坏的话,可以考虑重建这个表,如果表的数据量不大的话,可以先执行
alter system set events='10231 trace name context forever,level 10';
然后在create table as select * from 表这种方式重建表,重建索引,然后alter system set events '10231 trace name errorstack off'; 关闭跟踪。
如果表很大的话,可以先执行alter system set events='10231 trace name context forever,level 10';然后用数据泵导出导入表。然后alter system set events '10231 trace name errorstack off'; 关闭跟踪。(检查索引有效性)
如果业务不能停的话可以先将表重命名再重建或在导。
当时重建表的时候有这个报错
(create table T_CSL_CLSREPORT_bak0731 as select * from T_CSL_CLSREPORT不会报错,但是create table T_CSL_CLSREPORT as select * from T_CSL_CLSREPORT_bak0731 再建回去的时候会报下面的错)
解决方法可以参考链接:CSDNhttps://mp.csdn.net/mp_blog/creation/editor/126119132
最后记得索引要重新建上,关闭跟踪
dbv 检查数据文件是否有坏块相关推荐
- ORACLE使用dbv工具检验数据文件是否有坏块
使用dbv工具检验数据文件是否有坏块 dbv工具可以用来验证数据文件的有效性,在数据库恢复之前可以使用该命令对备份文件进行有效性检查, 防止因备份文件本身的问题导致数据库无法恢复. 当然,dbv命令也 ...
- 【dbv】使用dbv工具检验数据文件是否有坏块
dbv工具可以用来验证数据文件的有效性,在数据库恢复之前可以使用该命令对备份文件进行有效性检查,防止因备份文件本身的问题导致数据库无法恢复. 当然,dbv命令也可以对在线的数据文件进行检查. 注意,d ...
- oracle dbv 离线,bbed和dbv检查数据文件结果不一致?
本帖最后由 latch_free 于 2019-11-3 20:55 编辑 数据库执行查询,发现存在坏块: ERROR: ORA-01578: ORACLE data block corrupted ...
- Oracle 坏块 总结
racle数据库出现坏块现象是指:在Oracle数据库的一个或多个数据块(一个数据块的容量在创建数据库时由db_block_size参数指定,缺省为8K)内出现内容混乱的现象.由于正常的数据块都有固定 ...
- oracle坏块修复
Oracle数据库出现坏块现象是指:在Oracle数据库的一个或多个数据块(一个数据块的容量在创建数据库时由db_block_size参数指定,缺省为8K)内出现内容混乱的现象.由于正常的数据块都有固 ...
- 数据文件检验坏块的利器-dbv
使用dbv工具检验数据文件是否有坏块 dbv工具可以用来验证数据文件的有效性,在数据库恢复之前可以使用该命令对备份文件进行有效性检查, 防止因备份文件本身的问题导致数据库无法恢复. 当然,dbv命令也 ...
- oracle 数据块 修复,案例:Oracle坏块 使用RMAN工具的命令clear标记数据块为corrupt 修复坏块...
天萃荷净 运维DBA巡检发现数据文件中存在坏块,使用RMAN工具的命令clear标记数据坏块,使用bbed修复坏块 在rman中有隐藏的命令clear,可以标记数据块为corrupt,从而实现数据库坏 ...
- Oracle corrupt block(坏块) 详解
转自:http://blog.csdn.net/tianlesoftware/article/details/5024966 一. 坏块说明 1.1 相关链接 在看坏块之前,先看几个相关的链接,在后面 ...
- oracle 提示存在lob,Oracle数据库出现ORA-19566 LOB坏块的处理记录
1.故障现象: 在晚上的生产库自动备份时,备份失败,出现以下错误提示: RMAN-03009: failure of backup command on c1 channel at 06/11/202 ...
- 一道面试题:遇到大规模Oracle坏块该怎么处理?
最近一两个月,一直有场景化运维.场景化大数据分析的声音围绕在耳畔,以Gdevops全球敏捷运维峰会杭州站上新炬网络执行副总裁程永新的"一切没有场景驱动的运维平台建设都是假大空!"最 ...
最新文章
- linux 下使用crontab 定时打包日志并删除已被打包的日志
- 变分法理解1——泛函简介
- VBScript是什么?有什么优缺点?
- Java 根据枚举的名字得到枚举的实例
- 【转】android fragment 博客 学习
- volatile的总结
- Android init.rc on property
- java.util.concurrent 同步器框架详解
- 妙!云服务器远程登录,本地听声音
- dubbo中 provider和 comsumer端timeout的设置区别
- 怎么查看笔记本内存条型号_笔记本如何加内存条之如何查看笔记本内存品牌和型号...
- 签到方式出“新招”!人脸识别考勤系统
- 三菱伺服电机编码器故障判断方法
- redis查看某一个key的大小_redis查询key的内存大小
- 如何设计一个简单的KV数据库
- 史上最详细Mysql免安装版教程
- http请求返回302处理方案
- gitlab批量下载projects
- AD7656六通道同步采集出现数据串通道的问题处理
- 电力电子技术第二章要点
热门文章
- Objective-C 入门篇
- win7计算机高级还原,最好用的win7一键恢复64位方法
- 横渡办公室里的银河:一座名为企业智慧屏的桥
- 根据列表内车牌号,统计各省市车牌占有量
- 《微观经济学》博弈论入门:囚徒困境、智猪博弈、性别战、斗鸡博弈
- 计算机故障报警声2声,电脑开机报警声音2短4短是什么問題?
- 搜狗输入法界面简化设置
- plot 串口助手,DataScope软件的数据,导入matlab绘图。温度曲线
- Educational Codeforces Round 118 (Rated for Div. 2)
- 回归分析中f多少合适_问下,spss回归分析得出的R方值、F值、t值各有何含义,数值大小有何含义?...