重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 563|回复: 0
打印 上一主题 下一主题

[Oracle] 在主库清理 ADG 配置的后遗症

[复制链接]
跳转到指定楼层
楼主
发表于 2025-8-31 15:47:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.错误描述
SQL> startup
ORACLE instance started.

Total System Global Area 1.3683E+11 bytes
Fixed Size                    2270360 bytes
Variable Size                 4.5902E+10 bytes
Database Buffers         9.0731E+10 bytes
Redo Buffers                  189456384 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 20288
Session ID: 2065 Serial number: 3

SQL>
告警日志:

WARNING: The 'LOG_ARCHIVE_CONFIG' init.ora parameter settings are inconsistent with another started instance.   
This may be caused by the 'DB_UNIQUE_NAME' init.ora parameter being specified differently on one or more of the other RAC instances; the DB_UNIQUE_NAME parameter value MUST be identical for all instances of the database.
Errors in file /u01/app/oracle/diag/rdbms/sljj/sljj2/trace/sljj2_lgwr_23195.trc:
ORA-16188: LOG_ARCHIVE_CONFIG settings inconsistent with previously started instance LGWR (ospid: 23195): terminating the instance due to error 16188
查看trc文件

[root@sljj02 trace]# vi /u01/app/oracle/diag/rdbms/sljj/sljj2/trace/sljj2_lgwr_38174.trc

Trace file /u01/app/oracle/diag/rdbms/sljj/sljj2/trace/sljj2_lgwr_38174.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1
System name:    Linux
Node name:      sljj02
Release:        2.6.32-696.el6.x86_64
Version:        #1 SMP Mon Mar 4 15:25:44 CST 2019
Machine:        x86_64
Instance name: sljj2
Redo thread mounted by this instance: 2
Oracle process number: 28
Unix process pid: 38174, image: oracle@sljj02 (LGWR)


*** 2025-08-26 13:59:42.583
*** SESSION ID:(1345.1) 2025-08-26 13:59:42.583
*** CLIENT ID:() 2025-08-26 13:59:42.583
*** SERVICE NAME:() 2025-08-26 13:59:42.583
*** MODULE NAME:() 2025-08-26 13:59:42.583
*** ACTION NAME:() 2025-08-26 13:59:42.583

Standby database verification failed:16188
error 16188 detected in background process
ORA-16188: LOG_ARCHIVE_CONFIG settings inconsistent with previously started instance
kjzduptcctx: Notifying DIAG for crash event
----- Abridged Call Stack Trace -----
ksedsts()+465<-kjzdssdmp()+267<-kjzduptcctx()+232<-kjzdicrshnfy()+63<-ksuitm()+5570<-ksbrdp()+3507<-opirip()+623<-opidrv()+603<-sou2o()+103<-opimai_real()+250<-ssthrdmain()+265<-main()+201<-__libc_start_main()+253
----- End of Abridged Call Stack Trace -----

*** 2025-08-26 13:59:42.599
LGWR (ospid: 38174): terminating the instance due to error 16188
ksuitm: waiting up to [5] seconds before killing DIAG(38122)
问题原因
RAC通过ADG方式迁移数据库后,使用以下命令清除DG参数后,单独启动集群数据库实例。

alter system set log_archive_config='' scope=both sid='*'
SQL> show parameter log_archive_config

NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
log_archive_config                     string
SQL>
另一个节点实例启动无法启动。

问题在于 v$dataguard_config 在集群间未被同步更新

SQL> select * from  v$dataguard_config;

DB_UNIQUE_NAME
------------------------------
sljj
sljj2dg

SQL>
其实根本原因在于参数log_archive_config的默认值设置错误;在官方文档,该参数的默认值为: SEND, RECEIVE, NODG_CONFIG

重启幸存实例
重启以后,所以实力也无法启动,查看alertlog

