詳解ORACLE簇表、堆表、IOT表、分區(qū)表_第1頁(yè)
詳解ORACLE簇表、堆表、IOT表、分區(qū)表_第2頁(yè)
詳解ORACLE簇表、堆表、IOT表、分區(qū)表_第3頁(yè)
詳解ORACLE簇表、堆表、IOT表、分區(qū)表_第4頁(yè)
詳解ORACLE簇表、堆表、IOT表、分區(qū)表_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、詳解ORACLE簇表、堆表、IOT表、分區(qū)表簇和簇表 簇其實(shí)就是一組表,是一組共享相同數(shù)據(jù)塊的多個(gè)表組成。 將經(jīng)常一起使用的表組合在一起成簇可以提高處理效率。 在一個(gè)簇中的表就叫做簇表。建立順序是:簇簇表數(shù)據(jù)簇索引 1、創(chuàng)建簇的格式 CREATE CLUSTER cluster_name (column date_type ,column datatype.) PCTUSED 40 | integer PCTFREE 10 | integer SIZE integer INITRANS 1 | integer MAXTRANS 255 | integer TABLESPACE tablespa

2、ce STORAGE storage SIZE:指定估計(jì)平均簇鍵,以及與其相關(guān)的行所需的字節(jié)數(shù)。 2、創(chuàng)建簇 create cluster my_clu (deptno number ) pctused 60 pctfree 10 size 1024 tablespace users storage ( initial 128 k next 128 k minextents 2 maxextents 20 ); 3、創(chuàng)建簇表 create table t1_dept( deptno number , dname varchar2 ( 20 ) ) cluster my_clu(deptno);

3、 create table t1_emp( empno number , ename varchar2 ( 20 ), birth_date date , deptno number ) cluster my_clu(deptno); 4、為簇創(chuàng)建索引 create index clu_index on cluster my_clu; 注:若不創(chuàng)建索引,則在插入數(shù)據(jù)時(shí)報(bào)錯(cuò):ORA-02032: clustered tables cannot be used before the cluster index is built 管理簇 使用ALTER修改簇屬性(必須擁有ALTER ANY CLUS

4、TER的權(quán)限) 1、修改簇屬性 可以修改的簇屬性包括: * PCTFREE、PCTUSED、INITRANS、MAXTRANS、STORAGE * 為了存儲(chǔ)簇鍵值所有行所需空間的平均值SIZE * 默認(rèn)并行度 注: * 不能修改INITIAL和MINEXTENTS的值 * PCTFREE、PCTUSED、SIZE參數(shù)修改后適用于所有數(shù)據(jù)塊 * INITRANS、MAXTRANS僅適用于以后分配的數(shù)據(jù)塊 * STORAGE參數(shù)修改后僅影響以后分配給簇的盤區(qū) 格式: alter cluster my_clu pctused 40 2、刪除簇 drop cluster my_clu; - 僅適用于刪

5、除空簇 drop cluster my_clu including tables ; - 刪除簇和簇表 drop cluster my_clu including tables cascade constraints ; - 同時(shí)刪除外鍵約束 注:簇表可以像普通表一樣刪除。 散列聚簇表 在簇表中,Oracle使用存儲(chǔ)在索引中的鍵值來定位表中的行,而在散列聚簇表中,使用了散列函數(shù)代替了簇索引,先通過內(nèi)部函數(shù)或者自定義的函數(shù)進(jìn)行散列計(jì)算,然后再將計(jì)算得到的碼值用于定位表中的行。創(chuàng)建散列簇需要用到HASHKEYS子句。 1、創(chuàng)建散列簇 create cluster my_clu_two(empno

6、number(10) ) pctused 70 pctfree 10 tablespace users hash is empno hashkeys 150 ; 說明: * hash is 子句指明了進(jìn)行散列的列,如果列是唯一的標(biāo)示行,就可以將列指定為散列值 * hashkeys 指定和限制散列函數(shù)可以產(chǎn)生的唯一的散列值的數(shù)量 2、創(chuàng)建散列表 create table t2_emp ( empno number ( 10 ), ename varchar2 ( 20 ), birth_date date , deptno number ) cluster my_clu_two(empno);

