同時使用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也一樣報錯。
現在找不出原因,不知各位大嚇是否有解!!