この付録では、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;