在本地数据库表A端通过dblink操作远程数据库表B:
insert into B@dblink (select A.* from A),并且A.* 中有使用A端数据库的函数
此时会报错:
ORA-02069:此操作的global_names 参数必须设置为TRUE
网上查了很多资料,都是以下两种解决方案:
1.在远程数据库上创建相同函数,然后在调用的时候 使用远程数据库上的函数
2.通过sql语句:alter session set GLOBAL_NAMES = true; 设置GLOBAL_NAMES参数为true,并将A和B的GLOBAL_NAMES值置相同。
个人亲测,以上两种方案都不能解决问题,至少对我本地没有效果,报错依旧
最后在这里提供我们最终的解决方案:
1,首先在A端创建和B数据库一样的表结构(不要数据,只要表结构)
EXECUTE IMMEDIATE 'create GLOBAL TEMPORARY table ' || cur.c_Tablename ||
' ON COMMIT DELETE ROWS as select * from ' || cur.c_Tablename ||'@DBLink_To_B where 1<>1';
2.再将数据插入到在A端创建的和B一样的表中,暂且叫她B1.
3.再使用
insert into B@dblink (select B1.* from B)
至此可以完美避开在操作远端数据库时直接使用函数,完美解决问题
3年前的问题又有人问了,再记录一下,使用视图比较方便:
ORA
-
02069
:此
操作
的
global
_
names
参数
必须
设置
为
TRUE
_sql
ora
_新浪博客
执行dblink插入
操作
报错
数据库A :
global
_name为 OrcA
数据库B :
global
_name为 OrcB
在OrcA中建立dblink连接到OrcB,dblink命名为to_OrcB;
在OrcB中创建表T,拥有一个number的id字段;
在OrcA中创建sequence(seq_1);并创建一个function(fun_1),fun_1仅返回1;
来看看发生
02069
今天遇到了
ORA
-
02069
:
global
_
names
parameter must be set to
TRUE
for this operation
查了METALINK原因是不能在通过DBLINK
操作
远程表的DML语句中使用本地函数
原文如下:
Because of a limitation, it is not possible to use a local funct
<br />通过database link ,序列向远程库中表插入数据时。如果使用本地库中的序列时<br />会遇到
ORA
-
02069
: 此
操作
的
global
_
names
参数
必须
设置
为
TRUE
。<br /><br />解决方案:使用远程库中的序列。<br /> <br />1.scott用户授予report用户对DEPT表的select, insert, update 权限。<br />SQL> conn scott/tiger<br />Connected to
Ora
cle Database 11
Error:
ORA
-
02069
:
global
_
names
parameter must be set to
TRUE
for this operation Cause: You tried to execute an operation that requires a remote mapping. This can not be done because the parameter call
关于
ORA
-
02069
错误
今天在做数据测试时,需要在本地库调用DBLINK将数据插入到另一个库中,其中ID列用到了自增序列,后来执行的时候提示
ORA
-
02069
:
global
_
names
parameter must be set to
TRUE
for this operation 错误,通过网上搜索大体意思是
global
_
names
要
设置
成
true
,在
ora
cle安装中默认是FAL
前几天因工作需要, 要从一个
Ora
cle数据库到另一台
Ora
lce数据库之间建立一个DB Link,用于将一服务器的数据Insert到另外一台机器中。
Ora
cle服务器A:Sid:SDH, USERID/PW: NM/NM
Ora
cle服务器B: Sid;gsgx, USERID/PW: gs/gs建立如下的DB Link :从 B 到 A 创建一个DB Link:crea
原因:在对远程表增删改
操作
的时候,调用了本地函数。
比如:insert into trans_load_rate@DC values(rate_s(1)); trans_load_rate是DC库的表,rate_s函数是本地库的函数,执行上面这条sql的时候,就会报
ora
-
02069
解决方法:
将函数也放在远程数据库。insert into trans_load_r...