Lost write protection disabled
Completed: ALTER DATABASE MOUNT /* db agent *//* {0:7:13143} */
ALTER DATABASE OPEN /* db agent *//* {0:7:13143} */
This instance was first to open
Picked broadcast on commit scheme to generate SCNs
LGWR: STARTING ARCH PROCESSES
Wed Jul 26 23:39:09 2023
ARC0 started with pid=44, OS id=27434
Wed Jul 26 23:39:10 2023
ARC0: Archival started
LGWR: STARTING ARCH PROCESSES COMPLETE
ARC0: STARTING ARCH PROCESSES
LGWR: Primary database is in MAXIMUM AVAILABILITY mode
LGWR: Destination LOG_ARCHIVE_DEST_1 is not serviced by LGWR
LGWR: Minimum of 1 LGWR standby database required
Errors in file /u01/app/oracle/diag/rdbms/anbob/anbob1/trace/anbob1_lgwr_27288.trc:
ORA-16072: a minimum of one standby database destination is required
Wed Jul 26 23:39:10 2023
ARC1 started with pid=45, OS id=27436
LGWR (ospid: 27288): terminating the instance due to error 16072
Wed Jul 26 23:39:10 2023
System state dump requested by (instance=1, osid=27288 (LGWR)), summary=[abnormal instance te
System State dumped to trace file /u01/app/oracle/diag/rdbms/anbob/anbob1/trace/anbob1_diag_2
Dumping diagnostic data in directory=[cdmp_20230726233910], requested by (instance=1, osid=27
Instance terminated by LGWR, pid = 27288
这里的提示已经很明确,主库目前是最大可用模式,至少需要1个standby, 而我们这个库已经清理了所有的standby ,只是一直未重启过, 数据库处于open状态。

关于 ORA-16135

ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16135: Invalid LOG_ARCHIVE_CONFIG modification while in protected mode
Cause: The LOG_ARCHIVE_CONFIG parameter can not be modified while any RAC instance is open in either maximum protection or maximum availability mode. Also, the parameter can not be modified in such way that would cause all destinations to fail while in maximum protection mode.

Action: Make the modification before the database is opened by any instance.

这个错误时忽略了检查一下原来database 的保护模式。 禁用dg或清理参数前记的检查, 既然一个dg standby都没有,也只能重启所有节点,切到最大性能模式。

这个错误时忽略了检查一下原来database 的保护模式. 以后禁用dg或清理参数前记的检查, 既然一个dg standby都没有,也只能重启所有节点,切到最大性能模式。

SQL> select database_name,database_role,force_logging,PROTECTION_MODE from v$database;

DATABASE_NAME   DATABASE_ROLE         FOR    PROTECTION_MODE
------------------------------------------------------------------------------------------------ ---
  SLJJ                       PRIMARY                  YES  MAXIMUM PERFORMANCE

SQL>
解决方法:
仅在故障节点操作时不能生效,需要在正常节点修改log_archive_config参数,然后再启动实例。

alter system set log_archive_config=NODG_CONFIG scope=both sid='*';
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 27577
Session ID: 2065 Serial number: 3

SQL>
[oracle@sljj02 trace]$ sqlplus / as  sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Tue Aug 26 13:57:23 2025

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup mount
ORA-10997: another startup/shutdown operation of this instance inprogress
ORA-09968: unable to lock file
Linux-x86_64 Error: 11: Resource temporarily unavailable
Additional information: 36701
SQL>
修改保护模式

SQL> startup mount
ORACLE instance started.

Total System Global Area 2.2448E+11 bytes
Fixed Size                    2266664 bytes
Variable Size                 3.4897E+10 bytes
Database Buffers         1.8952E+11 bytes
Redo Buffers                   64827392 bytes
Database mounted.
SQL> alter database set standby to maximize performance;
Database altered.

SQL> alter database open;
Database altered.
当清理或删除Standby时,在主库需要检查当前的保护模式,如最大可用和最大保护模式至少要有1 standby, 在12c之前RAC 修改LOG_ARCHIVE_CONFIG参数记的使用NODG_CONFIG而不是置为空值,否则可能会出现后期实例重启无法启动的风险。

SQL> select * from  v$dataguard_config;

DB_UNIQUE_NAME
------------------------------
sljj

SQL>
参考文档
Standby Instance Crash or Failed to Startup with ORA-16188 (Doc ID 1580482.1)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2026-4-18 02:59 , Processed in 0.320929 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表