管理其他對(duì)象_第1頁
管理其他對(duì)象_第2頁
管理其他對(duì)象_第3頁
管理其他對(duì)象_第4頁
管理其他對(duì)象_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第第12章章 管理其他對(duì)象管理其他對(duì)象 內(nèi)容提要n 在在Oracle中,除了表這種最基本的數(shù)據(jù)中,除了表這種最基本的數(shù)據(jù)庫對(duì)象以外,還可以使用很多其他的對(duì)庫對(duì)象以外,還可以使用很多其他的對(duì)象,包括索引、視圖、序列、數(shù)據(jù)庫鏈象,包括索引、視圖、序列、數(shù)據(jù)庫鏈接以及同義詞等,本章將逐一進(jìn)行介紹。接以及同義詞等,本章將逐一進(jìn)行介紹。121索n 1索引的概念n 一張表中可能容納上百萬條乃至更多的數(shù)據(jù)記錄。從如此大規(guī)模的數(shù)據(jù)集合中去查詢或定位需要的數(shù)據(jù),往往要消耗較長的時(shí)間。索引是一種與表相關(guān)的Oracle對(duì)象,合理地使用索引可以顯著提高查詢速度。n 索引的作用類似于圖書中的目錄。如果沒有目錄,要在書中

2、查找需要的內(nèi)容則必須通讀全書,有了目錄,則只需要通過目錄就可以很快定位到所需內(nèi)容的頁。n 索引與表一樣,需要分配實(shí)際的存儲(chǔ)空間。索引存儲(chǔ)索引與表一樣,需要分配實(shí)際的存儲(chǔ)空間。索引存儲(chǔ)的數(shù)據(jù)比表少得多,它只存儲(chǔ)索引列值和記錄號(hào)。盡的數(shù)據(jù)比表少得多,它只存儲(chǔ)索引列值和記錄號(hào)。盡可能地將索引與表數(shù)據(jù)分離存儲(chǔ),可能地將索引與表數(shù)據(jù)分離存儲(chǔ),因?yàn)槿绻鼈兇娣旁谖挥诓煌脖P上的不同的表空問中,則可以實(shí)現(xiàn)并行讀取,避免IO沖突,提高數(shù)據(jù)訪問性能。 索引只影響sQL語句的執(zhí)行性能,但有無索引并不影響SQL語句的執(zhí)行,sQL語句本身也不需作任何改動(dòng)。根據(jù)需要可以隨時(shí)建立或刪除索引,這不會(huì)影響表中的數(shù)據(jù)。n一個(gè)數(shù)

3、據(jù)庫表上可以有多個(gè)索引,例如,學(xué)生表可以有學(xué)號(hào)、姓名等的索引。但是索引不是越多越好,因?yàn)樗饕荒芴岣卟樵兯俣?,?duì)于數(shù)據(jù)增刪改卻會(huì)引起Oracle對(duì)相關(guān)索引的自動(dòng)更新維護(hù),因此,開發(fā)人員或DBA應(yīng)該根據(jù)實(shí)際情況,合理建立索引。 2索弓l類型 n 索引的類型很多。按照索引數(shù)據(jù)的存儲(chǔ)方式,可以分為B樹索引、位圖索引。B樹索引是以B樹結(jié)構(gòu)來組織并存放索引數(shù)據(jù)的,是最為常用的索引類型,默認(rèn)是升序的。如果表數(shù)據(jù)規(guī)模大,并且經(jīng)常在WHERE子句中引用某列或某幾列(列的重復(fù)值很少),則應(yīng)該基于該列或該幾列建立B樹索引。位圖索引是以位值來表示索引數(shù)據(jù)的,主要用在數(shù)據(jù)倉庫環(huán)境,適合重復(fù)值很多、不同值相對(duì)固定的列上

