oracle symonym_ORACLE SYNONYM詳解

以下內容整理自Oracle 官方文檔

一 概念

A synonym is an alias for any table,?view,materialized view, sequence, procedure, function, package,?type, Java classschema?object, user-defined object type, or another synonym. Because a synonymis simply an alias, it requires no storage other than its definition in thedata?dictionary.

Oracle中同義詞是任何表、視圖、物化視圖、序列、存儲過程、函數、包、類型、JAVA類對象、用戶定義類型,或是其他的同義詞的別名。由于其只是一個別名,所以除了在

數據字典中的定義不占任何空間。

Synonyms are often used for security andconvenience. For example, they can do the following:

同義詞常用于安全和方便。例如,它們可以做:

1. Mask the name and owner of anobject? 偽裝對象名稱和其所有者。

2. Provide location transparency for remoteobjects of a distributed database 為分布式數據庫遠程對象提供位置透明性

3. Simplify SQL statements for databaseusers 簡化數據庫用戶訪問對象SQL語句

4. Enable restricted?access?similar tospecialized?views when exercising fine-grained access control 當行使精細化訪問控制時提供類似指定視圖的訪問限制

You can create both public and privatesynonyms. A public synonym is owned by the special user group named PUBLIC andevery user in a database can?access?it. A private synonym is in the schema of aspecific user who has control over its availability to others.

你可以創建public和private同義詞。public同義詞屬于PUBLIC組,每個用戶都可以訪問。private同義詞屬于對象所有者,只有其顯式授權后其他用戶才可訪問。

Synonyms are very useful in bothdistributed and nondistributed database environments because they hide theidentity of the underlying object, including its location in a distributedsystem. This is advantageous because if the underlying?object?must be renamedor moved, then only the synonym needs to be redefined. Applications based onthe synonym continue to function without modification.

同義詞的優勢體現在如果其底層的對象重命名或者轉移,那么只需要重定義該同義詞。基于該同義詞的應用則無需任何修改。

Synonyms can also simplify SQL statementsfor users in a distributed database system. The following example shows how andwhy public synonyms are often created by a database administrator to hide theidentity of a base table and reduce the complexity of SQL statements. Assume thefollowing:

下面舉例說明同義詞是如何簡化用戶訪問的:

A table called SALES_DATA is in the schemaowned by the user JWARD.

JWARD用戶下有一張表 SALES_DATA

The SELECT privilege for the SALES_DATAtable is granted to PUBLIC.

PUBLIC組有SALES_DATA的查詢權限

At this point, you have to query the tableSALES_DATA with a SQL statement similar to the following:

此時,你如果查詢SALES_DATA表則需以下語句:

SELECT * FROM jward.sales_data;

Notice how you must include both the schemathat contains the table along with the table name to perform the query.

Assume that the database administratorcreates a public synonym with the following SQL statement:

假如數據庫管理員創建了一個public 同義詞:

CREATE PUBLIC SYNONYM sales FORjward.sales_data;

After the public synonym is created, youcan query the table SALES_DATA with a simple SQL statement:

你的語句將簡化為:

SELECT * FROM sales;

Notice that the public synonym SALES hidesthe name of the table SALES_DATA and the name of the schema that contains thetable.

二、CREATE SYNONYM 創建同義詞

1、語法結構:

2、前提條件:

To create a private synonym in your own schema, you must have the?CREATE?SYNONYM?system privilege.

在自己模式下創建私有同義詞需要CREATE SYNONYM權限。

To create a private synonym in another user's schema, you must have the?CREATE?ANY?SYNONYM?system privilege.

在其他用戶模式下創建私有同義詞需要CREATE ANY SYNONYM權限。

To create a?PUBLIC?synonym, you must have the?CREATE?PUBLIC?SYNONYM?system privilege.

創建公有同義詞,需要有CREATE PUBLIC SYNONYM權限。

3、示例

sqlplus / as sysdba

CREATE SYNONYM offices

FOR hr.locations;

GRANT SELECT ON hr.locations to SCOTT;

CREATE PUBLIC DATABASE LINK l_hr

CONNECT TO hr IDENTIFIED BY hr

USING 'orcl';

CREATE PUBLIC SYNONYM emp_table

FORHR.employees@l_hr;

GRANT SELECT ON HR.employees to SCOTT;

conn scott/tiger@orcl

SELECT count(*) from sys.offices;

select count(*) from emp_table;

三、DROP SYNONYM? 刪除同義詞

1、語法結構:

2、前提條件:

To drop a private synonym, either the synonym must be in your own schema or you must have the?DROP?ANY?SYNONYM?system privilege.

