返回顶部
首页 > 资讯 > 数据库 >怎么修复NOLOGGING操作引起的ORA-1578的坏块问题
  • 237
分享到

怎么修复NOLOGGING操作引起的ORA-1578的坏块问题

2024-04-02 19:04:59 237人浏览 泡泡鱼
摘要

本篇内容介绍了“怎么修复NOLOGGING操作引起的ORA-1578的坏块问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅

本篇内容介绍了“怎么修复NOLOGGING操作引起的ORA-1578的坏块问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

适用于:

oracle Database - Enterprise Edition - 版本 7.1.6.0 到 12.2.0.1 [发行版 7.1.6 到 12.2]本文档所含信息适用于所有平台

用途

重要:
如果只是错误ORA-1578,而没有伴随ORA-26040,那么这个坏块是其他的原因,可以通过RMAN Block Media Recovery修复。参考1578.1

适用范围

本文适用于用户和 Oracle Support。

详细信息

如果数据段定义为 NOLOGGING 属性,当 NOLOGGING/UNRECOVERABLE 操作修改该数据段或者使用datapump import 参数 disable_arcHive_logging:y,联机重做日志只记录很少的日志信息,如果之后执行 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。


接下来,这些数据块会被标志为 Soft Corrupt,当下一次访问该数据块时,会报 ORA-1578 和 ORA-26040错误。

DATAPUMP 参数 DISABLE_ARCHIVE_LOGGING

DATAPUMP impdp 参数 DISABLE_ARCHIVE_LOGGING:Y 在import时禁止 LOGGING 定义,会产生NOLOGGING操作; 如果相应的datafile被restored 和 recovered, 那么接下来的语句会报错 ORA-1578 和 ORA-26040.

"如果database是 FORCE LOGGING 模式, 那么DISABLE_ARCHIVE_LOGGING 选项不会关闭logging.

import时使用这个参数的例子:

impdp scott/tiger directory=DATA_PUMP_DIR dumpfile=dp transfORM=disable_archive_logging:y

RDBMS版本
变化
10.2.0.4+DBverify报告NOLOGGING block错误信息 "DBV-00201: Block, DBA <rdba>, marked corrupt for invalid redo application"
10.2.0.5, 10.2.0.1+RMAN validate命令检查NOLOGGING block,在v$database_block_coruption视图中记录corruption_type='NOLOGGING'
11g+引入db_unrecoverable_scn_tracking 参数
11.1.0.6 or 11.1.0.7 or 11.2.0.1

NOARCHIVELOG模式数据库,对NOLOGGING对象执行了DIRECT PATH操作,并且以后手动恢复数据库,即使打开了FORCE LOGGING,
也会报ORA-1578 和 ORA-26040。这个约束在11.2.0.2以上版本取消,这个问题在10g不会发生。

12cRMAN validate的结果不在视图v$database_block_corruption中,而是在视图v$nonlogged_block
12.2

以下RMAN命令被引入:

RMAN> validate [database / datafile] nonlogged block;

RMAN> recover [database / datafile] nonlogged block; -> 对于 Standby 数据库

 

 

解决方法


NOLOGGING 操作引起的坏块是不能修复的,比如"Media Recovery" 或 "RMAN blockrecover"都无法修复这种坏块。可行的方法是在 NOLOGGING 操作之后立刻备份对应的数据文件。

问题是在执行RMAN DUPLICATE或RESTORE之后产生?

      如果问题是执行RMAN DUPLICATE 或 RESTORE之后 ,那么在源库打开FORCE LOGGING,然后再重新运行RMAN DUPLICATE 或 RESTORE。

  • alter database force logging;

问题是发生在物理standby库?

  • 如果错误出现在物理 STANDBY 数据库, 从主库恢复被影响的数据文件 (只有当主库没有这个问题的情况下)。参考文档Doc ID 958181.1。 在12c中可以使用RMAN选项RECOVER NONLOGGED BLOCK with DATAFILE,TABLESPACE,DATABASE。例如:

  •   

    RMAN> RECOVER DATABASE NONLOGGED BLOCK;

     

  • 为了避免这个问题发生,在主库强制生产日志:

  • alter database force logging;