4、,如學(xué)生表的性別、系部列。n 按照索引列值的存儲(chǔ)順序,可以分為正向索引與反向索引。反向索引是指索引列值按照字節(jié)相反順序存放,如學(xué)生的學(xué)號(hào)56137、56121、56145、56187,反向索引存儲(chǔ)的結(jié)果是12165、54165、73165、78165。反向索引好處在于使得索引數(shù)據(jù)分布均勻(關(guān)于索引的結(jié)構(gòu)與存,此處不予介紹),避免了I0瓶頸。這種索引適于順序遞增或順序遞減的列上。n 按照索引列值的唯一性,可以分為唯一索按照索引列值的唯一性,可以分為唯一索引和非唯一索引。引和非唯一索引。n 另外,按照索引所包含的列數(shù)可以把索引分按照索引所包含的列數(shù)可以把索引分為單列索引和復(fù)合索引。為單列索引和復(fù)合

5、索引。索引列只有一的索引稱為單列索引;對(duì)多個(gè)列的同時(shí)索引稱為復(fù)合索引。n 此外,還有一種索引稱為函數(shù)索引函數(shù)索引,就是在要建立索引的一列或多列上使用函數(shù)或達(dá)式。n索引的相關(guān)信息如索引類型、索引相關(guān)聯(lián)的表、是否唯一索引等,可以通過查詢數(shù)字典dba_indexes或user_indexes得到,而索引對(duì)應(yīng)在哪個(gè)索引列上,則可以查詢數(shù)據(jù)字dba_ind_columns 或user_ind_columnsn 12.1.2 創(chuàng)建索引n建立索引需要具有CREATE INDEX系統(tǒng)權(quán)限。建立函數(shù)索引還必須具有QUERY REWRITE系統(tǒng)權(quán)限。索引順序可以升序(默認(rèn)),用ASC表示,也可以降序,用DESC

6、表示。n 與表類似,索引在建立時(shí)也可以指定TABLESPACE選項(xiàng)。 1B樹索引n例如,對(duì)于學(xué)生表,經(jīng)常需要按姓名查找。為了提高查找速度,現(xiàn)在為姓名列建立索引,索引名為ind_sname。 建立索引的命令為:n sUL0REATE INDEX 1nd_sname ON stud(Sname);n 當(dāng)執(zhí)行如下命令時(shí)就會(huì)使用到索引ind_sname。n SQLSELECTFROM stud WHERE sname=t張三;n SQLSELECTFROM stud WHERE sname LIKE張-;n 但是查詢條件中當(dāng)通配符位于匹配串開頭部分時(shí)查詢將不會(huì)用到索引。如下查詢就不會(huì)使用索引ind_s

7、name。n SQLSELECTFROM Stud WHERE sname LIKE張-;n 再如,為年齡列建立降序索引,并且將索引存儲(chǔ)在索引表空間indx,命令為:n SQLCREATE INDEX ind_sage ON stud(sage DESC)TABLESPACE indx j 2位圖索引n對(duì)于學(xué)生表的性別列,只有男、女兩種不同取值,并且經(jīng)常需要基于該列進(jìn)行數(shù)據(jù)統(tǒng)計(jì)、數(shù)據(jù)匯總操作,因此需要為性別列建立位圖索引,索引名為ind_ssex。nSQLCREATE BITMAP INDEX ind_ssex ON stud(Ssex);n但是,當(dāng)執(zhí)行如下命令時(shí)不會(huì)使用到索引indssex。

8、n SQLSELECT COUNT(*)FROM stud WHERE ssex=男;n因?yàn)槲粓D索引在建立了之后,不像B樹索引那樣會(huì)馬上引用,還必須使用如下命令收集基表統(tǒng)計(jì)信息,之后才能確定是否引用位圖索引。nSQLANALYZE TABLE stud ESTIMATE STATISTICS;n 只有執(zhí)行了上述的收集基表統(tǒng)計(jì)信息后,相應(yīng)的位圖索引才可能被使用。 3函數(shù)索引 如果姓名列值包含有大、小寫字母,那么查詢條件往往會(huì)寫成WHERE UPPER(snamel)=JOHN,但是此時(shí)卻不會(huì)引用索引ind_sname。如果這樣的查詢要求是經(jīng)常性的,那么應(yīng)該為此列建立基于函數(shù)的索引,索引名為ind

