履歴表は、ある期間のエンタープライズのビジネス・トランザクションを説明します。履歴表は、売上、請求書、注文などの基本情報を含むベース表の場合があります。また、履歴表は、GROUP BY
、AVERAGE
またはCOUNT
などの操作を使用して、基本情報から導出したサマリー情報を含むロールアップ表の場合もあります。
履歴表の時間間隔は、一般的にローリング・ウィンドウです。DBAは、最も古いトランザクションを説明する一連の行を定期的に削除し、かわりに最新のトランザクションを説明する一連の行に領域を割り当てます。たとえば、DBAは、1995年4月30日の業務時間の終了時に、1994年4月のトランザクションを説明する行(およびそれをサポートする索引エントリ)を削除し、1995年4月のトランザクションに領域を割り当てます。
これから特定の例について検討します。13か月分のトランザクション(現在の月の注文と1年分の履歴データ)を含む表order
があるとします。各月にはパーティションが1つあります。これらの月単位のパーティションには、それらが存在する表領域と同じように、order_
yymm
という名前が付けられています。
order
表には2つのローカル索引があります。order_ix_onum
は、注文番号に対するローカルの同一キー一意索引です。order_ix_supp
は、納入業者番号に対するローカルの非同一キー索引です。ローカル索引のパーティション名には、基礎となる表と同じ接尾辞が付きます。また、顧客名に対するグローバル一意索引order_ix_cust
もあります。order_ix_cust
には3つのパーティションが含まれ、それぞれがアルファベットの3分の1に対応します。1994年10月31日にorder
の時間枠を次のように変更します。
最も古い時間間隔のデータをバックアップします。
ALTER TABLESPACE order_9310 BEGIN BACKUP; ... ALTER TABLESPACE order_9310 END BACKUP;
最も古い時間間隔のパーティションを削除します。
ALTER TABLE order DROP PARTITION order_9310;
最新の時間間隔にパーティションを追加します。
ALTER TABLE order ADD PARTITION order_9411;
グローバル索引パーティションを再作成します。
ALTER INDEX order_ix_cust REBUILD PARTITION order_ix_cust_AH; ALTER INDEX order_ix_cust REBUILD PARTITION order_ix_cust_IP; ALTER INDEX order_ix_cust REBUILD PARTITION order_ix_cust_QZ;
通常、いかなる操作(DML、DDLまたはユーティリティ)も、ALTER
TABLE
... DROP
PARTITION
などの個々のDDL文に影響しないように、データベースによりロックが取得されます。ただし、パーティション・メンテナンス操作に複数の手順がある場合は、アプリケーション(またはその他のメンテナンス操作)が、進行中の複数手順の操作に影響しないようにするのはデータベース管理者の責任です。次に、これを実行する方法を示します。
明確なバッチ期間中はユーザー・レベルのアプリケーションをすべて停止する。
すべてのアプリケーションで使用されるロールからアクセス権限を削除して、表order
にアクセスできないようにする。