如果同一个datafile的数据块在主库出现nologging 坏块,但是备库没有,可以通过手动跳过(dbms_repair)坏块 或者设置event 10231.
主库出现nologging 坏块可能是由于主库执行过备份恢复或者之前是备库,执行了switchover

识别被影响的Segment

参考  Note 819533.1 和  Note 472231.1 找到坏块所在的对象:

  • 如果NOLOGGING数据块位于空闲数据块(dba_free_space视图可以查询到),DBVerify检查会发现这个问题,报错DBV-00201
    或者在v$database_block_corruption视图中显示.对于这种情况,我们可以等待到这个数据块被重用时,会自动格式化,或者
    手动强制格式化,参考Doc ID 336133.1

  • 如果是索引,重新创建(drop/create)索引

  • 如果是,使用 procedure DBMS_REPAIR.SKIP_CORRUPT_BLOCKS 跳过坏块,请参考 Note 556733.1 获取包 DBMS_REPAIR 的使用示例。然后考虑是否重建表:

    移动table: alter table &table_name move;

    或者

    保存数据 (export, Create Table as Select, etc) 然后truncate 或 drop/create

           例子:

          

标记表中需要skip的块:

BEGIN
DBMS_REPAIR.SKIP_CORRUPT_BLOCKS (
SCHEMA_NAME => '&schema_name',
OBJECT_NAME => '&table_name',
OBJECT_TYPE => dbms_repair.table_object,
FLAGS => dbms_repair.SKIP_FLAG);
END;
/

确认表的skipping corrupt blocks 是ENABLED:

select SKIP_CORRUPT
from dba_tables
where owner = '&schema_name'
and table_name = '&table_name';

Move这个表:

alter table &table_name move;

OR if decided to save the data:

export (datapump or conventional export)
or
Create Table &newtable as Select * From &nologging_corrupted_table;

 

  • 如果是LOB 参考Note 293515.1。

           如果删除有坏块的段之后,这个坏块就处于空闲状态,后续可以被分配给其他对象/段,当这个坏块被分配给一个其他对象/段时,
           这个数据块被重新格式化。 如果v$database_block_corruption或者是v$nonlogged_block (12c+)视图中还是显示为坏块,那么手动运行rman validate来清除视图中的信息。

“怎么修复NOLOGGING操作引起的ORA-1578的坏块问题”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: 怎么修复NOLOGGING操作引起的ORA-1578的坏块问题

