首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

ORA-02069 錯誤根因與解決:DB Link 名稱必須匹配目標 SID

     編輯:Oracle 資料庫相關知識

跨資料庫數據同步時建立 Database Link,INSERT 操作拋出 ORA-02069: global_names parameter must be set to TRUE for this operation,本文揭示核心成因與一行代碼修復方案。

場景還原

  • 源端 A:SID=SDH,用戶 NM/NM
  • 目標端 B:SID=GSGX,用戶 GS/GS
  • 需求:從 B 向 A 寫入數據

錯誤重現

-- 錯誤建法:DB Link 名稱自定義
CREATE DATABASE LINK testdb CONNECT TO nm IDENTIFIED BY nm USING 'sdh';

-- 查詢正常
SELECT * FROM a@testdb;

-- INSERT 失敗
INSERT INTO a@testdb SELECT * FROM a;
-- ORA-02069: global_names parameter must be set to TRUE for this operation

根因分析

Oracle 要求:執行 DML(INSERT/UPDATE/DELETE)時,DB Link 名稱必須與目標資料庫的 GLOBAL_NAME(通常等同於 SID)完全一致。單純查詢不受此限制。

正確建立方式

-- DB Link 名稱 = 目標端 SID (SDH)
CREATE DATABASE LINK sdh CONNECT TO nm IDENTIFIED BY nm USING 'sdh';

-- INSERT 成功
INSERT INTO a@sdh SELECT * FROM a;

驗證 GLOBAL_NAME

SELECT * FROM GLOBAL_NAME;

若實例啟用了 GLOBAL_NAMES=TRUE(推薦生產環境開啟),DB Link 命名強制約束生效。

最佳實踐建議

  • 統一規範:CREATE DATABASE LINK <target_sid> ...
  • 檢查參數:SHOW PARAMETER GLOBAL_NAMES 確認為 TRUE
  • 跨環境同步時,以目標端 GLOBAL_NAME 為準建立 Link
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved