5.4 Oracleオブジェクトを持つ表のパーティション化
パーティション化は、大規模な表や索引を、パーティションと呼ばれる小さく管理が容易な単位に分解することで、大規模な表や索引のサポート上の主要な問題が解決できます。
Oracleでは、オブジェクト、REF、VARRAYおよびネストした表を含む表をパーティション化できるように、パーティション化の機能を拡張しています。LOBに格納されるVARRAYは、LOBと同様に同一レベル・パーティション化されます。ネストした表の記憶表は、実表で同一レベル・パーティション化されます。
関連項目:
同一レベル・パーティション化の詳細は、次のマニュアルを参照してください。
例5-42では、列オブジェクトShipToAddrの属性であるzipコード(ToZip)に従って、発注書の表をパーティション化します。LineItemList_ntのネストした表は、パーティション化されたネストした表の記憶域を示します。
例5-42 オブジェクトを持つネストした表のパーティション化
CREATE TYPE StockItem_objtyp AS OBJECT (
StockNo NUMBER,
Price NUMBER,
TaxRate NUMBER);
/
CREATE TYPE LineItem_objtyp AS OBJECT (
LineItemNo NUMBER,
Stock_ref REF StockItem_objtyp,
Quantity NUMBER,
Discount NUMBER);
/
CREATE TYPE Address_objtyp AS OBJECT (
Street VARCHAR2(200),
City VARCHAR2(200),
State CHAR(2),
Zip VARCHAR2(20))
/
CREATE TYPE LineItemList_nt as table of LineItem_objtyp;
/
CREATE TYPE PurchaseOrder_ntyp AS OBJECT (
PONo NUMBER,
OrderDate DATE,
ShipDate DATE,
OrderForm BLOB,
LineItemList LineItemList_nt,
ShipToAddr Address_objtyp,
MAP MEMBER FUNCTION
ret_value RETURN NUMBER,
MEMBER FUNCTION
total_value RETURN NUMBER);
/
CREATE TABLE PurchaseOrders_ntab of PurchaseOrder_ntyp
LOB (OrderForm) store as (nocache logging)
NESTED TABLE LineItemList STORE AS LineItemList_ntab
PARTITION BY RANGE (ShipToAddr.zip)
(PARTITION PurOrderZone1_part VALUES LESS THAN ('59999')
LOB (OrderForm) store as (
storage (INITIAL 10 MINEXTENTS 10 MAXEXTENTS 100))
NESTED TABLE LineItemList store as LineitemZone1_part(
storage (INITIAL 10 MINEXTENTS 10 MAXEXTENTS 100)),
PARTITION PurOrderZone2_part VALUES LESS THAN ('79999')
LOB (OrderForm) store as (
storage (INITIAL 10 MINEXTENTS 10 MAXEXTENTS 100))
NESTED TABLE LineItemList store as LineitemZone2_part(
storage (INITIAL 10 MINEXTENTS 10 MAXEXTENTS 100)),
PARTITION PurOrderZone3_part VALUES LESS THAN ('99999')
LOB (OrderForm) store as (
storage (INITIAL 10 MINEXTENTS 10 MAXEXTENTS 100))
NESTED TABLE LineItemList store as LineitemZone3_part(
storage (INITIAL 10 MINEXTENTS 10 MAXEXTENTS 100)) )
/