9、_fsname。建立索引的命令為:nSQLCREATE INDEX ind-fsname ON stud(UPPER(sname);n同樣,如下的函數(shù)索引要想被引用,也需要執(zhí)行ANALYZE TABLE命令。 nSQLANALYZE TABLE stud ESTIMATE STATISTICS; 索引,一般都需要使用命令CREATE INDEX來建立,但是Oracle也會(huì)自動(dòng)建立一些索引,例如,系統(tǒng)會(huì)在主鍵約束列或唯一約束列上自動(dòng)建立索引。12.1.3 查找未用索引n前邊提到,索引不一定對(duì)于每個(gè)查詢都能起作用。例如,索引ind_sname對(duì)“SELECT * FROM stud WHERE U

10、PPER(sname)=JOHN”語句的執(zhí)行就不會(huì)提供任何幫助。那么如何檢查一個(gè)索引有沒有用呢?n 以索引ind_sname的使用為例,檢查步驟如下。 (1)發(fā)布如下命令,開始監(jiān)視指定索引的使用。 SQLALTER INDEX ind_sname MONITORING USAGE ; (2)執(zhí)行相應(yīng)的SQL查詢,如: SQLSELECTFROM stud WHERE upper(sname)=JOHN-; (3)在v$object_usage中收集了有關(guān)索引使用的統(tǒng)計(jì)信息。從USED列的值可以判斷相關(guān)索引是否被用。n例如,下面給出了一個(gè)顯示示例:n SQLSELECT * FROM V$obj

11、 ect_usage;n INDEX_NAME TABLE_NAME MON USE START_MONITORING END_MONITORINGn 一一一一一一一一一一 一一一一一一一一一一 一一一 一一一 一一一一一一一一一一一一一一一一一一一 一一一一一一一一一一一一一一一一一一一n IND_FSNAME STUD NO YES 08172008 16:42:04 08172008 17:47:06n IND_SNAME STUD YES NO 08172 008 17:45:51n 結(jié)果顯示了2個(gè)索引的使用情況,各列的含義依次為索引名、索引相關(guān)聯(lián)的表、是否正處于監(jiān)視、監(jiān)視時(shí)間內(nèi)是否使

12、用了索引、監(jiān)視的開始時(shí)問、監(jiān)視的結(jié)束時(shí)間。最后一列值顯示為空說明還未結(jié)束監(jiān)視,需要執(zhí)行第(4)步結(jié)束。 (4)發(fā)布如下命令,結(jié)束對(duì)指定索引的監(jiān)視。 SQLALTER INDEX ind sname NOMONITORING USAGE;12.1.4 重建索引n如果在索引列上頻繁地執(zhí)行更新或刪除操作,則不可避免地會(huì)產(chǎn)生存儲(chǔ)碎片,此時(shí)應(yīng)該重建索引。重建索引實(shí)際上是在指定表空間上重新建立一個(gè)新的索引,然后再刪除原來的索引。索引重建之后能夠消除碎片提高空間使用率,另外也可以通過重建操作將索引數(shù)據(jù)移到另外的表空間中。 例如,將索引indsname進(jìn)行重建:n SQI-ALTER INDEX jwcuse

13、r.ind_sname REBUILD;n 再如,將索引indsname重建到表空間indx02:n SQL-ALTER INDEX jwcuser.ind_sname REBUILD TABLESPACE indx02;n 需要注意的是,如果表被重建,則由于重建表導(dǎo)致數(shù)據(jù)行的rowid發(fā)生了改變,因此還需要對(duì)該表上的索引進(jìn)行重建。1215刪除索引n 對(duì)于不常使用或根本未用的索引,應(yīng)該及時(shí)將其刪除,以便減少Oracle對(duì)該索引的維護(hù)工作。另外,有時(shí)需要大量加載數(shù)據(jù),加載數(shù)據(jù)時(shí)系統(tǒng)也會(huì)同時(shí)給索引增加數(shù)據(jù),為了加快數(shù)據(jù)加載速度,在加載之前最好先刪除索引,加載之后再重新創(chuàng)建索引。n 例如,將索引in

14、dsname刪除,相應(yīng)的命令如下。nSQL,DROP INDEX ind_sname;122視 圖n 視圖由一個(gè)SQL查詢得到的結(jié)果集構(gòu)成。它是一種虛表,在數(shù)據(jù)庫中只保存視圖的定義,不包含實(shí)際數(shù)據(jù)也不占用存儲(chǔ)空間。用戶可以像使用表一樣來使用視圖,經(jīng)常通過視圖向基表(即視圖定義時(shí)所引用的表)插入或更新數(shù)據(jù)。 使用視圖具有如下的很多優(yōu)勢。 (1)將復(fù)雜的查詢定義成視圖,然后基于視圖作查詢,可以簡化用戶數(shù)據(jù)查詢和處理操作。 (2)視圖可以對(duì)機(jī)密數(shù)據(jù)提供安全保護(hù),隱藏基表的數(shù)據(jù)。 (3)可以基于相同的基表定義多個(gè)不同的視圖,供不同用戶使用。1221創(chuàng)建視圖創(chuàng)建視圖使用CREATE VIEW命令,語法格

15、式如下:CREATE 0R REPLACE VIEW視圖名 (列名1,列名2,) As SELECT語句 WITH CHECK OPTI0N WITH READ 0NLY其中(1)OR REPLACE:允許新視圖替代一個(gè)已存在的同名的視圖。(2)WITH CHECK OPTION:在視圖上進(jìn)行UPDATE修改或INSERT插入操作時(shí),必須要滿足“SELECT語句”所指定的條件 (3)WITH READ ONLY:僅允許對(duì)視圖進(jìn)行查詢。n 【例12-l】 創(chuàng)建包含學(xué)生的學(xué)號(hào)、姓名與學(xué)生年齡的視圖。 SULCREATE VIEW v_Stud AS SELECT sno,sname,sage FR

16、OMstud:n 如果要顯示每個(gè)同學(xué)及其年齡信息,就可以直接查詢視圖v_stud:n SQLSELECT sname,sage FROM v_stud;n 當(dāng)希望通過視圖vstud添加一個(gè)新同學(xué)時(shí),可以執(zhí)行下面的命令:n SQLINSERT INTO v_stud VALUES(03101,王勇力,21);n 上述命令雖然是向視圖v_stud中插入數(shù)據(jù),但實(shí)際上會(huì)轉(zhuǎn)化為向表stud的插入。這正是視圖的優(yōu)勢之一,即通過向視圖進(jìn)行增加、修改、刪除操作,就可以間接地實(shí)現(xiàn)向基表的增加、修改與刪除。通過視圖操縱基表比直接操縱基表更加安全。n【例12-2】 創(chuàng)建一個(gè)視圖,包括學(xué)生的姓名與學(xué)生各科總成績的列

17、表。 SQLCREATE VIEW v_cjd(v_name,v_cj)AS SELECT sname,SUM(grade) FROM stud ,sc WHERE stud.sno=sc.sno GROUP BY sname;n 必須注意,如果SELECT查詢包括了函數(shù)或表達(dá)式,則必須為該列定義名字。如上例,為SUM(grade)列定義列名為v_cj。也可以采用直接定義列別名的方法,如下: SQLCREATE VIEW v_cjd AS SELECT sname,SUM(grade) V_CJ FROM stud,sc WHERE studsno=scsno GROUP BY sname;n

18、 【例12-3】 希望各系部管理員只能對(duì)自己系部的學(xué)生進(jìn)行維護(hù),即對(duì)于計(jì)算機(jī)系管理員來說,他只能看到自己系部的學(xué)生,增加的新生也必須屬計(jì)算機(jī)系,因此應(yīng)該使用如下的命令建立計(jì)算機(jī)系學(xué)生的視圖。 SQLCREATE VIEW V_cs_stud AS SELECT * FROM stud WHERE sdept=CS WITH CHECK OPTION; 此后,計(jì)算機(jī)系管理員可以通過如下命令向stud表增加一位計(jì)算機(jī)系的新同學(xué)。 SQLINSERT INTO v_cs_stud VALUES(95010,王力,男,20,CS,NULL); 由于在視圖定義時(shí)帶有WnH CHECK OPTION子句,

19、則在插入、修改時(shí)必須確保數(shù)據(jù)滿足wITH CHECK OPTION子句之前WHERE子句中的條件。例如,如果執(zhí)行如下任一語句: SQLINSERT INTO vcsstud VALUES(95004。,張立。,男-,19,MA,NULL); SQLUPDATE v_cs_stud SET sdept=EN:n則均會(huì)返回錯(cuò)誤信息(ORA一01402:視圖WH CHECK OPTIDN違反WHERE子句)。 因?yàn)閣ITH CHECK OPTION子句,將確保當(dāng)對(duì)視圖進(jìn)行UPDATE、INSERT、DELETE操作時(shí),必須滿足視圖定義的條件sdept=cs,而系部為MA或EN均違背了該條件,導(dǎo)致插入

