联系我们
18591797788
hubin@rlctech.com
北京市海淀区中关村南大街乙12号院天作国际B座1708室
18681942657
lvyuan@rlctech.com
上海市浦东新区商城路660号乐凯大厦26c-1
18049488781
xieyi@rlctech.com
广州市越秀区东风东路华宫大厦808号1608房
029-81109312
service@rlctech.com
西安市高新区天谷七路996号西安国家数字出版基地C座501
使用 OceanBase Oracle 模式通过 DBLINK 跨库执行INSERT/DELETE时,遭遇ORA-00600 internal error code, arguments: -4016报错?
本文结合真实生产环境复现场景,手把手带你定位根因!
OceanBase 4.2.1.10
Oracle模式
目前碰到的情况是,这种形式的语句无法执行成功:
obclient> insert into T_REMOTE@dblinktest select * from T_LOCAL;
ORA-00600: internal error code, arguments: -4016, check if the database link was created with local credentials
obclient> delete from T_REMOTE@dblinktest where ID1 in (select ID1 from T_LOCAL);
ORA-00600: internal error code, arguments: -4016, check if the database link was created with local credentials
复现:
目标端:
obclient -hxx.xx.xx.xx -P2883 -uSYS@zwb_ceshi#ob42110 -paaAA11__ -A
源端:
obclient -hxx.xx.xx.xx -P2883 -uSYS@ora4252#ob4252 -paaAA11__ -A
目标端数据准备
CREATE TABLE T1 (
ID1 NUMBER
);
源端数据准备
CREATE DATABASE LINK dblinktest CONNECT TO SYS@zwb_ceshi IDENTIFIED BY aaAA11__ HOST 'xx.xx.xx.xx:2883' CLUSTER "ob42110";
CREATE TABLE T2 (
ID1 NUMBER
);
obclient [SYS]> insert into T1@dblinktest select * from t2;
ORA-00600: internal error code, arguments: -4016, check if the database link was created with local credentials
obclient [SYS]> delete from T1@dblinktest where ID1 in (select ID1 from T2);
ORA-00600: internal error code, arguments: -4016, check if the database link was created with local credentials
目标端:

源端:



测试发现确实无法进行插入删除操作。
关键日志信息:
[2026-02-10 17:33:11.520756] WDIAG [SQL.ENG] send_reverse_link_info (ob_link_dml_op.cpp:71) [42661][T1002_L0_G0][T1002][YB426451F011-00064A745CCDFDB0-0-0] [lt=16][errcode=-4016] reverse link has invalid credentials(ret=-4016, user_name=, tenant_name=, passwd.empty()=true, host_name=, port=0)
[2026-02-10 17:33:11.520773] WDIAG send_reverse_link_info (ob_link_dml_op.cpp:72) [42661][T1002_L0_G0][T1002][YB426451F011-00064A745CCDFDB0-0-0] [lt=15][errcode=-4016] ORA-00600: internal error code, arguments: -4016, check if the database link was created with local credentials
[2026-02-10 17:33:11.520778] WDIAG [SQL.ENG] inner_execute_link_stmt (ob_link_dml_op.cpp:121) [42661][T1002_L0_G0][T1002][YB426451F011-00064A745CCDFDB0-0-0] [lt=5][errcode=-4016] failed to send reverse link info(ret=-4016, link_stmt=/*$BEFPARSEdblink_req_level=1*/ insert /*+ QUERY_TIMEOUT(10000000) FLASHBACK_READ_TX_UNCOMMITTED */into "SYS"."T_REMOTE"("ID1") select "VIEW1"."ID1" from "SYS"."T_LOCAL"@! "VIEW1")
根据上面日志信息可以看到需要reverse link反向dblink,尝试创建对应dblink,测试可以正常操作数据
CREATE DATABASE LINK dblinktest2
CONNECT TO TEST@Oracle IDENTIFIED BY "aaAA11__" OB HOST 'xx.xx.xx.xx:2883' CLUSTER "集群名"
MY_NAME TEST01@Oracle IDENTIFIED BY "aaAA11__" HOST 'xx.xx.xx.xx:2883' CLUSTER "集群名";


后续我们会持续分享更多实战运维干货,记得关注不迷路,下次见~