DG备库无法接受主库归档日志之密码文件

实验目的:还原某个客户案例,客户审计需要,对主库sys用户进行锁定,一小时后对sys用户进行解锁后,发现备库无法接受主库的归档日志

本篇文章,测试sys用户与DG备库接受归档有什么关系?

1. 实验环境:

类别

主库

备库

软件版本

11.2.0.4.0

11.2.0.4.0

是否RAC

Db_name

ENMO

Db_unique_name

ENMO

dage

Service_name

ENMO

dage

Listener.ora

192.168.20.128:1521/ENMO

192.168.20.66:1521/dage

Tnsnames.ora

ENMO

DAGE

log_archive_config

ENMO,dage

Log_Archive_dest_ x=service

SERVICE=dage lgwr ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dage

Log_desc_x

ENABLE

Log_Archive_dest_ x=local

LOCATION=/picclife/app/oracle/oradata/arch                                                                VALID_FOR=(ALL_LO                                                                      GFILES,ALL_ROLES) DB_UNIQUE_NAME

=dage

Log_desc_x

enable

1.1实验环境检测

--主库操作

SYS > alter system switch  logfile;

SYS@dage >select max(sequence#),thread# from v$archived_log group by thread#;

MAX(SEQUENCE#)    THREAD#

-------------- ----------

1009          1

--主库查询

SELECT THREAD#,NAME,SEQUENCE#,APPLIED,REGISTRAR,CREATOR FROM V$ARCHIVED_LOG WHERE SEQUENCE#=1009

THREAD# NAME                                SEQUENCE# APPLIED   REGISTR CREATOR

---------- ------------------------------------------------- --------- --------- ------- -------

1 /u01/app/oracle/oradata/arch/1_1009_960955299.log      1009 NO        ARCH    ARCH

1 dage                                             1009 NO        LGWR    LGWR

--备库查询

SYS@dage >SELECT THREAD#,NAME,SEQUENCE#,NAME,APPLIED,REGISTRAR,CREATOR FROM V$ARCHIVED_LOG WHERE SEQUENCE#=1009;

THREAD# NAME                                SEQUENCE# APPLIED   REGISTR CREATOR

---------- ------------------------------------------------- --------- --------- ------- -------

1/picclife/app/oracle/oradata/arch1_1009_960955299.log 1009        NO        RFS     LGWR

解释说明:备库,当registrar=RFS且  applied=NO 代表远程归档已接受,但日志未应用。

Memory 代表内存已应用但数据文件未更新,Yes代表接受且应用完毕

2. 测试

2.1测试对主库修改sys密码,对备库的影响

--主库操作

SYS > select sysdate from dual;

SYSDATE

-------------------

2018-05-03 08:57:55

SYS > alter user sys identified by sys;

SYS > alter system switch logfile;

SYS > select max(sequence#),thread# from v$archived_log group by thread#;

MAX(SEQUENCE#)    THREAD#

-------------- ----------

1010          1

--备库查询

SYS@dage >SELECT THREAD#,NAME,SEQUENCE#,NAME,APPLIED,REGISTRAR,CREATOR FROM V$ARCHIVED_LOG WHERE SEQUENCE#=1010;

THREAD# NAME                                SEQUENCE# APPLIED   REGISTR CREATOR

---------- ------------------------------------------------- --------- --------- ------- -------

1

/picclife/app/oracle/oradata/arch1_1010_960955299.log

1010  YES       RFS     LGWR

--主库修改sys用户密码,主备状态都不变的情况下,无异常,备库可正常接受主库的归档文件

--查询主备之间的操作系统的密码文件

[oracle@enmo dbs]$ strings orapwENMO

]\[Z

ORACLE Remote Password file

INTERNAL

6A75B1BBE50E66AB

[oracle@dage ~]$ sqlplus sys/sys@enmo as sysdba

[oracle@dage dbs]$ strings orapwdage

]\[Z

ORACLE Remote Password file

INTERNAL

AB27B53EDC5FEF41

8A8F025737A9097A

[oracle@dage ~]$ sqlplus sys/oracle@dage as sysdba

--发现主库修改sys密码后,对于操作系统口令文件也会改变,但是备库即使应用了主库修改sys日志的归档日志,也并未主动修改sys密码口令,未改变

#重启主库,主库切换日志,查询备库是否存在无法接受日志的情况

--备库查询

SYS@dage >SELECT THREAD#,NAME,SEQUENCE#,NAME,APPLIED,REGISTRAR,CREATOR FROM V$ARCHIVED_LOG WHERE SEQUENCE#=1016;

no rows selected

--主库查询

SYS > select dest_id,error from v$archive_dest;

DEST_ID ERROR

---------- -----------------------------------------------------------------

1

2 ORA-16191: Primary log shipping client not logged on standby

--由于本次实验操作,知道由于密码文件修改主备不一致造成的情况

--还原主库操作,恢复主备之间的连通性

--主库操作

SYS > alter user sys identified by oracle;

SYS > alter system switch logfile;

select dest_id,error from v$archive_dest;

DEST_ID ERROR

---------- -----------------------------------------------------------------

1

2 ORA-16191: Primary log shipping client not logged on standby

alter system set log_archive_dest_state_2=defer;

alter system set log_archive_dest_state_2=enable;

System altered.

SYS > select dest_id,error from v$archive_dest;

DEST_ID ERROR

---------- -----------------------------------------------------------------

1

2 ORA-16191: Primary log shipping client not logged on standby

alter system switch logfile;

[oracle@enmo dbs]$ strings orapwENMO

]\[Z

ORACLE Remote Password file

INTERNAL

AB27B53EDC5FEF41

>#.Y

8A8F025737A9097A

[oracle@dage dbs]$ strings orapwdage

]\[Z

ORACLE Remote Password file

INTERNAL

AB27B53EDC5FEF41

8A8F025737A9097A

--手工将sys用户密码口令文件传输至备库

[oracle@enmo dbs]$ scp orapwENMO 192.168.20.66:/picclife/app/oracle/product/11.2.0/dbhome_1/dbs/orapwdage

--重置后,v$archive_dest dest_id=2无异常

--主库操作

alter system set log_archive_dest_state_2=defer;

alter system set log_archive_dest_state_2=enable;

SYS > select dest_id,error from v$archive_dest;

DEST_ID ERROR

---------- -----------------------------------------------------------------

1

2

--再次修改SYS用户密码,测试

SYS > alter user sys identified by sys;

--备库操作

#重启备库监听,主库切换日志,查询备库是否存在无法接受日志的情况

[oracle@dage ~]$ lsnrctl stop

[oracle@dage ~]$ lsnrctl start

--测试结果,无影响

--备库操作

#对于备库而言,外部的连接只有4个

[oracle@dage dbs]$ ps -ef|grep LOCAL=NO|grep -v grep

oracle    8682     1  0 15:03 ?        00:00:00 oracledage (LOCAL=NO)

oracle    8684     1  0 15:03 ?        00:00:00 oracledage (LOCAL=NO)

oracle    8696     1  0 15:03 ?        00:00:00 oracledage (LOCAL=NO)

oracle    8702     1  0 15:03 ?        00:00:00 oracledage (LOCAL=NO)

#kill 备库所有的外部连接

[oracle@dage dbs]$ ps -ef|grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9

[oracle@dage dbs]$ ps -ef|grep LOCAL=NO|grep -v grep

--主库切换归档--日志无法传输过去,报错不同

alter system switch logfile

SYS > select dest_id,error from v$archive_dest;

DEST_ID ERROR

---------- -----------------------------------------------------------------

2 ORA-03135: connection lost contact

--重置归档线程后,发现报错与之前的报错相同

--主库操作

alter system set log_archive_dest_state_2=defer;

alter system set log_archive_dest_state_2=enable;

SYS > select dest_id,error from v$archive_dest;

DEST_ID ERROR

---------- -----------------------------------------------------------------

2 ORA-16191: Primary log shipping client not logged on standby

--还原上述操作

SYS > alter user sys identified by oracle;

[oracle@enmo dbs]$ scp orapwENMO 192.168.20.66:/picclife/app/oracle/product/11.2.0/dbhome_1/dbs/orapwdage

小结测试2.1

结论一:对于修改SYS用户密码而言,在主备之间数据库实例状态未改变的情况下,备库能正常接受主库的日志,但是当主备任何实例重启或者主库的归档远程进程重置,新建立的连接都会导致备库无法接受主库的归档

结论二:在明确知道sys用户密码修改后,通过alter user sys identified by 重置原密码,但是操作系统层面口令文件OrapwSID.ora文件不一致,也是白瞎,只能通过scp主库操作系统层面sys密码达到想要的效果

添加小测试:

测试备库修改操作系统口令文件与主库sys密码口令文件不一致情况会如何

--备库修改操作系统口令文件,kill主库的远程连接

--备库操作

[oracle@dage dbs]$ orapwd file=orapwdage password=abc entries=10 ignorecase=y force=y

[oracle@dage dbs]$ sqlplus sys/abc@dage as sysdba

[oracle@dage dbs]$ ps -ef|grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9

--主库重置远程归档

SYS > select dest_id,error from v$archive_dest;

DEST_ID ERROR

---------- -----------------------------------------------------------------

2 ORA-03135: connection lost contact

alter system set log_archive_dest_state_2=defer;

alter system set log_archive_dest_state_2=enable;

SYS > select dest_id,error from v$archive_dest;

2 ORA-16191: Primary log shipping client not logged on standby

结论三、对于主备而言,只要主备操作系统口令文件不一致,且主库远程归档参数需要重新建立连接,都会得到dest_id 无法连接备库,解决方法,cp操作系统口令文件

2.2测试对主库sys用户进行锁定,切换归档后测试

--备库开启MRP进程

SYS@dage >recover managed standby database disconnect;

SYS@dage >select process,client_process,sequence#,status,BLOCK#,BLOCKS from v$managed_standby;

PROCESS   CLIENT_P  SEQUENCE# STATUS           BLOCK#     BLOCKS

--------- -------- ---------- ------------ ---------- ----------

MRP0      N/A            1007 APPLYING_LOG      14740      82074

--主库对sys用户进行锁定

SYS > alter user sys account lock;

SYS > select username,ACCOUNT_STATUS from dba_users where username='SYS';

USERNAME                       ACCOUNT_STATUS

------------------------------ --------------------------------

SYS                            LOCKED

SYS > alter system switch logfile;

--备库重启库后--查询

SYS@dage >startup force;

SYS@dage >select username,ACCOUNT_STATUS from dba_users where username='SYS';

USERNAME                       ACCOUNT_STATUS

------------------------------ --------------------------------

SYS                            LOCKED

--主库操作,重置线程查询状态

alter system set log_archive_dest_state_2=defer;

alter system set log_archive_dest_state_2=enable;

SYS > select dest_id,error from v$archive_dest;

2 ORA-16191: Primary log shipping client not logged on standby

SYS > select severity,error_code,to_char(timestamp,'DD-MON-YYYY HH24:MI:SS') "timestamp" , message from v$dataguard_status where dest_id=2;

SEVERITY        ERROR_CODE timestamp            MESSAGE

--------------- ---------- -------------------- ----------------------------------------------------------------------

Error          16191 03-MAY-2018 10:10:50 PING[ARC2]: Heartbeat failed to connect to standby 'dage'. Error is 16191.

--主库查询归档参数

SYS > show parameter archive

log_archive_dest_2

SERVICE=dage lgwr ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dage

SYS > host tnsping dage

OK (40 msec)

--主库查询alert日志

[oracle@enmo dbs]$ tail -200f /u01/app/oracle/diag/rdbms/enmo/ENMO/trace/alert_ENMO.log

Thu May 03 10:10:50 2018

Error 1017 received logging on to the standby

------------------------------------------------------------

Check that the primary and standby are using a password file

and remote_login_passwordfile is set to SHARED or EXCLUSIVE,

and that the SYS password is same in the password files.   -密码文件sys密码相同!!!

returning error ORA-16191                             --只能作为参考

--正常途径以及无法自动主库归档传输至备库了

--一般情况下,scp操作系统口令文件就能解决问题,但是本次主备密码文件一致

[oracle@enmo dbs]$ strings orapwENMO

]\[Z

ORACLE Remote Password file

INTERNAL

AB27B53EDC5FEF41

8A8F025737A9097A

#D}r

[oracle@dage dbs]$ strings orapwdage

]\[Z

ORACLE Remote Password file

INTERNAL

AB27B53EDC5FEF41

8A8F025737A9097A

#D}r

--通过处理gap归档的方法实现上述功能,原理理论分析:主库修改了sys用户密码

--对主库sys用户进行解锁

SYS > alter user sys account unlock;

SYS > alter system switch logfile;

SYS@dage >r

1* select username,ACCOUNT_STATUS from dba_users where username='SYS'

USERNAME                       ACCOUNT_STATUS

------------------------------ --------------------------------

SYS                            LOCKED

--备库sys用户状态不变,因为主库的归档文件无法传输至备库

--原理分析:主库锁定的日志传输至备库,备库sys用户被锁定,在备库重启后,主库的远程归档参数无法连接备库,无法传输归档日志,主库对sys用户的解锁操作,无法在备库应用

--

--查询主库最新的归档日志

SYS > select max(sequence#),thread# from v$archived_log group by thread#;

MAX(SEQUENCE#)    THREAD#

-------------- ----------

1032          1

select thread#,sequence#,name,applied from v$archived_log

THREAD#  SEQUENCE#                   NAME                           APPLIED

-----------------------------------------------------------------------------------------------------------------------------------------

1      1029 dage                                              YES

1      1030 /u01/app/oracle/oradata/arch/1_1030_960955299.log NO

1      1030 dage                                              YES

1      1031 /u01/app/oracle/oradata/arch/1_1031_960955299.log NO

1      1032 /u01/app/oracle/oradata/arch/1_1032_960955299.log NO

--查询备库最后接受应用的归档日志

select thread#,sequence#,name,applied from v$archived_log

THREAD#  SEQUENCE#                   NAME                           APPLIED

-----------------------------------------------------------------------------------------------------------------------------------------

1          1030   /picclife/app/oracle/oradata/arch1_1030_960955299.log         YES

--为稳妥起见:对主库1031/1032两个日志文件手工拷贝

[oracle@enmo ~]$ scp /u01/app/oracle/oradata/arch/1_1031_960955299.log /u01/app/oracle/oradata/arch/1_1032_960955299.log 192.168.20.66:/picclife/app/oracle/oradata/.

--备库注册归档日志

RMAN> catalog start with '/picclife/app/oracle/oradata/';

--备库重启后,需手工启动Mrp进程

SYS@dage >recover managed standby database disconnect from session;

--备库查询sys用户状态

SYS@dage >select username,ACCOUNT_STATUS from dba_users where username='SYS';

USERNAME                       ACCOUNT_STATUS

------------------------------ --------------------------------

SYS                            OPEN

结论

当出现备库无法接受主库归档日志现象时:

主库查询视图:select dest_id,error from v$archive_dest;

select severity,error_code,to_char(timestamp,'DD-MON-YYYY HH24:MI:SS') "timestamp" , message from v$dataguard_status where dest_id=2;

主备库alert日志文件

主库归档远程参数log_archive_dest_xxx

log_archive_dest_state_2状态

如果以上均OK,增加一个可能性,sys用户状态,及操作系统密码文件是否一致

--本篇文档主要考虑sys密码文件造成备库无法接受日志的情况,不详细介绍log_archive_dest_xx参数

DG备库无法接受主库归档日志之密码文件的更多相关文章

  1. oracle dg 备库不同步主库数据

    今天遇到一个数据库同步问题,主库被关闭,重启主库后,备库不能正常同步主库数据.只有当手动切换归档日志的时候,备库才能和主库一致. 这个问题的解决方法: 重启备库,重新应用归档日志. 操作步骤如下: / ...

  2. 模拟主库创建数据文件,dg备库空间不足时问题处理

    本篇文档测试目的: 模拟实际环境中,主库对表空间添加数据文件,备库空间不足,最终导致MRP进程自动断开,处理方式. 1.问题环境模拟 1)正常情况下的dg 主库创建数据文件,备库接受日志,自动创建表空 ...

  3. DG备库,实时应用如何判断,MR进程,及MRP应用归档,三种情况的查询及验证

    本篇文档学习,DG备库,实时应用如何判断,MR进程,及MRP应用归档,三种情况的查询及验证 1.取消MRP进程 备库查询进程状态select process,client_process,sequen ...

  4. DG备库缺失归档文件GAP日志

    问题现象: XXXsdgebus-dg GAP手工注册归档 #出现GAP idle>select * from v$archive_gap; THREAD# LOW_SEQUENCE# HIGH ...

  5. DG备库磁盘空间满导致无法创建归档

    上周五去某客户那里做数据库巡检.是window 2008系统上10g的一套NC系统的库,已经配置了DG,可是巡检时发现数据库报错: Tue Nov 11 10:13:57 2014 LNS: Stan ...

  6. Oracle-DG最大保护模式下,dg备库出现问题对主库有什么影响?

    一.需求 疑问?Oracle最大保护模式下,dg备库出现问题,影响主库吗? 我们都知道Oracle最大保护模式的意思是oracle不允许数据丢失,1条记录都不行! 那么备库有问题? oracle主库还 ...

  7. 使用using current logfile实现DG备库实时更新

    DG1是主库,DG2是备库:运行在最大可用模式. 实验一:未使用using current logfile参数时,备库在最大可用模式下,不能实时同步备库的更新 -此时需要等待主库进行归档---侧面证明 ...

  8. Oracle DG备库强制switch_over过程

    故障描述: 主库异常下线,需要将备库强制启动为主库,切断日志时提示需要介质恢复,执行介质恢复后,再激活日志即可进行切换 1.  执行alter database recover managed sta ...

  9. 使用DUPLICATE 方式创建ORACLE 11G DG备库环境

    我的最佳实践 ① 手动创建好初始化参数文件: *.audit_file_dest='E:\APP\XJXU\ADMIN\ORASTAND\ADUMP'*.control_files='E:\APP\X ...

随机推荐

  1. Legal or Not (判断是否存在环)

    Legal or Not Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total ...

  2. jQuery获取select值

    jQuery操作select标签 即控制select的option属性 <select id="sid" > <option value="-1&quo ...

  3. Java第5次

    1. 请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 显示结果: truetruefalse 总结:在Java中,内容相同的字串常量(“ ...

  4. day32 信号量 事件 管道 进程池

    今日主要内容: 1.管道(Pipe) 数据接收一次就没有了 2.事件(Event) 3.基于事件的进程通信 4.信号量(Semaphore) 5. 进程池(重点) 6.进程池的同步方法和异步方法 7. ...

  5. JAVA设计模式(二)工厂模式

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

  6. webView 的种种

    1.关于UI 我们在设置webview的时候,有时候会发现在加载的过程中会出现一个黑色的条条,在加载完成的时候有得时候继续存在,有得时候消失不见. 这个黑边是由于webView.scrollview向 ...

  7. linux系统安装tomcat详细配置

    1.通过ssh工具将apache-tomcat-7.0.85.tar.gz拖拽到 /home文件下 2.切换到/home 目录下 3.解压 指令 tar -zvxf apache-tomcat-7.0 ...

  8. const & define & inline

    0x01  const & define区别 宏定义#define发生在预编译期,而const,enum定义的常量发生在编译期,两者的重要差别在于编译期里的变量是进符号表的,而预编译期的宏是简 ...

  9. 获取表单内元素组装成对象类型,方便datagrid的load取参数

    /** * 获取表单数据,并将其转换为对象 */ function getFormObj(formId) { var formObj = {}; var inputs = $('#'+formId). ...

  10. Java语法基础学习DayFour

    一.面向对象 1.特点: A:是一种更符合我们思考习惯的思想B:把复杂的事情简单化C:让我们从执行者变成了指挥者 2.使用: a:创建对象格式类名 对象名 = new 类名();b:如何使用成员变量和 ...