20、或修改操作失敗。1.2.2 對(duì)視圖更新的限制n使用視圖時(shí)必須要注意的一點(diǎn)就是,并不是所有的視圖都能夠更新。如果在創(chuàng)建視圖的命令中,包含了某些子句或關(guān)鍵字,則通過該視圖對(duì)基表進(jìn)行增加、刪除或者修改數(shù)據(jù)時(shí),會(huì)或多或少地受到一些限制,具體限制如下。n 如果視圖定義時(shí)包含了如下某一項(xiàng),將不能夠通過視圖刪除一行。n (1)使用分組函數(shù)或GROUPBY子句。n (2)使用DISTINCT關(guān)鍵字。n (3)使用了偽列ROWNUM關(guān)鍵字。n 如果視圖定義時(shí)包含了如下某一項(xiàng),將不能夠編輯視圖數(shù)據(jù)。n (1)使用分組函數(shù)或GROUPBY子句。n (2)使用DISTINCT關(guān)鍵字。n (3)使用了偽列ROWNUM關(guān)

21、鍵字。n (4)列由表達(dá)式定義。n如果視圖定義時(shí)包含了如下某一項(xiàng),將不能夠通過視圖添加數(shù)據(jù)。n (1)使用分組函數(shù)或GROUPBY子句。n (2)使用DISTINCT關(guān)鍵字。n (3)使用了偽列ROWNUM關(guān)鍵字。n (4)列由表達(dá)式定義。n (5)基表中有但是視圖中沒有的NOTNULL列。12.2.3 維護(hù)視圖n如果一個(gè)視圖的定義需要改變,則可以直接發(fā)出CREATE OR REPLACE VIEW命令完成。例如,要在視圖v_cjd中增加學(xué)號(hào)一列,則更改的命令如下:n SQLCREATE OR REPLACE VIEW Vcjd(v_no,v_name,v_cj)ASn SELECT stud