7、注意: * 必須設(shè)置數(shù)值的精度(具體原因不詳) * 散列簇不能也不用創(chuàng)建索引 * 散列簇不能ALTER:size、hashkeys、hash is參數(shù) 堆表 1.基本概念執(zhí)行CREATE TABLE語(yǔ)句時(shí),默認(rèn)得到的表類型就是堆組織表。其他類型的表結(jié)構(gòu)需要在CREATE TABLE語(yǔ)句本身中指定它。堆組織表中,數(shù)據(jù)以堆的方式管理。增加數(shù)據(jù)時(shí),會(huì)使用段中找到的第一個(gè)能放下此數(shù)據(jù)的自由空間。從表中刪除數(shù)據(jù)后,允許以后的INSERT和UPDATE重用這部分空間。堆(heap)是一組空間,以一種隨機(jī)的方式使用。因此,無法保證按照放入表中的順序取得數(shù)據(jù)。有1個(gè)簡(jiǎn)單的技巧,來查看對(duì)于給定類型的表,CREA

8、TE TABLE語(yǔ)句中主要有哪些可用的選項(xiàng)。首先,盡可能簡(jiǎn)單地創(chuàng)建表,然后使用DBMS_METADATA來查詢這個(gè)表的定義。1. createtablet(xintprimarykey,yclob);2. 3. Tablecreated.4. 5. selectdbms_metadata.get_ddl(TABLE,T)fromdual;6. 7. DBMS_METADATA.GET_DDL(TABLE,T)8. -9. 10. CREATETABLETONY.T11. (XNUMBER(*,0),12. YCLOB,13. PRIMARYKEY(X)14. USINGINDEXPCTFREE

9、10INITRANS2MAXTRANS255NOCOMPRESSLOGGING15. TABLESPACEUSERSENABLE16. )SEGMENTCREATIONDEFERRED17. PCTFREE10PCTUSED40INITRANS1MAXTRANS255NOCOMPRESSLOGGING18. TABLESPACEUSERS19. LOB(Y)STOREASBASICFILE(20. TABLESPACEUSERSENABLESTORAGEINROWCHUNK8192RETENTION21. NOCACHELOGGING)現(xiàn)在可以根據(jù)需要,修改某些參數(shù)。對(duì)于ASSM有3個(gè)重要選項(xiàng)

10、,對(duì)于MSSM有5個(gè)重要選項(xiàng)。隨著本地管理表空間的引入(推薦做法),其余的參數(shù)已經(jīng)沒什么意義了。 FREELIST: 僅適用于MSSM。 PCTFREE:ASSM和MSSM都適用。 PCTUSED:僅適用于MSSM。 INITRANS:ASSM 和MSSM 都適合。為塊初始分配的事務(wù)槽數(shù)。如果會(huì)對(duì)同樣的塊完成多個(gè)并發(fā)更新,就應(yīng)該考慮增大這個(gè)值。 COMPRESS/NOCOMPRESS:ASSM 和MSSM 都適合。 11g之前,選項(xiàng)是COMPRESS或者NOCOMPRESS,只有直接路徑操作(例如CREATE TABLE AS SELECT, INSERT /*+ APPEND*/, ALTE

11、R TABLE T MOVE以及SQL*Loader直接路徑加載)才能利用壓縮。 11g之后,選項(xiàng)是COMPRESS FOR OLTP,COMPRESS BASIC或者NOCOMPRESS。COMPRESS FOR OLTP啟用所有操作的壓縮(包括直接路徑和常規(guī)路徑),COMPRESS BASIC則只針對(duì)直接路徑操作。注意:?jiǎn)为?dú)存儲(chǔ)在LOB段中的LOB數(shù)據(jù)并不使用表的PCTFREE/PCTUSED參數(shù)設(shè)置。這些LOB塊以不同的方式管理:它們總是會(huì)填入,直至達(dá)到最大容量,而且僅當(dāng)完全為空時(shí)才返回FREELIST。2. 堆表總結(jié)堆表具有的唯一優(yōu)點(diǎn)是 插入數(shù)據(jù)不需要采取任何措施,只需要順其自然地安裝

