Oracle中的同義詞SYNONYM
同義詞實質上是指定方案物件的一個別名。透過遮蔽物件的名稱和所有者以及對分散式資料庫的遠端物件提供位置透明性,同義詞可以提供一定程度的安全性。同時,同義詞的易用性較好,降低了資料庫使用者的SQL語句複雜度。
同義詞允許基物件重新命名或者移動,這時,只需對同義詞進行重定義,基於同義詞的應用程式可以繼續執行而無需修改。
你可以建立公共同義詞和私有同義詞。其中,公共同義詞屬於PUBLIC特殊使用者組,資料庫的所有使用者都能訪問;而私有同義詞包含在特定使用者的方案中,只允許特定使用者或者有基物件訪問許可權的使用者進行訪問。
同義詞本身不涉及安全,當你賦予一個同義詞物件許可權時,你實質上是在給同義詞的基物件賦予許可權,同義詞只是基物件的一個別名。
建立同義詞
在你自己的方案中建立私有同義詞時,你必須擁有CREATE SYNONYM許可權;在其他方案中建立私有同義詞時,你必須擁有CREATE ANY SYNONYM許可權;建立公共同義詞,你必須擁有CREATE PUBLIC SYNONYM系統許可權。
我們透過CREATE SYNONYM語句來建立一個同義詞,需要注意的是,為了成功建立同義詞,我們既不需要基物件一定存在,也不需要擁有訪問基物件的許可權。下面的語句建立了jward使用者下emp表的公共同義詞public_emp。
點選(此處)摺疊或開啟
- CREATE PUBLIC SYNONYM public_emp FOR jward.emp
當你為遠端的過程或者函式建立同義詞時,你必須限定遠端物件的方案名稱;相應的,你可以為駐留在本地資料庫的遠端物件建立本地公共同義詞,在這種情況下,在後續呼叫儲存過程或者函式時必須包含資料庫連結。
在DML語句中使用同義詞
你可以使用方案內部的所有私有同義詞;另外,只要你擁有訪問基物件的必要許可權,或者明確地透過特定角色,再或者透過PUBLIC,你就可以訪問任意的公共同義詞。你也可以訪問其他方案的私有同義詞,前提是你被賦予了訪問相應基物件的許可權。
只要你被賦予了基物件許可權,你就可以使用其他使用者的私有同義詞。例如,你只擁有jward.emp表的SELECT許可權,jward.emp表有一個同義詞jward.employee,這時,你就只能對jward.employee同義詞進行查詢操作,而不能使用它進行插入資料。
在DML語句中,同義詞的使用方式和基物件的使用方式完全相同。例如,一個名稱為employee的同義詞,下面語句是有效的:
點選(此處)摺疊或開啟
-
INSERT INTO employee (empno, ename, job)
- VALUES (emp_sequence.NEXTVAL, 'SMITH', 'CLERK');
如果fire_emp是一個獨立的程式或程式包的同義詞,你就可以執行以下命令:
點選(此處)摺疊或開啟
- EXECUTE Fire_emp(7344);
刪除同義詞
你可以刪除本方案中的任一私有同義詞;如果你要刪除其他使用者方案的私有同義詞,你必須擁有DROP ANY SYNONYM系統許可權;如果你要刪除公共同義詞,你必須擁有DROP PUBLIC SYNONYM系統許可權。
你可以透過DROP SYNONYM語句來刪除一個不再需要的同義詞,當刪除私有同義詞時,省略PUBLIC關鍵字;當刪除公共同義詞時,需要包含PUBLIC關鍵字。
例如,下面語句刪除名為emp的同義詞:
點選(此處)摺疊或開啟
下面的語句刪除名為public_emp的公共同義詞:
點選(此處)摺疊或開啟
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30162081/viewspace-1610012/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 詳解同義詞(synonym)
- Oracle之處理synonym同義詞無效物件Oracle物件
- 匯出Oracle中的同義詞Oracle
- 【Oracle】-【同義詞】-public與非public同義詞Oracle
- oracle11g同義詞synonym建立及授權且刪除相關測試Oracle
- 使用datapump 匯出匯入同義詞(export and import synonym using datapump)ExportImport
- ORACLE公有/私有同義詞Oracle
- 匯出oracle公有同義詞Oracle
- Oracle同義詞建立方法Oracle
- Oracle同義詞 kingsql作品OracleSQL
- Oracle同義詞建立方法(轉)Oracle
- Oracle資料庫開發——同義詞Oracle資料庫
- 物件、同義詞和公有同義詞順序選取物件
- Oracle——04同義詞與資料庫連結Oracle資料庫
- 授權與同義詞
- SYS查詢不到的同義詞
- 中考常見同義詞和同義短語總結
- 多層巢狀同義詞巢狀
- 官檔同義詞學習
- Oracle基礎 12 物件 objects 同義詞/序列/試圖/索引Oracle物件Object索引
- 【Oracle】v$表和v_$同義詞的訪問許可權Oracle訪問許可權
- 資料庫鏈與同義詞資料庫
- 在全文索引中同義詞的使用(SQL SERVER 2005)索引SQLServer
- Oracle資料鏈+同義詞+訪問遠端資料庫Oracle資料庫
- Oracle synonym 相關Oracle
- 6.5. 常用物件——6.5.4. 同義詞物件
- Oracle出現ORA-01775: 同義詞的迴圈鏈問題Oracle
- ORACLE817上對同義詞執行DESC出現CORE DUMPOracle
- 同義詞相似度可以怎樣計算
- 同義詞The schema object cannot be contained in a package.ObjectAIPackage
- 學習筆記 過程、同義詞、序列筆記
- 關於oracle synonym 的總結整理Oracle
- SQLServer訪問Oracle(通過同義詞-檢視-資料字典)出現的問題SQLServerOracle
- oracle學習筆記(十四) 資料庫物件 索引 檢視 序列 同義詞Oracle筆記資料庫物件索引
- Elasticsearch:使用同義詞 synonyms 來提高搜尋效率Elasticsearch
- 【學習】SQL基礎-017-同義詞SQL
- Oracle9i sys登入後通過public同義詞move table報錯Oracle
- 分析日記中的單詞的含義