十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
ORCAL數(shù)據(jù)庫(kù)是Oracle公司開發(fā)的一種用于管理和處理企業(yè)級(jí)應(yīng)用程序數(shù)據(jù)的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。作為業(yè)內(nèi)最常用、最可靠的數(shù)據(jù)庫(kù)之一,ORCAL數(shù)據(jù)庫(kù)極大地促進(jìn)了企業(yè)技術(shù)的發(fā)展。ORCAL數(shù)據(jù)庫(kù)強(qiáng)大而靈活的功能,為用戶提供了其他數(shù)據(jù)庫(kù)無法滿足的數(shù)據(jù)管理解決方案。

成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),成都做網(wǎng)站公司-創(chuàng)新互聯(lián)已向成百上千家企業(yè)提供了,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷等服務(wù)!設(shè)計(jì)與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗(yàn),合理的價(jià)格為您打造企業(yè)品質(zhì)網(wǎng)站。
數(shù)據(jù)庫(kù)中的同義詞是一個(gè)關(guān)鍵功能,大大提高了數(shù)據(jù)庫(kù)的靈活性和用戶的便利性。本文將探討orcal數(shù)據(jù)庫(kù)同義詞的使用技巧,以幫助用戶更好地利用數(shù)據(jù)庫(kù)。
一、同義詞的定義和用途
同義詞在ORCAL數(shù)據(jù)庫(kù)中指一組指向一個(gè)對(duì)象、在操作上與原對(duì)象具有相同效果的替代名稱。同義詞是一個(gè)虛擬對(duì)象,它們并不占用數(shù)據(jù)庫(kù)中的實(shí)際存儲(chǔ)空間。
同義詞的主要用途是為了方便對(duì)數(shù)據(jù)庫(kù)對(duì)象的訪問,特別是當(dāng)數(shù)據(jù)庫(kù)中有多個(gè)模式時(shí),同義詞可以使得在不同模式中訪問相同對(duì)象更加便捷、直觀。同義詞還可以改變數(shù)據(jù)庫(kù)對(duì)象的名稱,以便在程序發(fā)生變化時(shí),不會(huì)破壞程序和表之間的連接。
二、同義詞的創(chuàng)建和使用
在ORCAL數(shù)據(jù)庫(kù)中,同義詞可以通過以下方式創(chuàng)建:
CREATE [PUBLIC] SYNONYM synonym_name
FOR [schema.]object_name[@database_link];
CREATE語(yǔ)句中,PUBLIC關(guān)鍵字是可選的。如果在創(chuàng)建同義詞時(shí)使用PUBLIC關(guān)鍵字,則該同義詞可以在整個(gè)數(shù)據(jù)庫(kù)中使用;否則該同義詞只能在本用戶或角色下使用。
schema是對(duì)象所在的模式名稱,object_name是該對(duì)象的名稱,database_link是數(shù)據(jù)庫(kù)鏈名,如果該對(duì)象不在本地?cái)?shù)據(jù)庫(kù)中,則需要指定外部數(shù)據(jù)庫(kù)名。
例如,創(chuàng)建一個(gè)同義詞,用于訪問用戶hr下的表employees:
CREATE SYNONYM hr_emp
FOR hr.employees;
創(chuàng)建同義詞后,可以通過以下方式訪問原對(duì)象:
SELECT * FROM hr_emp;
如果hr模式名發(fā)生變化,只需要修改創(chuàng)建同義詞的模式名,而不需要修改原程序和表的名稱。
同義詞除了可以用于訪問表和視圖外,還可以用于訪問存儲(chǔ)過程、函數(shù)等數(shù)據(jù)庫(kù)對(duì)象。例如,創(chuàng)建同義詞,用于執(zhí)行存儲(chǔ)過程:
CREATE SYNONYM sp_test
FOR hr.test_sp;
執(zhí)行存儲(chǔ)過程:
EXEC sp_test(param1, param2);
三、同義詞的注意事項(xiàng)
在使用同義詞時(shí),需要注意以下幾點(diǎn):
1. 同義詞只能訪問有訪問權(quán)限的對(duì)象,在使用同義詞前,需要授權(quán)該用戶或角色對(duì)該對(duì)象進(jìn)行訪問。
2. 同義詞不能替代數(shù)據(jù)庫(kù)內(nèi)部對(duì)象的名稱,例如,不能創(chuàng)建同義詞以替代表或視圖的名稱,否則會(huì)導(dǎo)致數(shù)據(jù)訪問失敗。
3. 在使用同義詞時(shí),需要避免使用復(fù)雜的對(duì)象命名規(guī)則,以免產(chǎn)生命名沖突。
4. 創(chuàng)建同義詞時(shí),需要確保同義詞和原對(duì)象名稱大小寫一致。
5. 如果多個(gè)用戶需要訪問同一個(gè)對(duì)象,可以創(chuàng)建同義詞,并進(jìn)行授權(quán),而不是每個(gè)用戶都訪問原對(duì)象。
四、
ORCAL數(shù)據(jù)庫(kù)的同義詞是一項(xiàng)極其便利的功能,可以使得數(shù)據(jù)庫(kù)的訪問更加直觀、靈活,同時(shí)也提高了數(shù)據(jù)庫(kù)的安全性和可維護(hù)性。本文介紹了同義詞的定義、用途、創(chuàng)建和使用技巧,并指出了使用同義詞需要注意的事項(xiàng)。希望本文能夠幫助ORCAL數(shù)據(jù)庫(kù)使用者更好地掌握同義詞的使用技巧,提高數(shù)據(jù)操作效率。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220oracle導(dǎo)入的同義詞其實(shí)就是一個(gè)創(chuàng)建語(yǔ)句而已,如果同義詞很多的話,直接用PL/SQL Developer的菜單欄的工具=>導(dǎo)出對(duì)象里面選擇需要洞輪廳導(dǎo)出的同義詞 命名為imp_synonym.sql 導(dǎo)出路徑比如設(shè)置位D盤根目錄 D:\ imp_synonym.sql 完成納隱后 打開cmd窗口 輸入 D:
進(jìn)入到D盤,然后sqlplus到目標(biāo)數(shù)據(jù)庫(kù),然后輸入 @imp_synonym.sql 或者直接寫全路徑
@D:\imp_synonym.sql直接執(zhí)行這個(gè)腳本文件桐汪就導(dǎo)入同義詞了。
SELECT * FROM SYS.ALL_SYNONYMS WHERE SYNONYM_NAME=’S’.里面有
同義詞
的表與用戶
同義詞權(quán)限管理
與同義詞相關(guān)的權(quán)限有CREATE SYNONYM、CREATE ANY SYNONYM、CREATE PUBLIC SYNONYM權(quán)限。
1:用戶在自己的模式下創(chuàng)建私有同義詞,這個(gè)用戶必須擁有CREATE SYNONYM權(quán)限,否則不能創(chuàng)建私有同義詞。
如下所示,用戶DM缺少CREATE SYNONYM權(quán)限,創(chuàng)建同義詞時(shí)會(huì)報(bào)ORA01031錯(cuò)誤
SQL> CREATE SYNONYM TEST FOR DM.TM_WGG_ATM_GTW_MON;
CREATE SYNONYM TEST FOR DM.TM_WGG_ATM_GTW_MON
ORA01031: insufficient privileges
用sys賬號(hào)給DM賬號(hào)賦予CREATE SYNONYM的權(quán)限
SQL> GRANT CREATE SYNONYM TO DM;
Grant succeeded.
然后創(chuàng)建私有同義詞
SQL> CREATE SYNONYM TEST FOR DM.TM_WGG_ATM_GTW_MON;
Synonym created
2:如果需要在其它模式下創(chuàng)建同義詞,則必須具有CREATE ANY SYNONYM的權(quán)限。
看下面的例子
用戶DM想創(chuàng)建SCOTT模式下的私有同義詞
SQL> CREATE SYNONYM SCOTT.EM FOR SOCTT.EMP;
CREATE SYNONYM SCOTT.EM FOR SOCTT.EMP
ORA01031: insufficient privileges
用sys賬號(hào)稿渣給DM賬號(hào)賦予CREATE ANY SYNONYM的權(quán)限
SQL> GRANT CREATE ANY SYNONYM TO DM;
Grant succeeded.
SQL> CREATE SYNONYM SCOTT.EM FOR SOCTT.EMP;
Synonym created
3:創(chuàng)建公有同義詞則需蠢賣要CREATE PUBLIC SYNONYM系統(tǒng)權(quán)限。
創(chuàng)建同義詞
創(chuàng)建同義詞的語(yǔ)法如下:
clip_image001
普通用法如下所示:
CREATE SYNONYM 同義詞名稱 FOR object ;
專有(私有)同義詞
CREATE SYNONYM SYSN_TEST FOR TEST;
公共同義詞
CREATE PUBLIC SYNONYM PUBLIC_TEST FOR TEST;
如果要?jiǎng)?chuàng)建一個(gè)遠(yuǎn)程的數(shù)據(jù)庫(kù)上的某張表的同義詞,需要先創(chuàng)建一個(gè)Database Link(數(shù)據(jù)庫(kù)連接)來擴(kuò)展訪問,然后再使用如下語(yǔ)句創(chuàng)建數(shù)據(jù)帶敬逗庫(kù)同義詞:create synonym table_name for table_name@DB_Link;
公共同義詞是和用戶的schema無關(guān)的,但是公共的意思并不是所有的用戶都可以訪問它,必須被授權(quán)后才能進(jìn)行;私有同義詞是schema的對(duì)象
查看同義詞
SQL> SELECT * FROM DBA_SYNONYMS WHERE SYNONYM_NAME IN ( ‘SYSN_TEST’,’PUBLIC_TEST’);
OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
PUBLIC PUBLIC_TESTETLTEST
ETLSYSN_TESTETLTEST
SQL> SELECT * FROM USER_SYNONYMS
使用同義詞
SELECT * FROM SYSN_TEST;
使用同義詞可以保證當(dāng)數(shù)據(jù)庫(kù)的位置或?qū)ο竺Q發(fā)生改變時(shí),
應(yīng)用程序
的代碼保持穩(wěn)定不變,僅需要改變同義詞;
當(dāng)使用一個(gè)沒有指定schema的同義詞是,首先在用戶自己的schema中尋找,然后再公共同義詞中尋找
刪除同義詞
DROP SYNONYM 同義詞名稱 ;
DROP SYNONYM SYSN_TEST;
DROP PUBLIC SYNONYM PUBLIC_TEST;當(dāng)同義詞的原對(duì)象被刪除是,同義詞并不會(huì)被刪除
編譯同義詞
ALTER SYNONYM T COMPILE; 當(dāng)同義詞的原對(duì)象被重新建立時(shí),同義詞需要重新編譯
對(duì)原對(duì)象進(jìn)行DDL操作后,同義詞的狀態(tài)會(huì)變成INVALID;當(dāng)再次引用這個(gè)同義詞時(shí),同義詞會(huì)自動(dòng)編譯,狀態(tài)會(huì)變成VALID,無需人工干預(yù),當(dāng)然前提是不改變?cè)瓕?duì)象的名稱
SQL> SELECT * FROM T;
ID NAME
SQL> SELECT * FROM TEST;
ID NAME
SQL> ALTER TABLE TEST ADD SEX NUMBER(1);
Table altered
SQL> SELECT OBJECT_NAME, STATUS FROM ALL_OBJECTS WHERE OBJECT_NAME=’T’;
OBJECT_NAME STATUS
T INVALID
問題錦集
1:公用同義詞與私有同義詞能否同名呢?如果可以,訪問同義詞時(shí),是共有同義詞還是私有同義詞優(yōu)先?
可以,如果存在公用同義詞和私有同義詞同名的情況,在訪問同義詞是,訪問的是私有同義詞的指向的對(duì)象。
2:為啥OE用戶創(chuàng)建的公用同義詞,HR用戶不能訪問呢?
因?yàn)镠R沒有訪問OE模式下對(duì)象的權(quán)限,如果OE模式給HR用戶賦予了SELECT對(duì)象等權(quán)限,那么HR用戶即可訪問。
3:對(duì)象、私有同義詞、公共同義詞是否可以存在三者同名的情況?
在用戶kerry下,創(chuàng)建表TEST
SQL>CREATE TABLE TEST
AS SELECT * FROM USER_OBJECTS WHERE 1= 0;
創(chuàng)建私有同義詞TEST
SQL> CREATE SYNONYM TEST FOR REF.REF_WGG_STUDENT;
CREATE SYNONYM TEST FOR REF.REF_WGG_STUDENT
ORA00955: name is already used by an existing object
注意:對(duì)象(表)與私有同義詞不能同名,否則會(huì)報(bào)ORA00955錯(cuò)誤
創(chuàng)建公共同義詞TEST,如下所示,公共同義詞可以對(duì)象同名
SQL> CREATE PUBLIC SYNONYM TEST FOR REF.REF_WGG_STUDENT;
Synonym created
訪問TEST時(shí),如下所示:它是表TEST的內(nèi)容,而不是公共同義詞的內(nèi)容
SQL> SELECT * FROM TEST;
OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP STATUS TEMPORARY GENERATED SECONDARY
刪除表TEST后,此時(shí)數(shù)據(jù)庫(kù)訪問的是公共同義詞
SQL> DROP TABLE TEST PURGE;
Table dropped
SQL> SELECT * FROM TEST;
ID NAME
1 12
SQL>
關(guān)于orcal數(shù)據(jù)庫(kù)同義詞的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技有限公司,經(jīng)過多年的不懈努力,公司現(xiàn)已經(jīng)成為一家專業(yè)從事IT產(chǎn)品開發(fā)和營(yíng)銷公司。廣泛應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò)、設(shè)計(jì)、SEO優(yōu)化、關(guān)鍵詞排名等多種行業(yè)!