Oracle 數據庫中 同義詞的意思


一、Oracle數據只有一個實例(簡單理解就是Oracle 只能建立一個數據庫,不像MySQL,它下面可以創建N個庫),那么Oracle是根據用戶靈活去管理的;這點讀起來、理解
    起來也不那么難,但是除非自己親自實現一把才理解深入點,剛接觸數據庫可能不是很理解這些;
二、Oracle中可以建立多個用戶,那么這些用戶剛建立是得授權的,不讓沒有權限做任何事情,(舉個栗子:用戶 ‘AA’ 是授權的DBA用戶,此用戶下面有 N 張表,如果再創建
   一個用戶 “BB” ,那么 “BB” 是沒有權限讀取 “AA” 中表的,有人可能就會說給他授權不就行了么,給 “BB” 授予超級權限,抱歉,那也不行,你同樣么有機會訪問 “AA”
   中的表的,你雖然授予了超級權限,那是在你名下的,在 “AA” 起不了作用),是不是很是揪心,同一個庫下兩個 超級用戶 還不能訪問。
三、是不是在 “BB” 用戶下在把 “AA” 下的表 復制一遍不就好了,沒錯,這樣也能實現,但是這樣會浪費很多資源,而且不能同步數據;這種情況下 同義詞 就有用武之地了,
    其實  同義詞 也相當於一個視圖 可以這個么理解,可以進行對表的 增刪改查,(省資源,數據同步);

四、注意事項
    0》接上面的舉例子:新建的用戶 “BB” 要在不復制資源的請款下建立一個同義詞 要可以對 “AA” 下的表 操作(除了刪除)
       建立:create 【public】  synonym 同義詞名稱(一般可以與表名不同,這樣不容易混淆) for AA.table_name;--在當前用戶下建立一個同義詞(去同義“AA”中的表:table_name,public的是可選參數,本人建議盡量建立公用的 同義詞)
       刪除:DROP   【public】   SYNONYM   同義詞名稱; ---------此處特別注意 關鍵字 public 的存在--------;
       查看:select * from    user_synonyms  sy  where sy.synonym_name ='A_CODEMAPPING';  --查看私有的同義詞,自己看到自己創建的;
            select * from    all_synonyms sy  where sy.synonym_name ='A_CODEMAPPING';  --可以查看到 某某創建的 公共的 同義詞
            參看信息中包括,同義詞擁有者,表擁有者,是否public的等信息;
    1》同義詞 分為私有的 和公共的兩種;
       私有的:
            也只有 本用戶使用,包括別的用戶查不到 用戶 “BB” 有這個同義詞(這點很重喲奧);
       共有的:
            可以被其它的任何用戶使用, 也可以被人家查到,看到這個同義詞,當然最重要的也可以被別的用戶刪除;
   

 

自己在公司遇到這個問題,第一次接觸這個  概念 弄的很是揪心,終於研究有些明了了;還有數據導入導出問題,有些問題,在做個簡單的例子就能明白,發現栗子 四個好東西,當然最重要的是,遇到問題自己要有信息決心去搞明白的欲望!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM