同義詞是資料庫物件的別名,不佔用實際儲存空間,僅在資料字典存定義。三大核心作用:
schema.object 寫法。AD_USER_ROLE_NAME_TRL → USER_ROLE_TRL)。@dblink 細節。| 類型 | 擁有者 | 可見性 | 授權控制 | 典型用途 |
|---|---|---|---|---|
| PUBLIC 同義詞 | 特殊群組 PUBLIC | 所有用戶可見 | 需額外 GRANT 物件權限 | 通用工具表、序列、套件 |
| PRIVATE 同義詞 | 建立者(Schema 擁有者) | 僅建立者可見(除非授權) | 建立者可 GRANT SYNONYM 給他人 | 應用開發、內部物件映射 |
注意:引用 PUBLIC 同義詞時不加 PUBLIC. 前綴,否則報錯。
-- 建立 PUBLIC
CREATE PUBLIC SYNONYM syn_name FOR schema.object_name;
-- 建立 PRIVATE(預設)
CREATE SYNONYM syn_name FOR schema.object_name;
-- 刪除
DROP [PUBLIC] SYNONYM syn_name;
Database Link 定義跨庫路徑:
CREATE DATABASE LINK dblink_name
CONNECT TO remote_user IDENTIFIED BY password
USING 'tns_connect_string';
訪問遠端物件需 object_name@dblink_name。同義詞將其封裝:
CREATE SYNONYM local_syn FOR remote_table@dblink_name;
應用端僅見 local_syn,實現位置透明性。
CREATE SYNONYM 系統權限。CREATE ANY SYNONYM。CREATE PUBLIC SYNONYM。DROP PUBLIC SYNONYM。支援前向宣告:DBA 先定義命名規範與同義詞,應用開發同步引用;DBA 稍後建立實體物件。消除開發依賴阻塞,提升團隊並行效率。