版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第9章模式對(duì)象本章內(nèi)容容模式概念念表管理索引管理理分區(qū)表與與分區(qū)索索引的管管理視圖、序序列、同同義詞、、數(shù)據(jù)庫(kù)庫(kù)鏈接管管理本章要求求掌握表的的管理掌握索引引的管理理掌握分區(qū)區(qū)的概念念及分區(qū)區(qū)管理了解視圖圖、序列列、同義義詞、數(shù)數(shù)據(jù)庫(kù)鏈鏈接等的的管理9.1模式模式概念念模式與用用戶的關(guān)關(guān)系模式選擇擇與切換換模式概念念是指一系系列邏輯輯數(shù)據(jù)結(jié)結(jié)構(gòu)或?qū)?duì)象的集集合。模式與用用戶的關(guān)關(guān)系模式與用用戶相對(duì)對(duì)應(yīng),一一個(gè)模式式只能被被一個(gè)數(shù)數(shù)據(jù)庫(kù)用用戶所擁?yè)碛校⒉⑶夷J绞降拿Q稱與這個(gè)個(gè)用戶的的名稱相相同。通常情況況下,用用戶所創(chuàng)創(chuàng)建數(shù)據(jù)據(jù)庫(kù)對(duì)象象都保存存在與自自己同名名的模式式中。同一模式式中數(shù)據(jù)據(jù)庫(kù)對(duì)象象的名稱稱必須惟惟一,而而在不同同模式中中的數(shù)據(jù)據(jù)庫(kù)對(duì)象象可以同同名。默認(rèn)情況況下,用用戶引用用的對(duì)象象是與自自己同名名模式中中的對(duì)象象,如果果要引用用其他模模式中的的對(duì)象,,需要在在該對(duì)象象名之前前指明對(duì)對(duì)象所屬屬模式。。模式選擇擇與切換換如果用戶戶以NORMAL身份登錄錄,則進(jìn)進(jìn)入同名名模式;;若以SYSDBA身份登錄錄,則進(jìn)進(jìn)入SYS模式;如果以SYSOPER身份登錄錄,則進(jìn)進(jìn)入PUBLIC模式。9.2表創(chuàng)建表表約束的的管理表參數(shù)設(shè)設(shè)置修改表刪除表利用OEM管理表9.2..1創(chuàng)建表表的創(chuàng)建建創(chuàng)建臨時(shí)時(shí)表利用子查查詢創(chuàng)建建表(1)表的創(chuàng)創(chuàng)建表的規(guī)劃劃與設(shè)計(jì)計(jì)表名稱列的數(shù)量量列名稱與與類(lèi)型表約束表內(nèi)部數(shù)數(shù)據(jù)的組組織方式式(標(biāo)準(zhǔn)準(zhǔn)表、索索引化表表、分區(qū)區(qū)表)表存儲(chǔ)位位置、存存儲(chǔ)空間間分配等等。使用CREATETABLE語(yǔ)句創(chuàng)創(chuàng)建表CREATETABLEtable_name(column_namedatatype[column_level_constraint]][,column__namedatatype[column_level_constraint]]…][,table_level_constraint])[parameter_list]];CREATETABLEemployee((empnoNUMBER((5)PRIMARYKEY,,enameVARCHAR2(15),,deptnoNUMBER(3))NOTNULLCONSTRAINTfk_empREFERENCESdept(deptno))TABLESPACEUSERSPCTFREE10PCTUSED40STORAGE(INITIAL50KNEXT50KMAXEXTENTS10PCTINCREASE25));表名(table_name)必須是合合法標(biāo)識(shí)識(shí)符,長(zhǎng)長(zhǎng)度為1~30字節(jié),并并且以字字母開(kāi)頭頭,可以以包含字字母(A~Z,a~z)、數(shù)字((0~9),下劃劃線(_)、美元元符號(hào)(($)和井號(hào)號(hào)(#)。此外外,表名名稱不能能是Oracle數(shù)據(jù)庫(kù)的的保留字字?jǐn)?shù)據(jù)類(lèi)型型(datatype))字符類(lèi)型型數(shù)字類(lèi)型型日期類(lèi)型型LOB類(lèi)型二進(jìn)制類(lèi)類(lèi)型行類(lèi)型CHAR(n)定長(zhǎng)字符符串,n的取值范范圍為1-2000字節(jié)VARCHAR2(n)可變字符符串,n取值范圍圍為1-4000字節(jié)自動(dòng)調(diào)整整數(shù)據(jù)長(zhǎng)長(zhǎng)度NCHAR(n)用來(lái)存儲(chǔ)儲(chǔ)Unicode類(lèi)型字符符串。NVARCHAR2((n)它用來(lái)存存儲(chǔ)Unicode類(lèi)型字符符串。LONG可變長(zhǎng)字字符列,,最大長(zhǎng)長(zhǎng)度為2GB用于不需需設(shè)置成成索引的的字符,,不常用用字符類(lèi)型型數(shù)字類(lèi)型型NUMBER(m,n)用于存儲(chǔ)儲(chǔ)整數(shù)和和實(shí)數(shù)。。m表示數(shù)值值的總位位數(shù)(精精度),,取值范范圍為1~38,默認(rèn)為為38;n表示小數(shù)數(shù)位數(shù),,若為負(fù)負(fù)數(shù)則表表示把數(shù)數(shù)據(jù)向小小數(shù)點(diǎn)左左邊舍入入,默認(rèn)認(rèn)值為0。日期類(lèi)型型DATE可以存儲(chǔ)儲(chǔ)的日期期范圍為為公元前前4712年1月1日到公元元4712年1月1日,由世世紀(jì)、年年、月、、日、時(shí)時(shí)、分、、秒組成成。可以以在用戶戶當(dāng)前會(huì)會(huì)話中使使用參數(shù)數(shù)NLS__DATE_FORMAT指定日期期和時(shí)間間的格式式,或者者使用TO_DATE函數(shù),將將表示日日期和時(shí)時(shí)間的字字符串按按特定格格式轉(zhuǎn)換換成日期期和時(shí)間間。TIMESTAMP[[(n)]:表示時(shí)時(shí)間戳,,是DATE數(shù)據(jù)類(lèi)型型的擴(kuò)展展,允許許存儲(chǔ)小小數(shù)形式式的秒值值。n表示秒的的小數(shù)位位數(shù),取取值范圍圍為1~9,默認(rèn)值值為6。TIMESTAMP[[(n)]WITHTIMEZONE:通過(guò)存存儲(chǔ)一個(gè)個(gè)時(shí)區(qū)偏偏差來(lái)擴(kuò)擴(kuò)展TIMESTAMP類(lèi)型。時(shí)時(shí)區(qū)偏偏差值為為相對(duì)于于通用協(xié)協(xié)調(diào)時(shí)間間(或稱稱UTC,以前稱稱為格林林威治時(shí)時(shí)間或GMT)的時(shí)差差。TIMESTAMP[[(n)]WITHLOCALTIMEZONE與TIMESTAMP[[(n)]WITHTIMEZONE的不同之之處在于于,存儲(chǔ)儲(chǔ)日期時(shí)時(shí)直接轉(zhuǎn)轉(zhuǎn)換為數(shù)數(shù)據(jù)庫(kù)時(shí)時(shí)區(qū)日期期,而讀讀取日期期時(shí)將數(shù)數(shù)據(jù)庫(kù)時(shí)時(shí)區(qū)日期期轉(zhuǎn)換為為用戶會(huì)會(huì)話時(shí)區(qū)區(qū)日期。。INTERVALYEAR(n)TOMONTH存儲(chǔ)以年年份和月月份表示示的時(shí)間間段。n是表示YEAR的最多數(shù)數(shù)字位數(shù)數(shù),默認(rèn)認(rèn)為2。例如,,INTERVAL''2-11'YEARTOMONTH表示2年11個(gè)月。INTERVALDAY((m)TOSECOND(n)存儲(chǔ)以天天數(shù)、小小時(shí)數(shù)、、分鐘數(shù)數(shù)和秒數(shù)數(shù)表示的的時(shí)間段段。m是表示DAY的最多數(shù)數(shù)字位數(shù)數(shù),默認(rèn)認(rèn)為2。n是表示SECOND的小數(shù)部部分的位位數(shù),默默認(rèn)為6。例如,,INTERVAL''510:30:40'DAYTOSECOND表示5天10小時(shí)30分40秒。LOB類(lèi)型CLOB用于存儲(chǔ)儲(chǔ)可變長(zhǎng)長(zhǎng)度的字字符數(shù)據(jù)據(jù),如文文本文件件等,最最大數(shù)據(jù)據(jù)量為4GB。NCLOB用于存儲(chǔ)儲(chǔ)可變長(zhǎng)長(zhǎng)度的Unicode字符數(shù)據(jù)據(jù),最大大數(shù)據(jù)量量為4GB。BLOB用于存儲(chǔ)儲(chǔ)大型的的、未被被結(jié)構(gòu)化化的可變變長(zhǎng)度的的二進(jìn)制制數(shù)據(jù)((如二進(jìn)進(jìn)制文件件、圖片片文件、、音頻和和視頻等等非文本本文件)),最大大數(shù)據(jù)量量為4GB。BFILE用于存儲(chǔ)儲(chǔ)指向二二進(jìn)制格格式文件件的定位位器,該該二進(jìn)制制文件保保存在數(shù)數(shù)據(jù)庫(kù)外外部的操操作系統(tǒng)統(tǒng)中,文文件最大大為4GB。二進(jìn)制類(lèi)類(lèi)型RAW((n)用于存儲(chǔ)儲(chǔ)可變長(zhǎng)長(zhǎng)度的二二進(jìn)制數(shù)數(shù)據(jù),n表示數(shù)據(jù)據(jù)長(zhǎng)度,,取值范范圍為1~2000字節(jié);LONGRAW用于存儲(chǔ)儲(chǔ)可變長(zhǎng)長(zhǎng)度的二二進(jìn)制數(shù)數(shù)據(jù),最最大存儲(chǔ)儲(chǔ)數(shù)據(jù)量量為2GB。行類(lèi)型ROWID行標(biāo)識(shí)符符,表中中行的物物理地址址的偽列列類(lèi)型。。ROWID類(lèi)型數(shù)據(jù)據(jù)由18位十六進(jìn)進(jìn)制數(shù)構(gòu)構(gòu)成,包包括對(duì)象象編號(hào)、、文件編編號(hào)、數(shù)數(shù)據(jù)塊編編號(hào)和塊塊內(nèi)行號(hào)號(hào)。UROWID行標(biāo)識(shí)符符,用于于表示索索引化表表中行的的邏輯地地址。約束(constraint)在Oracle數(shù)據(jù)庫(kù)中中對(duì)列的的約束包包括主鍵鍵約束、、惟一性性約束、、檢查約約束、外外鍵約束束和空/非空約束束等5中,定義義方法有有表級(jí)約約束和列列級(jí)約束束2種。參數(shù)(parameter__list)在定義表表時(shí),可可以通過(guò)過(guò)參數(shù)設(shè)設(shè)置表存存儲(chǔ)在哪哪一個(gè)表表空間中中,和存存儲(chǔ)空間間分配等等。(2)創(chuàng)建臨臨時(shí)表臨時(shí)表中中的數(shù)據(jù)據(jù)在特定定條件下下自動(dòng)釋釋放,但但其結(jié)構(gòu)構(gòu)將一直直存在。。根據(jù)臨時(shí)時(shí)表中數(shù)數(shù)據(jù)被釋釋放的時(shí)時(shí)間不同同,臨時(shí)時(shí)表分為為事務(wù)級(jí)級(jí)別的臨臨時(shí)表和和會(huì)話級(jí)級(jí)別的臨臨時(shí)表兩兩類(lèi)。ONCOMMITDELETEROWS///事務(wù)級(jí)臨臨時(shí)表ONCOMMITPRESERVEROWS///會(huì)話級(jí)臨臨時(shí)表語(yǔ)法使用CREATEGLOBALTEMPORARYTABLE語(yǔ)句創(chuàng)建建臨時(shí)表表使用ONCOMMIT子句說(shuō)明明臨時(shí)表表的類(lèi)型型,默認(rèn)認(rèn)為事務(wù)務(wù)級(jí)別的的臨時(shí)表表。事務(wù)級(jí)別別的臨時(shí)時(shí)表是在在事務(wù)提提交時(shí)系系統(tǒng)自動(dòng)動(dòng)刪除表表中所有有記錄。。CREATEGLOBALTEMPORARYTABLEtran_temp((IDNUMBER((2)PRIMARYKEY,,nameVARCHAR2(20))ONCOMMITDELETEROWS;;會(huì)話級(jí)別別的臨時(shí)時(shí)表是在在會(huì)話終終止時(shí)系系統(tǒng)自動(dòng)動(dòng)刪除表表中所有有記錄。。CREATEGLOBALTEMPORARYTABLEsess_temp((IDNUMBER((2)PRIMARYKEY,,nameVARCHAR2(20))ONCOMMITPRESERVEROWS;(3)利用子子查詢創(chuàng)創(chuàng)建表語(yǔ)法CREATETABLEtable__name(column_name[[column_level_constraint][,column__name[[column_level_constraint]]…][,table_level_constraint])[parameter_list]]ASsubquery;;注意通過(guò)該方方法創(chuàng)建建表時(shí),,可以修修改表中中列的名名稱,但但是不能能修改列列的數(shù)據(jù)據(jù)類(lèi)型和和長(zhǎng)度;;源表中的的約束條條件和列列的缺省省值都不不會(huì)復(fù)制制到新表表中;子查詢中中不能包包含LOB類(lèi)型和LONG類(lèi)型列;;當(dāng)子查詢?cè)儣l件為為真時(shí),,新表中中包含查查詢到的的數(shù)據(jù);;當(dāng)查詢?cè)儣l件為為假時(shí),,則創(chuàng)建建一個(gè)空空表。創(chuàng)建一個(gè)個(gè)標(biāo)準(zhǔn)表表,保存存工資高高于3000的員工的的員工號(hào)號(hào)、員工工名和部部門(mén)號(hào)。。語(yǔ)句為為CREATETABLEemp__select(emp_no,emp__name,dept_no)ASSELECTempno,,ename,,deptnoFROMemployeeWHEREsal>>3000;創(chuàng)建一個(gè)個(gè)會(huì)話級(jí)級(jí)臨時(shí)表表,保存存部門(mén)號(hào)號(hào)、部門(mén)門(mén)人數(shù)和和部門(mén)的的平均工工資。CREATEGLOBALTEMPORARYTABLEept__tempONCOMMITPRESERVEROWSASSELECTdeptno,count(*))num,avg((sal)avgsalFROMempGROUPBYdeptno;;9.2..2表約束約束的類(lèi)類(lèi)別定義約束束添加和刪刪除約束束設(shè)置約束束狀態(tài)約束的延延遲檢查查查詢約束束信息(1)約束的的類(lèi)別約束作用用是在表中中定義的的用于維維護(hù)數(shù)據(jù)據(jù)庫(kù)完整整性的一一些規(guī)則則。通過(guò)過(guò)對(duì)表中中列定義義約束,,可以防防止在執(zhí)執(zhí)行DML操作時(shí),,將不符符合要求求的數(shù)據(jù)據(jù)插入到到表中。。約束類(lèi)型型PRIMARYKEYUNIQUECHECKFOREIGNKEYNULL/NOTNULLPRIMARYKEY特點(diǎn)定義主鍵鍵,起惟惟一標(biāo)識(shí)識(shí)作用,,其值不不能為NULL,也不能能重復(fù);;一個(gè)表中中只能定定義一個(gè)個(gè)主鍵約約束;建立主鍵鍵約束的的同時(shí),,在該列列上建立立一個(gè)惟惟一性索索引,可可以為它它指定存存儲(chǔ)位置置和存儲(chǔ)儲(chǔ)參數(shù);;主鍵約束束可以是是列級(jí)約約束,也也可以是是表級(jí)約約束。UNIQUE特點(diǎn)定義為惟惟一性約約束的某某一列或或多個(gè)列列的組合合的取值值必須惟惟一;如果某一一列或多多個(gè)列僅僅定義惟惟一性約約束,而而沒(méi)有定定義非空空約束,,則該約約束列可可以包含含多個(gè)空空值;Oracle自動(dòng)在惟惟一性約約束列上上建立一一個(gè)惟一一性索引引,可以以為它指指定存儲(chǔ)儲(chǔ)位置和和存儲(chǔ)參參數(shù);惟一性約約束可以以是列級(jí)級(jí)約束,,也可以以是表級(jí)級(jí)約束。。在一個(gè)基基本表中中只能定定義一個(gè)個(gè)PRIMARYKEY約束,但但可定義義多個(gè)UNIQUE約束;對(duì)于指定定為PRIMARYKEY的一個(gè)列列或多個(gè)個(gè)列的組組合,其其中任何何一個(gè)列列都不能能出現(xiàn)空空值,而而對(duì)于UNIQUE所約束的的唯一鍵鍵,則允允許為空空。不能為同同一個(gè)列列或一組組列既定定義UNIQUE約束,又又定義PRIMARYKEY約束。PRIMARYKEY與UNIQUE比較CHECK特點(diǎn)檢查約束束用來(lái)限限制列值值所允許許的取值值范圍,,其表達(dá)達(dá)式中必必須引用用相應(yīng)列列,并且且表達(dá)式式的計(jì)算算結(jié)果必必須是一一個(gè)布爾爾值;約束表達(dá)達(dá)式中不不能包含含子查詢?cè)?,也不不能包含含SYSDATE、USER等SQL函數(shù),和和ROWID、ROWNUM等偽列;;一個(gè)列可可以定義義多個(gè)檢檢查約束束;檢查約束束可以是是列級(jí)約約束,也也可以是是表級(jí)約約束。概念FOREIGNKEY約束指定定某一個(gè)個(gè)列或一一組列作作為外部部鍵,其其中,包包含外部部鍵的表表稱為從從表,包包含外部部鍵所引引用的主主鍵或唯唯一鍵的的表稱主主表。系統(tǒng)保證證從表在在外部鍵鍵上的取取值要么么是主表表中某一一個(gè)主鍵鍵值或唯唯一鍵值值,要么么取空值值。以此此保證兩兩個(gè)表之之間的連連接,確確保了實(shí)實(shí)體的參參照完整整性。FOREIGNKEY特點(diǎn)定義外鍵鍵約束的的列的取取值要么么是主表表參照列列的值,,要么為為空;外鍵列只只能參照照于主表表中的主主鍵約束束列或惟惟一性約約束列;;可以在一一列或多多列組合合上定義義外鍵約約束;外鍵約束束可以是是列級(jí)約約束,也也可以是是表級(jí)約約束。NULL/NOTNULL特點(diǎn)在同一個(gè)個(gè)表中可可以定義義多個(gè)NOTNULL約束;只能是列列級(jí)約束束。(2)定義約約束列約束對(duì)某一個(gè)個(gè)特定列列的約束束,包含含在列定定義中,,直接跟跟在該列列的其他他定義之之后,用用空格分分隔,不必指定定列名;表約束與列定義義相互獨(dú)獨(dú)立,不不包括在在列定義義中。通通常用于于對(duì)多個(gè)個(gè)列一起起進(jìn)行約約束,與與列定義義用’,’分隔。定定義表約約束時(shí)必必須指出出要約束束的那些些列的名名稱。定義列級(jí)級(jí)約束的的語(yǔ)法為為:[CONSTRAINTconstraint_name]]constraint_type[[conditioin]];定義表級(jí)級(jí)約束的的語(yǔ)法為為:[CONSTRAINTconstraint_name]]constraint_type(([column1__name,column2_name,,…]|[condition]]);注意Oracle約束通過(guò)過(guò)名稱進(jìn)進(jìn)行標(biāo)識(shí)識(shí)。在定定義時(shí)可可以通過(guò)過(guò)CONSTRAINT關(guān)鍵字為為約束命命名。如如果用戶戶沒(méi)有為為約束命命名,Oracle將自動(dòng)為為約束命命名。創(chuàng)建一個(gè)個(gè)student表。CREATETABLEstudent(snoNUMBER(6))CONSTRAINTS_PKPRIMARYKEY,snameVARCHAR2(10)NOTNULL,sexCHAR(2))CONSTRAINTS_CK1CHECK(sexin(('M'',''F'))),sageNUMBER((6,2),CONSTRAINTS__CK2CHECK(sagebetween18and60));創(chuàng)建一個(gè)個(gè)course表,同時(shí)時(shí)為主鍵鍵約束列列上的唯唯一性索索引設(shè)置置存儲(chǔ)位位置和存存儲(chǔ)參數(shù)數(shù),語(yǔ)句句為CREATETABLEcourse(cnoNUMBER((6)PRIMARYKEY,,cnameCHAR(20)UNIQUEUSINGINDEXTABLESPACEindxSTORAGE(INITIAL64KNEXT64K));創(chuàng)建一個(gè)個(gè)SC表,語(yǔ)句句為CREATETABLESC(snoNUMBER(6))REFERENCESstudent(sno)),cnoNUMBER(6))REFERENCEScourse(cno),,gradeNUMBER((5,2),CONSTRAINTSC_PKPRIMARYKEY(sno,cno));定義列級(jí)級(jí)FOREIGNKEY約束[CONSTRAINTconstraint_name]][FOREIGNKEY]]REFERENCESref_table_name((column_name,…)定義表級(jí)級(jí)FOREIGNKEY約束[CONSTRAINTconstraint_name]]FOREIGNKEY((column_name,,…)REFERENCESref_table_name((column_name,…)[ONDELETECASCADE||SETNULL]];ONDELETECASCADE刪除子表表中所有有相關(guān)記記錄ONDELETESETNULL將子表中中相關(guān)記記錄的外外鍵約束束列值設(shè)設(shè)置為NULLONDELETERESTRICTED受限刪除除,即如如果子表表中有相相關(guān)子記記錄存在在,則不不能刪除除主表中中的父記記錄,默默認(rèn)引用用方式。。DEFAULT如果用戶戶在插入入新行時(shí)時(shí)沒(méi)有顯顯示為列列提供數(shù)數(shù)據(jù),系系統(tǒng)將默默認(rèn)值賦賦給該列列。語(yǔ)法[CONSTRAINT<<約束名>]DEFAULT表達(dá)式(3)添加和和刪除約約束添加約束束語(yǔ)法為為:ALTERTABLEtable_nameADD[[CONSTRAINTconstraint_name]constraint_type((column1_name,column2__name,…)[condition];;創(chuàng)建一個(gè)個(gè)player表CREATETABLEplayer(IDNUMBER(6)),snoNUMBER(6)),snameVARCHAR2((10)),sageNUMBER(6,,2),,resumeVARCHAR2((1000));添加主鍵鍵約束ALTERTABLEplayerADDCONSTRAINTP__PKPRIMARYKEY((ID));添加惟一一性約束束ALTERTABLEplayerADDCONSTRAINTP_UKUNIQUE((sname));添加檢查查約束ALTERTABLEplayerADDCONSTRAINTP_CKCHECK((sageBETWEEN20AND30);;添加外鍵鍵約束ALTERTABLEplayerADDCONSTRAINTP_FKFOREIGNKEY(sno)REFERENCESstudent(sno)ONDELETECASCADE;;添加空/非空約束束為表列添添加空/非空約束束時(shí)必須須使用MODIFY子句代替替ADD子句ALTERTABLEplayerMODIFYresumeNOTNULL;ALTERTABLEplayerMODIFYresumeNULL;刪除約束束使用ALTERTABLE…DROP語(yǔ)句刪除除已經(jīng)定定義的約約束。可以通過(guò)過(guò)直接指指定約束束的名稱稱來(lái)刪除除約束,,或指定定約束的的內(nèi)容來(lái)來(lái)刪除約約束。刪除指定定內(nèi)容的的約束ALTERTABLEplayerDROPUNIQUE((sname));刪除指定定名稱的的約束ALTERTABLEplayerDROPCONSTRAINTP__CK;;刪除主鍵鍵約束、、唯一性性約束的的同時(shí)將將刪除唯唯一性索索引,如如果要在在刪除約約束時(shí)保保留唯一一性索引引,則必必須在ALTERTABLE…DORP語(yǔ)句中指指定KEEPINDEX子句。ALTERTABLEplayerDROPCONSTRAINTP__UKKEEPINDEX;如果要在在刪除約約束的同同時(shí),刪刪除引用用該約束束的其他他約束,,則需要要在ALTERTABLE…DORP語(yǔ)句中指指定CASCADE關(guān)鍵字。。ALTERTABLEplayerDROPCONSTRAINTP__PKCASCADE;(4)設(shè)置約約束狀態(tài)態(tài)激活(ENABLE)狀態(tài)當(dāng)約束處處于激活活狀態(tài)時(shí)時(shí),約束束將對(duì)表表的插入入或更新新操作進(jìn)進(jìn)行檢查查,與約約束規(guī)則則沖突的的操作被被回退。。禁用(DISABLE)狀態(tài)當(dāng)約束處處于禁用用狀態(tài)時(shí)時(shí),約束束不起作作用,與與約束規(guī)規(guī)則沖突突的插入入或更新新操作也也能夠成成功執(zhí)行行。利用SQL**Loader從外部數(shù)數(shù)據(jù)源提提取大量量數(shù)據(jù)到到數(shù)據(jù)庫(kù)庫(kù)中;進(jìn)行數(shù)據(jù)據(jù)庫(kù)中數(shù)數(shù)據(jù)的大大量導(dǎo)入入、導(dǎo)出出操作;;針對(duì)表執(zhí)執(zhí)行一項(xiàng)項(xiàng)包含大大量數(shù)據(jù)據(jù)操作的的批處理理工作時(shí)時(shí)。禁用約束束在定義約約束時(shí),,可以將將約束設(shè)設(shè)置為禁禁用狀態(tài)態(tài),默認(rèn)認(rèn)為激活活狀態(tài)。。也可以以在約束束創(chuàng)建后后,修改改約束狀狀態(tài)為禁禁用。創(chuàng)建表時(shí)時(shí)禁用約約束CREATETABLES((SNOCHAR((11))PRIMARYKEYDISALBE,,…);利用ALTERTABLE…DISABLE禁用約束束ALTERTABLESTUDENTDISABLECONSTRAINTS_CK1;ALTERTABLESTUDENTDISABLEUNIQUE(sname);;禁用主鍵鍵約束、、惟一性性約束時(shí)時(shí),會(huì)刪刪除其對(duì)對(duì)應(yīng)的惟惟一性索索引,而而在重新新激活時(shí)時(shí),Oracle為它們重重建惟一一性索引引。若在在禁用約約束時(shí),,保留對(duì)對(duì)應(yīng)的惟惟一性索索引,可可使用ALTERTABLE…DISABLE…KEEPINDEX語(yǔ)句。ALTERTABLESTUDENTDISABLEUNIQUE(sname)KEEPINDEX;ALTERTABLESTUDENTDISABLEPRIMARYKEYKEEPINDEX;若當(dāng)前約約束(主鍵約束束、惟一一性約束束)列被引用用,則需需要使用用ALTERTABLE…DISABLE…CASCADE語(yǔ)句同時(shí)時(shí)禁用引引用該約約束的約約束。ALTERTABLESTUDENTDISABLEPRIMARYKEYKEEPINDEXCASCADE;激活約束束創(chuàng)建或添添加約束束時(shí),默默認(rèn)為激激活狀態(tài)態(tài)。利用ALTERTABLE…ENABLE…語(yǔ)句激活活約束ALTERTABLESTUDENTENABLEUNIQUE((sname);禁用主鍵鍵約束、、惟一性性約束時(shí)時(shí),會(huì)刪刪除其對(duì)對(duì)應(yīng)的惟惟一性索索引,而而在重新新激活時(shí)時(shí),Oracle為它們重重建惟一一性索引引,可以以為索引引設(shè)置存存儲(chǔ)位置置和存儲(chǔ)儲(chǔ)參數(shù)(索引與表表盡量分分開(kāi)存儲(chǔ)儲(chǔ))。ALTERTABLESTUDENTENABLEPRIMARYKEYUSINGINDEXTABLESPACEindxSTORAGE(INITIAL32KNEXT16K);通過(guò)ALTERTABLE…MODIFY…DISABLE|ENABLE語(yǔ)句改變變約束狀狀態(tài)ALTERTABLESTUDENTMODIFYCONSTRAINTS__CK2DISABLE;;(5)約束的的延遲檢檢查默認(rèn)情況況下,在在表中的的約束都都是不可可延遲約約束,Oracle在一條DML語(yǔ)句執(zhí)行行完畢之之后立即即進(jìn)行約約束檢查查(除非非禁用))。創(chuàng)建約束束時(shí)可以以顯式使使用DEFERRABLE關(guān)鍵字,,創(chuàng)建可可延遲的的約束。。INITIALLYIMMEDIATE或INITIALLYDEFERRED說(shuō)明可延延遲約束束在初始始狀態(tài)下下是立即即檢查還還是延遲遲檢查如果在定定義約束束時(shí)設(shè)定定為不可可延遲,,則約束束創(chuàng)建后后不能更更改其可可延遲性性。只有有創(chuàng)建時(shí)時(shí)設(shè)定為為可延遲遲的約束束,創(chuàng)建建后才能能更改其其可延遲遲性。創(chuàng)建兩個(gè)個(gè)表,其其約束都都是可延延遲的。。CREATETABLEnew_dept((deptnoNUMBERPRIMARYKEYDEFERRABLEINITIALLYIMMEDIATE,,dnameCHAR(11)UNIQUE);CREATETABLEnew_emp(empnoNUMBERPRIMARYKEY,enameCHAR(11),,deptnoNUMBERCONSTRAINTNE__FKREFERENCESnew__dept(deptno))ONDELETECASCADEDEFERRABLE);由于外鍵鍵約束的的作用,,執(zhí)行下下面語(yǔ)句句時(shí)會(huì)產(chǎn)產(chǎn)時(shí)錯(cuò)誤誤。INSERTINTOnew__empVALUES(1,'ZHANG',,11));*ERROR位于第1行:ORA--02291::違反完整整約束條條件(SCOTT..E_FK)--未找到父父項(xiàng)關(guān)鍵鍵字將new__emp表的外鍵鍵約束檢檢查延遲遲。ALTERTABLEnew__empMODIFYCONSTRAINTNE_FKINITIALLYDEFERRED;此時(shí),由由于將new__emp表外鍵約約束延遲遲到事務(wù)務(wù)結(jié)束后后進(jìn)行檢檢查,因因此可以以先向new__emp中插入數(shù)數(shù)據(jù),而而后向new__dept中插入數(shù)數(shù)據(jù)。INSERTINTOnew__empVALUES(1,'ZHANG',,11));INSERTINTOnew__deptVALUES((11,,'COMPUTER');;COMMIT;;操作完后后,應(yīng)將將new__emp外鍵約束束檢查恢恢復(fù)原來(lái)來(lái)狀態(tài)。。ALTERTABLEnew__empMODIFYCONSTRAINTNE_FKINITIALLYIMMEDIATE;;注意在修改約約束的檢檢查延遲遲性時(shí),,如果無(wú)無(wú)法確定定約束的的名稱或或需要設(shè)設(shè)置多個(gè)個(gè)約束的的延遲性性,可以以一次性性將所有有可延遲遲的約束束延遲或或恢復(fù)。。SETCONSTRAINTALLDEFERRED;;SETCONSTRAINTALLIMMEDIATE;(6)查詢約約束信息息ALL__CONSTRAINTSUSER_CONSTRAINTSDBA__CONSTRAINTSALL__CONS_COLUMNSUSER_CONS__COLUMNSDAB__CONS_COLUMNS查看student表中的所所有約束束。SELECTCONSTRAINT_NAME,CONSTRAINT_TYPE,,DEFERRED,,STATUSFROMUSER__CONSTRAINTSWHERETABLE_NAME='STUDENT';查看student表中各個(gè)個(gè)約束所所作用的的列。SELECTCONSTRAINT_NAME,COLUMN__NAMEFROMUSER__CONS_COLUMNSWHERETABLE_NAME='STUDENT';9.2..3表參數(shù)設(shè)設(shè)置TABLESPACETABLESPACE子句用于于指定表表存儲(chǔ)的的表空間間。STORAGESTORAGE子句用于于設(shè)置表表的存儲(chǔ)儲(chǔ)參數(shù)。。若不指指定,則則繼承表表空間的的存儲(chǔ)參參數(shù)設(shè)置置。NITIALNEXTPCTINCREASEMINEXTENTSMAXEXTENTSBUFFER__POOL((KEEP、RECYCLE、DEFAULT)STORAGE參數(shù)設(shè)置置需注意意如果表空空間管理理方式為為EXTENTMANAGEMENTLOCALAUTOALLOCATE,則在STORAGE中只能指指定INITIAL,NEXT和MINEXTENTS這3個(gè)參數(shù);;如果表空空間管理理方式為為EXTENTMANAGEMENTLOCALUNIFORM,則不能能指定任任何STORAGE子句;如果表空空間管理理方式為為EXTENTMANAGEMENTDICTIONARY,則在STORAG中可以設(shè)設(shè)置任何何參數(shù)。。數(shù)據(jù)塊管管理參數(shù)數(shù)PCTFREE:用于指指定數(shù)據(jù)據(jù)塊中必必須保留留的最小小空閑空空間。PCTUSED:用于指指定當(dāng)數(shù)數(shù)據(jù)塊空空閑空間間達(dá)到PCTFREE參數(shù)的限限制后,,數(shù)據(jù)塊塊能夠被被再次使使用前,,已占用用的存儲(chǔ)儲(chǔ)空間必必須低于于的比例例。INITRANS:用于指指定能夠夠并發(fā)訪訪問(wèn)同一一個(gè)數(shù)據(jù)據(jù)塊的事事務(wù)的數(shù)數(shù)量。MAXTRANS:用于指指定能夠夠并發(fā)訪訪問(wèn)同一一個(gè)數(shù)據(jù)據(jù)塊的事事務(wù)的最最大數(shù)量量。LOGGING與NOLOGGING子句默認(rèn)為NOLOGGING,即表的的創(chuàng)建操操作不會(huì)會(huì)記錄到到重做日日志文件件中,尤尤其適合合通過(guò)查查詢創(chuàng)建建表的情情況。使使用LOGGING子句,表表的創(chuàng)建建操作((包括通通過(guò)查詢?cè)儎?chuàng)建表表時(shí)的插插入記錄錄操作))都將記記錄到重重做日志志文件中中。PARALLEL、NOPARALLELCACHE、NOCACHEMONITORING、NOMONITORING9.2..4修改表基本語(yǔ)法法列的添加加、刪除除、修改改表參數(shù)修修改表結(jié)構(gòu)重重組表重命名名等為表和列列添加注注釋(1)修修改表基基本語(yǔ)法法ALTERTABLE<<表名>ADD<<新列名><數(shù)據(jù)類(lèi)型型>[<<完整性約約束定義義]MODIFY<<列名><數(shù)據(jù)類(lèi)型型>RENAMECOLUMNoldnameTOnewnameSETUNUSEDCOLUMNcolumn////singlecolumnSETUNUSEDCOLUMNS(column1,column2…)DROPCOLUMN<<col>///singlecolumnDROP<col1,col2…>////multicolumnDROPUNUSEDCOLUMNS(2)列列的添加加、刪除除、修改改添加列語(yǔ)法ALTERTABLEtable_nameADD((new_column_namedatatype[NOTNULL][DEFAULTvalue]);;示例ALTERTABLEemployeeADD((phoneVARCHAR2((11)),hiredateDATEDEFAULTSYSDATENOTNULL);修改列類(lèi)類(lèi)型語(yǔ)法ALTERTABLEtable_nameMODIFYcolumn__namenew__datatype;;修改表中中列類(lèi)型型時(shí),必必須滿足足下列條條件:可以增大大字符類(lèi)類(lèi)型列的的長(zhǎng)度和和數(shù)值類(lèi)類(lèi)型列的的精度;;如果字符符類(lèi)型列列、數(shù)值值類(lèi)型列列中數(shù)據(jù)據(jù)滿足新新的長(zhǎng)度度、精度度,則可可以縮小小類(lèi)型的的長(zhǎng)度、、精度;;如果不改改變字符符串的長(zhǎng)長(zhǎng)度,可可以將VARCHAR2類(lèi)型和CAHR類(lèi)型轉(zhuǎn)換換;如果更改改數(shù)據(jù)類(lèi)類(lèi)型為另另一種非非同系列列類(lèi)型,,則列中中數(shù)據(jù)必必須為NULL。示例ALTERTABLEemployeeMODIFYenameCHAR(20);;ALTERTABLEemployeeMODIFYphoneNUMBER;修改列名名語(yǔ)法ALTERTABLEtable_nameRENAMECOLUMNoldnameTOnewname;示例ALTERTABLEemployeeRENAMECOLUMNenameTOemployee_name;刪除列直接刪除除列語(yǔ)法法ALTERTABLEtable_nameDROP[COLUMNcolumn_name]]|[(column1__name,column2_name,,…)][CASCADECONSTRAINTS];;直接刪除除列示例例ALTERTABLEscDROPCOLUMNsnoCASCADECONSTRAINTS;ALTERTABLEemployeeDROP(phone,hiredate);;將列標(biāo)記記為UNUSED,然后進(jìn)進(jìn)行刪除除。ALTERTABLEtable_nameSETUNUSED[COLUMNcolumn_name]]|[(column1__name,column2_name,,…)][CASCADECONSTRAINTS];;示例ALTERTABLEplayerSETUNUSEDCOLUMNsage;ALTERTABLEplayerSETUNUSED((sname,,resume);ALTERTABLEplayerDROPUNUSEDCOLUMNS;如果數(shù)據(jù)據(jù)庫(kù)表空空間處于于字典管管理方式式,可以以對(duì)表的的參數(shù)進(jìn)進(jìn)行修改改,包括括存儲(chǔ)參參數(shù)、存存儲(chǔ)位置置、數(shù)據(jù)據(jù)塊設(shè)置置等。ALTERTABLEemployeePCTFREE30PCTUSED60STORAGE(NEXT512KPCTINCREASE11));注意表創(chuàng)建后后不能對(duì)對(duì)INITIAL、MINEXTENTS兩個(gè)參數(shù)數(shù)進(jìn)行修修改。(3)表表參數(shù)修修改將一個(gè)非非分區(qū)的的表移動(dòng)動(dòng)到一個(gè)個(gè)新的數(shù)數(shù)據(jù)段中中,或者者移動(dòng)到到其他的的表空間間中,通通過(guò)這種種操作可可以重建建表的存存儲(chǔ)結(jié)構(gòu)構(gòu),稱為為表結(jié)構(gòu)構(gòu)重組。。如果發(fā)現(xiàn)現(xiàn)表的數(shù)數(shù)據(jù)段具具有不合合理的區(qū)區(qū)分配方方式,但但是又不不能通過(guò)過(guò)別的方方法來(lái)進(jìn)進(jìn)行調(diào)整整(改變變存儲(chǔ)參參數(shù)不會(huì)會(huì)影響到到已經(jīng)分分配的區(qū)區(qū)),可可以考慮慮將表移移動(dòng)到一一個(gè)新的的數(shù)據(jù)段段中。此此外,如如果頻繁繁地對(duì)表表進(jìn)行DML操作,會(huì)會(huì)產(chǎn)生大大量空間間碎片和和行遷移移、行連連接,可可以考慮慮進(jìn)行表表結(jié)構(gòu)重重組。(4)表表結(jié)構(gòu)重重組語(yǔ)法ALTERTABLEtbnameMOVE[[TABLESPACEtbs__name]注意直到表被被完全移移動(dòng)到新新的數(shù)據(jù)據(jù)段中之之后,Oracle才會(huì)刪除除原來(lái)的的數(shù)據(jù)段段;表結(jié)構(gòu)重重組后,,表中每每個(gè)記錄錄的ROWID會(huì)發(fā)生變變化,因因此該表表的所有有索引失失效,需需要重新新建立索索引;如果表中中包含LOB列,則默默認(rèn)情況況下不移移動(dòng)LOB列數(shù)據(jù)和和LOB索引段。。語(yǔ)法ALTERTABLEold__nameRENAMETOnew_name;;RENAMEold_nameTOnew_name;;說(shuō)明表重命名名后,Oracle會(huì)自動(dòng)將將舊表上上的對(duì)象象權(quán)限、、約束條條件等轉(zhuǎn)轉(zhuǎn)換到新新表上,,但是所所有與舊舊表相關(guān)關(guān)聯(lián)的對(duì)對(duì)象都會(huì)會(huì)失效,,需要重重新編譯譯。(5)表表重命名名為表添加加注釋COMMENTONTALBEtable_nameIS…;為列添加加注釋COMMENTONCOLUMNtable_name.column_nameIS…注釋可以以通過(guò)以以下數(shù)據(jù)據(jù)字典來(lái)來(lái)查看.ALL__COL_COMMENTSUSER_COL_COMMENTSALL__TAB_COMMENTSUSER_TAB_COMMENTS(6)為為表和列列添加注注釋語(yǔ)法DROPTABLEtable_name[CASCADECONSTRAINTS][[PURGE]]刪除一個(gè)個(gè)表同時(shí)時(shí),Oracle將執(zhí)行下下列操作作:刪除該表表中所有有記錄;;從數(shù)據(jù)字字典中刪刪除該表表定義;;刪除與該該表相關(guān)關(guān)的所有有索引和和觸發(fā)器器;回收為該該表分配配的存儲(chǔ)儲(chǔ)空間;;依賴于該該表的數(shù)數(shù)據(jù)庫(kù)對(duì)對(duì)象處于于INVALID狀態(tài)。9.2..5刪除表注意在Oracle10g中,使用用DROPTABLE語(yǔ)句刪除除一個(gè)表表時(shí),并并不立即即回收該該表的空空間,而而只是將將表及其其關(guān)聯(lián)對(duì)對(duì)象的信信息寫(xiě)入入一個(gè)稱稱為“回收站”(RECYCLEBIN)的邏輯輯容器中中,從而而可以實(shí)實(shí)現(xiàn)閃回回刪除表表操作。。如果要要回收該該表空間間,可以以采用清清空“回收站”(PURGERECYCLEBIN)或在DROPTABLE語(yǔ)句中使使用PURGE語(yǔ)句。9.2..6利用OEM管理表創(chuàng)建表刪除表修改表查詢表(1)創(chuàng)建表表(2)表的其其他管理理9.3索引索引概述述索引管理理利用OEM管理索引引9.3..1索引概述述索引概念念及作用用索引是為為了加速速對(duì)表中中元組的的檢索而而創(chuàng)建的的一種分分散存儲(chǔ)儲(chǔ)結(jié)構(gòu);;是對(duì)表而而建立的的,由除除存放表表的數(shù)據(jù)據(jù)頁(yè)面以以外的索索引頁(yè)面面組成,,獨(dú)立于于被索引引的表;;通過(guò)使用用索引加加速行的的檢索,,但減慢慢更新的的速度;;快速定位位數(shù)據(jù),,減少磁磁盤(pán)I/O;Oracle自動(dòng)使用用、維護(hù)護(hù)索引索引分類(lèi)類(lèi)惟一性索索引與非非惟一性性索引平衡樹(shù)索索引與位位圖索引引單列索引引與復(fù)合合索引函數(shù)索引引聚簇索引引全局索引引與本地地索引索引使用用原則導(dǎo)入數(shù)據(jù)據(jù)后再創(chuàng)創(chuàng)建索引引在適當(dāng)?shù)牡谋砗妥肿侄紊蟿?chuàng)創(chuàng)建索引引經(jīng)常查詢?cè)兊挠涗涗洈?shù)目少少于表中中所有記記錄總數(shù)數(shù)的5%時(shí)就應(yīng)當(dāng)當(dāng)創(chuàng)建索索引;經(jīng)常進(jìn)行行連接查查詢表時(shí)時(shí),在連連接列上上建立索索引能夠夠顯著提提高查詢?cè)兊乃俣榷?;?duì)于取值值范圍很很大的列列應(yīng)當(dāng)創(chuàng)創(chuàng)建B樹(shù)索引;;對(duì)于取值值范圍很很小的列列應(yīng)當(dāng)創(chuàng)創(chuàng)建位圖圖索引;;不能在LONG,LONGRAW,LOB數(shù)據(jù)類(lèi)型型的列上上創(chuàng)建索索引;Oracle會(huì)自動(dòng)在在PRIMARYKEY和UNIQUE約束的列列上創(chuàng)建建唯一性性索引。。合理設(shè)置置復(fù)合索索引中的的字段順順序限制表中中索引的的數(shù)目表中索引引數(shù)目越越多,查查詢速度度越快,,但表的的更新速速度越慢慢。因?yàn)闉樗饕皆蕉?,維維護(hù)索引引所需開(kāi)開(kāi)銷(xiāo)越大大,當(dāng)更更新表時(shí)時(shí),需要要同時(shí)更更新與表表相關(guān)的的所有索索引。為索引設(shè)設(shè)置合適適的PCTFREE參數(shù)選擇存儲(chǔ)儲(chǔ)索引的的表空間間默認(rèn)情況況下,索索引與表表存儲(chǔ)在在同一表表空間中中。索引引與表存存儲(chǔ)在同同一表空空間中,,有利于于數(shù)據(jù)庫(kù)庫(kù)維護(hù)操操作,具具有較高高的可用用性;反反之,若若索引與與表存儲(chǔ)儲(chǔ)在不同同的表空空間中,,則可提提高系統(tǒng)統(tǒng)的存取取性能,,減少硬硬盤(pán)I/O沖突,但但是表與與索引可可用狀態(tài)態(tài)可能出出現(xiàn)不一一致,如如一個(gè)處處于聯(lián)機(jī)機(jī)狀態(tài),,另一個(gè)個(gè)處于脫脫機(jī)狀態(tài)態(tài)。9.3..2管理索引引創(chuàng)建索引引修改索引引監(jiān)視索引引刪除索引引索引的查查詢語(yǔ)法CREATE[[UNIQUE]||[BITMAP]INDEXindex__nameONtable_name([column__name[ASC||DESC],,…]|[expression]))[REVERSE][parameter_list]];說(shuō)明UNIQUE表示建立立惟一性性索引;;BITMAP表示建立立位圖索索引;ASC//DESC用于指定定索引值值的排列列順序,,ASC表示按升升序排序序,DESC表示按降降序排序序,缺省省值為ASC;REVERSE表示建立立反鍵索索引;parameter__list用于指定定索引的的存放位位置、存存儲(chǔ)空間間分配和和數(shù)據(jù)塊塊參數(shù)設(shè)設(shè)置。(1)創(chuàng)建索索引創(chuàng)建非惟惟一性索索引CREATEINDEXemployee__enameONemployee((ename))TABLESPACEusersSTORAGE(INITIAL20KNEXT20kPCTINCREASE75);;創(chuàng)建惟一一性索引引CREATEUNIQUEINDEXdeptartment_indexONdepartment((dname));創(chuàng)建位圖圖索引CREATEBITMAPINDEXstudent__sexONstudent((sex);創(chuàng)建反序序索引CREATEINDEXplayer_sageONplayer(sage))REVERSE;;創(chuàng)建函數(shù)數(shù)索引CREATEINDEXidxONemployee(UPPER(ename));;定義約束束時(shí)創(chuàng)建建索引CREATETABLEnew_employee(empnoNUMBER((5)PRIMARYKEYUSINGINDEXTABLESPACEusersPCTFREE0,,enameVARCHAR2(20));(2)修改索索引合并索引引合并索引引是對(duì)索索引進(jìn)行行合并操操作,但但只是簡(jiǎn)簡(jiǎn)單地將將B樹(shù)葉節(jié)點(diǎn)點(diǎn)中的存存儲(chǔ)碎片片合并在在一起,,并不會(huì)會(huì)改變索索引的物物理組織織結(jié)構(gòu)語(yǔ)法ALTERINDEX…COALESCE示例ALTERINDEXemployee_enameCOALESCE;重建索引引重建索引引的實(shí)質(zhì)質(zhì)是在指指定的表表空間中中重新建建立一個(gè)個(gè)新的索索引,然然后再刪刪除原來(lái)來(lái)的索引引,這樣樣不僅能能夠消除除存儲(chǔ)碎碎片,還還可以改改變索引引的存儲(chǔ)儲(chǔ)參數(shù)設(shè)設(shè)置,并并且將索索引移動(dòng)動(dòng)到其他他的表空空間中。。語(yǔ)法ALTERINDEX…REBUILD示例ALTERINDEXplayer__sageREBUILD;合并索引引與重建建索引比比較合并索引重建索引不能將索引移到其他表空間中可以將索引移到其他表空間中代價(jià)較低,不需要使用額外的存儲(chǔ)空間代價(jià)較高,需要使用額外的存儲(chǔ)空間只能在B樹(shù)的同一子樹(shù)中進(jìn)行合并,不會(huì)改變樹(shù)的高度重建整個(gè)B樹(shù),可能會(huì)降低樹(shù)的高度可以快速釋放葉子節(jié)點(diǎn)中未使用的存儲(chǔ)空間可以快速更改索引的存儲(chǔ)參數(shù)。在重建過(guò)程中如果指定了ONLINE關(guān)鍵字,不會(huì)影響對(duì)當(dāng)前索引的使用索引重命命名語(yǔ)法ALTERINDEX…RENAMETO語(yǔ)句為索索引重命命名。示例ALTERINDEXemployee_enameRENAMETOemployee__new_ename;(3)監(jiān)視索索引已經(jīng)建立立的索引引是否能能夠有效效地工作作,取決決于在查查詢執(zhí)行行過(guò)程中中是否會(huì)會(huì)使用到到這個(gè)索索引。要要查看某某個(gè)指定定索引的的使用情情況,可可以使用用ALTERINDEX語(yǔ)句打開(kāi)開(kāi)索引的的監(jiān)視狀狀態(tài)。打開(kāi)索引引監(jiān)視狀狀態(tài)ALTERINDEXindex_enameMONITORINGUSAGE;關(guān)閉索引引監(jiān)視狀狀態(tài)ALTERINDEXindex_enameNOMONITORINGUSAGE;;查看索引引使用情情況通過(guò)V$OBJECT_USAGE動(dòng)態(tài)性能能視圖中中查看索索引的使使用情況況。USED列為YES,表示索索引正被被引用,,否則為為NO。(4)刪除索索引語(yǔ)法DROPINDEXindex_name;;在下面幾幾種情況況下,可可以考慮慮刪除索索引該索引不不再使用用。通過(guò)一段段時(shí)間監(jiān)監(jiān)視,發(fā)發(fā)現(xiàn)幾乎乎沒(méi)有查查詢或只只有極少少數(shù)查詢?cè)儠?huì)使用用該索引引。由于索引引中包含含損壞的的數(shù)據(jù)塊塊或包含含過(guò)多的的存儲(chǔ)碎碎片等,,需要?jiǎng)h刪除該索索引,然然后重建建索引。。由于移動(dòng)動(dòng)了表數(shù)數(shù)據(jù)而導(dǎo)導(dǎo)致索引引失效(5)索引的的查詢DBA__INDEXES、ALL__INDEXES、USER_INDEXES包含索引引的基本本描述信信息和統(tǒng)統(tǒng)計(jì)信息息,包括括索引的的所有者者、索引引的名稱稱、索引引的類(lèi)型型、對(duì)應(yīng)應(yīng)表的名名稱、索索引的存存儲(chǔ)參數(shù)數(shù)設(shè)置、、由分析析得到的的統(tǒng)計(jì)信信息等信信息DBA__IND_COLUMNS、ALL__IND_COLUMNS、USER_IND_COLUMNS包含索引引列的描描述信息息,包括括索引的的名稱、、表的名名稱和索索引列的的名稱等等信息DBA__IND_EXPRESSIONS、ALL__IND_EXPRESSIONS、USER_IND_EXPRESSIONS包含函數(shù)數(shù)索引的的描述信信息,通通過(guò)該視視圖可以以查看到到函數(shù)索索引的函函數(shù)或表表達(dá)式V$OBJECT_USAGE包含通過(guò)過(guò)ALTERINDEX…MONITORINGUSAGE語(yǔ)句對(duì)索索引進(jìn)行行監(jiān)視后后得到的的索引使使用信息息。9.3..3利用OEM管理索引引創(chuàng)建索引引修改索引引刪除索引引查詢索引引(1)創(chuàng)建索索引(2)索引的的其他管管理9.4分區(qū)表與與分區(qū)索索引分區(qū)概述述創(chuàng)建分區(qū)區(qū)表維護(hù)分區(qū)區(qū)表查詢分區(qū)區(qū)表和分分區(qū)索引引信息利用OEM管理分區(qū)區(qū)表和分分區(qū)索引引分區(qū)概述述分區(qū)概念念所謂的分分區(qū)是指指將一個(gè)個(gè)巨型表表或巨型型索引分分成若干干獨(dú)立的的組成部部分進(jìn)行行存儲(chǔ)和和管理,,每一個(gè)個(gè)相對(duì)小小的、可可以獨(dú)立立管理的的部分,,稱為原原來(lái)表或或索引的的分區(qū)。。每個(gè)分區(qū)區(qū)都具有有相同的的邏輯屬屬性,但但物理屬屬性可以以不同。。如具有有相同列列、數(shù)據(jù)據(jù)類(lèi)型、、約束等等,但可可以具有有不同的的存儲(chǔ)參參數(shù)、位位于不同同的表空空間等。。分區(qū)后,,表中每每個(gè)記錄錄或索引引條目根根據(jù)分區(qū)區(qū)條件分分散存儲(chǔ)儲(chǔ)到不同同分區(qū)中中。分區(qū)原則則表的大小小超過(guò)2GB要對(duì)一個(gè)個(gè)表進(jìn)行行并行DML操作,必必須分區(qū)區(qū)為了平衡衡硬盤(pán)的的I/O操作,將將一個(gè)表表分散存存儲(chǔ)在不不同的表表空間中中,必須須對(duì)它進(jìn)進(jìn)行分區(qū)區(qū)如果需要要將表一一部分設(shè)設(shè)置為只只讀,另另一部分分為可更更新的,,必須對(duì)對(duì)表進(jìn)行行分區(qū)9.4..1創(chuàng)建分區(qū)區(qū)表分區(qū)方法法范圍分區(qū)區(qū)列表分區(qū)區(qū)散列分區(qū)區(qū)復(fù)合分區(qū)區(qū)(1)范圍分分區(qū)概述范圍分區(qū)區(qū)是按照照分區(qū)列列值的范范圍來(lái)對(duì)對(duì)表進(jìn)行行分區(qū)的的。參數(shù)通過(guò)PARTITIONBYRANGE子句說(shuō)明明根據(jù)范范圍進(jìn)行行分區(qū),,其后括括號(hào)中列列出分區(qū)區(qū)列,可可以進(jìn)行行多列分分區(qū)。每每個(gè)分區(qū)區(qū)以PARTITION關(guān)鍵字開(kāi)開(kāi)頭,其其后是分分區(qū)名。。VALUESLESSTHAN子句用于于設(shè)置分分區(qū)中分分區(qū)列值值的范圍圍。可以以對(duì)每個(gè)個(gè)分區(qū)的的存儲(chǔ)進(jìn)進(jìn)行設(shè)置置,也可可以對(duì)所所有分區(qū)區(qū)采用默默認(rèn)的存存儲(chǔ)設(shè)置置。示例創(chuàng)建一個(gè)個(gè)分區(qū)表表,將學(xué)學(xué)生信息息根據(jù)其其出生日日期進(jìn)行行分區(qū),,將1980年1月1日前出生生的學(xué)生生信息保保存在ORCLTBS1表空間中中,將1980年1月1日到1990年1月1日出生的的學(xué)生信信息保存存在ORCLTBS2表空間中中,將其其他學(xué)生生信息保保存在ORCLTBS3表空間中中。CREATETABLEstudent_range(snoNUMBER(6))PRIMARYKEY,snameVARCHAR2(10),,sageint,birthdayDATE)PARTITIONBYRANGE((birthday))(PARTITIONp1VALUESLESSTHAN(TO__DATE(''1980-1-1'',''YYYY-MM-DD')))TABLESPACEORCLTBS1,PARTITIONp2VALUESLESSTHAN(TO__DATE(''1990-1-1'',''YYYY-MM-DD')))TABLESPACEORCLTBS2,PARTITIONp3VALUESLESSTHAN(MAXVALUE)TABLESPACEORCLTBS3STORAGE((INITIAL10MNEXT20M)))STORAGE(INITIAL20MNEXT10MMAXEXTENTS10
);(2)列表分分區(qū)概述如果分區(qū)區(qū)列的值值并不能能劃分范范圍(非非數(shù)值類(lèi)類(lèi)型或日日期類(lèi)型型),同同時(shí)分區(qū)區(qū)列的取取值范圍圍只是一一個(gè)包含含少數(shù)值值的集合合,則可可以對(duì)表表進(jìn)行列列表分區(qū)區(qū)(LIST),如按按地區(qū)、、性別等等分區(qū)。。與范圍分分區(qū)不同同,列表表分區(qū)不不支持多多列分區(qū)區(qū),只能能根據(jù)一一個(gè)單獨(dú)獨(dú)的列來(lái)來(lái)進(jìn)行分分區(qū)。創(chuàng)創(chuàng)建列表表分區(qū)時(shí)時(shí)需要指指定分區(qū)區(qū)列和分分區(qū)描述述。通過(guò)PARTITIONBYLIST子句說(shuō)明明根據(jù)列列表進(jìn)行行分區(qū),,其后括括號(hào)中列列出分區(qū)區(qū)列。每每個(gè)分區(qū)區(qū)以PARTITION關(guān)鍵字開(kāi)開(kāi)頭,其其后是分分區(qū)名。。VALUES子句用于于設(shè)置分分區(qū)所對(duì)對(duì)應(yīng)的分分區(qū)列取取值。示例創(chuàng)建一個(gè)個(gè)分區(qū)表表,將學(xué)學(xué)生信息息按性別別不同進(jìn)進(jìn)行分區(qū)區(qū),男學(xué)學(xué)生信息息保存在在表空間間ORCLTBS1中,而女女學(xué)生信信息保存存在ORCLTBS2中。CREATETABLEstudent_list(snoNUMBER(6))PRIMARYKEY,snameVARCHAR2(10),,sexCHAR(2))CHECK(sexin(('M'',''F'))))PARTITIONBYLIST(sex))(PARTITIONstudent_maleVALUES(''M'))TABLESPACEORCLTBS1,,PARTITIONstudent_femaleVALUES('F')TABLESPACEORCLTBS2);(3)散列分分區(qū)概述在進(jìn)行范范圍分區(qū)區(qū)或列表表分區(qū)時(shí)時(shí),由于于無(wú)法對(duì)對(duì)各個(gè)分分區(qū)中可可能具有有的記錄錄數(shù)量進(jìn)進(jìn)行預(yù)測(cè)測(cè),可能能導(dǎo)致數(shù)數(shù)據(jù)在各各個(gè)分區(qū)區(qū)中分布布不均衡衡,某個(gè)個(gè)分區(qū)中中數(shù)據(jù)很很多,而而某個(gè)分分區(qū)中數(shù)數(shù)據(jù)很少少。此時(shí)時(shí)可以采采用散列列分區(qū)((HASH)方法,,在指定定數(shù)量的的分區(qū)中中均等地地分配數(shù)數(shù)據(jù)。為了創(chuàng)建建散列分分區(qū),需需要指定定分區(qū)列列、分區(qū)區(qū)數(shù)量或或單獨(dú)的的分區(qū)描描述。通過(guò)PARTITIONBYHASH指定分區(qū)區(qū)方法,,其后的的括號(hào)指指定分區(qū)區(qū)列。使使用PARTITION子句指定定每個(gè)分分區(qū)名稱稱和其存存儲(chǔ)空間間。或者者使用PARTITIONS子句指定定分區(qū)數(shù)數(shù)量,用用STOREIN子句指定定分區(qū)存存儲(chǔ)空間間。示例創(chuàng)建一個(gè)個(gè)分區(qū)表表,根據(jù)據(jù)學(xué)號(hào)將將學(xué)生信信息均勻勻分布到到ORCLTBS1和ORCLTBS2兩個(gè)表空空間中。。CREATETABLEstudent_hash(snoNUMBER(6))PRIMARYKEY,snameVARCHAR2(10))PARTITIONBYHASH(sno))(PARTITIONp1TABLESPACEORCLTBS1,PARTITIONp2TABLESPACEORCLTBS2);CREATETABLEstudent_hash2((snoNUMBER(6))PRIMARYKEY,snameVARCHAR2(10)))PARTITIONBYHASH(sno))PARTITIONS2STOREIN((ORCLTBS1,,ORCLTBS2));(4)復(fù)合分分區(qū)復(fù)合分區(qū)區(qū)包括::范圍-列表復(fù)合合分區(qū)范圍-散列復(fù)合合分區(qū)。。創(chuàng)建復(fù)合合分區(qū)時(shí)時(shí)需要指指定分區(qū)方法法(PARTITIONBYRANGE)分區(qū)列子分區(qū)方方法(SUBPARTITIONBYHASH,SUBPARTITIONBYLIST)子分區(qū)列列每個(gè)分區(qū)區(qū)中子分分區(qū)數(shù)量量或子分分區(qū)的描描述。范圍-列表復(fù)合合分區(qū)范圍-列表復(fù)合合分區(qū)先先對(duì)表進(jìn)進(jìn)行范圍圍分區(qū),,然后再再對(duì)每個(gè)個(gè)分區(qū)進(jìn)進(jìn)行列表表分區(qū),,即在一一個(gè)范圍圍分區(qū)中中創(chuàng)建多多個(gè)列表表子分區(qū)區(qū)。范圍-列表復(fù)合合分區(qū)示示例創(chuàng)建一個(gè)個(gè)范圍-列表復(fù)合合分區(qū)表表,將1980年1月1日前出生生的男、、女學(xué)生生信息分分別保存存在ORCLTBS1和ORCLTBS2表空間中中,1980年1月1日到1990年1月1日出生的的男、女女學(xué)生信信息分別別保存在在ORCLTBS3和ORCLTBS4表空間中中,其他他學(xué)生信信息保存存在ORCLTBS5表空間中中。CREATETABLEstudent_range_list(snoNUMBER(6))PRIMARYKEY,snameVARCHAR2(10),,sexCHAR((2)CHECK((sexIN(''M',,'F'')),,sageNUMBER((4),,birthdayDATE)PARTITIONBYRANGE((birthday))SUBPARTITIONBYLIST(sex))(PARTITIONp1VALUESLESSTHAN((TO__DATE(''1980-1-1'',''YYYY-MM-DD')))(SUBPARTITIONp1_sub1VALUES('M')TABLESPACEORCLTBS1,SUBPARTITIONp1__sub2VALUES(('F'')TABLESPACEORCLTBS2),PARTITIONp2VALUESLESSTHAN(TO_DATE('1990-1--1',,'YYYY-MM-DD')))(SUBPARTITIONp2_sub1VALUES('M')TABLESPACEORCLTBS3,SUBPARTITIONp2__sub2VALUES(('F'')TABLESPACEORCLTBS4),PARTITIONp3VALUESLESSTHAN(MAXVALUE)TABLESPACEORCLTBS5);范圍-散列復(fù)合合分區(qū)范圍-散列復(fù)合合分區(qū)先先對(duì)表進(jìn)進(jìn)行范圍圍分區(qū),,然后再再對(duì)每個(gè)個(gè)分區(qū)進(jìn)進(jìn)行散列列分區(qū),,即在一一個(gè)范圍圍分區(qū)中中創(chuàng)建多多個(gè)散列列子分區(qū)區(qū)。示例創(chuàng)建一個(gè)個(gè)范圍-散列復(fù)合合分區(qū)表表,將1980年1月1日前出生生的學(xué)生生信息均均勻地保保存在ORCLTBS1和ORCLTBS2表空間中中,1980年1月1日到1990年1月1日出生的的學(xué)生信信息保存存在ORCLTBS3和ORCLTBS4表空間中中,其他他學(xué)生信信息保存存在ORCLTBS5表空間中中。CREATETABLEstudent_range_hash(snoNUMBER(6))PRIMARYKEY,snameVARCHAR2(10),,sageNUMBER((
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度農(nóng)機(jī)產(chǎn)業(yè)投資基金投資合同范本
- 二零二五年度土地租賃合同范本(含環(huán)保條款)
- 2025年度職業(yè)電競(jìng)戰(zhàn)隊(duì)教練聘請(qǐng)合同書(shū)4篇
- 2025年度生鮮配送服務(wù)合同與消費(fèi)者權(quán)益保護(hù)協(xié)議4篇
- 二零二五年高清監(jiān)控設(shè)備采購(gòu)合同范本3篇
- 2025年度臨時(shí)租用汽車(chē)合同標(biāo)準(zhǔn)協(xié)議-企業(yè)用車(chē)3篇
- 2025年度智能設(shè)備安裝服務(wù)合同(分享42安裝工版)
- 2025年度知識(shí)產(chǎn)權(quán)法務(wù)顧問(wèn)保密合同
- 課題申報(bào)參考:美國(guó)后“9·11”詩(shī)歌的政治參與意識(shí)與“公共性”范式研究
- 二零二五版木質(zhì)防火門(mén)安裝與維護(hù)服務(wù)合同3篇
- 2024年-2025年海船船員考試-船舶人員管理考試題及答案
- 2025屆安徽省皖南八校聯(lián)盟高二物理第一學(xué)期期末統(tǒng)考試題含解析
- 《BIM土建算量與云計(jì)價(jià)》完整課件
- 2024中國(guó)南光集團(tuán)限公司校園招聘高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 2024-2030年中國(guó)氣凝膠干凝膠市場(chǎng)發(fā)展戰(zhàn)略與未來(lái)投資競(jìng)爭(zhēng)力剖析研究報(bào)告
- 新客戶建檔協(xié)議書(shū)范文范本
- 2024簡(jiǎn)單的租房合同樣本下載
- 2024-2030年中國(guó)AI智能鼠標(biāo)市場(chǎng)營(yíng)銷(xiāo)模式與競(jìng)爭(zhēng)前景分析研究報(bào)告
- 中考數(shù)學(xué)計(jì)算題練習(xí)100道(2024年中考真題)
- DL-T499-2001農(nóng)村低壓電力技術(shù)規(guī)程
- 【家庭教育】0-3歲嬰幼兒早教訓(xùn)練方案
評(píng)論
0/150
提交評(píng)論