這篇文章主要講解了“Oracle 11g引用分區(qū)表有什么作用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Oracle 11g引用分區(qū)表有什么作用”吧!
在喀喇沁等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作專業(yè)公司,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),營(yíng)銷型網(wǎng)站,外貿(mào)網(wǎng)站制作,喀喇沁網(wǎng)站建設(shè)費(fèi)用合理。
引用分區(qū)表是Oracle11g引入的新特性,在特定場(chǎng)合十分好用,解決了“并非所有表都具有您需要根據(jù)其進(jìn)行分區(qū)的列”這個(gè)問題。
根據(jù)Oracle官方文檔介紹,引用分區(qū)表是通過PARTITION BY REFERENCE語句來實(shí)現(xiàn),需要指定引用約束的名稱,該約束將成為應(yīng)用到該引用分區(qū)表所使用的約束。這個(gè)約束必須啟用和執(zhí)行。
和其他分區(qū)表一樣,你可以制定對(duì)象級(jí)別的默認(rèn)屬性,也可以隨意在特定分區(qū)設(shè)置屬性,覆蓋對(duì)象級(jí)別的屬性。
下面的sql語句創(chuàng)建了一個(gè)范圍分區(qū)表orders,引用分區(qū)子表order_items包含了4個(gè)分區(qū),分別是Q1_2005, Q2_2005, Q3_2005, Q4_2005,每個(gè)分區(qū)包含的order_items數(shù)據(jù)都是根據(jù)父表關(guān)聯(lián)列的范圍分區(qū)來存儲(chǔ)。
點(diǎn)擊(此處)折疊或打開
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語句中,引用分區(qū)子表沒有指定分區(qū)描述,默認(rèn)和父表保持一致;如果要指定分區(qū)描述,則分區(qū)描述的個(gè)數(shù)必須和父表的分區(qū)數(shù)保持一致。如果父表是一個(gè)復(fù)合分區(qū)表,則子表的分區(qū)和父表的子分區(qū)一一對(duì)應(yīng);否則,子表分區(qū)和父表的分區(qū)一一對(duì)應(yīng)。
需要注意的是,在引用分區(qū)表中不能指定分區(qū)的邊界。
引用分區(qū)表的分區(qū)可以單獨(dú)命名,如果沒有顯式地制定分區(qū)名稱,則直接繼承其關(guān)聯(lián)的父表分區(qū)名稱,除非父表分區(qū)名稱和已有名稱沖突。這種情況下,系統(tǒng)將自動(dòng)生成一個(gè)分區(qū)名稱。由于上述sql語句沒有指定名稱,則子表分區(qū)和父表分區(qū)的名稱應(yīng)該相同。
點(diǎn)擊(此處)折疊或打開
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語句沒有顯式指定表空間,則引用分區(qū)表的分區(qū)將和父表的相關(guān)分區(qū)放在一起。
感謝各位的閱讀,以上就是“Oracle 11g引用分區(qū)表有什么作用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Oracle 11g引用分區(qū)表有什么作用這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!