OGG-08221 OGG-15149 OGG-02032

项目场景:

搭建oarcle 18c多租户的OGG下游挖掘:

18c downstream 集成抽取注册不成功

问题描述

REGISTER EXTRACT extkafka DATABASE container (ORCLPDB) :

ERROR OGG-08221 Oracle GoldenGate Command Interpreter for Oracle: Cannot register or unregister EXTRACT EXTKAFKA because of the following SQL error: OCI Error ORA (status = 1722-ORA-01722: invalid number
start extkafka:
2022-03-29T10:03:51.088+0800 ERROR OGG-02032 Oracle GoldenGate Capture for Oracle, ext1.prm: Failed to set TRANLOGOPTIONS INTEGRATEDPARAMS (DOWNSTREAM_REAL_TIME_MINE, y).
2022-03-29T10:03:51.088+0800 ERROR OGG-02042 Oracle GoldenGate Capture for Oracle, ext1.prm: OCI Error 26,764.
2022-03-29T10:03:51.088+0800 ERROR OGG-01668 Oracle GoldenGate Capture for Oracle, ext1.prm: PROCESS ABENDING.
stats extkafka:
2022-04-01T10:36:30.683+0800 ERROR OGG-15149 Oracle GoldenGate Command Interpreter for Oracle: EXTRACT EXTKAFKA is initializing, please try the command later.

原因分析:

pdb未启用或者未开启补充日志,但其实深层原因是global_name、db_names混淆导致ogg无法判断要找哪个库,具体见下文

1、修改global_name
通常 Oracle Streams 使用 GLOBAL_NAME 而不是 DB_NAME 或 INSTANCE_NAME 或 SERVICE_NAME。

GLOBAL_NAME 是用于在分布式数据库环境中标识数据库的名称。这与 db_name 或 instance_name 甚至 service_name 不同。分布式数据库环境中的每个数据库都应该有一个唯一的全局名称。这些可能是 db_name、instance_name 或 service_name 相同,但 global_name 应该不同。创建的任何数据库链接都应与它所连接的数据库(远程数据库)的 GLOBAL_NAME 同名。

GLOBAL_NAME 不应与 init.ora 参数 GLOBAL_NAMES 混淆。如果此参数设置为 TRUE,则它会强制您使用与远程数据库的 GLOBAL_NAME 相同的 dblink 名称。
这就是在 TRY 1 中出现 ORA-02085 错误的原因。如果 GLOBAL_NAMES 设置为 FALSE,那么您可以根据需要使用 dblink 名称。但对于任何分布式环境(如 Streams),GLOBAL_NAMES 应始终设置为 TRUE。

您可以使用以下查询找到 global_name:

connect / as sysdba
select * from global_name;
--enforce global_names 参数
alter system set global_names=TRUE scope=both;
--change the global_name 
update global_name set global_name='ORCL_S1';
--验证是否改变了
select * from global_name;

2、检查db_unique_name
各个参数的作用:https://www.cnblogs.com/yclizq/p/14701556.html
在这里插入图片描述

alter system set db_unique_name='ds' scope=spfile;
shutdown immediate;
startup

如果改完后,ogg无法建立连接,修改tns
在这里插入图片描述
因为service_name 随着db_unique_name 改变了


常用的一些视图和sql:

select dest_name,status,error from v$archive_dest
select * from V$GOLDENGATE_CAPTURE;
select * from v$goldengate_transaction
select * from v$archived_log;
select * from v$goldengate_message_tracking;
select * from DBA_CAPTURE;
select capture_name,STATUS,ERROR_MESSAGE from dba_capture;
select SERVER_NAME,CREATE_DATE,USER_COMMENT from SYS.XSTREAM$_SERVER;
select SERVER_NAME,STATUS,USER_COMMENT,START_SCN from DBA_XSTREAM_OUTBOUND;
select id,name from dba_logmnr_session;
select * from V$LOG_HISTORY  
SELECT PID, TYPE, STATUS, HIGH_SCN from V$LOGSTDBY
select * from dba_registered_archived_log
select * from v$archive_dest_status
select
NAME,SEQUENCE#,STATUS,FIRST_TIME
from v$archived_log where FIRST_TIME > trunc(sysdate);
select * from dba_capture_parameters ;
select * from V$LOGSTDBY_STATE ;
select member from v$logfile;

查看是否有方法失效:

SELECT OWNER,OBJECT_NAME,OBJECT_TYPE FROM DBA_OBJECTS WHERE STATUS='INVALID';
--修复(不推荐,不要再生产库运行)
select 'alter '||object_type|| ' '||object_name||' compile;'   from dba_objects where status = 'INVALID';
select 'alter '||object_type|| ' '||owner||'.'||object_name||' compile;'   from dba_objects where status = 'INVALID';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值