溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Oracle 11g引用分區(qū)表有什么作用

發(fā)布時間:2021-12-07 11:44:12 來源:億速云 閱讀:136 作者:iii 欄目:關(guān)系型數(shù)據(jù)庫

這篇文章主要講解了“Oracle 11g引用分區(qū)表有什么作用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Oracle 11g引用分區(qū)表有什么作用”吧!

        引用分區(qū)表是Oracle11g引入的新特性,在特定場合十分好用,解決了“并非所有表都具有您需要根據(jù)其進(jìn)行分區(qū)的列”這個問題。
 
       根據(jù)Oracle官方文檔介紹,引用分區(qū)表是通過PARTITION BY REFERENCE語句來實現(xiàn),需要指定引用約束的名稱,該約束將成為應(yīng)用到該引用分區(qū)表所使用的約束。這個約束必須啟用和執(zhí)行。

   和其他分區(qū)表一樣,你可以制定對象級別的默認(rèn)屬性,也可以隨意在特定分區(qū)設(shè)置屬性,覆蓋對象級別的屬性。

   下面的sql語句創(chuàng)建了一個范圍分區(qū)表orders,引用分區(qū)子表order_items包含了4個分區(qū),分別是Q1_2005, Q2_2005, Q3_2005, Q4_2005,每個分區(qū)包含的order_items數(shù)據(jù)都是根據(jù)父表關(guān)聯(lián)列的范圍分區(qū)來存儲。

點擊(此處)折疊或打開

  1. CREATE TABLE orders

  2.     ( order_id NUMBER(12),

  3.       order_date         TIMESTAMP,

  4.       order_mode VARCHAR2(8),

  5.       customer_id NUMBER(6),

  6.       order_status NUMBER(2),

  7.       order_total NUMBER(8,2),

  8.       sales_rep_id NUMBER(6),

  9.       promotion_id NUMBER(6),

  10.       CONSTRAINT orders_pk PRIMARY KEY(order_id)

  11.     )

  12.   PARTITION BY RANGE(order_date)

  13.     ( PARTITION Q1_2005 VALUES LESS THAN (TO_DATE('01-APR-2005','DD-MON-YYYY')),

  14.       PARTITION Q2_2005 VALUES LESS THAN (TO_DATE('01-JUL-2005','DD-MON-YYYY')),

  15.       PARTITION Q3_2005 VALUES LESS THAN (TO_DATE('01-OCT-2005','DD-MON-YYYY')),

  16.       PARTITION Q4_2005 VALUES LESS THAN (TO_DATE('01-JAN-2006','DD-MON-YYYY'))

  17.     );


  18. CREATE TABLE order_items

  19.     ( order_id NUMBER(12) NOT NULL,

  20.       line_item_id NUMBER(3) NOT NULL,

  21.       product_id NUMBER(6) NOT NULL,

  22.       unit_price NUMBER(8,2),

  23.       quantity NUMBER(8),

  24.       CONSTRAINT order_items_fk

  25.       FOREIGN KEY(order_id) REFERENCES orders(order_id)

  26.     )

  27.     PARTITION BY REFERENCE(order_items_fk);

    在上述sql語句中,引用分區(qū)子表沒有指定分區(qū)描述,默認(rèn)和父表保持一致;如果要指定分區(qū)描述,則分區(qū)描述的個數(shù)必須和父表的分區(qū)數(shù)保持一致。如果父表是一個復(fù)合分區(qū)表,則子表的分區(qū)和父表的子分區(qū)一一對應(yīng);否則,子表分區(qū)和父表的分區(qū)一一對應(yīng)。

   需要注意的是,在引用分區(qū)表中不能指定分區(qū)的邊界。


       引用分區(qū)表的分區(qū)可以單獨命名,如果沒有顯式地制定分區(qū)名稱,則直接繼承其關(guān)聯(lián)的父表分區(qū)名稱,除非父表分區(qū)名稱和已有名稱沖突。這種情況下,系統(tǒng)將自動生成一個分區(qū)名稱。由于上述sql語句沒有指定名稱,則子表分區(qū)和父表分區(qū)的名稱應(yīng)該相同。

點擊(此處)折疊或打開

  1. SQL> select table_name,partition_name from user_tab_partitions;


  2. TABLE_NAME                     PARTITION_NAME

  3. ------------------------------ ------------------------------

  4. ORDER_ITEMS                    Q4_2005

  5. ORDER_ITEMS                    Q3_2005

  6. ORDER_ITEMS                    Q2_2005

  7. ORDER_ITEMS                    Q1_2005

  8. ORDERS                         Q4_2005

  9. ORDERS                         Q3_2005

  10. ORDERS                         Q2_2005

  11. ORDERS                         Q1_2005


  12. 8 rows selected.


  13. SQL>


       如果sql語句沒有顯式指定表空間,則引用分區(qū)表的分區(qū)將和父表的相關(guān)分區(qū)放在一起。

感謝各位的閱讀,以上就是“Oracle 11g引用分區(qū)表有什么作用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Oracle 11g引用分區(qū)表有什么作用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI