ORACLE 19 C試食、新特性の混合パーティション表
ハイブリッドパーティション表
Oracleハイブリッド・パーティション・テーブルは、従来の内部パーティション・テーブルと外部パーティション・テーブルを組み合わせることで、ハイブリッド・パーティション・テーブルと呼ばれるより一般的なパーティションを形成します.
混合パーティション表を有効にすると、内部パーティションと外部パーティションを単一のパーティション表に統合しやすくなります.この機能により、非アクティブなパーティションを外部ファイルに容易に移動でき、ストレージソリューションのコストを削減できます.
混合パーティション表のパーティションはoracle表領域と外部ソースに存在することができ、カンマ区切り記号(CSV)で記録されたLinuxファイルやjavaサービスを使用したHDFS上のファイルなどの列があります.混合パーティション表は既存の外部表タイプの外部パーティションをサポートする:ORACLE_DATAPUMP,ORACLE_LOADER,ORACLE_HDFS,ORACLE_HIVE.外部パーティションの外部テーブルタイプは、次のアクセスドライバタイプを使用します:・ORACLE_DATAPUMP · ORACLE_LOADER · ORACLE_HDFS · ORACLE_HIVE対ORACLE_LOADERとORACLE_DATAPUMPの外部パーティションアクセスドライバタイプは、・データファイルが存在するディレクトリのREAD権限・ログファイルとエラーファイルが存在するディレクトリのWRITE権限・プリプロセッサが存在するディレクトリのEXECUTE権限をユーザに付与する必要がある
テーブル・レベルの外部パラメータは、ハイブリッド・パーティション・テーブルのすべてのパーティションに適用されます.たとえば、EXTERNAL PARTITION ATTRIBUTES文で定義されたDEFAULT DIRECTORY値は、データファイル、ログファイル、エラーファイルのデフォルトの場所です.デフォルトのディレクトリ位置は、パーティション文でDEFAULT DIRECTORYを使用して上書きできます.ORACLE_についてHIVEとORACLE_HDFSはドライバタイプの外部パーティションにアクセスし、DEFAULT DIRECTORYは指定したログファイルを保存するためにユーザーのみを使用します.
外部パーティションに格納されているデータでは、制約がテーブル全体に適用されるため、制約実行はサポートされません.たとえば、プライマリ・キーと外部キーの制約は、ブレンド・パーティション・テーブルで強制的に実行できません.NOT NULL、プライマリ・キー制約、一意制約、外部キー制約などの制約は、RELY DISABLEモードでのみサポートされます.これらの制約の動的最適化に基づいて、セッションパラメータQUERY_を設定する必要があります.REWRITE_INTEGRITY、TRUSTEDまたはSTALE_TOLERATED.
混合パーティション表は、内部パーティションと外部パーティションによってパーティションベースの最適化を使用できます.パーティションベースの最適化には、・Static partition pruning・Dynamic partition pruning・Bloom pruningの内部および外部データ・ソースが含まれます.
ハイブリッドパーティションテーブルは、内部パーティションと外部パーティションがデータを移動する機能を提供します.ただし、テーブルレベルでのADOの定義は、テーブルの内部パーティションに影響します.
ハイブリッドパーティションテーブルの操作をサポート
混合パーティション表でサポートされているアクションは、次のとおりです.
・単一レベルのRANGEとLISTパーティションを作成する方法・ALTER TABLEを使用する…DDLs列例えばADD、DROPとRENAMEパーティション・外部パーティションで外部データソースのパーティションレベルを変更する(翻訳の正確さが分からない)・既存の内部パーティション表を内部と外部の部分領域を含む混合パーティション表に変更する・既存の位置を空に変更する外部パーティションを空にする・内部パーティションにグローバル部分非一意インデックスを作成する・内部パーティションに物体化ビューを作成する・QUERY_REWRITE_INTEGRITY 、STALE TOLERATEモードで外部パーティションを含むマテリアライズド・ビューを作成・外部パーティションですべてのパーティションの完全リフレッシュをサポート・ミキシングパーティション表の内部パーティションでDMLフリップフロップ操作が可能・ミキシングパーティション表でANALYZE TABLEを使用…VALLIDATE STRUCTURE内のみチェック・既存の外部パーティションを持たないミキシングパーティション表を内のみに変更一部のパーティションのパーティション・テーブル・内部パーティションは、外部非パーティション・テーブルに変更できます.逆もまた然り.
ハイブリッドパーティションテーブルの制限(遅すぎて翻訳できません)
Restrictions on Hybrid Partitioned Tables The following are restrictions and limitations on hybrid partitioned tables. • Restrictions that apply to external tables also apply to hybrid partitioned tables unless explicitly noted • No support for REFERENCE and SYSTEM partitioning methods • Only single level LIST and RANGE partitioning are supported. • No unique indexes or global unique indexes. Only partial indexes are allowed and unique indexes cannot be partial. • Only single level list partitioning is supported for HIVE. • Attribute clustering (CLUSTERING clause) is not allowed. • DML operations only on internal partitions of a hybrid partitioned table (external partitions are treated as read-only partitions) • In-memory defined on the table level only has an effect on internal partitions of the hybrid partitioned table. • No column default value • Invisible columns are not allowed. • The CELLMEMORY clause is not allowed. • SPLIT, MERGE, and MOVE maintenance operations are not allowed on internal partitions. • LOB, LONG, and ADT types are not allowed. • Only RELY constraints are allowed
例:
SYSユーザーを使用したハイブリッドパーティションテーブルの作成
#ディレクトリの作成
通常のRANGEパーティションテーブルの作成
#範囲パーティションテーブルhybrid_partition_tableに外部パーティションを追加
未完待機
Oracleハイブリッド・パーティション・テーブルは、従来の内部パーティション・テーブルと外部パーティション・テーブルを組み合わせることで、ハイブリッド・パーティション・テーブルと呼ばれるより一般的なパーティションを形成します.
混合パーティション表を有効にすると、内部パーティションと外部パーティションを単一のパーティション表に統合しやすくなります.この機能により、非アクティブなパーティションを外部ファイルに容易に移動でき、ストレージソリューションのコストを削減できます.
混合パーティション表のパーティションはoracle表領域と外部ソースに存在することができ、カンマ区切り記号(CSV)で記録されたLinuxファイルやjavaサービスを使用したHDFS上のファイルなどの列があります.混合パーティション表は既存の外部表タイプの外部パーティションをサポートする:ORACLE_DATAPUMP,ORACLE_LOADER,ORACLE_HDFS,ORACLE_HIVE.外部パーティションの外部テーブルタイプは、次のアクセスドライバタイプを使用します:・ORACLE_DATAPUMP · ORACLE_LOADER · ORACLE_HDFS · ORACLE_HIVE対ORACLE_LOADERとORACLE_DATAPUMPの外部パーティションアクセスドライバタイプは、・データファイルが存在するディレクトリのREAD権限・ログファイルとエラーファイルが存在するディレクトリのWRITE権限・プリプロセッサが存在するディレクトリのEXECUTE権限をユーザに付与する必要がある
テーブル・レベルの外部パラメータは、ハイブリッド・パーティション・テーブルのすべてのパーティションに適用されます.たとえば、EXTERNAL PARTITION ATTRIBUTES文で定義されたDEFAULT DIRECTORY値は、データファイル、ログファイル、エラーファイルのデフォルトの場所です.デフォルトのディレクトリ位置は、パーティション文でDEFAULT DIRECTORYを使用して上書きできます.ORACLE_についてHIVEとORACLE_HDFSはドライバタイプの外部パーティションにアクセスし、DEFAULT DIRECTORYは指定したログファイルを保存するためにユーザーのみを使用します.
外部パーティションに格納されているデータでは、制約がテーブル全体に適用されるため、制約実行はサポートされません.たとえば、プライマリ・キーと外部キーの制約は、ブレンド・パーティション・テーブルで強制的に実行できません.NOT NULL、プライマリ・キー制約、一意制約、外部キー制約などの制約は、RELY DISABLEモードでのみサポートされます.これらの制約の動的最適化に基づいて、セッションパラメータQUERY_を設定する必要があります.REWRITE_INTEGRITY、TRUSTEDまたはSTALE_TOLERATED.
混合パーティション表は、内部パーティションと外部パーティションによってパーティションベースの最適化を使用できます.パーティションベースの最適化には、・Static partition pruning・Dynamic partition pruning・Bloom pruningの内部および外部データ・ソースが含まれます.
ハイブリッドパーティションテーブルは、内部パーティションと外部パーティションがデータを移動する機能を提供します.ただし、テーブルレベルでのADOの定義は、テーブルの内部パーティションに影響します.
ハイブリッドパーティションテーブルの操作をサポート
混合パーティション表でサポートされているアクションは、次のとおりです.
・単一レベルのRANGEとLISTパーティションを作成する方法・ALTER TABLEを使用する…DDLs列例えばADD、DROPとRENAMEパーティション・外部パーティションで外部データソースのパーティションレベルを変更する(翻訳の正確さが分からない)・既存の内部パーティション表を内部と外部の部分領域を含む混合パーティション表に変更する・既存の位置を空に変更する外部パーティションを空にする・内部パーティションにグローバル部分非一意インデックスを作成する・内部パーティションに物体化ビューを作成する・QUERY_REWRITE_INTEGRITY 、STALE TOLERATEモードで外部パーティションを含むマテリアライズド・ビューを作成・外部パーティションですべてのパーティションの完全リフレッシュをサポート・ミキシングパーティション表の内部パーティションでDMLフリップフロップ操作が可能・ミキシングパーティション表でANALYZE TABLEを使用…VALLIDATE STRUCTURE内のみチェック・既存の外部パーティションを持たないミキシングパーティション表を内のみに変更一部のパーティションのパーティション・テーブル・内部パーティションは、外部非パーティション・テーブルに変更できます.逆もまた然り.
ハイブリッドパーティションテーブルの制限(遅すぎて翻訳できません)
Restrictions on Hybrid Partitioned Tables The following are restrictions and limitations on hybrid partitioned tables. • Restrictions that apply to external tables also apply to hybrid partitioned tables unless explicitly noted • No support for REFERENCE and SYSTEM partitioning methods • Only single level LIST and RANGE partitioning are supported. • No unique indexes or global unique indexes. Only partial indexes are allowed and unique indexes cannot be partial. • Only single level list partitioning is supported for HIVE. • Attribute clustering (CLUSTERING clause) is not allowed. • DML operations only on internal partitions of a hybrid partitioned table (external partitions are treated as read-only partitions) • In-memory defined on the table level only has an effect on internal partitions of the hybrid partitioned table. • No column default value • Invisible columns are not allowed. • The CELLMEMORY clause is not allowed. • SPLIT, MERGE, and MOVE maintenance operations are not allowed on internal partitions. • LOB, LONG, and ADT types are not allowed. • Only RELY constraints are allowed
例:
SYSユーザーを使用したハイブリッドパーティションテーブルの作成
#ディレクトリの作成
SQL> CREATE DIRECTORY sales_data AS '/home/oracle/sales_data';
Directory created.
#
SQL> GRANT READ,WRITE ON DIRECTORY sales_data TO hr;
Grant succeeded.
# 2
SQL> CREATE DIRECTORY sales_data2 AS '/home/oracle/sales_data2';
Directory created.
SQL> GRANT READ,WRITE ON DIRECTORY sales_data2 TO hr;
Grant succeeded.
SQL> CREATE DIRECTORY sales_data3 AS '/home/oracle/sales_data3';
Directory created.
SQL> GRANT READ,WRITE ON DIRECTORY sales_data3 TO hr;
Grant succeeded.
SQL> CREATE DIRECTORY sales_data_acfs AS '/home/oracle/acfs1';
Directory created.
SQL> GRANT READ,WRITE ON DIRECTORY sales_data_acfs TO hr;
Grant succeeded.
通常のRANGEパーティションテーブルの作成
SQL> conn hr/hr;
Connected.
CREATE TABLE hybrid_partition_table
( prod_id NUMBER NOT NULL,
cust_id NUMBER NOT NULL,
time_id DATE NOT NULL,
channel_id NUMBER NOT NULL,
promo_id NUMBER NOT NULL,
quantity_sold NUMBER(10,2) NOT NULL,
amount_sold NUMBER(10,2) NOT NULL
)
EXTERNAL PARTITION ATTRIBUTES (
TYPE ORACLE_LOADER
DEFAULT DIRECTORY sales_data
ACCESS PARAMETERS(
FIELDS TERMINATED BY ','
(prod_id,cust_id,time_id DATE 'dd-mm-yyyy',channel_id,promo_id,quantity_sold,amount_sold)
)
REJECT LIMIT UNLIMITED
)
PARTITION BY RANGE (time_id)
(PARTITION sales_2014 VALUES LESS THAN (TO_DATE('01-01-2015','dd-mm-yyyy')),
PARTITION sales_2015 VALUES LESS THAN (TO_DATE('01-01-2016','dd-mm-yyyy')),
PARTITION sales_2016 VALUES LESS THAN (TO_DATE('01-01-2017','dd-mm-yyyy')) EXTERNAL
LOCATION ('sales2016_data.txt'),
PARTITION sales_2017 VALUES LESS THAN (TO_DATE('01-01-2018','dd-mm-yyyy')) EXTERNAL
DEFAULT DIRECTORY sales_data2 LOCATION ('sales2017_data.txt'),
PARTITION sales_2018 VALUES LESS THAN (TO_DATE('01-01-2019','dd-mm-yyyy')) EXTERNAL
DEFAULT DIRECTORY sales_data3 LOCATION ('sales2018_data.txt'),
PARTITION sales_2019 VALUES LESS THAN (TO_DATE('01-01-2020','dd-mm-yyyy')) EXTERNAL
DEFAULT DIRECTORY sales_data_acfs LOCATION ('sales2019_data.txt')
);
Table created.
#範囲パーティションテーブルhybrid_partition_tableに外部パーティションを追加
ALTER TABLE hybrid_partition_table
ADD PARTITION sales_2020 VALUES LESS THAN (TO_DATE('01-01-2021','dd-mm-yyyy'))
EXTERNAL DEFAULT DIRECTORY sales_data_acfs LOCATION ('sales2020_data.txt');
Table altered.
未完待機