この付録では、Oracle B2Bインスタンス表のパーティション化について説明します。
この付録の項は次のとおりです。
Oracle B2Bでは、CPST_INST_CREATED_TIME
列に基づいて、Oracle B2Bインスタンス表をパーティション化できます。パーティション化できる表を次に示します。
B2B_APP_MESSAGE
B2B_BUSINESS_MESSAGE
B2B_DATA_STORAGE
B2B_EXT_BUSINESS_MESSAGE
B2B_WIRE_MESSAGE
Oracle B2B表を正常にパーティション化するために準拠する必要がある要件を次に示します。
レンジ・パーティションまたは時間隔パーティションを使用して表をパーティション化します。
Oracle B2Bのすべての表で同じ日付範囲が指定されていることを保証します。これは、パージが正しく機能するための前提条件です。
レンジ・パーティションを使用する場合、実行時エラーが発生しないように、デフォルト・パーティションを使用することをお薦めします。
表の再作成:
Oracle B2Bシステム・マテリアライズド・ビューにはOracle B2Bインスタンス表(B2B_BUSINESS_MESSAGE
、B2B_EXT_BUSINESS_MESSAGE
)に対する依存性があり、これらの表に対してマテリアライズド・ビュー・ログが作成されます。パーティションの作成中に、これらのマテリアライズド・ビュー・ログの再作成およびシステム・マテリアライズド・ビューの完全リフレッシュを実行する必要があります。
アップグレード時:
パーティション化は、アプリケーション・インスタンスをOracle SOA Suiteの必要なバージョンにアップグレードした後にのみ実行することをお薦めします。これは、パーティション化の前に、Oracle SOA Suiteスキーマのアップグレードが完了済である必要があるからです。これにより、古いバージョンのランタイムからデータベースのCPST_INST_CREATED_TIME
列にNULL値が格納されることを回避します。
これらの表に既存データがあり、CPST_INST_CREATED_TIME
列にNULL値が格納されている場合、適切なパーティション化を実行するには、レコードを更新して非NULL値にする必要があります。
表をパーティション化するには、次のスクリプトを使用します。
レンジ・パーティションの場合:
createpartition.sql
時間隔パーティションの場合:
intervalpartition.sql
コマンド・プロンプトを開き、次のコマンドを実行します。
setenv ORACLE_HOME <path to Oracle DB Home> setenv ORACLE_SID {dbname} setenv PATH <location of PATH variable> sqlplus CONNECT DEV_SOAINFRA cd <path to the partition script> ./createpartition.sql
パーティション・スクリプトが実行する文のサンプルを次に示します。
//Disables the constraints ALTER TABLE B2B_APP_MESSAGE DISABLE CONSTRAINT B2B_AM_PAYLOAD_FK; ALTER TABLE B2B_APP_MESSAGE DISABLE CONSTRAINT B2B_AM_AS_FK; ALTER TABLE B2B_BUSINESS_MESSAGE DISABLE CONSTRAINT B2B_BM_AS_FK; ALTER TABLE B2B_BUSINESS_MESSAGE DISABLE CONSTRAINT B2B_BM_PS_FK; ALTER TABLE B2B_BUSINESS_MESSAGE DISABLE CONSTRAINT B2B_BM_TDS_FK; ALTER TABLE B2B_BUSINESS_MESSAGE DISABLE CONSTRAINT B2B_BM_NDS_FK; ALTER TABLE B2B_WIRE_MESSAGE DISABLE CONSTRAINT B2B_WM_PS_FK; ALTER TABLE B2B_WIRE_MESSAGE DISABLE CONSTRAINT B2B_WM_DS_FK; ALTER TABLE B2B_BUSINESS_MESSAGE DISABLE CONSTRAINT B2B_BM_AM_FK; ALTER TABLE B2B_APP_MESSAGE DISABLE CONSTRAINT B2B_AM_BM_FK; ALTER TABLE B2B_EXT_BUSINESS_MESSAGE DISABLE CONSTRAINT B2B_EBM_BM_FK; ALTER TABLE B2B_BUSINESS_MESSAGE DISABLE CONSTRAINT B2B_BM_WM_FK; ALTER TABLE B2B_BUSINESS_MESSAGE DISABLE CONSTRAINT B2B_BM_EBM_FK; //Drops the constraints ALTER TABLE B2B_APP_MESSAGE DROP CONSTRAINT B2B_AM_PAYLOAD_FK; ALTER TABLE B2B_APP_MESSAGE DROP CONSTRAINT B2B_AM_AS_FK; ALTER TABLE B2B_BUSINESS_MESSAGE DROP CONSTRAINT B2B_BM_AS_FK; ALTER TABLE B2B_BUSINESS_MESSAGE DROP CONSTRAINT B2B_BM_PS_FK; ALTER TABLE B2B_BUSINESS_MESSAGE DROP CONSTRAINT B2B_BM_TDS_FK; ALTER TABLE B2B_BUSINESS_MESSAGE DROP CONSTRAINT B2B_BM_NDS_FK; ALTER TABLE B2B_WIRE_MESSAGE DROP CONSTRAINT B2B_WM_PS_FK; ALTER TABLE B2B_WIRE_MESSAGE DROP CONSTRAINT B2B_WM_DS_FK; ALTER TABLE B2B_BUSINESS_MESSAGE DROP CONSTRAINT B2B_BM_AM_FK; ALTER TABLE B2B_APP_MESSAGE DROP CONSTRAINT B2B_AM_BM_FK; ALTER TABLE B2B_EXT_BUSINESS_MESSAGE DROP CONSTRAINT B2B_EBM_BM_FK; ALTER TABLE B2B_BUSINESS_MESSAGE DROP CONSTRAINT B2B_BM_WM_FK; ALTER TABLE B2B_BUSINESS_MESSAGE DROP CONSTRAINT B2B_BM_EBM_FK; //Drops the materialized view logs DROP MATERIALIZED VIEW LOG ON B2B_BUSINESS_MESSAGE; DROP MATERIALIZED VIEW LOG ON B2B_EXT_BUSINESS_MESSAGE; //takes backup of the partitioned tables ALTER TABLE B2B_APP_MESSAGE RENAME TO B2B_APP_MESSAGE_BKP; ALTER TABLE B2B_BUSINESS_MESSAGE RENAME TO B2B_BUSINESS_MESSAGE_BKP; ALTER TABLE B2B_EXT_BUSINESS_MESSAGE RENAME TO B2B_EXT_BUSINESS_MESSAGE_BKP; ALTER TABLE B2B_WIRE_MESSAGE RENAME TO B2B_WIRE_MESSAGE_BKP; ALTER TABLE B2B_DATA_STORAGE RENAME TO B2B_DATA_STORAGE_BKP; //creates the tables with partitioning. CREATE TABLE B2B_APP_MESSAGE PARTITION BY RANGE(CPST_INST_CREATED_TIME) INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')) ( PARTITION AM_2011 VALUES LESS THAN(TO_TIMESTAMP('01/01/2012','DD/MM/YYYY')), PARTITION AM_JAN_12 VALUES LESS THAN(TO_TIMESTAMP('01/02/2012','DD/MM/YYYY')), PARTITION AM_FEB_12 VALUES LESS THAN(TO_TIMESTAMP('01/03/2012','DD/MM/YYYY')), PARTITION AM_MAR_12 VALUES LESS THAN(TO_TIMESTAMP('01/04/2012','DD/MM/YYYY')), PARTITION AM_APR_12 VALUES LESS THAN(TO_TIMESTAMP('01/05/2012','DD/MM/YYYY')), PARTITION AM_MAY_12 VALUES LESS THAN(TO_TIMESTAMP('01/06/2012','DD/MM/YYYY')), PARTITION AM_JUN_12 VALUES LESS THAN(TO_TIMESTAMP('01/07/2012','DD/MM/YYYY')), PARTITION AM_JUL_12 VALUES LESS THAN(TO_TIMESTAMP('01/08/2012','DD/MM/YYYY')), PARTITION AM_AUG_12 VALUES LESS THAN(TO_TIMESTAMP('01/09/2012','DD/MM/YYYY')) ) AS SELECT * FROM B2B_APP_MESSAGE_BKP; CREATE TABLE B2B_BUSINESS_MESSAGE PARTITION BY RANGE(CPST_INST_CREATED_TIME) INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')) ( PARTITION BM_2011 VALUES LESS THAN(TO_TIMESTAMP('01/01/2012','DD/MM/YYYY')), PARTITION BM_JAN_12 VALUES LESS THAN(TO_TIMESTAMP('01/02/2012','DD/MM/YYYY')), PARTITION BM_FEB_12 VALUES LESS THAN(TO_TIMESTAMP('01/03/2012','DD/MM/YYYY')), PARTITION BM_MAR_12 VALUES LESS THAN(TO_TIMESTAMP('01/04/2012','DD/MM/YYYY')), PARTITION BM_APR_12 VALUES LESS THAN(TO_TIMESTAMP('01/05/2012','DD/MM/YYYY')), PARTITION BM_MAY_12 VALUES LESS THAN(TO_TIMESTAMP('01/06/2012','DD/MM/YYYY')), PARTITION BM_JUN_12 VALUES LESS THAN(TO_TIMESTAMP('01/07/2012','DD/MM/YYYY')), PARTITION BM_JUL_12 VALUES LESS THAN(TO_TIMESTAMP('01/08/2012','DD/MM/YYYY')), PARTITION BM_AUG_12 VALUES LESS THAN(TO_TIMESTAMP('01/09/2012','DD/MM/YYYY')) ) AS SELECT * FROM B2B_BUSINESS_MESSAGE_BKP; CREATE TABLE B2B_DATA_STORAGE PARTITION BY RANGE(CPST_INST_CREATED_TIME) INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')) ( PARTITION DS_2011 VALUES LESS THAN(TO_TIMESTAMP('01/01/2012','DD/MM/YYYY')), PARTITION DS_JAN_12 VALUES LESS THAN(TO_TIMESTAMP('01/02/2012','DD/MM/YYYY')), PARTITION DS_FEB_12 VALUES LESS THAN(TO_TIMESTAMP('01/03/2012','DD/MM/YYYY')), PARTITION DS_MAR_12 VALUES LESS THAN(TO_TIMESTAMP('01/04/2012','DD/MM/YYYY')), PARTITION DS_APR_12 VALUES LESS THAN(TO_TIMESTAMP('01/05/2012','DD/MM/YYYY')), PARTITION DS_MAY_12 VALUES LESS THAN(TO_TIMESTAMP('01/06/2012','DD/MM/YYYY')), PARTITION DS_JUN_12 VALUES LESS THAN(TO_TIMESTAMP('01/07/2012','DD/MM/YYYY')), PARTITION DS_JUL_12 VALUES LESS THAN(TO_TIMESTAMP('01/08/2012','DD/MM/YYYY')), PARTITION DS_AUG_12 VALUES LESS THAN(TO_TIMESTAMP('01/09/2012','DD/MM/YYYY')) )AS SELECT * FROM B2B_DATA_STORAGE_BKP; CREATE TABLE B2B_EXT_BUSINESS_MESSAGE PARTITION BY RANGE(CPST_INST_CREATED_TIME) INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')) ( PARTITION EM_2011 VALUES LESS THAN(TO_TIMESTAMP('01/01/2012','DD/MM/YYYY')), PARTITION EM_JAN_12 VALUES LESS THAN(TO_TIMESTAMP('01/02/2012','DD/MM/YYYY')), PARTITION EM_FEB_12 VALUES LESS THAN(TO_TIMESTAMP('01/03/2012','DD/MM/YYYY')), PARTITION EM_MAR_12 VALUES LESS THAN(TO_TIMESTAMP('01/04/2012','DD/MM/YYYY')), PARTITION EM_APR_12 VALUES LESS THAN(TO_TIMESTAMP('01/05/2012','DD/MM/YYYY')), PARTITION EM_MAY_12 VALUES LESS THAN(TO_TIMESTAMP('01/06/2012','DD/MM/YYYY')), PARTITION EM_JUN_12 VALUES LESS THAN(TO_TIMESTAMP('01/07/2012','DD/MM/YYYY')), PARTITION EM_JUL_12 VALUES LESS THAN(TO_TIMESTAMP('01/08/2012','DD/MM/YYYY')), PARTITION EM_AUG_12 VALUES LESS THAN(TO_TIMESTAMP('01/09/2012','DD/MM/YYYY')) )AS SELECT * FROM B2B_EXT_BUSINESS_MESSAGE_BKP; CREATE TABLE B2B_WIRE_MESSAGE PARTITION BY RANGE(CPST_INST_CREATED_TIME) INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')) ( PARTITION WM_2011 VALUES LESS THAN(TO_TIMESTAMP('01/01/2012','DD/MM/YYYY')), PARTITION WM_JAN_12 VALUES LESS THAN(TO_TIMESTAMP('01/02/2012','DD/MM/YYYY')), PARTITION WM_FEB_12 VALUES LESS THAN(TO_TIMESTAMP('01/03/2012','DD/MM/YYYY')), PARTITION WM_MAR_12 VALUES LESS THAN(TO_TIMESTAMP('01/04/2012','DD/MM/YYYY')), PARTITION WM_APR_12 VALUES LESS THAN(TO_TIMESTAMP('01/05/2012','DD/MM/YYYY')), PARTITION WM_MAY_12 VALUES LESS THAN(TO_TIMESTAMP('01/06/2012','DD/MM/YYYY')), PARTITION WM_JUN_12 VALUES LESS THAN(TO_TIMESTAMP('01/07/2012','DD/MM/YYYY')), PARTITION WM_JUL_12 VALUES LESS THAN(TO_TIMESTAMP('01/08/2012','DD/MM/YYYY')), PARTITION WM_AUG_12 VALUES LESS THAN(TO_TIMESTAMP('01/09/2012','DD/MM/YYYY')) )AS SELECT * FROM B2B_WIRE_MESSAGE_BKP; //Creates the materialized view logs CREATE MATERIALIZED VIEW LOG ON B2B_BUSINESS_MESSAGE WITH ROWID,SEQUENCE (ext_business_message, channel_name, direction, created, native_msg_size, doctype_name, doc_protocol_version, doc_protocol_name) INCLUDING NEW VALUES; CREATE MATERIALIZED VIEW LOG ON B2B_EXT_BUSINESS_MESSAGE WITH ROWID, SEQUENCE (id, processing_time, error_code) INCLUDING NEW VALUES; //refresh the materialized view logs EXEC b2b_refresh_mv; //Drops the backup tables DROP TABLE B2B_APP_MESSAGE_BKP PURGE; DROP TABLE B2B_BUSINESS_MESSAGE_BKP PURGE; DROP TABLE B2B_EXT_BUSINESS_MESSAGE_BKP PURGE; DROP TABLE B2B_WIRE_MESSAGE_BKP PURGE; DROP TABLE B2B_DATA_STORAGE_BKP PURGE;