12、插入的順序存儲(chǔ),減少了插入大量數(shù)據(jù)的代價(jià)。索引組織表IOT 1. 基本概念索引組織表(index organized table)簡(jiǎn)稱IOT。IOT中,數(shù)據(jù)要根據(jù)主鍵有序地存儲(chǔ)。適合使用IOT的幾種情況: 表完全由主鍵組成或者只通過主鍵來訪問一個(gè)表。使用IOT,表就是索引,可以節(jié)約空間,提高效率。 通過外鍵訪問子表,子表使用IOT。通過IOT將相同外鍵的子表數(shù)據(jù)物理的存儲(chǔ)在同一個(gè)位置,查詢所需要的物理I/O更少,因?yàn)閿?shù)據(jù)都在同一個(gè)(幾個(gè))塊上。 經(jīng)常在主鍵或者或惟一鍵上使用BETWEEN查詢。數(shù)據(jù)以某種特定的順序物理存儲(chǔ),所以獲取這些數(shù)據(jù)時(shí)所需的物理I/O更少。查看創(chuàng)建IOT時(shí)候的參數(shù)選項(xiàng)。1

13、. createtablet(xintprimarykey,yclob)organizationindex;2. 3. Tablecreated.4. 5. selectdbms_metadata.get_ddl(TABLE,T)fromdual;6. 7. DBMS_METADATA.GET_DDL(TABLE,T)8. -9. 10. CREATETABLETONY.T11. (XNUMBER(*,0),12. YCLOB,13. PRIMARYKEY(X)ENABLE14. )ORGANIZATIONINDEXNOCOMPRESSPCTFREE10INITRANS2MAXTRANS255

14、LOGGING15. STORAGE(INITIAL65536NEXT1048576MINEXTENTS1MAXEXTENTS214748364516. PCTINCREASE0FREELISTS1FREELISTGROUPS1BUFFER_POOLDEFAULTFLASH_CACHEDE17. FAULTCELL_FLASH_CACHEDEFAULT)18. TABLESPACEUSERS19. PCTTHRESHOLD5020. LOB(Y)STOREASBASICFILE(21. TABLESPACEUSERSDISABLESTORAGEINROWCHUNK8192RETENTION22

15、. NOCACHELOGGING23. STORAGE(INITIAL65536NEXT1048576MINEXTENTS1MAXEXTENTS214748364524. PCTINCREASE0FREELISTS1FREELISTGROUPS1BUFFER_POOLDEFAULTFLASH_CACHEDEFAULTCELL_FLASH_CAC25. HEDEFAULT)IOT沒有PCTUSED子句,但是有PCTFREE。這是因?yàn)镮OT中數(shù)據(jù)放在哪個(gè)塊上不是根據(jù)未用空間大小,而是根據(jù)主鍵索引決定的。但是對(duì)于溢出段(下面會(huì)提到),PCTFREE和PCTUSED對(duì)于IOT的意義將與對(duì)于堆表一樣。索

16、引壓縮選項(xiàng)NOCOMPRESS對(duì)索引一般都可用,它和表壓縮不同,它告訴Oracle把構(gòu)成主鍵的每個(gè)值分別存儲(chǔ)在各個(gè)索引條目中(也就是不壓縮)。例如,主鍵在A、B和C列上,則A、B和C列中每一次出現(xiàn)的值都會(huì)物理地存儲(chǔ)。NOCOMPRESS反過來就是COMPRESS N,在此N是一個(gè)整數(shù),表示要壓縮的列數(shù)。這樣可以避免重復(fù)值,并在塊級(jí)提取“公因子”(factor out)。例如如果使用COMPRESS 2,那么A和B列上如果有重復(fù)的值,就只會(huì)存儲(chǔ)1次。使用索引壓縮會(huì)減少物理I/O,但是占用更多的CPU時(shí)間來處理索引,需要在兩者之間權(quán)衡??梢允褂肁NALYZE INDEX VALIDATE STRU

