首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 同義詞全解析:分類、建立、權限與分布式透明性

     編輯:Oracle 資料庫基礎

同義詞核心價值

同義詞是資料庫物件的別名,不佔用實際儲存空間,僅在資料字典存定義。三大核心作用:

  1. 屏蔽物件擁有者:多用戶協同開發中,隱藏 schema.object 寫法。
  2. 簡化 SQL:縮短冗長物件名(如 AD_USER_ROLE_NAME_TRL → USER_ROLE_TRL)。
  3. 提供位置透明性:分布式資料庫中,隱藏 @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 系統權限。
  • 在他人 Schema 建立:需 CREATE ANY SYNONYM。
  • 建立公有同義詞:需 CREATE PUBLIC SYNONYM。
  • 刪除公有同義詞:需 DROP PUBLIC SYNONYM。

進階特性:物件不存在時也可建立同義詞

支援前向宣告:DBA 先定義命名規範與同義詞,應用開發同步引用;DBA 稍後建立實體物件。消除開發依賴阻塞,提升團隊並行效率。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved