ヘッダーをスキップ
Oracle® Fusion Middleware Oracle B2Bユーザーズ・ガイド
11gリリース1 (11.1.1.9)
B61381-07
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

I データベース・パーティション化

この付録では、Oracle B2Bインスタンス表のパーティション化について説明します。

この付録の項は次のとおりです。

I.1 概要

Oracle B2Bでは、CPST_INST_CREATED_TIME列に基づいて、Oracle B2Bインスタンス表をパーティション化できます。パーティション化できる表を次に示します。

  • B2B_APP_MESSAGE

  • B2B_BUSINESS_MESSAGE

  • B2B_DATA_STORAGE

  • B2B_EXT_BUSINESS_MESSAGE

  • B2B_WIRE_MESSAGE

I.2 パーティション化要件

Oracle B2B表を正常にパーティション化するために準拠する必要がある要件を次に示します。

  • レンジ・パーティションまたは時間隔パーティションを使用して表をパーティション化します。

  • Oracle B2Bのすべての表で同じ日付範囲が指定されていることを保証します。これは、パージが正しく機能するための前提条件です。

  • レンジ・パーティションを使用する場合、実行時エラーが発生しないように、デフォルト・パーティションを使用することをお薦めします。

  • 表の再作成:

    • Oracle B2Bシステム・マテリアライズド・ビューにはOracle B2Bインスタンス表(B2B_BUSINESS_MESSAGEB2B_EXT_BUSINESS_MESSAGE)に対する依存性があり、これらの表に対してマテリアライズド・ビュー・ログが作成されます。パーティションの作成中に、これらのマテリアライズド・ビュー・ログの再作成およびシステム・マテリアライズド・ビューの完全リフレッシュを実行する必要があります。

  • アップグレード時:

    • パーティション化は、アプリケーション・インスタンスをOracle SOA Suiteの必要なバージョンにアップグレードした後にのみ実行することをお薦めします。これは、パーティション化の前に、Oracle SOA Suiteスキーマのアップグレードが完了済である必要があるからです。これにより、古いバージョンのランタイムからデータベースのCPST_INST_CREATED_TIME列にNULL値が格納されることを回避します。

    • これらの表に既存データがあり、CPST_INST_CREATED_TIME列にNULL値が格納されている場合、適切なパーティション化を実行するには、レコードを更新して非NULL値にする必要があります。

I.3 表のパーティション化

表をパーティション化するには、次のスクリプトを使用します。

  • レンジ・パーティションの場合:

    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;