刪除私有同義詞需要有DROP ANY SYNONYM權限。

To drop a?PUBLIC?synonym, you must have the?DROP?PUBLIC?SYNONYM?system?privilege.

刪除公有同義詞需要有DROP PUBLIC SYNONYM權限。

3、示例

3.1刪除public同義詞,必須加public關鍵字:

SYS@orcl>DROP SYNONYM emp_table;

DROPSYNONYM emp_table

*

第 1 行出現錯誤:

ORA-01434:要刪除的專用同義詞不存在

SYS@orcl>DROP PUBLIC SYNONYM emp_table;

同義詞已刪除。

3.2刪除private同義詞:

DROP SYNONYM offices;

四、Q&A 問答

Q: 可以對同義詞做INSERT/UPDATE/DELETE操作嗎?

A:

SCOTT@orcl> UPDATE sys.offices t SETt.city='Shanghai' WHERE location_id=1000;

UPDATE sys.offices t SET t.city='Shanghai'WHERE location_id=1000

*

第 1 行出現錯誤:

ORA-01031: 權限不足

SYS@orcl> grant update on hr.locationsto scott;

授權成功。

SCOTT@orcl> /

已更新 1 行。

SO: 用戶對同義詞的操作權限都是基于對其底層對象有哪些操作權限。

-------------------------------

Dylan???Presents.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370093.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370093.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370093.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

瀏覽器緩存問題原理以及解決方案

瀏覽器緩存問題: 簡單來說,瀏覽器緩存就是把一個已經請求過的Web資源(如html頁面,圖片,js,數據等)拷貝一份副本儲存在瀏覽器中。緩存會根據進來的請求保存輸出內容的副本。當下一個請求來到的時…

Scikit-Learn機器學習入門

現在最常用的數據分析的編程語言為R和Python。每種語言都有自己的特點,Python因為Scikit-Learn庫贏得了優勢。Scikit-Learn有完整的文檔,并實現很多機器學習算法,而每種算法使用的接口幾乎相同,可以非常快的測試其它學習算法。 Pa…

hdu1542 Atlantis(掃描線+線段樹+離散)矩形相交面積

題目鏈接&#xff1a;點擊打開鏈接 題目描寫敘述&#xff1a;給定一些矩形&#xff0c;求這些矩形的總面積。假設有重疊。僅僅算一次 解題思路&#xff1a;掃描線線段樹離散&#xff08;代碼從上往下掃描&#xff09; 代碼&#xff1a; #include<cstdio> #include <al…

瀏覽器滾動條 --- 自定義“衣裳”

由于種種原因&#xff0c;瀏覽器的默認滾動條“衣裳”實在是 (ˉ▽&#xffe3;&#xff5e;)~~&#xff0c;為了“美”&#xff0c;本人結合萬維網各大神給的經驗和自己的實踐&#xff0c;做了此篇總結。若有錯誤&#xff0c;請在評論里給出&#xff0c;我會及時更改。 我在電…

電腦調分辨率黑屏了怎么辦_調顯示器分辨率黑屏怎么辦

調顯示器分辨率黑屏怎么辦調顯示器分辨率黑屏解決方法&#xff1a;1&#xff0c;開機&#xff0c;當快要進入系統選項時&#xff0c;立即按f8鍵進入“高級模式”&#xff0c;因為系統選項界面顯示的時間非常短&#xff0c;可以提早按f8鍵&#xff0c;否則錯過時機就得重來。2&a…

什么是JNDI,SPI,CCI,LDAP和JCA?

JNDI代表Java命名和目錄接口 。 它是用于提供對目錄服務&#xff08;即帶有對象的服務映射名稱&#xff08;字符串&#xff09;&#xff0c;對遠程對象或簡單數據的引用&#xff09;的訪問的API。 這就是所謂的 約束力 。 綁定集稱為上下文 。 應用程序使用JNDI接口訪問資源。…

android studio gradle 學習,學習Android Studio里的Gradle

一直聽說Gradle很強大&#xff0c;只是偶爾用Android Studio創建Demo的時候看到他一次&#xff0c;今天抽個時間完整記錄一下。1.gradle位置Android Studio項目創建好之后&#xff0c;默認有3個gradle文件&#xff0c;分別位于&#xff1a;/settings.gradle/build.gradle/app/b…

接口耗時打印并統計

1.可以利用Tomcat的access-log日志&#xff0c;讓其打印出http請求的每次耗時。可以在 config/server.xml里Host標簽下配置tomcat訪問日志格式 <Valve className"org.apache.catalina.valves.AccessLogValve" directory"logs" prefix&quo…

js內存

