Corrupt block 常见处理方法--之NOLOGGING 操作引起的坏块解决方法
来源:互联网 发布:淘宝多久自动收货 编辑:程序博客网 时间:2024/05/21 10:50
【本文目的】
介绍当将某些数据段设置成NOLOGGING模式后,常见的坏块发生后的处理方法及相关解释
【适用版本】
适用于 Oracle Database - Enterprise Edition - 版本 7.1.6.0 到 12.1.0.1 [发行版 7.1.6 到 12.1]
如果数据段定义为NOLOGGING属性,当NOLOGGING / UNRECOVERABLE操作修改该数据段时,联机重做日志只记录很少的日志信息,
如果之后执行RECOVERY 操作的话,会导致这些块无效。如果这些联机重做日志/归档日志被用来恢复数据文件,那么 Oracle 会将对应的数
据块标志为无效,而且下一次访问这些数据块时,会报 ORA-1578 和 ORA-26040错误。
例如:
SQL> select * from test_nologging;ORA-01578: ORACLE data block corrupted (file # 11, block # 84)
ORA-01110: data file 4: '/oradata/users.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option
从以下数据字典视图中的 LOGGING 列记录了 NOLOGGING 属性:
DBA_TABLES,
DBA_INDEXES,
DBA_LOBS,
DBA_TAB_PARTITIONS,
DBA_LOB_PARTITIONS,
DBA_TAB_SUBPARTITIONS,等等。
其中,LOGGING='NO' 表示 NOLOGGING。
简而言之,recover了定义NOLOGGING的数据段后,这些数据块会被标志为 Soft Corrupt,当下一次访问该数据块时,会报 ORA-1578
和 ORA-26040错误。
【常用坏块的检测方法】
利用RMAN / DBV(dbverify) 检测NOLOGGING 导致的坏块
DBV 检测坏块时,如果 RDBMS 版本小于 10.2.0.4,那么 DBV 打印错误 DBV-200,如果 RDBMS 版本大于或等于 10.2.0.4,那么 DBV
打印错误 DBV-201,Reference [Note 5031712.8 ]
DBV-00200: Block, dba 46137428, already marked corruptedDBV-00201: Block, DBA 46137428, marked corrupt for invalid redo application
RMAN 检测坏块时,如果 RDBMS 版本小于 10.2.0.5 和 11.1.0.7,RMAN 打印如下错误:
From 10.2.0.4 and lower, to 11.1.0.6, 11.1.0.7:
如果 RDBMS 版本大于或等于 10.2.0.5 和 11.2.0.1,
RMAN 报告:查看视图 v$database_block_corruption 中 CORRUPTION_TYPE=NOLOGGING 的记录。参考 [Note 7396077.8]:
RMAN reports it in v$database_block_corruption with CORRUPTION_TYPE=NOLOGGING【NOLOGGING 对备份的影响】
NOLOGGING 导致的坏块不会导致 RMAN 备份失败,同样被标记为soft corrupt的block不会导致Rman 备份失败,但是恢复出来的依然
有soft corrupt block,这会影响后面的DML 操作,出现 ORA-26040和其他报错信息。
【监控 NOLOGGING 操作】
当执行 NOLOGGING 操作时,V$DATAFILE 中以下列会被更新,了解更多这些列的信息,请参考 Oracle 数据库在线文档:
UNRECOVERABLE_CHANGE#UNRECOVERABLE_TIME
FIRST_NONLOGGED_SCN
FIRST_NONLOGGED_TIME
【注意】
在 NOARCHIVELOG 模式下 FORCE LOGGING 是不生效的,这个变化是在 11.1.0.6 和 11.1.0.7 引 入的,这个限制从 11.2.0.2 开 始被取消。
详细参考[Note 1071869.1]
【如何修复nologging 引起的坏块】
NOLOGGING 操作引起的坏块是不能修复的,比如"Media Recovery" 或 "RMAN blockrecover"都无法修复这种坏块。可行的方法是在
NOLOGGING 操作之后立刻备份对应的数据文件。对于除了索引以外的其他类型的段,为了修复这个问题,可以通过导出文件(exp/expdp)
或者其他数据源来进行恢复。如果没有备份,可以采用下面的方法重建对象:参考[ Note 819533.1] 找到坏块所在的对象:
如果是表,使用 procedure DBMS_REPAIR.SKIP_CORRUPT_BLOCKS 跳过坏块,然后重建表。请参考[ Note 556733.1] 获取包 DBMS_REPAIR 的使用例。
如果是表中的 LOB 列对应的 LOB 段,请参考 [Note 293515.1]。
如果错误出现在物理 STANDBY 数据库, 从主库恢复被影响的数据文件 (只有当主库没有这个问题的情况下)。
运行 [Note 472231.1] 中的脚本识别其他坏块。
- Corrupt block 常见处理方法--之NOLOGGING 操作引起的坏块解决方法
- oracle block corrupt 坏块
- Oracle corrupt block(坏块) 详解
- Oracle corrupt block(坏块) 详解
- Oracle corrupt block(坏块) 详解
- Oracle corrupt block(坏块) 详解
- Oracle corrupt block(坏块) 详解
- Oracle corrupt block(坏块) 详解
- Oracle corrupt block(坏块)详解
- oracle 坏块的处理方法
- 磁盘块坏处理ORACLE跳过坏块解决方法
- 数据库坏块处理方法
- 数据库坏块的处理
- 简单介绍一下Oracle坏块处理的方法
- lob表中出现坏块的处理方法
- ORACLE坏块(ORA-01578)处理方法
- ORACLE坏块(ORA-01578)处理方法
- NOR flash 坏块处理方法
- Java OO实例
- C++11中的Lambda表达式构成之——捕获值列表
- 逻辑卷管理(LVM)
- 黑马程序员----Java编程基础
- css reset
- Corrupt block 常见处理方法--之NOLOGGING 操作引起的坏块解决方法
- MySQL的mysqldump工具的基本用法
- ffmpeg函数介绍
- spring mvc tiles NoSuchDefinitionException
- jQuery操作radio、checkbox、select总结(转载修改)
- cuteftp在虚拟机Ubuntu上不能连接
- Magento shows blank/empty page. How do I solve this?
- Android的模拟器,在ADT中调试运行AVD时,速度太慢,极其的慢
- IOS 使用百度社会化分享组件 个别问题解决方案