22、sno,sname,SUM(grade)n FROM stud,sc WHERE studsno:sesnon GROUP BY studsno,sname;n 刪除視圖的操作很簡單。例如,刪除視圖v_cjd的命令為:nSQLDROP VIEW v_cj d;n視圖的名稱及其定義的文本可以通過dba_views或user_views查詢。 123序 列n序列用于產(chǎn)生一系列唯一的整數(shù)值。通常使用序列來自動(dòng)產(chǎn)生表中的主鍵值。n 創(chuàng)建序列時(shí),通常要定義序列的名稱、開始值、增量(正數(shù)表示序列值遞增,負(fù)數(shù)則n表示遞減)、最大或最小值,以及達(dá)到最大或最小值時(shí)是否循環(huán)等。n 創(chuàng)建序列使用CREATE SEQ

23、UENCE命令。例如:n SQLCREATE SEQUENCE stud_seqn INCREMENT BY 1n START WITH 1n NOMAXVALUEn CACHE 10n NOCYCLE;n 上述語句創(chuàng)建了一個(gè)從I開始每次遞增1的序列stud_seq,其中STARTWITH指定開始值,INCREMENT BY指定增量,NOMAXVALUE指定序列最大值沒有上限,CACHE表示為序列在內(nèi)存中預(yù)分配序列值的數(shù)目(可以加快對(duì)序列值的訪問),NOCYCLE表示序列值不循環(huán)使用。n序列創(chuàng)建之后,就可以使用序列來得到一系列的唯一值了。使用序列需要用到兩個(gè)偽n列nextval與currval

