Nologging操作对standby的影响

ORA-01578 ORA-26040 修复nologging 操作对dg的影响 配置了备库就应该设置force_logging为YES,不然如果有sqlldr等nologging操作有可能会导致备库出现坏块。为了修复还得把整个文件重新同步。 -- 1.备库上检查哪些文件发生过nologging colFIRST_NONLOGGED_SCNfor999999999999 SELECTFILE#,FIRST_NONLOGGED_SCNFROMV$DATAFILEWHEREFIRST_NONLOGGED_SCN>0; -- 2.备库上off... 阅读详情

一、实验环境
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE    9.2.0.1.0       Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production

SQL> select force_logging from v$database;

FOR
---
NO

二、Nologging操作

1.在primary上执行
SQL> create table test nologging tablespace test as select * from all_objects where rownum<1001;

Table created.

2.归档当前日志
SQL> alter system archive log current;

System altered.

3.在备库,等刚才传过来的日志应用后,启动到read only
SQL> alter database recover managed standby database finish;

Database altered.

SQL> alter database open read only;

Database altered.

4.执行查询
SQL> select * from test;
select * from test
              *
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 8, block # 10)
ORA-01110: data file 8: 'D:/ORACLE/ORADATA/TEST/TEST01.DBF'
ORA-26040: Data block was loaded using the NOLOGGING option

可以看到,主库的nologging操作不会无法传递到备库来,这样就会造成主备库的数据不一致,丢失了数据。

三、处理方法
在主库上,将受nologging操作影响的datafile做个热备,然后copy到备库覆盖原来的,再重新应用日志

1.查找受nologging操作影响的datafile
SQL> select a.file_name,a.tablespace_name,b.unrecoverable_change# from dba_data_
files a,v$datafile b where a.file_id=b.file#;

FILE_NAME                                TABLESPACE UNRECOVERABLE_CHANGE#
---------------------------------------- ---------- ---------------------
D:/ORACLE/ORADATA/NING/SYSTEM01.DBF      SYSTEM                         0
D:/ORACLE/ORADATA/NING/UNDOTBS01.DBF     UNDOTBS1                       0
D:/ORACLE/ORADATA/NING/CWMLITE01.DBF     CWMLITE                        0
D:/ORACLE/ORADATA/NING/EXAMPLE01.DBF     EXAMPLE                        0
D:/ORACLE/ORADATA/NING/INDX01.DBF        INDX                                    0
D:/ORACLE/ORADATA/NING/TOOLS01.DBF       TOOLS                          0
D:/ORACLE/ORADATA/NING/USERS01.DBF       USERS                          0
D:/ORACLE/ORADATA/NING/TEST01.DBF        TEST                      738934

8 rows selected.

2.关闭备库
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

3.从主库备份受影响的test01.dbf到备库
SQL> alter tablespace test begin backup;

Tablespace altered.

在操作系统中复制文件

SQL> alter tablespace test end backup;

Tablespace altered.

4.归档当前日志
SQL> alter system archive log current;

System altered.

5.启动备库并恢复
注意将上一不归档的日志全部copy到备库的归档目的地,需要end backup操作的日志才能将数据库恢复到一致状态
SQL> startup nomount;
ORACLE instance started.

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
SQL> alter database mount standby database;

Database altered.

SQL> alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-16004: backup database requires recovery
ORA-01195: online backup of file 8 needs more recovery to be consistent
ORA-01110: data file 8: 'D:/ORACLE/ORADATA/TEST/TEST01.DBF'

SQL> recover standby database;
ORA-00279: change 738991 generated at 11/22/2006 10:46:44 needed for thread 1
ORA-00289: suggestion : D:/ORACLE/ARCH/TEST/ARC00100.001
ORA-00280: change 738991 for thread 1 is in sequence #100


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 739327 generated at 11/22/2006 10:53:30 needed for thread 1
ORA-00289: suggestion : D:/ORACLE/ARCH/TEST/ARC00101.001
ORA-00280: change 739327 for thread 1 is in sequence #101
ORA-00278: log file 'D:/ORACLE/ARCH/TEST/ARC00100.001' no longer needed for
this recovery


ORA-00308: cannot open archived log 'D:/ORACLE/ARCH/TEST/ARC00101.001'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) The system cannot find the file specified.

SQL> alter database open read only;

Database altered.

6.再在备库执行查询
SQL> select count(1) from test;

  COUNT(1)
----------
      1000

四、将主库置于force logging模式
SQL> alter database force logging;

Database altered.

SQL> select force_logging from v$database;

FOR
---
YES 

Oracle DataGuard高效修复:利用RECOVER STANDBY DATABASE FROM SERVICE简化备库同步 本文详细介绍了Oracle DataGuard环境中使用RECOVER STANDBY DATABASE FROM SERVICE高效修复备库同步中断的方法。该特性允许直接从主库获取所需数据块进行增量恢复,大幅简化了传统复杂的手动操作流程,特别适用于归档日志缺失、数据文件坏块等常见问题。通过实战案例和避坑指南,帮助DBA快速掌握这一关键技术。 阅读详情

相关推荐

7、Oracle数据库NOLOGGING操作及重做日志相关知识详解

本文详细解析了Oracle数据库中的NOLOGGING操作及其对重做日志的影响,涵盖了I/O调优策略、重要等待事件(如log file sync、log buffer space)的分析与优化方法。同时,讨论了NOLOGGING操作导致的数据块损坏问题及其解决方案,并深入介绍了在物理和逻辑备用数据库中修复NOLOGGING更改的具体步骤。此外,还提供了查找生成大量重做日志的会话、重做日志的其他重要事实(如DML操作、临时表、物化视图、闪回功能)、性能与恢复考虑,以及SQL*Loader直接路径加载的相关内容