本文链接: https://lsjlt.com/news/65123.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么修复NOLOGGING操作引起的ORA-1578的坏块问题
    本篇内容介绍了“怎么修复NOLOGGING操作引起的ORA-1578的坏块问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅...
    99+
    2024-04-02
  • ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案
    (一)NOLOGGING操作引起的坏块(ORA-01578和ORA-26040)简介如果只是错误ORA-01578,而没有伴随ORA-26040,那么这个坏块是由其它的原因引起的坏块,可以尝试使用RMAN的...
    99+
    2024-04-02
  • 修复由于主库NOLOGGING操作引起的备库ORA-01578和ORA-26040错误
    修复由于主库NOLOGGING操作引起的备库ORA-01578和ORA-26040错误ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案 : ...
    99+
    2024-04-02
  • 一次rman恢复引起的nologging问题模拟
    测试环境:Oracle 11.2.0.4SLES 11SP4结论如下:no force logging,table nologging, dml nologging,出现ora-26040no force logging,table log...
    99+
    2023-06-06
  • 怎么处理Oracle调度作业引起的空间骤增问题
    这篇文章主要介绍“怎么处理Oracle调度作业引起的空间骤增问题”,在日常操作中,相信很多人在怎么处理Oracle调度作业引起的空间骤增问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • appcrash的问题怎么修复
    要修复appcrash的问题,可以尝试以下几种方法:1. 重启应用程序:关闭应用程序并重新打开它,有时候这可以解决问题。2. 清除缓...
    99+
    2023-09-17
    appcrash
  • sql模式设置引起的问题怎么解决
    今天小编给大家分享一下sql模式设置引起的问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1 报错类似如下数据库错...
    99+
    2023-06-30
  • Java代码引起的NATIVE野指针问题怎么解决
    Java代码引起的NATIVE野指针问题怎么解决,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。实施hook:我们有了hook,但目前还不知道是哪个so中释放了f...
    99+
    2023-06-17
  • 怎么修复Windows10中的APC索引不匹配蓝屏问题
    这篇文章主要介绍怎么修复Windows10中的APC索引不匹配蓝屏问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体操作:打开命令提示符(运行 –> cmd)运行以下命令:wmic qfe lis...
    99+
    2023-06-27
  • 系统分区的引导扇区破坏怎么办如何修复
    引导扇区被破坏,也会导致系统无法正常启动,在Windows 2000/XP,也需要进入故障恢复控制台,借助fixmbr(修复主引导记录)或者fixboot(修复引导扇区)命令。 而在Windows Vista下,用同样的...
    99+
    2023-06-02
    系统分区 引导扇区 引导 扇区 系统
  • MYSQL字符集不同引起的join无法走索引的问题怎么解决
    本篇内容主要讲解“MYSQL字符集不同引起的join无法走索引的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MYSQL字符集不同引起的join无法...
    99+
    2024-04-02
  • LINQ查询操作的问题怎么解决
    这篇文章主要介绍“LINQ查询操作的问题怎么解决”,在日常操作中,相信很多人在LINQ查询操作的问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”LINQ查询操作的问题怎么解决”的疑惑有所帮助!接下来...
    99+
    2023-06-17
  • c语言strcpy引起的缓冲区溢出问题怎么解决
    解决strcpy引起的缓冲区溢出问题可以采取以下几种方法: 使用更安全的函数:可以使用strncpy函数来替代strcpy函数,...
    99+
    2024-03-02
    c语言
  • 怎么修复Vue中this is undefined的问题
    小编给大家分享一下怎么修复Vue中this is undefined的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!当我们使...
    99+
    2024-04-02
  • 怎么解决Oracle12c中空格引发的ORA-01516问题
    本篇内容介绍了“怎么解决Oracle12c中空格引发的ORA-01516问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读...
    99+
    2024-04-02
  • numpy数组拷贝地址所引起的同步替换问题怎么解决
    今天小编给大家分享一下numpy数组拷贝地址所引起的同步替换问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。问题出...
    99+
    2023-07-05
  • Python多模块引用由此引发的相对路径混乱问题怎么解决
    这篇文章主要介绍“Python多模块引用由此引发的相对路径混乱问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python多模块引用由此引发的相对路径混乱问题怎么解决”文章能帮助大家解决问...
    99+
    2023-07-05
  • win11自动修复无法修复你的电脑srttrail.txt问题怎么解决
    本文小编为大家详细介绍“win11自动修复无法修复你的电脑srttrail.txt问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“win11自动修复无法修复你的电脑srttrail.txt问题怎么解决”文章能帮助大家解决疑惑,下...
    99+
    2023-07-02
  • Linux操作系统怎么解决-bash: !: event not found的问题
    本篇内容介绍了“Linux操作系统怎么解决-bash: !: event not found的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2023-06-06
  • XP系统下系统程序损坏怎么办?使用Qfixapp.exe来修补损坏系统程序的操作方法
      WinXP的系统程序经常容易损坏,因此微软提供了一些快速修补程序的工具,Qfixapp.exe就是其中之一,这款软件可以提供简易的程序修补方式,不过很少人懂得使用它。下面小编就为大家图文讲解WinXP下如何借助Qfi...
    99+
    2023-06-13
    XP系统 系统程序 Qfixapp.exe Qfixapp 程序 系统 损坏 XP
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作