暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DG因为触发器报错密码错误

原创 西瓜你个吧啦 2024-05-28
336

一件事坚持下来还是挺难的,真佩服哪些大佬。水平有限,今天水一篇19年的记录文章吧。

当然开头还是给讲一下dg密码问题的其它可能吧

  1. 首先要注意密码文件是否两边一致,要注意win和linux的不在一个目录,别拷错了。
  2. 如果没有的话就用命令生成,要进到ORACLE_HOME的bin下面去执行。
  3. 然后生产密码文件高版本默认还要满足复杂度,可以指定12版本或以下就不会。


场景:

数据库11.2.0.4,备库启动的只读实时应用模式。


问题:

备库不同步,主库报错密码错误(错误代码主库ORA-16191),备库报错触发器运行失败(错误代码ORA-16000/ORA06512)。(MOS ID:2129339.1)

具体报错如下:

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.
returning error ORA-16191
------------------------------------------------------------
PING[ARC2]: Heartbeat failed to connect to standby 'test_dg'.


After tracing is enabled, trace log shows ORA-16000:

Error in file /u01/app/oracle/diag/rdbms/****/****/trace/****.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-16000: database open for read-only access
ORA-06512: at line 5
ORA-16000: database open for read-only access


原因:

备库开启只读,且使用了登录触发器。导致主库链接备库传输日志时触发触发器,需要将信息记录到表中。但是库是只读又写不进去导致触发器运行失败(备库报错)从而导致登录失败(因为网络验证过了,正在密码验证时所以主库报错密码验证失败)


解决方法:

1、修改触发器,增加判断条件如果是物理备库就不触发(第七行)

CREATE OR REPLACE TRIGGER "OP".logad
AFTER LOGON on database
declare
db_role varchar2(30);
begin
select database_role into db_role from v$database;
If db_role <> 'PHYSICAL STANDBY' then
insert into op.logad values (SYS_CONTEXT('USERENV', 'SESSION_USER'),
SYSDATE,SYS_CONTEXT('USERENV','IP_ADDRESS')) ;
end if;
end;
/

#查看是哪个触发器
select trigger_body from dba_triggers where triggering_event='LOGON '


2、备库使用mount模式同步。

--查看数据库状态
select open_mode from v$database;
--关闭应用
alter database recover managed standby database cancel;
shutdown immediate
startup nomount;
--启动到备库模式
alter database mount standby database;
--开启实时应用
alter database recover managed standby database using current logfile disconnect from session;


3、直接备库关闭系统级别的触发器

ALTER SYSTEM SET "_system_trig_enabled"=FALSE;


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论