17、CTURE命令來得到最優(yōu)的壓縮方案。這個(gè)命令會(huì)填寫一個(gè)名為INDEX_STATS的動(dòng)態(tài)性能視圖,其中最多只包含一行,即這個(gè)ANALYZE命令最后一次執(zhí)行的信息。例如:1. createtableiot(owner,object_type,object_name,2. constraintiot_pkprimarykey(owner,object_type,object_name)3. organizationindexnocompress4. asselectdistinctowner,object_type,object_namefromall_objects;5. 6. analyzein

18、dexiot_pkvalidatestructure;7. 8. selectlf_blks,br_blks,used_space,opt_cmpr_count,9. opt_cmpr_pctsavefromindex_stats;得到結(jié)果:1. LF_BLKSBR_BLKSUSED_SPACEOPT_CMPR_COUNTOPT_CMPR_PCTSAVE2. -3. 34832496647233LF_BLKS表示索引使用了348個(gè)葉子塊(即數(shù)據(jù)所在的塊);BR_BLKS表示索引使用了3個(gè)分支塊(在索引結(jié)構(gòu)中導(dǎo)航所用的塊)來找到這些葉子塊;USED_SPACE表示使用的空間大約是2496647字

19、節(jié);OPT_CMPR_COUNT(最優(yōu)壓縮數(shù))表示最優(yōu)的壓縮設(shè)置為COMPRESS 2;OPT_CMPR_PCTSAVE(最優(yōu)的節(jié)省壓縮百分比)表示如果設(shè)置為COMPRESS 2,就能節(jié)省大約33%的存儲(chǔ)空間??梢杂胊lter table iot move compress 2;來重建IOT,之后ANALYZE INDEX,可以看到壓縮后的效果如下:1. LF_BLKSBR_BLKSUSED_SPACEOPT_CMPR_COUNTOPT_CMPR_PCTSAVE2. -3. 2331167191420溢出段(OVERFLOW子句)索引一般在表的一個(gè)列子集上。通常索引塊上的行數(shù)比表塊上的行數(shù)會(huì)多

20、很多,這對(duì)索引是有利的,否則Oracle需要花費(fèi)大量的時(shí)間來維護(hù)索引,因?yàn)槊總€(gè)INSERT或UPDATE都可能導(dǎo)致索引塊分解,以容納新數(shù)據(jù)。OVERFLOW子句允許你建立另一個(gè)段(這就使得IOT成為一個(gè)多段對(duì)象),根據(jù)我們的設(shè)定,IOT的行數(shù)據(jù)的一部分可以溢出到這個(gè)段中,這樣可以讓索引葉子塊(包含具體索引數(shù)據(jù)的塊)能夠高效地存儲(chǔ)數(shù)據(jù)。需要注意,構(gòu)成主鍵的列不能溢出,它們必須直接放在葉子塊上。建立IOT時(shí),最關(guān)鍵的是適當(dāng)?shù)胤峙鋽?shù)據(jù),即哪些數(shù)據(jù)存儲(chǔ)在索引塊上,哪些數(shù)據(jù)存儲(chǔ)在溢出段上。使用溢出段的條件可以采用兩種方式來指定: PCTTHRESHOLD行中的數(shù)據(jù)量超過塊的這個(gè)百分比時(shí),行中余下的列將存

