新聞中心
ORCAL數(shù)據(jù)庫是Oracle公司開發(fā)的一種用于管理和處理企業(yè)級應用程序數(shù)據(jù)的關(guān)系數(shù)據(jù)庫管理系統(tǒng)。作為業(yè)內(nèi)最常用、最可靠的數(shù)據(jù)庫之一,ORCAL數(shù)據(jù)庫極大地促進了企業(yè)技術(shù)的發(fā)展。ORCAL數(shù)據(jù)庫強大而靈活的功能,為用戶提供了其他數(shù)據(jù)庫無法滿足的數(shù)據(jù)管理解決方案。

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


咨詢
建站咨詢
