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


    同时使用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也一样报错。
    现在找不出原因,不知各位大吓是否有解!!
    人生有三宝:终身运动,终身学习,终身反醒.吸收新知,提高效率,懂得相处,成就自己,也成就他人,创造最高价值。
  • 相关阅读:
    13 数据库主从
    12 数据备份
    11 锁机制
    12 日志
    10 索引(二)
    09 索引
    update kernel 3.10-3.12
    haproxy para config
    mysql slave to master
    storage disk
  • 原文地址:https://www.cnblogs.com/jimeper/p/1751183.html
Copyright © 2020-2023  润新知