24、。nextval返回序列的下一個(gè)值,每一次返回的值都不同(即使是不同n的用戶引用),cunwal返回序列的當(dāng)前值。例如,要利用序列stud_seq,向?qū)W生表添加兩個(gè)n新學(xué)生的信息:n SQLINSERT INTO stud(Sno,sname)n VALUES(stud_seqnextval,t張強(qiáng));n SQLINSERT INTO stud(sno,sname)n VALUES(studseqnextval,-王明);n 添加的第一個(gè)學(xué)生張強(qiáng)與第二個(gè)學(xué)生王明,其學(xué)號(hào)是不一樣的。如果張強(qiáng)的學(xué)號(hào)為1,n那么王明的學(xué)號(hào)就是2,以后學(xué)生的學(xué)號(hào)就會(huì)是3、4、5。n 如果要查詢序列當(dāng)前值是多少,可以使

25、用如下的方法:n SQLSELECT stud seq.currval FROM dual;n 值得注意的是,表中的學(xué)號(hào)值有可能會(huì)不連續(xù)。例如,學(xué)號(hào)有1、2、3、11、12的情況出現(xiàn),為什么呢?n 由于CACHE緩存了lO個(gè)序列值,那么使用時(shí)會(huì)依次從緩存取出,但是如果只取了1、2、3、服務(wù)器斷電了,那么當(dāng)再次使用序列時(shí),其緩存中是另外的10個(gè)值(1120),而410的序列值丟失了。另外,ROLLBACK也可能導(dǎo)致這種情形,因?yàn)榛赝酥荒芑赝薉ML操作,卻不能回退序列。123.2維護(hù)序列n 利用ALTER SEQUENCE命令可以對(duì)序列進(jìn)行修改。除了序列的開始值之外,其他各項(xiàng)都可以進(jìn)行修改。例如,

26、將序列stud_seq的最大值限制為9999:n SQLALTER SEQUENCE stud_seq MAXVALUE 9999 ;n 如果要改變序列的開始值,必須先刪除序列然后再重新創(chuàng)建。n刪除序列使用DROP SEQuENCE命令完成,例如:n SQLDROP SEQUENCE stud_seq;n 查詢數(shù)據(jù)字典dba_sequences、user_sequences、all_sequences可以獲得序列的相關(guān)信息。n例如,用戶jwcuse!查詢所創(chuàng)建的全部序列的信息:nSQL一CONN jwcuser/welcomel35nSQL一SELECT * FROM user_sequenc

27、es ;124數(shù)據(jù)庫鏈接n 在一個(gè)分布式數(shù)據(jù)庫系統(tǒng)中,包括了不同地理位置的多個(gè)數(shù)據(jù)庫。當(dāng)用戶正在使用一個(gè)數(shù)據(jù)庫A,而又要同時(shí)使用另一個(gè)數(shù)據(jù)庫B中的數(shù)據(jù)時(shí),就需要建立A到B的數(shù)據(jù)庫鏈接。n 數(shù)據(jù)庫鏈接是指在分布式數(shù)據(jù)庫環(huán)境中的一個(gè)數(shù)據(jù)庫與另一個(gè)數(shù)據(jù)庫之間的通信路徑,它是一種數(shù)據(jù)庫對(duì)象。通過數(shù)據(jù)庫鏈接,使得所有能夠訪問這個(gè)數(shù)據(jù)庫的應(yīng)用程序,也可訪問另一個(gè)數(shù)據(jù)庫中的數(shù)據(jù)。n 這一點(diǎn)與一個(gè)數(shù)據(jù)庫作為客戶端通過網(wǎng)絡(luò)服務(wù)名訪問另一個(gè)數(shù)據(jù)庫的情形是不同的,因?yàn)檫@種情況下,用戶一個(gè)時(shí)刻僅使用一個(gè)數(shù)據(jù)庫。而數(shù)據(jù)庫鏈接,使得一個(gè)用戶同時(shí)使用兩個(gè)數(shù)據(jù)庫。但是,建立數(shù)據(jù)庫鏈接需要先建立網(wǎng)絡(luò)服務(wù)名。n 數(shù)據(jù)庫鏈接分公用