js在定義變量時完成了內存的分配 js具有自動垃圾回收機制&#xff0c;垃圾回收器會每隔固定的一段時間就執行一次釋放操作&#xff0c;即找出那些不再繼續使用的值&#xff0c;釋放其占用的內存 js中最常用的是通過標記清除的算法來找到哪些對象是不再繼續使用的&#xff0c;因…

halcon 圖像差分_Halcon編程-基于紋理的mara檢測

表面瑕疵檢測是機器視覺領域非常重要的一個應用。機器視覺是集光學、機電和計算機三個領域的一門不算新的技術。但目前表面瑕疵檢測在學界主要是計算機專業或者控制專業瞄準圖像處理方向在做&#xff0c;而視覺光學系統這一塊主要是光學工程專業在做。很少有研究者把這三塊都結…

Apache Camel入門

在先前的博文中&#xff0c;我們了解了企業集成模式&#xff08;EIP&#xff09;。 現在&#xff0c;在這篇文章中&#xff0c;我們將研究實現這些模式的Apache Camel框架。 關于駱駝&#xff1a; Apache Camel是一個開放源代碼項目&#xff0c;已有將近5年的歷史&#xff0c;…

css 寫打印樣式問題

&#xff08;1&#xff09;背景顏色打印不出來問題解決方法 background樣式要加上 !important&#xff1b;color樣式要加上 !important&#xff1b;-webkit-print-color-adjust: exact;然后記得瀏覽器打印設置里面要在“打印背景圖形”前面打勾。 -webkit-print-color-adjust:…

android studio smssdk,SMSSDK for Android 配置

1.集成之前先要申請Mob的appkey與appsecret2.在Mob官網下載最新SDK&#xff0c;解壓后會看到以下目錄結構&#xff1a;SMSSDK下存放的是短信SDK的全部內容。3.在android studio中加入SMS的第三方庫AS版本的SMSSDK目錄下包含以下內容&#xff1a;MobCommons.jar&#xff1a;Mob …

linux后臺不掛斷運行 nohup命令

//后臺常在 退出終端仍然運行 nohup python pyredis.py & nohup輸出重定向到my.log nohup command > my.log 2>&1 &轉載于:https://www.cnblogs.com/plxm/p/8136833.html

Ubuntu 16.04安裝微信

微信沒有出Linux的版本&#xff0c;但是可以通過以下方式解決&#xff1a; 1、使用網頁版&#xff0c;除了沒有公眾號之后&#xff0c;一切都沒問題&#xff0c;包括傳文件等。 網頁登錄地址&#xff1a;https://wx.qq.com/ 2、使用第三方版本&#xff0c;只不過這個是桌面應用…

navision系統和sap區別_SAP那些事-實戰篇-89-淺談金稅接口方案

以前金稅接口這塊一直是銷售顧問在做&#xff0c;雖然和財務相關&#xff0c;也沒有怎么關注。這次項目把金稅接口分到了財務模塊&#xff0c;結果遇到了一些問題&#xff0c;趁此機會把這塊總結一下方案&#xff0c;供各位看官參考。方案1&#xff1a; 文本方案&#xff0c;這…

不變性的來龍去脈

因此&#xff0c;在我的第一篇文章中&#xff0c;我談到了一些構建器模式&#xff0c;并提到了一個非常強大但卻被忽視的概念&#xff1a;不變性。 什么是不可變類&#xff1f; 這只是一個其實例無法修改的類。 類屬性的每個值都在其聲明或其構造函數中設置&#xff0c;并在對…

JavaScript總結(3)

第3章 獲取用戶的輸入 &#xff1c;script&#xff1e;10 intAprompt("請輸入第一個數字","");11 intBprompt("請輸入第二個數字",27);默認是2712 document.write("你輸入的第一個數字是"intA);13 document.write("&#xff1c;…

css書寫規范

在書寫css樣式的時候總是無意中就寫亂了&#xff0c;無論是命名或者是樣式的書寫順序&#xff0c;這里做一個總結&#xff0c;提醒自己在書寫css的時候時刻注意&#xff0c;大家可以參考哈。 1. 樣式屬性順序 單個樣式規則下的屬性在書寫時&#xff0c;應按功能進行分組&…

android 協程,關于android:Kotlin協程實現原理SuspendCoroutineContext

明天咱們來聊聊Kotlin的協程Coroutine。如果你還沒有接觸過協程&#xff0c;舉薦你先瀏覽這篇入門級文章What? 你還不曉得Kotlin Coroutine?如果你曾經接觸過協程&#xff0c;置信你都有過以下幾個疑難&#xff1a;協程到底是個什么貨色&#xff1f;協程的suspend有什么作用&…