今天开发给发邮件过来说一个存储过程想通过dblink往目标库insert数据,但报错ORA-02069: global_names parameter must be set to TRUE for this operation,想让我根据错误提示在数据库上修改global_names参数修改为True。

先来看看官方文档是如何介绍这个参数的:

GLOBAL_NAMES specifies whether a database link is required to have the same name as the database to which it connects.
If the value of GLOBAL_NAMES is false , then no check is performed. If you use or plan to use distributed processing, then Oracle recommends that you set this parameter to true to ensure the use of consistent naming conventions for databases and links in a networked environment.

从下面的查询可以看出global_names参数可以在线进行修改的

NAME ISSES_MODIFIABL ISSYS_MODIFIABLE
------------------------------ --------------- ---------------------------
global_names TRUE IMMEDIATE // * Action : create a database link with the same name as the database it //  connects to , or set global_names= false .

那现在问题来了,实际生产中源端和目标端的数据库名肯定是不一致的,所以修改这个参数并不能解决这个问题。

只能想其他的办法来绕过这个错误,这里给开发提了两个建议:

1、把存储过程部署到目标端来避免远程insert中调用sequence

2、在源端存储过程中引入临时表,先把数据插入临时表,再从临时表插入到远端表。

在MOS上搜到了一个相关文档( ORA-02069 DURING REMOTE INSERT OF A LOCAL SEQUENCE (文档 ID 1047673.6) )跟我们的问题描述一致。

官方文档: http://docs.oracle.com/cd/E11882_01/server.112/e40402/initparams098.htm#REFRN10065

启动Oracle数据库报错ORA-48173、ORA-48187、OSD-00002、OS-Error (OS 5) Access is denied
启动Oracle数据库报错ORA-48173、ORA-48187、OSD-00002、OS-Error (OS 5) Access is denied
SQL Developer 连接 oracle数据库 报错 Io 异常 The Network Adapter could not establish the connection的三种解决方法
SQL Developer 连接 oracle数据库 报错 Io 异常 The Network Adapter could not establish the connection的三种解决方法
Python 技术篇-操作oracle数据库执行SQL语句报错,提示ORA-00911: 无效字符解决方法
Python 技术篇-操作oracle数据库执行SQL语句报错,提示ORA-00911: 无效字符解决方法