(原创)同时使用database link和本地序列插远程数据表时报ORA-02069

同时使用database link和本地序列插远程数据表时报ORA-02069

今天遇到同时使用database link和本地序列插远程数据表时报ORA-02069:global_names parameter must be set to true for this operation
环境:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
PL/SQL Release 9.2.0.4.0 - Production
CORE 9.2.0.3.0 Production
TNS for Linux: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production
语句如下:
INSERT INTO tb_cust_account_rel@dblink_to_data_pub
  (n_id,
  v_cust_type,
  v_expr_org_id,
  v_bank_org_id,
  v_cust_id,
  v_send_status,
  v_bank_account_name,
  v_reg_bank,
  v_bank_account,
  v_id_card_no,
  v_acc_status,
  v_acc_status_note,
  v_is_use,
  v_is_default,
  v_opt_id,
  d_create_date,
  d_update_date,
  v_note)
  SELECT seq_tb_cust_account_rel.nextval,
        v_cust_type,
        i_custid,
        '',
        '',
        '10',
        i_accountname,
        i_regbank,
        i_accountno,
        i_cardno,
        '0',
        '',
        i_isused,
        i_isdef,
        i_person,
        SYSDATE,
        SYSDATE,
        i_note
    FROM tb_cust_info@dblink_to_data_pub;
ORA-02069: global_names parameter must be set to TRUE for this operation
1.把tb_cust_info@dblink_to_data_pub改成dual,依然报同样的错误。
2.然后跟据错误提示把global_names改成true,仍然报同样的错误。
alter session set global_names = true ;
3.如果单独执行查询语句就没有问题:
SELECT seq_tb_cust_account_rel.nextval,
        v_cust_type,
        i_custid,
        '',
        '',
        '10',
        i_accountname,
        i_regbank,
        i_accountno,
        i_cardno,
        '0',
        '',
        i_isused,
        i_isdef,
        i_person,
        SYSDATE,
        SYSDATE,
        i_note
    FROM tb_cust_info@dblink_to_data_pub;
执行正常。

4.在网上搜索有看到说把把DB Link的名称建成与目标数据库的SID相同,如果把DB Link的名称建成与目标数据库的SID相同会报同样的错误,如果在同一数据库上会报:
ORA-02082: a loopback database link must have a connection qualifier

目前解决方法:把sequence建到远端数据库用户下。然后把select语句中的sequence加上db link.
问题:
1、如果说select语句也是在远端执行,我在远端数据库用户下建了同名的sequence也一样报错。
2、把global_names改成true也一样报错。
现在找不出原因,不知各位大吓是否有解!!

时间: 2024-09-04 09:17:54

(原创)同时使用database link和本地序列插远程数据表时报ORA-02069的相关文章

oracle database link

原文整理自网络: database link基础知识 什么是database link? database link,它是用来更方便的一个数据库中访问另一个数据库(包括本地和远程的,道理是一样的),一开始,很多人会发生误解,其实是在本地建立的.即数据库连接只是连到别的数据库的快捷方式. database link是定义一个数据库到另一个数据库的路径的对象,database link允许你查询远程表及执行远程程序.在任何分布式环境里,database都是必要的.另外要注意的是database li

Oracle DATABASE LINK(DBLINK)创建与删除方法_oracle

Oracle创建.删除DATABASE LINK 创建dblink: create database link [name] connect to [username] IDENTIFIED BY [password] using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = [ip])(PORT = [port])) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVI

Oracle 11g r2新增ALTER DATABASE LINK功能简介

从11.2开始,如果数据库链建立时用户名密码有误,或者需要更改数据库链验证设置,不需要将数据库链删除后重建了,Oracle提供了ALTER DATABASE LINK的语法. 这只是一个很小的改动,但是使得数据库链的操作方便了许多.没有必要为了输入错误或是更改了用户名密码而重建数据库链了. SQL> create database link test 2  connect to test 3  identified by password 4  using '172.25.13.229/test

oracle报错ORA-01089 select fail over database link on RAC ADG Standby问题

前段时间配的一套11203 RAC ADG on EXADATA Machine的环境,在ADG 的standby side的node2 通过dblink查询时提示ora-1089错误,但是在node1 查询正常,DG的recover 进程是在node1 上,后确认是个bug 简单的记录. -- on standby node2 ,but on standby node1 was worked select count(*) from dbmt.dbmt_tableinfo@LINK_WEEJA

Oracle创建Database Link的两种方式详解_oracle

创建一个dblink,命名为dblink_name,从A数据库连到B数据库,B数据库的IP为192.168.1.73,端口为1521,实例名为oracle,登录名为tast,密码为test. 一菜单方式: 打开plsql,点击[File]-[New]-[Database link],打开如下图所示窗口 填好各项信息后,点击[Apply]即可完成Database Link的创建. 二SQL方式 -- Drop existing database link drop public database

建立dblink(database link)

database linke是建立一个数据库到另一个数据库的路径的对象,通过database link可以允许查询远程表,我理解可以算作一种分布式数据库的用法. database link是单向连接,既然它是一种对象,那自然可以在xxx_objects表中查询到相关的信息.建立database link前需要明确几个事情: 1.确认从建立方的server可以访问远程数据库. 2.需要在建立方的tnsnames中配置远程数据库连接串. 3.只有在服务端配置的连接才能在dblink中使用,如果仅是在

mybatis数据表(mysql)的主键非自增长,如何插入数据(需插入主键)实现主键自增长?

问题描述 mybatis数据表(mysql)的主键非自增长,如何插入数据(需插入主键)实现主键自增长? 举例来说就是有表person,person有id(mysql数据库,主键,非自增),和name,pswd三个字段.如果是自增的情况,我们通常是这样处理 insert into person(name,pswd) values(#{name},#{pswd}) 这种情况不许要插入主键,因为person表主键是自增长的.但如果主键不是增长的情况呢?如何处理.主键不是自增长就应该必须插入主键. 在步

url-web项目中长轮询本地窗口中的数据URL怎么写?

问题描述 web项目中长轮询本地窗口中的数据URL怎么写? 50C 如题目:web项目中用长轮询 当前桌面上开的 c/s窗口中扫入数据 web项目长轮询得到值 解决方案 不考虑低版本ie可以用websocket,和c/s的socket响应差不多,自己找你使用的语言的websocket服务器 如果你用的C#,可以看这个:C# websocket聊天室示例 解决方案二: 既然长轮询,那么得到数据后,直接把数据发送给web端 解决方案三: 长轮询的URL怎么写取决于你的服务器端程序的设计.它如何处理q

oracle 字符串拆分,序列,插入数据

问题描述 oracle 字符串拆分,序列,插入数据 insert into stud_sname1_417 (id,sname1) select seq_sname1_417,distinct substr(name,1,1) from name; 请问为什么是 missing expression 解决方案 Oracle拆分字符串函数Oracle拆分字符串函数Oracle拆分字符串函数 解决方案二: insert into stud_sname1_417 (id,sname1) SELECT