21、儲(chǔ)在溢出段中。例如,如果PCTTHRESHOLD是10%,而塊大小是8KB,長(zhǎng)度大于800字節(jié)的行就會(huì)把其中一部分存儲(chǔ)在溢出段中。Oracle會(huì)從最后一列開始向前查找,直到不包括主鍵 的最后一列,得出哪些列需要存儲(chǔ)在溢出段中。例如:create table iot1 (x int primary key, y date, z varchar2(2000)organization index pctthreshold 10 overflow; INCLUDING行中從第一列直到INCLUDING子句所指定列(也包括這一列)的所有列都存儲(chǔ)在索引塊上,余下的列存儲(chǔ)在溢出段中。例如:create ta

22、ble iot2 (x int primary key, y date, z varchar2(2000)organization index including y overflow;IOT上建立索引IOT本身可以再建索引,就像在索引之上再加索引,這稱為二次索引(secondary index)。 IOT上的索引可以使用非主鍵列提供IOT數(shù)據(jù)的快速、高效訪問。正常情況下,索引包含了所指向的行的物理地址,即rowid。而IOT二次索引無法做到這一點(diǎn)。因?yàn)镮OT中的行可以大量移動(dòng),而且它不像堆組織表中的行那樣“遷移”。IOT中的行肯定在索引結(jié)構(gòu)中的每個(gè)位置上,這取決于它的主鍵值;索引本身的大小和

23、形狀發(fā)生改變時(shí)行就會(huì)移動(dòng)。因此,Oracle引入了一個(gè)邏輯rowid(logical rowid),這些邏輯rowid根據(jù)IOT主鍵建立。因此,與常規(guī)表相比,IOT上的索引效率稍低。分區(qū)表一、分區(qū)表:隨著表的不斷增大,對(duì)于新紀(jì)錄的增加、查找、刪除等(DML)的維護(hù)也更加困難。對(duì)于數(shù)據(jù)庫(kù)中的超大型表,可通過把它的數(shù)據(jù)分成若干個(gè)小表,從而簡(jiǎn)化數(shù)據(jù)庫(kù)的管理活動(dòng)。對(duì)于每一個(gè)簡(jiǎn)化后的小表,我們稱為一個(gè)單個(gè)的分區(qū)。對(duì)于分區(qū)的訪問,我們不需要使用特殊的SQL查詢語(yǔ)句或特定的DML語(yǔ)句,而且可以單獨(dú)的操作單個(gè)分區(qū),而不是整個(gè)表。同時(shí)可以將不同分區(qū)的數(shù)據(jù)放置到不同的表空間,比如將不同年份的銷售數(shù)據(jù),存放在不同的

24、表空間,即年的銷售數(shù)據(jù)存放到TBS_2001,2002年的銷售數(shù)據(jù)存放到TBS_2002,依次類推,從而實(shí)現(xiàn)了分散存儲(chǔ),這將大大的簡(jiǎn)化大容量表的管理,提高查詢性能及I/O并發(fā)等。對(duì)于外部應(yīng)用程序來說,雖然存在不同的分區(qū),且數(shù)據(jù)位于不同的表空間,但邏輯上仍然是一張表 可以使用SQL*Loader,IMPDP,EXPDP,Import,Export等工具來裝載或卸載分區(qū)表中的數(shù)據(jù)關(guān)于分區(qū)表的功能實(shí)際上同SQL server 中的分區(qū)表是同樣的概念,只不過SQL server中的數(shù)據(jù)存放到了文件組,相當(dāng)于Oracle概念中的表空間,二、何時(shí)分區(qū) 當(dāng)表達(dá)到GB大小且繼續(xù)增長(zhǎng)需要將歷史數(shù)據(jù)和當(dāng)前的數(shù)據(jù)分

25、開單獨(dú)處理,比如歷史數(shù)據(jù)僅僅需要只讀,而當(dāng)前數(shù)據(jù)則實(shí)現(xiàn)DML三、分區(qū)的條件及特性 共性:不同的分區(qū)之間必須有相同的邏輯屬性,比如表名,列名,數(shù)據(jù)類型,約束等,個(gè)性:各個(gè)分區(qū)可以有不同的物理屬性,比如pctfree, pctused, and tablespaces.分區(qū)獨(dú)立性:即使某些分區(qū)不可用,其他分區(qū)仍然可用。特殊性:含有LONG、LONGRAW數(shù)據(jù)類型的表不能進(jìn)行分區(qū)四、分區(qū)的優(yōu)點(diǎn)1、提高查詢性能:只需要搜索特定分區(qū),而非整張表,提高查詢速度2、節(jié)約維護(hù)時(shí)間:?jiǎn)蝹€(gè)分區(qū)的數(shù)據(jù)裝載,索引重建,備份,維護(hù)等將遠(yuǎn)小于整張表的維護(hù)時(shí)間。3、節(jié)約維護(hù)成本:可以單獨(dú)備份和恢復(fù)每個(gè)分區(qū)4、均衡I/O:將

26、不同的分區(qū)映射到不同的磁盤以平衡I/O,提高并發(fā) 五、ORACLE分區(qū)類型:范圍分區(qū)、散列分區(qū)、列表分區(qū)、組合分區(qū)可以對(duì)索引和表分區(qū),全局索引只能按范圍分區(qū),可以將其定義在任何類型的分區(qū)或非分區(qū)表上。通常全局索引比局部索引需要更多的維護(hù)局部索引與基礎(chǔ)表是等同分區(qū)的,用于反映其基礎(chǔ)表的結(jié)構(gòu)1.Range分區(qū):行映射到基于列值范圍的分區(qū)Range 分區(qū),又成為范圍分區(qū),基于分區(qū)鍵值的范圍將數(shù)據(jù)映射到所建立的分區(qū)上。這是最通用的分區(qū)類型。創(chuàng)建范圍分區(qū)時(shí),必須指定以下內(nèi)容分區(qū)方法:range分區(qū)列標(biāo)識(shí)分區(qū)邊界的分區(qū)描述使用Range 分區(qū)的時(shí)候,要記住幾條規(guī)則:每個(gè)分區(qū)都包含VALUES LESS T