assembly8low的博客 193

Oracle 11g Dataguard 配置,维护与详解 (ADG)

一、前言: 本手册主要记录如何配置,还介绍了配置原因,以及注意要点,已经主备切换,以及故障转移等重要操作步骤,我希望这个文章可以作为进行dataguard配置的一个参考手册。 二、前提 1.主库是归档模式: 如果我们不清楚为什么是归档模式,那我们就应该也不会清楚dataguard是用来做什么的。透过很多修饰的官方语言,我们需要明确DG(dataguard简...

weixin_30631587的博客 851

oracle增量备份修复dg,利用RMAN增量备份(Incremental Backup)修复standby 环境中的nologging corupted blocks...

有时为了提升SQL执行速度或减少redo而使用NOLOGGING选项, 或者在segment 级使用NOLOGGING属性, 将使用最少的信息记录到online redo logfile,但是对于DataGuard环境是基于redo应用,所以这也是在DATAGUARD配置时需要在数据库级启用FORCE_LOGGING原因,覆盖会话级的nologging操作。如果缺少了日志必要的信息,在RECOVE...

weixin_33826761的博客 529

ADG未开启nologging,ora-26040

错误现象 检查主库设置 nologging没有开启 ==============修复流程,仅修复datafile 109 流程说明 primary 备份DBF 关闭归档传输 启动归档传输 standby 关闭dg恢复 删除损坏dbf

q195136130的专栏 267

DG主库忘记force logging情况下,insert append了nologgin表操作

有网友问,dg环境下primary库没force logging情况下,insert append了nologgin表会怎么样,standby会不会主动报错中止同步等。 这情况standby不会主动报错,只有在stand...

cnqc11810的博客 370

Oracle standby的ORA-01578 ORA-01110 ORA-26040 坑爹的NOLOGGING

异常: DB: Oracle 11.2.0.1 --版本够low的 五一假期时给用户DB做了switch over主备切换后,用了发现切换后新的主库DB中报错如下: ...

cuilingqiao0657的博客 435

Oracle LoggingNologging全面总结

如果数据库开启了Force Logging,则数据库所有的操作都将记录日志;如果对象所在的表空间开启了Force Logging,则对象上的任何nologging都将被忽略。表空间的Logging为创建对象时的默认日志记录模式。常规的INSERT…values…语句,始终会记录日志。以下操作都可以调用nologging操作:(2) CTAS,nologging模式下,只记录建表语句如何防止Nologging操作带来的风险。

hf191850699的专栏 2281

oraclenologging

官方如是说: Controlling the Writing of Redo Records For some database operations, you can control whether the database generates redo records. Without redo, no media recovery is possible. However, supp

甲骨虫的家 3477

今晚直播:Oracle Nologging 全面总结

本分享从三个 Nologging 相关的问题切入,全面讲解 OracleLoggingNologging 在各个不同层面的控制,并通过实验演示 Nologging 操作...

Enmotech的博客 362

oracle x01,Oracle standby的ORA-01578 ORA-01110 ORA-26040 坑爹的NOLOGGING

Oracle standby的ORA-01578 ORA-01110 ORA-26040 坑爹的NOLOGGING发布时间:2020-08-10 14:23:39来源:ITPUB博客阅读:108作者:guocun09异常:DB: Oracle 11.2.0.1 --版本够low的五一假期时给用户DB做了switch over主备切换后,用了发现切换后新的主库DB中报错如下:Wed May 08 0...

weixin_40004960的博客 232

oracle搭建standby,Oracle DG 物理Standby环境搭建

Oracle Data Guard, 分逻辑Standby和物理Standby。 下面讲的是物理Standby环境的搭建步骤。一、启用Force Logging将Primary数据库置为Force Logging模式。通过下列语句:查看状态:SQL> SELECT DATABASE_ROLE,FORCE_LOGGING FROM V$DATABASE;DATABASE_ROLE FOR...

weixin_39648492的博客 694

Oracle Data Gurad Physical Standby 相关说明

源:http://blog.csdn.net/tianlesoftware/article/details/5557410 Oracle Data Guard, 分逻辑Standby和物理Standby。 下面讲的是物理Standby 环境的搭建步骤。 有关Data Guard的一些概念性的理论知识,请参考我的blog, 这里不做过多的说明。   Oracle Data Gura

小二 714

管理物理STANDBY数据库——DATA GUARD概念和管理

这篇文档主要介绍了物理STANDBY环境的管理相关操作。 物理STANDBY的管理操作还是比较简单的,文章主要介绍了下面几个方面:物理STANDBY数据库的启动和关闭;只读访问STANDBY数据库;利用物理STANDBY来代替P...

ckawt40802的专栏 131

oracle dg物理和逻辑,Oracle DG 物理Standby环境搭建

Oracle Data Guard, 分逻辑Standby和物理Standby。 下面讲的是物理Standby环境的搭建步骤。一、启用Force Logging将Primary数据库置为Force Logging模式。通过下列语句:查看状态:SQL> SELECT DATABASE_ROLE,FORCE_LOGGING FROM V$DATABASE;DATABASE_ROLE FOR...

weixin_35531779的博客 309
上一篇: 利用rman创建standby(二)
下一篇: Oracle9iR2 Data Guard的保护模式
NinGoo
博客等级 码龄22年 31粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值