28、與私有兩種。一個(gè)公用數(shù)據(jù)庫鏈接對(duì)于數(shù)據(jù)庫中的所有用戶都是可用的,而一個(gè)私有數(shù)據(jù)庫鏈接僅對(duì)創(chuàng)建它的用戶可用。1創(chuàng)建數(shù)據(jù)庫鏈接n 創(chuàng)建數(shù)據(jù)庫鏈接,必須具有CREATE DATABASE L,INK系統(tǒng)權(quán)限,使用CREATEnDATABASE【,INK命令完成;創(chuàng)建公共數(shù)據(jù)庫鏈接,就要具有CREATE PUBIdC DATABASE L,INK系統(tǒng)權(quán)限,使用帶有PuBLIC關(guān)鍵字的CREATE DATABASE LINK命令才能完成。n 例如,在銀行系統(tǒng)中,北京與上海各有一個(gè)數(shù)據(jù)庫,而且北京有時(shí)候要同時(shí)訪問上海的數(shù)據(jù),那么就需要在北京數(shù)據(jù)庫中,建立一個(gè)指向上海數(shù)據(jù)庫的數(shù)據(jù)庫鏈接,步驟如下: (1)在

29、北京數(shù)據(jù)庫服務(wù)器建立一個(gè)網(wǎng)絡(luò)服務(wù)名shanghaidb,代表上海數(shù)據(jù)庫。 (2)在北京數(shù)據(jù)庫中,建立到上海數(shù)據(jù)庫的數(shù)據(jù)庫鏈接dblink_shn SQL-c0NN bjuserpasswdlBeij ingn SQL-CREATE DATABASE LINK dblink_sh CONNECT TO shuser IDENTIFIED BY passwd2 USING shanghaidb;n 其中,shuser為上海數(shù)據(jù)庫中的用戶名;數(shù)據(jù)庫鏈接名dblink_sh需要與上海數(shù)據(jù)庫的數(shù)據(jù)庫名一致。 2使用數(shù)據(jù)庫鏈接n 建立好數(shù)據(jù)庫鏈接后,就可以在北京數(shù)據(jù)庫中,同時(shí)訪問上海數(shù)據(jù)庫了。例如:nSQ

30、L一conn bjuserpasswd1BeijingnSQL-SELECT * FROM t1:nSQL-SELECT * FROM t2dklink_sh;n*連接到北京數(shù)據(jù)庫*n*訪問北京數(shù)據(jù)庫的表tl*n*訪問上海數(shù)據(jù)庫的表t2*nSQLSELECT * FROM t1, t2dblink_sh;t將兩地?cái)?shù)據(jù)庫表連接查詢*3刪除數(shù)據(jù)庫鏈接n通過dbadblinks、userdb一1inks、alldblinks可以了解已有數(shù)據(jù)庫鏈接信息,可以將不再需要的刪除,命令為 DROPPUBLIC DATABASE LINK。n 例如,刪除自己創(chuàng)建的數(shù)據(jù)庫鏈接dblink_sh,使用如下命令即可。 nSQLDROP DATABASE LINK dbl ink-sh;125同 義 詞n 同義詞是表、視圖、序列、存儲(chǔ)過程或其他Oracle對(duì)象的一個(gè)別名。使用同義詞,可以簡化對(duì)象的引用長度,而且可以屏蔽對(duì)象的實(shí)際名

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論