27、HAN字名,定義了分區(qū)的上層邊界。任何等于和大于分區(qū)鍵值的二進(jìn)制值都被添加到下一個(gè)高層分區(qū)中。所有的分區(qū),除了第一個(gè),如果低于VALUES LESS THAN所定義的下層邊界,都放在前面的分區(qū)中。MAXVALUE可以用來定義最高層的分區(qū)。MAXVALUE表示了虛擬的無限值示例:create table sal_range (salesman_id number(5),salesman_name varchar2(30),sales_amount number(10),sales_date date)partition by range (sales_date) -創(chuàng)建基于日期的范圍分區(qū)并存儲(chǔ)到

28、不同的表空間(partition sal_jan2000 values less than(to_date(02/01/2000,DD/MM/YYYY) tablespace sal_range_jan2000,partition sal_feb2000 values less than(to_date(03/01/2000,DD/MM/YYYY) tablespace sal_range_feb2000,partition sal_mar2000 values less than(to_date(04/01/2000,DD/MM/YYYY) tablespace sal_range_mar2

29、000,partition sal_apr2000 values less than(to_date(05/01/2000,DD/MM/YYYY) tablespace sal_range_apr2000);create table r -創(chuàng)建基于值范圍的分區(qū),分區(qū)子句未指定表空間時(shí)則位于缺省的表空間(a int) partition by range (a)(partition p1 values less than (10),partition p2 values less than (20),partition p3 values less than (30),partition p4

30、values less than (maxvalue);select * from r partition (p1) -查看分區(qū)中的數(shù)據(jù)一個(gè)分區(qū)的損壞不會(huì)影響其它分區(qū)的數(shù)據(jù):alter table r drop partiton p1select * from r select * from r partition (p4)除分區(qū)數(shù)據(jù)不見外,其它都正常partition by 用于指定分區(qū)方式range 表示分區(qū)的方式是范圍劃分partition pn 用于指定分區(qū)的名字values less than 指定分區(qū)的上界(上限)添加分區(qū):ALTER TABLE r add partition p

31、5 values less than (xxx ) tablespace xx;查看分區(qū)表相關(guān)信息:SELECT table_name,partition_name,subpartition_count,tablespace_name,user_stats from user_tab_partitions;獲取創(chuàng)建分區(qū)表的元數(shù)據(jù): set long 10000 select dbms_metadata.get_ddl(TABLE,R,SCOTT) from dual; 表 表名 用戶名 區(qū)分大小寫2.Hash分區(qū):散列分區(qū)Hash分區(qū)能夠很容易對(duì)數(shù)據(jù)進(jìn)行分區(qū),因?yàn)檎Z(yǔ)法很簡(jiǎn)單,很容易實(shí)現(xiàn)。在下面

32、這種情況下,使用hash分區(qū)比range分區(qū)更好:事先不知道需要將多少數(shù)據(jù)映射到給定范圍的時(shí)候分區(qū)的范圍大小很難確定,或者很難平衡的時(shí)候Range分區(qū)使數(shù)據(jù)得到不希望的聚集時(shí)性能特性,如并行DML、分區(qū)剪枝和分區(qū)連接很重要的時(shí)候創(chuàng)建散列分區(qū)時(shí),必須指定以下信息分區(qū)方法:hash分區(qū)列分區(qū)數(shù)量或單獨(dú)的分區(qū)描述分裂、刪除和合并分區(qū)不能應(yīng)用于Hash分區(qū),但是,Hash分區(qū)能夠合并和添加。創(chuàng)建hash分區(qū)有兩種方法:一種方法是指定分區(qū)數(shù)量,另一種方法是指定分區(qū)的名字,但兩者不能同時(shí)指定。方法一:指定分區(qū)數(shù)量create table dept2 (deptno number,deptname varc

33、har2(32)partition by hash(deptno) partitions 4;方法二:指定分區(qū)的名字create table dept3 (deptno number,deptname varchar2(32)partition by hash(deptno) (partition p1 tablespace p1,partition p2 tablespace p2);create table sales_hash(salesman_id number(5),salesman_name varchar2(30),sales_amount number(10),week_no

34、number(2)partition by hash (salesman_id)partitions 4store in (data1,data2,data3,data4)data1,data2,data3,data4 為表空間名。散列分區(qū)表的每個(gè)分區(qū)都被存儲(chǔ)在單獨(dú)的段中。3.List分區(qū):列表分區(qū)List分區(qū)可以控制如何將行映射到分區(qū)中去。可以在每個(gè)分區(qū)的鍵上定義離散的值不同于Range分區(qū)和Hash分區(qū),Range分區(qū)與分區(qū)相關(guān)聯(lián),為分區(qū)列假設(shè)了一個(gè)值的自然范圍,故不可能將該值的范圍以外的分區(qū)組織到一起。hash分區(qū)時(shí)不允許對(duì)數(shù)據(jù)的劃分進(jìn)行控制,因?yàn)橄到y(tǒng)使用的是散列函數(shù)來劃分?jǐn)?shù)據(jù)的。Lis

35、t分區(qū)的優(yōu)點(diǎn)在于按照自然的方式將無序和不相關(guān)的數(shù)據(jù)集合分組。List分區(qū)不支持多列分區(qū),如果將表按列分區(qū),那么分區(qū)鍵就只能有表的一個(gè)單獨(dú)列組成。Range分區(qū)和Hash分區(qū)可以對(duì)多列進(jìn)行分區(qū)。List分區(qū)時(shí)必須指定的以下內(nèi)容分區(qū)方法:list分區(qū)列分區(qū)描述,每個(gè)描述指定一串文字值(值的列表),它們是分區(qū)列(它們限定將被包括在分區(qū)中的行)的離散值示例:create table sales_list(salesman_id number(5),salesman_name varchar2(30),sales_state varchar2(20),sales_amount number(10),sa

36、les_date date)partition by list (sales_state)(partition sales_west values (California,Hawaii) tablespace x,partition sales_east values (New York,Virginia) tablespace y,partition sales_central values (Texas,Illinois) tablespace z,partition sales_other values(DEFAULT) tablespace o);添加分區(qū): alter table s

37、ales3 add partition hk values (HK) tablespace xx4.Composite Partitioning:合成分區(qū)、組合分區(qū)組合分區(qū)使用range方法分區(qū),在每個(gè)子分區(qū)中使用hash方法進(jìn)行再分區(qū)。組合分區(qū)比range分區(qū)更容易管理,充分使用了hash分區(qū)的并行優(yōu)勢(shì)。組合分區(qū)支持歷史數(shù)據(jù)和條塊數(shù)據(jù)兩者。如添加新的RANGE分區(qū),同時(shí)為DML操作提供更高層的并行性。創(chuàng)建組合分區(qū)時(shí),需要指定如下內(nèi)容:分區(qū)方法:range分區(qū)列標(biāo)識(shí)分區(qū)邊界的分區(qū)描述子分區(qū)方法:hash子分區(qū)列每個(gè)分區(qū)的子分區(qū)數(shù)量,或子分區(qū)的描述create table sales_compo

38、site(salesman_id number(5),salesman_name varchar2(30),sales_amount number(10),sales_date date)partition by range(sales_date)subpartition by hash(salesman_id)subpartitions 4store in (tbs1,tbs2,tbs3,tbs4)(partition sales_jan2000 values less than(to_date(02/01/2000,DD/MM/YYYY),partition sales_feb2000 v

39、alues less than(to_date(03/01/2000,DD/MM/YYYY),partition sales_mar2000 values less than(to_date(04/01/2000,DD/MM/YYYY);create table T_TRACK (N_TRACK_ID NUMBER(20) NOT NULL, C_COMP_CDE VARCHAR2(6),T_TRACK_TM DATE NOT NULL,C_CAR_NO VARCHAR2(50) )partition by range(T_TRACK_TM)subpartition by list(C_COM

40、P_CDE)(partition P_2009_11 values less than (to_date(2009-12-01,yyyy-MM-dd)(subpartition P_2009_11_P1013 values(P1013);六、表分區(qū)后的相關(guān)操作1.添加分區(qū)alter table T_TRACK add partition P_2005_04 values less than(to_date(2005-05-01,yyyy-MM-dd)( subpartition P_2005_04_P1013 values(P1013), subpartition P_2005_04_P1013 values(P1014), subpartition P_2005_04_P1013 values(P1015), subpartition P_2005_04_P1013 values(P1016)2.刪除

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論