关于:ORA-02069: global_names parameter must be set to TRUE for this operation
2016-11-22 16:12
936 查看
以如下环境为例子:
数据库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错误的情况:
执行:
insert into T@to_OrcB(id) values(seq_1.nextval);
或
insert into T@to_OrcB(id) values(fun_1);
都会发生 ORA-02069: global_names parameter must be set to TRUE for this operation。(注:update、delete一样)
可知:通过DBLink更新远程数据的时候,如果使用到本地的sequence、函数、过程、包等将会发生ORA-02069
根据错误信息:
执行 alter session set GLOBAL_NAMES = true;
再次执行:insert into T@to_OrcB(id) values(seq_1.nextval);
发生如下错误:ORA-02085: database link to_OrcB connects to OrcB。
删除DBLink to_OrcB.
创建名字为OrcB的dbLink连接到OrcB.
执行:insert into T@OrcB(id) values(seq_1.nextval);
ORA-02019: connection description for remote database not found
ORA-02063: preceding line from OrcB
现在登录OrcB,创建反向dblink连接到OrcA,注意DBLink的名字必须为OrcA;
这时执行:
insert into T@OrcB(id) values(seq_1.nextval);
或
insert into T@OrcB(id) values(fun_1);
成功!
总结:
当发生 ORA-02069错误时,要建立一个反向的dblink,且两个dblink的名字要与global_name一致;
在执行SQL前,必须先执行alter session set GLOBAL_NAMES = true;
上面方法的缺点:
设置繁琐,如果A、B两个数据库的global_name相同时,无法创建与global_name相同的dblink。
其次,如果数据A有多个用户要更新数据库B中的一个用户,这个反向DBLink该如何建立呢?
另一种的方法:
使用游标,一条条更新远程对象,更新远程数据的DML中不要引用本地用户对象,而是使用变量来代替。
如insert into T@to_OrcB(id) values(seq_1.nextval)可以改为
declare
i number;
begin
select seq_1.nextval into i from dual;
insert into T@to_OrcB(id) values(i);
end;
数据库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错误的情况:
执行:
insert into T@to_OrcB(id) values(seq_1.nextval);
或
insert into T@to_OrcB(id) values(fun_1);
都会发生 ORA-02069: global_names parameter must be set to TRUE for this operation。(注:update、delete一样)
可知:通过DBLink更新远程数据的时候,如果使用到本地的sequence、函数、过程、包等将会发生ORA-02069
根据错误信息:
执行 alter session set GLOBAL_NAMES = true;
再次执行:insert into T@to_OrcB(id) values(seq_1.nextval);
发生如下错误:ORA-02085: database link to_OrcB connects to OrcB。
删除DBLink to_OrcB.
创建名字为OrcB的dbLink连接到OrcB.
执行:insert into T@OrcB(id) values(seq_1.nextval);
ORA-02019: connection description for remote database not found
ORA-02063: preceding line from OrcB
现在登录OrcB,创建反向dblink连接到OrcA,注意DBLink的名字必须为OrcA;
这时执行:
insert into T@OrcB(id) values(seq_1.nextval);
或
insert into T@OrcB(id) values(fun_1);
成功!
总结:
当发生 ORA-02069错误时,要建立一个反向的dblink,且两个dblink的名字要与global_name一致;
在执行SQL前,必须先执行alter session set GLOBAL_NAMES = true;
上面方法的缺点:
设置繁琐,如果A、B两个数据库的global_name相同时,无法创建与global_name相同的dblink。
其次,如果数据A有多个用户要更新数据库B中的一个用户,这个反向DBLink该如何建立呢?
另一种的方法:
使用游标,一条条更新远程对象,更新远程数据的DML中不要引用本地用户对象,而是使用变量来代替。
如insert into T@to_OrcB(id) values(seq_1.nextval)可以改为
declare
i number;
begin
select seq_1.nextval into i from dual;
insert into T@to_OrcB(id) values(i);
end;
相关文章推荐
- 关于:ORA-02069: global_names parameter must be set to TRUE for this operation
- 关于:ORA-02069: global_names parameter must be set to TRUE for this operation
- 利用数据库链做DML操作时报ORA-02069: global_names parameter must be set to TRUE for this operation
- ORA-02069: global_names parameter must be set to TRUE for this operation
- 解决ORA-02069: global_names parameter must be set to TRUE for this operation 问题
- ORA-02069: global_names parameter must be set to TRUE for this operation
- ORA-02069: global_names parameter must be set to TRUE for this operation
- Oracle存储过程报错ORA-02069: global_names parameter must be set to TRUE for this operation
- Error: ORA-16698: LOG_ARCHIVE_DEST_n parameter set for object to be added
- “Swift Language Version” (SWIFT_VERSION) build setting must be set to a supported value for target
- Swift Language Version” (SWIFT_VERSION) build setting must be set to a supported value for targets w
- Name for parameter binding must not be null or empty! On JDKs < 8, you need to use @Param for named
- ora-02069 此操作的Global_names必须设置为True
- DateTimePicker 控件出现 "You must be in ShowCheckbox mode to set to this date" 的错误
- 关于 error:ids for this class must be manually assigned before calling save(): 的解决方案
- DateTimePicker 控件出现 "You must be in ShowCheckbox mode to set to this date" 的错误
- [Graphics] UIColor created with component values far outside the expected range, Set a breakpoint on UIColorBreakForOutOfRangeColorComponents to debug. This message will only be logged once.
- ORA-02069: 此操作的global_names参数必须设置为TRUE
- DateTimePicker 控件出现 "You must be in ShowCheckbox mode to set to this date" 的错误
- 关于ids for this class must be manually assigned before calling save()[