[引用分割槽表]Oracle 11g新特性之引用分割槽表
引用分割槽表是Oracle11g引入的新特性,在特定場合十分好用,解決了“並非所有表都具有您需要根據其進行分割槽的列”這個問題。
根據Oracle官方文件介紹,引用分割槽表是透過PARTITION BY REFERENCE語句來實現,需要指定引用約束的名稱,該約束將成為應用到該引用分割槽表所使用的約束。這個約束必須啟用和執行。
和其他分割槽表一樣,你可以制定物件級別的預設屬性,也可以隨意在特定分割槽設定屬性,覆蓋物件級別的屬性。
下面的sql語句建立了一個範圍分割槽表orders,引用分割槽子表order_items包含了4個分割槽,分別是Q1_2005, Q2_2005, Q3_2005, Q4_2005,每個分割槽包含的order_items資料都是根據父表關聯列的範圍分割槽來儲存。
在上述sql語句中,引用分割槽子表沒有指定分割槽描述,預設和父表保持一致;如果要指定分割槽描述,則分割槽描述的個數必須和父表的分割槽數保持一致。如果父表是一個複合分割槽表,則子表的分割槽和父表的子分割槽一一對應;否則,子表分割槽和父表的分割槽一一對應。
需要注意的是,在引用分割槽表中不能指定分割槽的邊界。
如果sql語句沒有顯式指定表空間,則引用分割槽表的分割槽將和父表的相關分割槽放在一起。
根據Oracle官方文件介紹,引用分割槽表是透過PARTITION BY REFERENCE語句來實現,需要指定引用約束的名稱,該約束將成為應用到該引用分割槽表所使用的約束。這個約束必須啟用和執行。
和其他分割槽表一樣,你可以制定物件級別的預設屬性,也可以隨意在特定分割槽設定屬性,覆蓋物件級別的屬性。
下面的sql語句建立了一個範圍分割槽表orders,引用分割槽子表order_items包含了4個分割槽,分別是Q1_2005, Q2_2005, Q3_2005, Q4_2005,每個分割槽包含的order_items資料都是根據父表關聯列的範圍分割槽來儲存。
點選(此處)摺疊或開啟
-
CREATE TABLE orders
-
( order_id NUMBER(12),
-
order_date TIMESTAMP,
-
order_mode VARCHAR2(8),
-
customer_id NUMBER(6),
-
order_status NUMBER(2),
-
order_total NUMBER(8,2),
-
sales_rep_id NUMBER(6),
-
promotion_id NUMBER(6),
-
CONSTRAINT orders_pk PRIMARY KEY(order_id)
-
)
-
PARTITION BY RANGE(order_date)
-
( PARTITION Q1_2005 VALUES LESS THAN (TO_DATE('01-APR-2005','DD-MON-YYYY')),
-
PARTITION Q2_2005 VALUES LESS THAN (TO_DATE('01-JUL-2005','DD-MON-YYYY')),
-
PARTITION Q3_2005 VALUES LESS THAN (TO_DATE('01-OCT-2005','DD-MON-YYYY')),
-
PARTITION Q4_2005 VALUES LESS THAN (TO_DATE('01-JAN-2006','DD-MON-YYYY'))
-
);
-
-
CREATE TABLE order_items
-
( order_id NUMBER(12) NOT NULL,
-
line_item_id NUMBER(3) NOT NULL,
-
product_id NUMBER(6) NOT NULL,
-
unit_price NUMBER(8,2),
-
quantity NUMBER(8),
-
CONSTRAINT order_items_fk
-
FOREIGN KEY(order_id) REFERENCES orders(order_id)
-
)
- PARTITION BY REFERENCE(order_items_fk);
需要注意的是,在引用分割槽表中不能指定分割槽的邊界。
引用分割槽表的分割槽可以單獨命名,如果沒有顯式地制定分割槽名稱,則直接繼承其關聯的父表分割槽名稱,除非父表分割槽名稱和已有名稱衝突。這種情況下,系統將自動生成一個分割槽名稱。由於上述sql語句沒有指定名稱,則子表分割槽和父表分割槽的名稱應該相同。
點選(此處)摺疊或開啟
-
SQL> select table_name,partition_name from user_tab_partitions;
-
-
TABLE_NAME PARTITION_NAME
-
------------------------------ ------------------------------
-
ORDER_ITEMS Q4_2005
-
ORDER_ITEMS Q3_2005
-
ORDER_ITEMS Q2_2005
-
ORDER_ITEMS Q1_2005
-
ORDERS Q4_2005
-
ORDERS Q3_2005
-
ORDERS Q2_2005
-
ORDERS Q1_2005
-
-
8 rows selected.
-
- SQL>
如果sql語句沒有顯式指定表空間,則引用分割槽表的分割槽將和父表的相關分割槽放在一起。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-2145784/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle分割槽表和分割槽表exchangeOracle
- ORACLE 19c 新特性之混合分割槽表Oracle
- oracle分割槽表和非分割槽表exchangeOracle
- 分割槽表之自動增加分割槽(11G)
- oracle 19C新特性——混合分割槽表Oracle
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- Oracle 12C新特性-線上把非分割槽錶轉為分割槽表Oracle
- oracle 分割槽表move和包含分割槽表的lob moveOracle
- Oracle分割槽表基礎運維-07增加分割槽(3列表分割槽)Oracle運維
- Oracle 12.2之後ALTER TABLE .. MODIFY轉換非分割槽表為分割槽表Oracle
- Oracle分割槽表基礎運維-04列表分割槽Oracle運維
- ORACLE分割槽表梳理系列Oracle
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- LightDB 22.4 新特性之相容Oracle線上轉換普通表為分割槽表Oracle
- Oracle分割槽表基礎運維-06分割槽表索引Oracle運維索引
- oracle將表配置為分割槽表Oracle
- oracle 普通表-分割槽表改造流程Oracle
- Oracle分割槽表基礎運維-07增加分割槽(1範圍分割槽)Oracle運維
- Oracle分割槽表基礎運維-09刪除分割槽Oracle運維
- Oracle分割槽表基礎運維-05組合分割槽Oracle運維
- Oracle分割槽表基礎運維-02範圍分割槽Oracle運維
- Oracle分割槽表基礎運維-03HASH分割槽Oracle運維
- Oracle分割槽表基礎運維-01分割槽表分類Oracle運維
- oracle 線上重新定義,普通表改變分割槽表,分割槽表可以更改型別、分割槽欄位等Oracle型別
- PostgreSQL/LightDB 分割槽表之分割槽裁剪SQL
- PG的非分割槽表線上轉分割槽表
- 【MYSQL】 分割槽表MySql
- 非分割槽錶轉換成分割槽表
- 移動分割槽表和分割槽索引的表空間索引
- Oracle SQL調優之分割槽表OracleSQL
- 對oracle分割槽表的理解整理Oracle
- c++之引用及記憶體分割槽模型C++記憶體模型
- oracle 11g 分割槽表建立(年月日周時分秒)Oracle
- 分割槽表-實戰
- MySQL 分割槽表探索MySql
- 【Linux】MBR磁碟分割槽表只能有四個分割槽?Linux
- ORACLE刪除-表分割槽和資料Oracle
- Oracle分割槽表基礎運維-07增加分割槽(4 RANGE_HASH)Oracle運維
- Oracle分割槽表基礎運維-07增加分割槽(5RANGE_LIST)Oracle運維