ほとんどの組織で、保管データは最も貴重な企業資産の1つであると考えられてきましたが、データの管理方法やメンテナンス方法は組織によって大きく異なっていました。本来、データの使用目的は、経営目標の達成を支援し、事業を経営し、また将来の方向性を特定し、企業を成功に導くことにありました。
ただし、新たな政府規制やガイドラインが、データを保存する方法と理由において重要な推進力となりました。これらの規制によって、組織が、非常に長期間にわたって情報を保存および管理することを義務付けられるためです。結果として、今日のITマネージャはさらに2つの目標を課せられることになりました。大量のデータをできるかぎり低コストで保管すること、そして、データの保管と保護に関する新たな規制要件を満たすことです。
この章では、情報ライフサイクル管理(ILM)戦略の構築に使用できるOracle Databaseのコンポーネントについて説明します。この章の内容は次のとおりです。
現在、情報の形式は、電子メール・メッセージから、写真、オンライン・トランザクション処理システムの注文まで多岐にわたります。このため、一度データの種類と使用方法がわかれば、データの発展方法や最終的な状態を理解したことになります。
各組織が直面する課題の1つは、データの発展方法や増加傾向を理解し、長期にわたる使用方法の変化を監視し、さらに保存期間を決定することです。また、同時に、データに適用されるようになったすべてのルールや規制を守る必要があります。情報ライフサイクル管理(ILM)は、プロセス、ポリシー、ソフトウェアおよびハードウェアを組み合せて、このような問題に対処するように設計されています。これにより、データのライフサイクルの各ステージで適切なテクノロジを使用できるようになります。
Oracle Databaseでは、次の機能が提供されるため、ILMソリューションを実装するプラットフォームとして理想的です。
アプリケーションの透過性
アプリケーション透過性は、アプリケーションをカスタマイズする必要がないことを意味し、ILMでは非常に重要です。また、データに様々な変更を加えても、そのデータを使用するアプリケーションが影響を受けません。したがって、データをライフサイクルの様々なステージで容易に移動することができ、データへのアクセスはデータベースを介して最適化できます。もう1つの重要な利点は、アプリケーション透過性により、新しい規制要件にすぐに適応するための柔軟性が得られることです。この際にも、既存のアプリケーションへの影響はありません。
ファイングレイン
Oracleでは、データを非常に細かいレベルや関連グループごとに表示することができます。これに対して、ストレージ・デバイスではバイトやブロックが表示されるだけです。
低コスト
保管するデータが非常に多い場合、低コスト・ストレージの使用が、ILMを実装する際の重要な要素になります。Oracleは多様なストレージ・デバイスを利用できるため、最小限のコストで最大限の容量のデータを保持できます。
強制可能なコンプライアンス・ポリシー
コンプライアンスの理由で情報を保存する場合は、規則に従ってデータを保管および管理していることを取締機関に示すことが不可欠です。Oracleでは、セキュリティ・ポリシーと監査ポリシーを定義し、データのすべてのアクセスに対して施行して、アクセスを記録することができます。
情報ライフサイクル管理は、組織のすべてのデータに関連します。これには、OLTPシステムでの注文やデータ・ウェアハウスでの売上履歴など、構造化されたデータの他に、電子メール、ドキュメント、イメージなど、構造化されていないデータも含まれます。
Oracle Databaseでは、BLOBやOracle Fast Files(Oracle Database 11gに含まれる)の使用により、構造化されていないデータの格納がすでにサポートされていますが、Enterprise Editionと組み合せて使用すると、Oracle Content Databaseの高度なドキュメント管理システムを使用できます。これには、ロールベースのセキュリティが含まれ、認証済のユーザーとポリシー(コンテンツのライフタイムにどのような処理が行われるかを規定する)のみがコンテンツにアクセスすることが保証されます。
したがって、組織のすべての情報がOracleデータベースに含まれる場合は、データベースで提供される機能を利用して、ライフタイムの経過に伴う展開に応じてデータを管理および移動できます。複数の種類のデータ・ストアを管理する必要はありません。
現在、多くの組織は、特定のデータを特定の期間にわたって保管する必要があります。このような規制を守らない組織は、非常に重い罰金を支払うことになります。世界中でいくつもの規制要件(米国のSarbanes-Oxley、HIPAA、DOD5015.2-STD、欧州連合の欧州データ保護指令(European Data Privacy Directive)など)のために、組織のデータ管理方法が変化しています。このような規制によって、保管する必要があるデータ、データを変更できるかどうか、保管する必要がある期間(30年以上に及ぶ可能性もある)が定められます。
多くの場合、これらの規制は、未許可のアクセスや変更操作から電子データを保護し、データに対するすべての変更内容と変更者について監査証跡を残すことを求めています。Oracle Databaseは、アプリケーションのパフォーマンスに影響を与えずに非常に大量のデータを保管できます。また、アクセスを制限してデータの未許可の変更を防ぐために必要な機能も含まれています。このような機能は、Oracle Database VaultやOracle Audit Vaultを使用してさらに拡張できます。Oracle Databaseでは暗号化機能も提供され、高度な権限を持つユーザーが意図的にデータを変更したのではないことを示すために使用できます。フラッシュバック・データ・アーカイブを使用すると、ライフタイムにおける行のすべてのバージョンを表示することができます。
Oracle Databaseを使用した情報ライフサイクル管理ソリューションの構築は、きわめて単純です。次の4つの手順を実行すれば完了します。ただし、ILMをコンプライアンスのために実装するのでない場合、手順4はオプションです。
情報ライフサイクル管理を有効に利用するには、まず最初に、組織のすべてのデータを調べて次の事柄を判別します。
重要なデータは何か、どこに格納されているか、保管する必要があるデータは何か
そのデータの組織でのフロー
時間経過につれてそのデータがどのように扱われるか、そのデータはまだ必要か
データ可用性の程度と必要な保護
法的および業務上の要件に対応するデータ保存
一度データの使用方法を理解できれば、それに基づいてデータを分類できます。最も一般的なタイプの分類は、経過時間つまり日付によるものですが、製品やプライバシなどその他のタイプの分類も可能です。プライバシと経過時間など、混合型の分類を使用することもできます。
データ・クラスによって扱いを変えるには、データを物理的に分ける必要があります。多くの場合、情報は作成された当初はよくアクセスされますが、時間が経過すると、ごくたまにしか参照されなくなります。たとえば、顧客が注文を行うと、ステータスや出荷状況を確認するために定期的に注文データを調べます。注文したものが届いてからは、注文データをまた参照することはほとんどありません。この注文データは、注文される商品をチェックするために実行される定期レポートにも含まれます。ただし、時間が経過するとレポートに含まれることもなくなり、参照されるのは、このデータに関連する詳しい分析が将来行われる場合のみになります。したがって、注文データは会計年度の四半期Q1、Q2、Q3、Q4、および注文履歴に分類できます。
この方法を使用する利点は、データがクラス(この例では発注日)別に行レベルでグループ化されると、Q1のすべての注文を自己完結型ユニットとして管理できることです。このとき、Q2の注文は別のクラスになります。これはパーティション化を使用して実現できます。パーティションはアプリケーションに対して完全に透過的であるため、データは物理的に分かれていますが、アプリケーションは引き続きすべての注文を認識できます。
パーティション化を使用すると、データは値に応じて物理的に配置されます。よく使用される手法は日付によって情報をパーティション化する方法です。図5-1は、Q1、Q2、Q3およびQ4の注文がそれぞれのパーティションに格納され、前年の注文が他のパーティションに格納されるシナリオを示しています。
Oracleではいくつかのパーティション化方法が提供されます。レンジ・パーティション化は、ILMのためによく使用されるパーティション化方法の1つです。時間隔パーティション化および参照パーティション化(Oracle Database 11gで導入)も、ILM環境での使用に特に適しています。
データをパーティション化することでいくつもの利点が得られます。パーティション化により、データをオンラインに保って、最もコスト効果の高いデバイスに格納する一方で、使用方法に応じて適切なストレージ・デバイスに簡単に分散できるようになります。パーティション化は、データにアクセスするユーザーにとって完全に透過的であるため、アプリケーションの変更は必要ありません。このため、パーティション化はいつでも実装できます。新しいパーティションが必要な場合は、ADD PARTITION
句を使用するだけで追加できます。または、時間隔パーティション化を使用している場合は自動的に作成されます。
その他の利点に加えて、各パーティションが独自のローカル索引を持つことが可能です。オプティマイザがパーティション・プルーニングを使用すると、問合せは、すべてのパーティションではなく関連するパーティションのみにアクセスするため、問合せのレスポンス時間が短縮されます。
データを分析すると、多くの場合、当初はアクセスや更新が非常に頻繁に行われることがわかります。データが古くなるにつれて、アクセス頻度は減少し、あるとしてもごく少数になります。このため、図5-2に示すように、ほとんどの組織では、多くのユーザーが現行データにアクセスするが、それよりも古いデータにアクセスするユーザーはほとんどいないという状況が見られます。データは、アクティブ、非アクティブ、履歴、アーカイブ可能のいずれかとみなすことができます。
非常に多くのデータを保持するときは、その存続期間において物理的に場所を移す必要があります。データがライフサイクルのどの時点にあるかによって異なりますが、最も適切なストレージ・デバイスに格納する必要があります。
Oracle Databaseは多様な記憶域のオプションを利用できます。次の手順では必要なストレージ層を確立します。必要に応じて任意の数のストレージ層を作成できますが、最初の段階では次の層の作成をお薦めします。
高パフォーマンス
高パフォーマンス・ストレージ層には、Q1の注文を保持するパーティションなど、重要で頻繁にアクセスされるデータがすべて格納されます。これには、高パフォーマンスのストレージ・デバイスの小型で高速なディスクが使用されます。
低コスト
低コスト・ストレージ層には、Q2、Q3、Q4の注文を保持するパーティションなど、それほど頻繁にアクセスされないデータが格納されます。この層は、モジュール式ストレージ・アレイや低コストATAディスクなど、低コストで最大限の記憶域を提供する大容量ディスクを使用して構築されます。
オンライン・アーカイブ
オンライン・アーカイブ・ストレージ層には、アクセスや変更があまり行われないすべてのデータが格納されます。これは非常に大きなサイズになり、最大容量のデータを格納する可能性が高くなります。様々な方法を使用してデータを圧縮することができます。この層は、同じデータベースに配置することも、企業内のすべての情報の集中アーカイブ・データベースとして機能する別のデータベースに配置することも可能です。データを低コスト・ストレージ・デバイス(ATAデバイスなど)に格納すると、引き続きオンラインで使用できます。情報をテープに格納するよりもコストはわずかに高くなりますが、テープへのアーカイブに伴うデメリットはありません。オンライン・アーカイブ・ストレージ層を読取り専用と指定すると、データの変更が不可能になり、最初にデータベースのバックアップを取った後はバックアップの必要がなくなります。
オフライン・アーカイブ(オプション)
オフライン・アーカイブ・ストレージ層はオプションです。データベースからデータを削除する必要がある場合のみ使用され、データはXMLなど別の形式でテープに格納されます。
図5-2は、一定の期間でデータがどのように使用されるかを示しています。この図から、すべての情報を保管するには、すべてのデータを保存する複数のストレージ層が必要となり、さらに、それによってストレージの合計コストが大幅に節減されるというメリットがもたらされることがわかります。
ストレージ層を作成したら、「手順1: データ・クラスの定義」で指定したデータ・クラスが、パーティションを使用してデータベース内に物理的に実装されます。この方法により、データを使用方法に応じて適切なストレージ・デバイスに簡単に分散し、一方で、データをオンラインに保っていつでも利用できるようにし、最もコスト効果の高いデバイスに格納することができるようになります。
注意: 自動ストレージ管理(ASM)を使用して、複数のストレージ層のデータを管理することもできます。 |
ストレージ層を定義したら、手順1で指定したデータ・クラス(パーティション)を適切なストレージ層に割り当てることができます。これで、データを使用方法に応じて適切なストレージ・デバイスに簡単に分散し、一方で、データをオンラインに保っていつでも利用できるようにし、最もコスト効果の高いデバイスに格納することができます。これを図5-3に示します。この方法を使用すると、アプリケーションによってデータが引き続き認識されるのでアプリケーションを変更する必要はありません。
ILM戦略を実装する利点の1つは、複数階層ストレージの使用によりコストを節減できることです。格納するデータが3TBあり、内訳は高パフォーマンス200GB、低コスト800GB、オンライン・アーカイブ2TBであるとします。また、1GB当たりのコストは、高パフォーマンス層では72ドル、低コスト層では14ドル、オンライン・アーカイブ層では7ドルと仮定します。
表5-1に、すべてのデータを1種類のストレージに格納する場合に比べて、階層ストレージを使用して節減可能なコストを示します。表に示すようにきわめて多額のコストを節減することができます。また、データがデータベース圧縮に適している場合は、一層のコスト節減が可能です。
次のステップでは、許可されたユーザーしかデータにアクセスできないようにします。また、時期に応じてデータを移動する方法を指定します。古くなったデータをストレージ層間で移行するために使用できる手法が多数あります。
データのセキュリティは、情報ライフサイクル管理(ILM)における非常に重要な点の1つです。データのアクセス権限が存続期間内に変更される場合があるためです。さらに、データのアクセス方法について厳密に規定する規制要件が存在する場合があります。
Oracle Database内のデータは、次のようなデータベース機能を使用して保護されます。
データベース・セキュリティ
ビュー
仮想プライベート・データベース
仮想プライベート・データベース(VPD)では、データベースに対して非常に細かいレベルのアクセスを定義できます。セキュリティ・ポリシーによって、表示できる行と列が決まります。複数のポリシーを定義することで、様々なユーザーやアプリケーションが同じデータの異なるビューを表示できます。たとえば、Q1、Q2、Q3およびQ4の情報は大半のユーザーが見られるようにして、履歴データは許可されたユーザーのみが見られるようにできます。
セキュリティ・ポリシーは、データベース・レベルで定義され、すべてのデータベース・ユーザーに透過的に適用されます。この方法の利点は、データにアクセスするための安全で管理された環境が提供されることです。この環境を変更することはできず、実装するためにアプリケーションを変更する必要もありません。また、データが変更されないことを保証する読取り専用表領域を定義することもできます。
データは、その存続期間の途中で移動する必要があります。これには次の理由があります。
パフォーマンスを維持するため、高パフォーマンス・ディスクに保持できる注文数には制限があります。
データが頻繁にアクセスされなくなっても、高価な高パフォーマンス・ストレージを使用している場合には、低コスト・ストレージ・デバイスに移動する必要があります。
法的要件により、情報は指定の期間にわたって利用可能であることが必要です。最低限のコストで安全に保存する必要があります。
様々なストレージ層を活用するようにOracle Database内でデータを物理的に移動する方法はいくつもあります。たとえば、データがパーティション化されている場合、Q2の注文を含むパーティションを、高パフォーマンス・ストレージ層から低コスト・ストレージ層にオンラインのまま移動することができます。データはデータベース内で移動されるため、物理的に移動しても、データを必要とするアプリケーションに影響したり、通常のユーザーの作業を中断したりすることはありません。
場合によっては、データのグループではなく、個々のデータ項目を移動する必要があります。たとえば、プライバシとレポートのレベルに従ってデータが分類されており、以前は機密扱いだったデータが、現在は公開できるようになったとします。データがプライバシの分類に基づいてパーティション化されているときに、分類が機密から公開に変更されると、データ行は公開データを含むパーティションに自動的に移動されます。
データを元の場所から移動するときは、選択したプロセスがすべての規制要件に準拠するように常に確認することがきわめて重要です。たとえば、データを変更できない、未許可のアクセスから保護する、容易に参照できる、承認された場所に格納するといった要件があります。
情報ライフサイクル管理ソリューションの最後の手順は、コンプライアンスのためのポリシーの作成です。データが集中管理されず断片化している場合は、すべての場所でコンプライアンス・ポリシーを定義して施行する必要がありますが、コンプライアンス・ポリシーが見逃されやすくなります。ただし、Oracle Databaseを使用して、データを集中的に格納できる場所を提供すると、すべてのコンプライアンス・ポリシーを1箇所で管理および施行でき、コンプライアンス・ポリシーの施行が非常に容易になります。
コンプライアンス・ポリシーを定義するときは、次の点を考慮してください。
データの保存
不変性
プライバシ
監査
有効期間
保存ポリシーでは、データの保存方法、保存が必要な期間、最終的な処理方法が指定されます。例としては、レコードを元の形式で格納する必要があり、変更は許可されず、7年間保存する必要があるが、その後は削除できるというような保存ポリシーがあります。Oracle Databaseセキュリティを使用すると、データを変更せずに保持し、許可されたプロセスのみが適切なときにデータを削除することを保証できます。保存ポリシーは、ILMアシスタントのライフサイクル定義を使用して定義することもできます。
不変性は、データが完全であり変更されていないことを外部機関に証明することに関連します。データが変更されていないことを示すために、暗号署名すなわちデジタル署名をOracle Databaseによって生成して、データベースの内外に保存できます。
Oracle Databaseではデータ・プライバシを保証するためにいくつかの方法が提供されます。データへのアクセスは、仮想プライベート・データベース(VPD)を使用して定義したセキュリティ・ポリシーの使用により厳しく制御できます。また、生データを見るユーザーがデータの内容を把握できないように、個々の列を暗号化することができます。
通常、データのライフサイクルでは、データが定期的にアクセスされなくなり、アーカイブ対象として検討されるときが来ます。従来、この場合にはデータがデータベースから削除されてテープに格納されていました。テープを使用すると、大量の情報を非常に低コストで格納できるためです。現在では、このようなデータをテープにアーカイブする必要はありません。かわりに、データベースに残しておくか、集中オンライン・アーカイブ・データベースに移動することができます。このすべての情報は、1GB当たりのコストがテープとほとんど変わらない低コスト・ストレージ・デバイスを使用して格納されます。
アーカイブ目的ですべてのデータをデータベースに置いておくといくつもの利点が得られます。最も重要な利点は、いつでもすぐにデータを利用できるということです。このため、データがアーカイブされたテープを探したり、テープが読取り可能かどうか、またデータベースにロードできる形式になっているかどうかを判断したりして、時間を無駄にせずにすみます。
データが長い間アーカイブされていた場合は、テープ・アーカイブからデータベースにデータをリロードするためのプログラムを作成する開発時間も必要になります。これにはコストや時間がかかることがわかっており、データが古い場合は特に顕著です。データベースに保存したデータは、オンライン状態で最新のデータベース・フォーマットになっているためこの問題はありません。
現在、データベースに履歴データを保持しても、データベースのバックアップに必要な時間やバックアップのサイズに影響することはありません。RMANを使用してデータベースをバックアップすると、変更されたデータのみがバックアップに取得されます。履歴データが変更される可能性は少ないため、一度データがバックアップされると、その後のバックアップはありません。
考慮する必要があるもう1つの重要な要素は、データを物理的にデータベースから削除する方法です。本番システムから集中データベース・アーカイブに移動する場合は特によく検討してください。Oracleでは、トランスポータブル表領域またはパーティションを使用して、このデータを1つの単位として一括してデータベース間で迅速に移動する機能が提供されます。
データベースからデータを削除するにあたり、最も速い方法はデータのセットを削除することです。これには、データがパーティションに保持された状態で削除します。パーティションの削除は非常に高速で処理できます。ただし、データの関係を維持する必要があるためにこの方法が不可能な場合は、従来のSQL delete文を発行する必要があります。delete文の発行に必要な時間を少なく見積もらないようにしてください。
データをデータベースから削除する必要があり、将来、データベースにデータを戻す必要が生じる可能性がある場合は、トランスポータブル表領域などのデータベース・フォーマットのままデータを移動するか、Oracle DatabaseのXML機能を使用してオープン・フォーマットで情報を抽出することを検討してください。
Oracleデータベースでのデータのオンライン・アーカイブを検討する理由は次のとおりです。
ディスクのコストはテープのコストに近づいています。また、データが入っているテープを探す時間やデータをリストアするためのコストがなくなります。
必要時にデータがオンラインになっており、高速アクセスが可能で、業務要件を満たします。
データがオンラインになっているためすぐにアクセスできます。このため、データを提供できないことで規制機関から罰金を課せられることがありません。
現行のアプリケーションを使用してデータにアクセスできます。新しいアプリケーションを構築するためにリソースを無駄にする必要がありません。
Oracle ILM Assistantでは、ILM環境を管理するためのグラフィカル・ユーザー・インタフェース(GUI)が提供されます。図5-4は、ILMアシスタントの最初の画面を示しています。この画面には実行する必要のある未完了のタスクが表示されます。
ILMアシスタントには、データベース内の表に割り当てられるライフサイクル定義を作成するための機能があります。このライフサイクル定義を使用して、ILMアシスタントは、カレンダに示されているように、どの時点でデータを移動、アーカイブ、または削除するかをアドバイスします。また、データの移動に伴うコスト節減とストレージ要件も示します。
ILMアシスタントで管理できるのはパーティション化された表のみです。パーティション化されていない表の場合は、ILMアシスタントはスクリプトを生成して、表をどのようにパーティション化できるかを示します。また、表のパーティション化をシミュレートし、表をパーティション化した場合に行われる処理を表示する機能も提供します。
ILMアシスタントでは、別のストレージ層へのデータの移行など、実行を推奨するタスクのためにコマンドを実行することはありません。かわりに、実行が必要なコマンドのスクリプトを生成します。
コンプライアンス問題の管理を支援するために、ILMアシスタントは、ILMの制御下にある表に定義されているすべての仮想プライベート・データベース(VPD)ポリシーとファイングレイン監査(FGA)ポリシーを表示します。さらに、データベース監査レコードとFGA監査レコードの両方の表示や、デジタル署名の生成および比較を行うこともできます。
Oracle ILM Assistantを使用するには、管理対象の表が含まれるデータベースにOracle Application Expressがインストールされている必要があります。
ILMアシスタントでは次の領域で機能が提供されます。
ライフサイクル設定
ライフサイクル管理
コンプライアンスおよびセキュリティ
レポート
ILMアシスタントのライフサイクル設定領域は次のタスクで構成されます。これらは、データの管理を準備するために実行する必要があります。
論理ストレージ層
ライフサイクル定義
ライフサイクル表
プリファレンス
ILMアシスタントを初めて使用する場合は、この画面で、ILMアシスタントによってデータを管理する方法を厳密に指定します。ILMアシスタントがデータ配置のアドバイスをできるようにするには、図5-5に示すように次の手順を完了する必要があります。
論理ストレージ層を定義します。
ライフサイクル定義を定義します。
ライフサイクル定義で管理する表を選択します。
設定で使用可能なその他のオプションには、次の機能があります。
パーティション・シミュレーションの表示
マップされた表と論理ストレージ層のライフサイクル・サマリーおよびライフサイクル定義の表示
ストレージのコストの表示
ポリシー・ノートの定義
プリファレンスによるILMアシスタントのカスタマイズ
論理ストレージ層は、ストレージ・デバイスの論理グループに付けられる名前です。通常、同じタイプのすべてのディスクがこの名前で識別されます。たとえば、「High Performance」と呼ばれるグループが、すべての高パフォーマンス・ディスクを表す場合があります。任意の数の論理ストレージ層を定義することができ、デバイスは、割り当てられる表領域(格納される表領域)によって識別されます。
1GB当たりのコストの値は、0よりも大きい値を指定する必要があります。この値は、データがストレージ層にマップされたときに、ストレージのコストを見積もるためにILMアシスタントによって使用されます。層にデータを格納するための、ある程度正確なコストを表す値を入力することをお薦めします。これにはデバイスの購入価格も含めます。また、維持費やランニング・コストなどその他の関連するコストも含めてください。
各ストレージ層には、割り当てられた表領域のセットが含まれます。これらには、読取り/書込み優先表領域、読取り専用優先表領域または2次表領域というラベルが付けられています。読取り/書込みデータを層に移行できる場合は、読取り/書込み優先表領域が必要です。ストレージ層が読取り専用データを受け入れる場合は、読取り専用優先表領域も指定する必要があります。
優先表領域に加えて、1つ以上の2次表領域を層に割り当てることができます。通常、2次表領域は、ストレージ層の読取り/書込み優先表領域と同じ場所に配置されます。
ILMアシスタントでは、1つの優先表領域しかサポートされないため、読取り/書込みデータをその層に配置する必要がある場合には、そのデータを読取り/書込み優先表領域に移動する移行イベントが生成されます。不要なデータ移行イベントを回避するために、ILMアシスタントでは、既存のデータがストレージ層の2次表領域に残ることを許可しています。
ライフサイクル定義は、データがその存続期間を通じて論理ストレージ層の間をどのように移行するかを記述します。定義は、1つ以上のライフサイクル・ステージで構成されます。ライフサイクル・ステージについて、論理ストレージ層、データ属性(圧縮や読取り専用など)、そのライフサイクル・ステージに存在する期間が選択されます。
ライフサイクル定義は、少なくとも1つのライフサイクル・ステージを含む場合に有効です。最終ステージは必須です。これは、ユーザーが指定するか、ライフサイクル定義プロセスが完了したときにILMアシスタントによって自動的に生成されます。最終ステージでは、ライフサイクル終了時にデータをどのように処理するかを指定する必要があります。
ライフサイクル定義は、存続期間を通じてデータに何が行われるかを指定する複数のステージで構成されます。ライフサイクル・ステージは最初は、時間をさかのぼって作成されます(つまり、現在の日付から前に戻ります)。すべてのステージには一意の名前を付ける必要があります。また、説明はオプションとして指定できます。
ステージが最終ステージでない場合は、データがそのステージに存在する期間と、ステージ属性(データを圧縮する、読取り専用に設定するかなど)があれば指定する必要があります。読取り専用ステージを指定できるのは、そのステージの論理ストレージ層に優先読取り専用表領域が定義されている場合のみです。
現行ステージは現時点を表しますが、期間は任意に指定できます。1つのライフサイクルに含めることができる現行ステージは1つのみです。データがライフサイクルの終わりに到達したときにどのように処理するかを指定するため、最終ステージは必須です。1つのライフサイクルに含めることができる最終ステージは1つのみです。ユーザーが作成しない場合は自動的に作成されます。指定できる処理を次に示します。
データのパージ
データのオフライン・アーカイブ
データのオンライン保存の許可
データをオンラインで格納するステージでは、データに関連するいくつかの属性を定義することもできます。サポートされる属性は次のとおりです。
圧縮
圧縮と読取り専用
読取り専用
各ステージは次の情報で構成されます。
ステージ・タイプ
ステージは、現行ステージ、最終ステージ、その他に分類されます。
ステージ名
ユーザー指定のステージ名が表示されます。
ステージの説明
ユーザー指定のステージ説明が表示されます。
処理
データがステージにマップされたときに実行される処理が表示されます。指定できる処理を次に示します。
オンライン
オフライン・アーカイブ
パージ
層名
ステージに関連付けられているストレージ層が表示されます。データのパージまたはデータのオフラインへの移動を行うステージでは、層は指定されません。
属性
データがステージにマップされたときに適用される、オプションのデータ属性が表示されます。指定できる値を次に示します。
圧縮
圧縮と読取り専用
読取り専用
ステージの期間
データがそのステージにマップされている期間が表示されます。
ステージ開始日
ステージ開始の実際のカレンダ日付が表示されます。日付は、前後のステージと、ユーザー指定の会計開始日付に基づいて計算されます。
ステージ終了日
ステージ終了の実際のカレンダ日付が表示されます。日付は、前後のステージと、ユーザー指定の会計開始日付に基づいて計算されます。
ライフサイクル表領域では、ILMアシスタントで管理できる表を指定します。また、図5-6のように、ここで表をライフサイクル定義にマップします。1つのデータベースには多くの表が含まれますが、その一部のみをILMの管理対象として検討することもできます。日付列でレンジパーティション化されている表は、管理対象としてそのままで適格です。表をライフサイクル定義に関連付けると、ILMアシスタントがデータを管理できます。パーティション化を含まない表については、パーティション化戦略のシミュレーションを使用してストレージ・コスト節減とストレージ層移行を確認することができます。
表がまだパーティション化されていない場合は、完全シミュレーションを設定できるパーティション・シミュレーション・ページに進むように指示されます。管理対象の表を設定する場合と同様に、このページでシミュレーションのプレビューと受入れが可能です。シミュレーション・ページからこのページに戻ると、その表に対して、シミュレーション・モードで完全なライフサイクル管理を行えるようになっています。
管理対象の表とシミュレーション表の違いは、管理表には実際のパーティションが含まれるが、シミュレーション表には仮のパーティション化データしか含まれないことです。すべてのレポートとイベント検出は、どちらのタイプのライフサイクル表でも機能します。ただし、パーティション化をシミュレーション中の表は、ILMアシスタント内でのみパーティション化されているように表示されます。その他のすべてのツールでは、引き続き、非パーティション表として認識されます。
ライフサイクル表のビューでは、アクセス可能なすべての表が表示されますが、ILMアシスタントはすべての表を管理できるわけではありません。このような場合、表は不適格としてマークされ、例外を説明するリンクが提供されます。不適格の表の例を次に示します。
日付列がない表
日付列以外でパーティション化されている表
レンジ以外のパーティション・タイプでパーティション化されている表
LONG列を含む表
索引構成表
ライフサイクル表をカスタマイズして、管理対象、シミュレーション、候補および不適格の表を表示できます。この表示は、次の情報で構成されます。
表所有者
表を所有するOracleスキーマ。
表名
ILMによって管理できる表。
記憶域サイズ
表の現在の見積もりサイズ。この値は、フィルタ・オプションに指定するサイズ・メトリックに応じて変更されます。
データ読取り
表の論理読取りと物理読取りの現在の合計。
データ書込み
表のすべての物理書込みの現在の合計。
ライフサイクル定義
ILMアシスタントが表を管理している場合、必要なライフサイクル定義がここに表示されます。
ライフサイクル・ステータス
表の現行のステータスを示します。表が、適格かどうか、あるいは管理またはシミュレーションされているかを示します。不適格の表については、ILMアシスタントとの不適合に関する説明がステータス・リンクに示されます。
表のパーティション化
表のパーティション化のステータスを示します。表のパーティション化について、実装、シミュレート、またはなしにできます。
コスト節減
ILMアシスタントが表を管理している場合、コスト節減の合計額が計算されて、ここに表示されます。
パーティション・マップ
現行の表パーティション化方法がライフサイクル定義と合っていることを示します。アイコンをクリックすると、表のパーティションの詳しいレポートが表示されます。
多くの表がある環境では、ILMアシスタントによって、長いページの表示を待機してブラウザがタイムアウトする可能性を抑えるために表リスト・キャッシュ・システムが提供されます。表リストは、システムにあるすべてのユーザー表のスナップショットです。ILMアシスタント内での整合性を維持するために定期的にリフレッシュする必要があります。通常、表リストがリフレッシュされるのは、ILMアシスタントの外部でアプリケーション表が追加、変更または削除されたとき、または最新の表統計が必要になる場合です。
デフォルトでは、表リストのリフレッシュ操作は、データベースに定義されているすべての表をスキャンしようとします。大規模アプリケーション環境では、この操作が終了するまでに長い時間がかかることがあります。通常、ILMアシスタントで管理される表は少数に限られています。表リストをリフレッシュするときに、データベースで検出されるすべての表を対象にしないようにするために、フィルタ処理を使用してスキャン対象の表数を絞り込むことができます。たとえば、ユーザーがSH
スキーマの表の管理のみに関心がある場合、表所有者フィルタをSH
に設定できます。リフレッシュにかかる時間を見積もるには、「リフレッシュ統計の見積もり」をクリックします。フィルタと一致する表の推定数と、データ処理にかかる時間が返されます。
キャッシュの未使用のエントリをパージすると、ILMアシスタントによって現在管理されていないエントリを含むキャッシュがクリーンアップされます。現在フィルタと一致している表には影響ありません。
ガイドラインとして、ILMアシスタントによる表リストのリフレッシュは1分当たり300〜350個の表について実行できます。この操作を中断するには、ライフサイクル表画面を使用します。中断すると、表スキャンが正常に終了したようにリフレッシュ操作が停止します。プロセスの性質上、実際のスキャン操作が停止するまでに最大30秒かかることがあります。
ライフサイクル表レポートのパーティション・マップ列には、表のすべてのパーティションがステージ内に収まり、複数のステージにまたがっていないかどうかが示されます。マッピング・ステータスにより、パーティションとステージの関係の性質が示されます。緑色のチェックマークは、パーティションがステージ内に完全に収まり、日付の境界を違反していないことを示します。警告アイコンは、なんらかの種類の不一致を示します。ステージ・マッピングの例外として考えられるのは次の場合です。
パーティション位置のずれ
パーティションがステージ全体に収まらない場合は、パーティションの位置がずれている可能性があります。このようになるのは、ライフサイクル・ステージの期間が最小のパーティション・レンジよりも短い場合です。解決するには、表の管理に適したライフサイクル定義を選択するか、ライフサイクル定義を編集してステージ期間を調整してください。
論理ストレージ層に関連付けられていない表領域
ILMアシスタントの新しいユーザーにとって一般的な問題です。コスト分析を実行するために、ILMアシスタントは、参照されるすべての表領域を1つの層に関連付ける必要があります。通常、最も簡単な修正方法は、論理ストレージ層を編集し、関連付けのない表領域を2次表領域として追加することです。
図5-7に示すように、ILMアシスタントでは、管理対象表またはシミュレーション表に関連する、ストレージ・コストとコスト節減の包括的なレポートが提供されます。
レポートは大きく2つの領域に分かれます。レポートの上の部分は、管理対象表またはシミュレーション表についての合計を示すロールアップです。管理対象表の場合は、2つのサブセクションがあり、1つのストレージ層を使用する非ILM環境とILMで管理される複数層環境のそれぞれのデータが表示されます。シミュレーション表の場合は、さらに別のセクションがあり、ILMによって管理される複数層環境が表示されます。ここには、圧縮の効果見積もりが含まれます。
ストレージ・コスト・ページの一番下のセクションは、論理ストレージ層ごとにコストの種類を細分化した詳細セクションです。
単一層のサイズ
エンティティの合計サイズが表示されます。ライフサイクルベースのレポートでは、この値は、現行のライフサイクル定義に割り当てられているすべての表のサイズの合計を表します。管理対象表の場合、サイズはデータベース記憶域統計で示される実際のサイズです。シミュレーション表の場合、サイズはユーザー指定の行数と行の平均長を計算して見積もられるサイズです。
単一層のコスト
単一層のコストが表示されます。これは、現行エンティティの単一層のサイズを、ライフサイクル定義内の最も高価な層にデータを格納するためのコストと掛けて計算されます。
1GB当たりのコスト
ストレージ層を設定するときにユーザーが指定したコストが表示されます。この値は、この層に割り当てられるパーティションのストレージ・コストを計算するために使用されます。
複数層のサイズ
この層に含まれるエンティティの合計サイズが表示されます。ライフサイクルに関しては、これは、現行層に関連付けられているすべての表パーティションに相当します。表に関しては、これは、この層に関連付けられているすべてのパーティションの合計に相当します。サイズには、圧縮の見積もりは含まれません。
複数層のコスト
コストが表示されます。現行層の1GB当たりのコストと、エンティティが占有する領域を掛けて計算されます。ライフサイクルに関しては、これは、現行層に関連付けられているすべての表パーティションに相当します。表に関しては、これは、この層に関連付けられているすべてのパーティションの合計に相当します。
複数層の節減
節減される金額が表示されます。単一層を使用して同じデータを格納した場合のコストから複数層のコストを引いて計算されます。
節減率
同じデータについて単一層に対する複数層の節減率が表示されます。
複数層圧縮のサイズ
この層に含まれるエンティティの合計サイズが表示されます。ライフサイクルに関しては、これは、現行層に関連付けられているすべての表パーティションに相当します。表に関しては、これは、この層に関連付けられているすべてのパーティションの合計に相当します。このサイズには、ユーザーが指定した推定の圧縮係数に基づいた圧縮の見積もりが反映されます。
このレポート項目は、シミュレーション表のデータを表示する場合のみ含まれます。
複数層圧縮のコスト
コストが表示されます。現行層の1GB当たりのコストと、エンティティが占有する領域を掛けて計算されます。ライフサイクルに関しては、これは、現行層に関連付けられているすべての表パーティションに相当します。表に関しては、これは、この層に関連付けられているすべてのパーティションの合計に相当します。このサイズには、ユーザーが指定した推定の圧縮係数に基づいた圧縮の見積もりが反映されます。
このレポート項目は、シミュレーション表のデータを表示する場合のみ含まれます。
複数層圧縮の節減
節減される金額が表示されます。単一層を使用して同じデータを格納した場合のコストから、複数層圧縮のコストを引いて計算されます。
このレポート項目は、シミュレーション表のデータを表示する場合のみ含まれます。
節減率
同じデータについて単一層に対する複数層圧縮の節減率が表示されます。
このレポート項目は、シミュレーション表のデータを表示する場合のみ含まれます。
ライフサイクル・ステージの圧縮
ライフサイクル・ステージを設定するとき、ユーザーは、パーティションをステージに割り当てる際に必ず圧縮することを求めるオプションを選択できます。この値は、ストレージ層に割り当てられている、圧縮属性が設定されたステージ数を示します。
パーティションの圧縮
ストレージ層にある、現在圧縮されているパーティションの数が表示されます。
パーティション化の実装は、どの組織にとっても大変な作業になります。ILMアシスタントを使用すると、実際にデータを再編成する前に影響を確認することができます。これを実行するために、ILMアシスタントはシミュレーション・モードで次の情報が必要です。
ライフサイクル定義
シミュレーション表の管理に使用するライフサイクル定義を選択します。シミュレーション・パーティションは、ライフサイクルに定義されているライフサイクル・ステージから導出されます。ILMアシスタントは、提供されるステージ期間の情報に基づいて最適な日付範囲を判別します。
パーティション化列
パーティション化キーとして適切な日付列を選択します。現行表に1つしか日付列がない場合は、その列が自動的に選択され、読取り専用形式で表示されます。
パーティション日付間隔
選択したライフサイクル定義に基づいて最適なパーティション・レンジ間隔が表示されます。ILMアシスタントによって、生成されるすべてのパーティションがライフサイクル・ステージに適切に配置されるように間隔が計算されます。
行数
現行表の行数を指定します。デフォルト値は、現行表のデータベース統計から取得されます。デフォルト値を使用できない場合、または将来の増加を見込む場合は、0よりも大きい任意の値を入力できます。
行の平均の長さ
表の行の平均の長さを指定します。デフォルト値は、現行表のデータベース統計から取得されます。統計が無効な場合、ILMアシスタントによって表の問合せが行われ、最大行サイズが計算されます。デフォルト値が適切でない場合、または将来の増加を見込む場合は、0よりも大きい任意の値を入力できます。
見積もり圧縮係数
圧縮係数を指定します。圧縮係数は、ILMアシスタントがストレージ・コストと節減を見積もるためにのみ使用されます。この係数は単なる推定値ですが、この値を使用して節減の見込みを確認できます。値1は圧縮が行われないことを示します。1を超える値は、領域が削減されることを示します。削減率= 1 /係数という式が使用されます。デフォルト値は、圧縮の見込みについて表の一部をサンプリングして計算されます。
図5-7に示すように、シミュレーションをプレビューした後に、もう1つのオプションで移行スクリプトを生成できます。このオプションでは、既存の非パーティション表をパーティション表に変換するためのスクリプトをユーザーが作成できます。スクリプトには単純な作成操作と既存データを移行するためのコマンドが含まれていますが、誤った操作を防ぐためにスクリプトの一部がコメント化されていることに注意してください。パーティション表への表の変換は注意深く計画する必要があります。
プリファレンスでは、ILMアシスタントの動作やデータの表示(たとえば、入力されるほとんどの値やレポートでのデフォルト日付書式またはデフォルト行数の表示)の様々な面が制御されます。次のプリファレンスを設定できます。
圧縮サンプル・ブロック数
圧縮サンプル率
日付書式(長)
日付書式(短)
デモンストレーション・モード
実際の表サイズを拡大する係数を指定します。値1ではこのモードは実質的に無効になります。1倍では元の値と変わらないためです。
言語プリファレンス
ライフサイクル表表示フィルタ
ライフサイクル表ページを開いたときに表示されるデフォルトの選択内容を指定します。値を加算して、複数の種類の表を指定できます。たとえば、3は、管理対象表とシミュレーション表の両方を表示することを指定します。指定できる値を次に示します。
デフォルト値は7です。不適格表が含まれません。
レポートの最大表示行数
最大表示可能表数
進捗モニターのリフレッシュ間隔
レポート列最大表示長
ライフサイクル設定の開始ページ
指定できる値を次に示します。
論理ストレージ層
ライフサイクル定義
ライフサイクル表
記憶域サイズ・メトリック
記憶域サイズの値を表示するときに使用されるデフォルト・サイズ・メトリックを指定します。指定できる値を次に示します。
この値では大文字と小文字が区別されます。
ライフサイクル管理では、データを情報ライフサイクルの適切な場所に移動するために実行する必要があるタスクを扱います。次の項目に関する情報を得ることができます。
ライフサイクル・イベント・カレンダ
ライフサイクル・イベント
イベント・スキャン履歴
図5-4に示すように、ライフサイクル・イベント・カレンダには、直前、現行および将来(オプション)のライフサイクル・イベントのカレンダが表示されます。これらのイベントは、情報ライフサイクルの適切な場所にデータを配置するために実行する必要があります。イベントを含む前の月ボタンを使用して、ライフサイクル・イベントを含む前の月にナビゲートできます。
移動する必要があるデータを識別するには、イベントについてスキャン・ボタンをクリックします。このとき、すべてのイベントを現在の日付まで、または将来も含めてスキャンするかが確認されます。また、すべての表を評価するか、選択した表を評価するかを選択できます。その後、ILMアシスタントで、ライフサイクル定義に基づいてデータの現在の場所と格納されるべき場所が比較され、適切に移動するように推奨されます。また、データを圧縮すべきか、読取り専用に設定すべきかどうかも、ライフサイクル定義に従ってアドバイスされます。ILMアシスタントによって行われるすべてのアドバイスはパーティションのみに適用されます。
ライフサイクル・イベント・レポートでは、データ移行イベントの詳細が表示され、そのための処理を実行するスクリプトの生成方法が提供されます。表示されるイベントの一部またはすべてを選択するには、最初の列のチェック・ボックスを選択します。スクリプトの生成またはイベントの取消しには、イベントを選択する必要があります。選択したイベントについてスクリプトを生成するには、スクリプトの生成ボタンをクリックします。選択したイベントを取り消して、永続的に消去するには、選択したイベントの取消しボタンをクリックします。
イベントのサマリーには次の情報が表示されます。
推奨処理
スキャン操作によって検出されたイベントのタイプを示します。イベントのタイプは次のとおりです。
MOVE PARTITION
パーティションを現行の論理ストレージ層から新しい論理ストレージ層に移動する必要があることを示します。この移動は、パーティションを表領域間で移動して行います。
COMPRESSION
パーティションでデータ圧縮を有効にしておく必要があることを示します。
READ-ONLY
パーティションを読取り専用に設定する必要があることを示します。
PURGE
パーティションを物理的に削除する必要があることを示します。
パーティション名
影響されるパーティションを示します。
現行層
パーティションの現在の位置を示します。
推奨層
移動先のストレージ層を示します。
コスト節減
イベントの処理が実装される場合の、ストレージ・コスト節減の見込みを示します。
表の所有者と表名
パーティション表の所有者と表名を示します。
イベント日付
処理を実行する必要がある日付を示します。過去に解決すべきだったイベントについては、1つのキーワード過去が表示されます。将来のイベントについては、カレンダ日付が表示されます。
イベントの詳細
イベントの詳細へのリンクを示します。この領域では、スキャン操作に影響するライフサイクルの詳細が説明されます。
パーティションでいくつかの論理操作(移動や圧縮など)が必要な場合、ILMアシスタントではそれらの操作が個別のイベントとして表示されます。ただし、スクリプトでは、操作を組み合せて1つのSQL DDL文を作成することができます。
現在、ILMアシスタントにはアーカイブ機能はありません。このため、アーカイブ・イベントを選択すると、その時点でアーカイブする必要があるパーティションを識別して、それらをコメント化したスクリプトが生成されます。
コンプライアンスおよびセキュリティ領域には、セキュリティを実施して、世界中の無数の規制へのコンプライアンス管理を推進するために使用できる項目がすべて表示されます。次のための領域が含まれます。
現行ステータスの表示
不変性の証明
プライバシ・ポリシーおよびセキュリティ・ポリシーの表示
監査の表示
ポリシー・ノートの管理
現行ステータスには、コンプライアンスおよびセキュリティの使用可能な様々な機能すべてのステータスが要約されます。たとえば、仮想プライベート・データベース(VPD)ポリシーの定義数、デジタル署名が最後に生成された日時、デジタル署名の比較が最後に実行された日時などが示されます。
規制によっては、データがデータベースに入力されてからずっと変更されていないことを明示する必要性を定めています。データが変更されていないことを証明するために使用できる方法の1つは、デジタル署名の生成です。
Oracle Databaseでは、SQL結果セットに対してデジタル署名を生成できます。署名はILMアシスタント内で生成することができます。レコードのコレクションを記述する問合せを含む名前付きSQL結果セットを作成することで、署名が生成されます。生成されたデジタル署名は、最初はテキスト・ファイルに保存されています。
問合せのデータ・レコードが変更されていないことを示すには、事前に定義されたSQL問合せにデジタル署名を提供し、現在のデータに対して再生成してから署名を比較します。このようにして、デジタル署名が最初に生成されてからデータが変更されていないことを示します。
プライバシおよびセキュリティ領域では、次の情報を表示できます。
各ILM表でのプライバシとセキュリティの定義のサマリー
仮想プライベート・データベース(VPD)ポリシー
ILMアシスタントで管理される表のセキュリティ・ビュー
ILMアシスタントで管理される表についてユーザーに付与されているアクセス権限に関するレポート
デフォルトではライフサイクル表サマリーが表示されます。VPDポリシーとユーザー・アクセス情報は、対応するリンクを選択すると表示されます。
標準のデータベース権限を使用して、特定のユーザーに対して表へのアクセスを制限することができます。ただし、このようなアクセス制限では、ユーザーは表のすべての情報を読むことが可能です。VPDポリシーを使用すると、情報にアクセスできるユーザーについてさらに細かいレベルで制御できます。VPDポリシーを使用すると、ユーザーに対して表示するデータを厳密に定義する高機能のファンクションを作成できます。
たとえば、ポリシーによって、特定のユーザーはデータの最新の12か月分のみを表示できるようにし、それ以外のユーザーはすべてのデータを表示できるように指定できます。または、別のポリシーでは、事務所が存在する国のデータのみを表示できるように指定できます。このように、VPDポリシーは、情報へのアクセスを制御するきわめて高機能のツールです。ILMアシスタントで管理されている表に定義されたVPDポリシーのみが、VPDポリシー・レポートに表示されます。
規制によっては、データのすべてのアクセスと変更についての監査証跡を管理することが必要です。Oracle Databaseでは、データベース監査とファイングレイン監査を使用できます。どちらでも独自の監査レコードが作成されますが、ILMアシスタントではそれらを1つの統合レポートとして表示できます。レポートの内容は、いくつかの基準を使用してフィルタ処理できます。
ILMアシスタントの監査領域では、次の操作を行うことができます。
現行監査ステータスの表示
ファイングレイン監査ポリシーの管理
監査レコードの表示
Oracle Databaseの標準監査では、表に対するすべてのタイプのアクセスがロギングされます。ただし、特定の条件を満たすときのみイベントを監査する場合があります(たとえば、変更されるトランザクションの値が$10,000を超える場合など)。このような監査は、監査条件を指定したファイングレイン監査ポリシーを使用して行うことができます。さらに高度な処理を行うにはオプションのファンクションをコールできます。
ILMアシスタントでは、ライフサイクル定義にマップされた表についてデータベース監査レコードとファイングレイン監査レコードの両方を表示できます。アイコンによって、データベース(ディスクの形)またはFGAという監査レコードのタイプが表されます。フィルタ条件を使用して、表示する監査レコードをフィルタ処理します。また、レポートの見出しをクリックすると、その列についてデータがソートされます。
デフォルトでは、ILMアシスタントには現在の日付の監査レコードしか表示されません。以前の日付の監査レコードを表示するには、フィルタ・オプションを使用して表示するレコードの日付範囲を指定する必要があります。
次の例では、手動でストレージ層を作成し、それらのストレージ層に対して表をパーティション化し、そのデータベースに対してVPDポリシーを設定して、オンライン・アーカイブ層のデータへのアクセスを制限する方法を示します。
REM Setup the tablespaces for the data REM These tablespaces would be placed on a High Performance Tier CREATE SMALLFILE TABLESPACE q1_orders DATAFILE 'q1_orders' SIZE 2M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; CREATE SMALLFILE TABLESPACE q2_orders DATAFILE 'q2_orders' SIZE 2M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; CREATE SMALLFILE TABLESPACE q3_orders DATAFILE 'q3_orders' SIZE 2M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; CREATE SMALLFILE TABLESPACE q4_orders DATAFILE 'q4_orders' SIZE 2M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; REM These tablespaces would be placed on a Low Cost Tier CREATE SMALLFILE TABLESPACE "2006_ORDERS" DATAFILE '2006_orders' SIZE 5M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; CREATE SMALLFILE TABLESPACE "2005_ORDERS" DATAFILE '2005_orders' SIZE 5M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; REM These tablespaces would be placed on the Online Archive Tier CREATE SMALLFILE TABLESPACE "2004_ORDERS" DATAFILE '2004_orders' SIZE 5M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; CREATE SMALLFILE TABLESPACE old_orders DATAFILE 'old_orders' SIZE 15M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; REM Now create the Partitioned Table CREATE TABLE allorders ( 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) -- -- table wide physical specs -- PCTFREE 5 NOLOGGING -- -- partitions -- PARTITION BY RANGE (time_id) ( partition allorders_pre_2004 VALUES LESS THAN (TO_DATE('2004-01-01 00:00:00' ,'SYYYY-MM-DD HH24:MI:SS' ,'NLS_CALENDAR=GREGORIAN' )) TABLESPACE old_orders, partition allorders_2004 VALUES LESS THAN (TO_DATE('2005-01-01 00:00:00' ,'SYYYY-MM-DD HH24:MI:SS' ,'NLS_CALENDAR=GREGORIAN' )) TABLESPACE "2004_ORDERS", partition allorders_2005 VALUES LESS THAN (TO_DATE('2006-01-01 00:00:00' ,'SYYYY-MM-DD HH24:MI:SS' ,'NLS_CALENDAR=GREGORIAN' )) TABLESPACE "2005_ORDERS", partition allorders_2006 VALUES LESS THAN (TO_DATE('2007-01-01 00:00:00' ,'SYYYY-MM-DD HH24:MI:SS' ,'NLS_CALENDAR=GREGORIAN' )) TABLESPACE "2006_ORDERS", partition allorders_q1_2007 VALUES LESS THAN (TO_DATE('2007-04-01 00:00:00' ,'SYYYY-MM-DD HH24:MI:SS' ,'NLS_CALENDAR=GREGORIAN' )) TABLESPACE q1_orders, partition allorders_q2_2007 VALUES LESS THAN (TO_DATE('2007-07-01 00:00:00' ,'SYYYY-MM-DD HH24:MI:SS' ,'NLS_CALENDAR=GREGORIAN' )) TABLESPACE q2_orders, partition allorders_q3_2007 VALUES LESS THAN (TO_DATE('2007-10-01 00:00:00' ,'SYYYY-MM-DD HH24:MI:SS' ,'NLS_CALENDAR=GREGORIAN' )) TABLESPACE q3_orders, partition allorders_q4_2007 VALUES LESS THAN (TO_DATE('2008-01-01 00:00:00' ,'SYYYY-MM-DD HH24:MI:SS' ,'NLS_CALENDAR=GREGORIAN' )) TABLESPACE q4_orders); ALTER TABLE allorders ENABLE ROW MOVEMENT; REM Here is another example using INTERVAL partitioning REM These tablespaces would be placed on a High Performance Tier CREATE SMALLFILE TABLESPACE cc_this_month DATAFILE 'cc_this_month' SIZE 2M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; CREATE SMALLFILE TABLESPACE cc_prev_month DATAFILE 'cc_prev_month' SIZE 2M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; REM These tablespaces would be placed on a Low Cost Tier CREATE SMALLFILE TABLESPACE cc_prev_12mth DATAFILE 'cc_prev_12' SIZE 2M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; REM These tablespaces would be placed on the Online Archive Tier CREATE SMALLFILE TABLESPACE cc_old_tran DATAFILE 'cc_old_tran' SIZE 2M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; REM Credit Card Transactions where new partitions automatically are placed on the high performance tier CREATE TABLE cc_tran ( cc_no VARCHAR2(16) NOT NULL, tran_dt DATE NOT NULL, entry_dt DATE NOT NULL, ref_no NUMBER NOT NULL, description VARCHAR2(30) NOT NULL, tran_amt NUMBER(10,2) NOT NULL) -- -- table wide physical specs -- PCTFREE 5 NOLOGGING -- -- partitions -- PARTITION BY RANGE (tran_dt) INTERVAL (NUMTOYMINTERVAL(1,'month') ) STORE IN (cc_this_month ) ( partition very_old_cc_trans VALUES LESS THAN (TO_DATE('1999-07-01 00:00:00' ,'SYYYY-MM-DD HH24:MI:SS' ,'NLS_CALENDAR=GREGORIAN' )) TABLESPACE cc_old_tran , partition old_cc_trans VALUES LESS THAN (TO_DATE('2006-07-01 00:00:00' ,'SYYYY-MM-DD HH24:MI:SS' ,'NLS_CALENDAR=GREGORIAN' )) TABLESPACE cc_old_tran , partition last_12_mths VALUES LESS THAN (TO_DATE('2007-06-01 00:00:00' ,'SYYYY-MM-DD HH24:MI:SS' ,'NLS_CALENDAR=GREGORIAN' )) TABLESPACE cc_prev_12mth, partition recent_cc_trans VALUES LESS THAN (TO_DATE('2007-07-01 00:00:00' ,'SYYYY-MM-DD HH24:MI:SS' ,'NLS_CALENDAR=GREGORIAN' )) TABLESPACE cc_prev_month, partition new_cc_tran VALUES LESS THAN (TO_DATE('2007-08-01 00:00:00' ,'SYYYY-MM-DD HH24:MI:SS' ,'NLS_CALENDAR=GREGORIAN' )) TABLESPACE cc_this_month); REM Create a Security Policy to allow user SH to see all credit card data, REM PM only sees this years data, REM and all other uses cannot see the credit card data CREATE OR REPLACE FUNCTION ilm_seehist (oowner IN VARCHAR2, ojname IN VARCHAR2) RETURN VARCHAR2 AS con VARCHAR2 (200); BEGIN IF SYS_CONTEXT('USERENV','CLIENT_INFO') = 'SH' THEN -- sees all data con:= '1=1'; ELSIF SYS_CONTEXT('USERENV','CLIENT_INFO') = 'PM' THEN -- sees only data for 2007 con := 'time_id > ''31-Dec-2006'''; ELSE -- others nothing con:= '1=2'; END IF; RETURN (con); END ilm_seehist; / REM Then the policy is added with the DBMS_RLS package as follows: BEGIN DBMS_RLS.ADD_POLICY ( object_schema=>'SYSTEM' , object_name=>'cc_tran' , policy_name=>'ilm_view_history_data' , function_schema=>'SYSTEM' , policy_function=>'ilm_seehist' , sec_relevant_cols=>'tran_dt' ); END; /