Oracle® Business Intelligence Applications Informatica PowerCenterユーザーのためのインストレーション・ガイド リリース7.9.6.3 B66690-01 |
|
![]() 前 |
![]() 次 |
注意: データベース・プラットフォームとソース・システムに関する情報の一部には、今回のリリースのOracle Business Intelligence Applicationsに適用されないものがあります。今回のリリースのOracle Business Intelligence Applicationsでサポートされているデータベースとソース・システムの最新情報は、『Oracle Business Intelligence Applicationsシステム要件およびサポートされるプラットフォーム』を参照してください。必ず、『Oracle Business Intelligence Applicationsリリース・ノート』も参照してください。また、これらのドキュメントの最新版はOracle Technology Network(http://www.oracle.com/technology/documentation/bi_apps.html )にあります。Oracle Technology Networkの無料アカウントを登録するには、http://www.oracle.com/technetwork/index.html にアクセスしてください。 |
この項では、Oracle BI Applicationsをインストールして配置するための準備について説明します。インストールと配置のプロセスを開始する前に、この章の説明を確認しておいてください。Oracle Business Analytics Warehouseの設定に関する一般的なガイドライン、および使用するソースOLTPデータベースに対応するデータベース固有ガイドラインも参照してください。
また、第4.3項「必須要件」で指定されているデータベース要件とInformatica PowerCenter要件を満たしていることを確認する必要があります。
備考
データベース固有の設定の詳細は、『Oracle Business Intelligence Applicationsシステム要件およびサポートされるプラットフォーム』を参照してください。
コード・ページ設定の詳細は、Informaticaのドキュメントを参照してください。
この項は、次の項目を含んでいます。
第3.2項「Oracle Business Analytics WarehouseのIBM DB2 UDB固有のデータベースのガイドライン」
第3.3項「IBM DB2 UDB zOSおよびOS/390、またOracle Business Analytics WarehouseのzOS固有のデータベースのガイドライン」
第3.4項「Oracle Business Analytics WarehouseのSQL Server固有のデータベースのガイドライン」
第3.5項「Oracle Business Analytics WarehouseのTeradata固有のデータベースのガイドライン」
第3.6項「Oracle Business Analytics WarehouseのOracle固有のデータベースのガイドライン」
第3.7項「Oracle Business Analytics WarehouseでのOracleデータベースのパフォーマンスを最適化するためのその他の提案」
Oracle Business Analytics Warehouseは、次元スキーマを持つデータベースです。Oracle Business Analytics Warehouseをトランザクション・データベースと同じデータベースに配置することは技術的には可能ですが、パフォーマンス上の理由からお薦めできません。トランザクション・データベースはオンライン・トランザクション処理(OLTP)データベースとして構造化されますが、Oracle Business Analytics Warehouseはオンライン分析処理(OLAP)データベースとして構造化され、それぞれが独自の目的に合せて最適化されます。この2つのデータベースが結合されない理由は、次のとおりです。
トランザクションを個別に入力して管理するトランザクション・データベースの通常の使用が、分析クエリーによって妨げられます。
トランザクション・データベースのデータは、効率よく更新できるように正規化されています。トランザクション・クエリーは、複数の正規化されたテーブルを結合するため、処理が遅くなります(あらかじめ結合された正規化されていない分析テーブルとは対照的です)。
現在のトランザクション処理で必要でない場合でも、履歴データはトランザクション・データベースから消去できません。分析で必要があるためです。(対照的に、分析データベースは現在のデータと同様に履歴データのウェアハウスです。)これによって、トランザクション・データベースがさらに遅くなります。
トランザクション・データベースは、ある特定のアプリケーション向けに調整されています。このような独立したトランザクション・データベースを、通常は複数の機能的アプリケーションにまたがって実行される分析クエリーに使用することは、生産的ではありません。
分析データベースは、分析クエリーおよび抽出-変換-ロード(ETL)処理向けに限定して調整できます。この点は、トランザクション・データベースの要件とかなり異なります。
トランザクション・データベースでは、S_ETLテーブルを別の表領域に配置する必要があります。これらのETLテーブルは、Oracle Business Analytics Warehouseで使用され、定期的なバックアップ・プロセスに組み込むことはできません。
これらのテーブルの詳細な一覧は、Oracle Business Analytics Warehouseデータ・モデル・リファレンスで入手できます。
DB2データベース上で実行しているSiebel CRMソース・システムのETLパフォーマンスを最大化するには、次のSQLコマンドを使用してSiebel OLTPデータベース上に3つのインデックスを作成します。
CREATE INDEX S_AUDIT_ITEM_M100 ON S_AUDIT_ITEM (FIELD_NAME ASC, BUSCOMP_NAME DESC) PCTFREE 10 ALLOW REVERSE SCANS COLLECT DETAILED STATISTICS;
CREATE INDEX S_AUDIT_ITEM_M101 ON S_AUDIT_ITEM (RECORD_ID ASC, FIELD_NAME DESC) PCTFREE 10 ALLOW REVERSE SCANS COLLECT DETAILED STATISTICS;
CREATE INDEX S_OPTY_M102 ON S_OPTY (ROW_ID ASC, PR_POSTN_ID DESC) PCTFREE 10 ALLOW REVERSE SCANS COLLECT DETAILED STATISTICS;
Informaticaリポジトリには、Oracle Business Analytics Warehouseを移入するETLマッピングのオブジェクト定義のすべてが格納されます。データベースに格納されるのは一連のリポジトリ・テーブルで、トランザクション・データベース、分析データベースまたは別のデータベースにできます。
Oracle Business Analytics Warehouseは、リレーショナル・データベース管理システムと連携します。使用するDBMSによっては、一般的な要件に加えて、データベース管理システム(DBMS)固有の要件が発生します。
次に示す一般的なガイドラインは、パフォーマンスと拡張に対応するようにデータ・ウェアハウスの物理データベースを設定する際に役立ちます。
少なくとも、データとインデックスの表領域を分離します。使用頻度の高いテーブルとそのインデックスを分離するために、追加の表領域を作成します。
表領域には最大サイズのブロックとページを使用します(たとえば32K)。これにより、4K、8K、16Kの各サイズと比べて、全体的なパフォーマンスが良好となるだけでなく、表領域が拡大する際の上限サイズが小さくなることもありません。
複数のディスク・ストレージ・システムを使用する場合は、表領域コンテナおよび表領域ファイルをできるだけ多くのディスクにわたってストライプします。
未加工のデバイスを表領域に使用すると、加工されたファイル・システムに比べてパフォーマンスが高くなります。
RAID-5は、パフォーマンスと可用性のバランスが優れていることが確認されています。
Oracleデータベースの場合、バッファ・プールのサイズは、表領域のコンテンツとサイズ(表の数とそのサイズ)に基づいて決定します。
データベースには、同じサーバーで他にアプリケーションが実行されていないことを前提として、使用可能なサーバー・メモリの総容量の約75パーセントを割り当てます。
Oracle Business Analytics Warehouseの構成プロセスで、第4.9.1項「データ・ウェアハウス・テーブルの作成」の手順に従ってデータ・ウェアハウス・テーブルを作成する際に、テーブルとインデックスを別々の表領域に作成できます。ただし、パフォーマンス上の理由から、表領域は表3-1で説明されているように作成することをお薦めします。
表3-1 推奨される表領域の構成
表領域名 | 表一覧 |
---|---|
DIM_STG |
W_*DS |
FACT_STG |
W_*FS |
DIM |
W_*DおよびW_*MD |
FACT |
W_*F |
AGG |
W_*A |
OTHER |
残りのW*テーブル |
DIM_INDX |
W_*Dテーブルのインデックス (たとえば、他のテーブルにはW*GテーブルやW*GSテーブルが含まれます) |
FACT_INDX |
W_*Fテーブルのインデックス |
OTHER_INDX |
W*テーブルの残りのインデックス |
注意: ETL実行時に致命的なデッドロックが発生しないように、必ずInformaticaで「Session Level Retry on Deadlock」オプションを選択してください。 |
表3-2に、DB2リレーショナル・データベース管理システム(RDBMS)を使用する際のパラメータ設定に関するガイドラインを示します。このガイドラインはベースとして使用してください。具体的なデータベース・サイズ、データ・シェイプ、サーバー・サイズ(CPUとメモリ)およびストレージ・タイプを基に、変更を加える必要があります。データベース管理者は、パフォーマンスの監視とチューニングに関する考慮事項に基づいて、設定に変更を加える必要があります。
表3-2 推奨されるDB2パラメータの設定
パラメータ | DB2 UDB V7 | DB2 UDB V8 and V9 | 備考 |
---|---|---|---|
SHEAPTHRES |
400000 |
400000 |
|
ASLHEAPSZ |
15 |
15 |
|
RQRIOBLK |
65535 |
65535 |
|
QUERY_HEAP_SZ |
16384 |
16384 |
|
JAVA_HEAP_SZ |
2048 |
2048 |
|
MAXAGENTS |
400 |
400 |
|
NUM_INITAGENTS |
10 |
10 |
|
NUM_POOLAGENTS |
200 |
200 |
|
INTRA_PARALLEL |
YES |
YES |
|
FCM_NUM_BUFFERS |
12288 |
12288 |
|
SHEAPTHRES_SHR |
なし |
=SHEAPTHRES |
|
DBHEAP |
16384 |
16384 |
|
CATALOGCACHE_SZ |
5558 |
5558 |
|
LOGBUFSZ |
2048 |
2048 |
|
UTIL_HEAP_SZ |
10000 |
10000 |
|
NUM_ESTORE_SEGS |
16 |
NIL |
V7ではアドレス可能なメモリが1.75GBに制限されていますが、この制限が撤廃されたDB2 V8 64ビットではリストアが不要です。 |
ESTORE_SEG_SZ |
65536 |
NIL |
|
LOCKLIST |
25000 |
25000 |
|
APP_CTL_HEAP_SZ |
5000 |
5000 |
|
SORTHEAP |
4000 |
4000 |
|
STMTHEAP |
40960 |
40960 |
|
APPLHEAPSZ |
2560 |
2560 |
|
PCKCACHESZ |
2560 |
2560 |
|
STAT_HEAP_SZ |
20000 |
20000 |
|
DLCHKTIME |
10000 |
10000 |
|
MAXLOCKS |
50 |
50 |
|
LOCKTIMEOUT |
1200 |
1200 |
|
MAXAPPLS |
500 |
500 |
|
AVG_APPLS |
10 |
10 |
|
MAXFILOP |
500 |
500 |
|
GROUPHEAP_RATIO |
なし |
70 |
V8で導入 |
APPGROUP_MEM_SZ |
なし |
30000 |
V8で導入 |
DATABASE_MEMORY |
なし |
AUTOMATIC |
V8で導入 |
注意: ETL実行時に致命的なデッドロックが発生しないように、必ずInformaticaで「Session Level Retry on Deadlock」オプションを選択してください。 |
zOSおよびOS/390にIBM DB2 RDBMSを使用する場合は、次の要件が適用されます。
Oracle BI Applicationsは、IBM DB2 UDB for z/OSおよびOS/390(zSeriesサーバー上で稼働)と、IBM DB2 Connectミドルウェアを介して通信します。
サポートされているDB2 Connectのエディションは、次のとおりです。
DB2 Connect Enterprise Edition(EE)。このエディションは、Informaticaサーバー/クライアント、DAC、Oracle Business Intelligenceなどの中間層サーバーにインストールされます。
DB2 Connect Unlimited Edition(UE)。このエディションは、DB2 Connect Enterprise Editionの機能を備えていますが、料金設定が異なります。
すべての接続に使用するODBCドライバで、IBM DB2 ODBC Driverを使用する必要があります。
DB2 Client Configuration Assistantを使用して、適切な接続を作成します。
表3-3の変数設定を使用します。
この項では、SQL Serverデータベースの使用方法に関するガイドラインを示します。
注意: SQL Serverデータベースは、バイナリ・ソート順序または大文字と小文字を区別するディクショナリ・ソート順序をサポートする照合順序を使用して作成する必要があります。大文字と小文字を区別しないディクショナリ・ソート順序はサポートされていません。たとえば、米国英語キャラクタ・セットでのバイナリ・ソート順序には、Latin1_General_BINという照合を使用します。デフォルトの照合設定であるSQL_Latin1_General_CP1_CI_ASを使用すると、データベースが大文字と小文字を区別しないように設定され、これがサポートされていないためにインデックスの作成が失敗します。 |
この項は、次の項を含んでいます。
Oracle BI Applicationsでは、SQL Serverデータベースを作成する際にANSI NULLオプションを選択する必要があります。
ANSI NULLオプションを設定するには:
SQL Server 2000の環境では、Oracle BI Applicationsテーブルに各国対応データをロードする際、または複数の言語をロードする際、DBライブラリ・オプションの設定を変更する必要があります。
Microsoft SQL Serverのプログラム・メニューで、「Client Network Utility」を選択します。
「DB Library Options」タブを選択します。
「Automatic ANSI to OEM」オプションの選択を解除します。
注意: SQL Server 2000では、サーバー構成オプションの多くが自動的に調整されるので、管理者が調整を行う必要はほとんどありません。構成オプションは変更可能ですが、一般には、それらのオプションをデフォルト値のままにして、SQL Serverが実行時の状況に応じて自動的に調整されるようにすることをお薦めします。 |
必要に応じて、SQL Serverコンポーネントを表3-4のように構成してパフォーマンスを最適化できます。
表3-4 SQL Serverデータベースの推奨される変数設定
パラメータ | 推奨される設定 | 備考 |
---|---|---|
affinity mask |
0 |
|
allow updates |
0 |
|
AWE enabled |
0 |
|
C2 audit mode |
0 |
|
cost threshold for parallelism |
5 |
|
cursor threshold |
–1 |
|
default full-text language |
1033 |
|
default language |
0 |
|
fill factor |
95% |
挿入集約型トランザクションの場合は、fill factorを90から95%に設定します。クエリーのパフォーマンスを高めるには、fill factorを95%または100%に設定します。 |
index create memory |
1024KB |
デフォルトは0です。 |
lightweight pooling |
0 |
|
locks |
0 |
|
max degree of parallelism |
0 |
デフォルトは0です。これによって、並列性がオフになります。max degree of parallelismは0のままにする必要があります。これは、パラレル・プラン生成が使用されることを意味します。マルチ・スレッド・コンポーネント(EIMスレッドが複数ある場合など)を実行する場合、1(1つのプロセスのみ使用)に設定する必要があります。 |
max server memory |
2000MB |
デフォルトは2147483647です。 |
max text replication size |
65536バイト |
|
max worker threads |
100 |
デフォルトは255です。 |
media retention |
0 |
|
min memory per query |
1024KB |
|
min server memory |
500MB |
デフォルトは0です。 |
nested triggers |
1 |
|
network packet size |
8192バイト |
デフォルトは4096です。 |
open objects |
0 |
|
priority boost |
0 |
|
query governor cost limit |
0 |
CPU使用率が高い場合のみ、60に変更します。 |
query wait |
–1秒 |
|
recovery interval |
0分 |
|
remote access |
1 |
|
remote login timeout |
20秒 |
|
remote proc trans |
0 |
|
remote query timeout |
600秒 |
|
scan for startup procs |
0 |
|
set working set size |
0 |
|
two digit year cutoff |
2049 |
|
user connections |
0 |
|
user options |
0 |
SQL Serverのメモリ: 使用できるメモリ容量が十分であることを確認します。
トランザクション・ログとTempDB: データベース・データのディスクとは別のディスクに配置します。
完全ロード: データベースの完全復旧モデルです。
増分(リフレッシュ)ロード: 完全復旧モデルを一括ログ復旧モデルに変更します。
この項では、Teradataの配置におけるパフォーマンスを最大化するために推奨ベスト・プラクティスとガイドラインを示します。内容は次のとおりです。
データ・ウェアハウス管理コンソール(DAC)には、データベース接続のためのJDBCドライバが必要です。サポートされているデータベースと互換性のあるJDBCドライバのみ使用する必要があります。サポート対象データベースの詳細は、『Oracle Business Intelligence Applicationsシステム要件およびサポートされるプラットフォーム』を参照してください。JDBCドライバにはデータベースのバージョンごとに差異があるため、該当するデータベースに付属していたドライバを使用するか、該当するデータベース・バージョン用として動作保証されていることがわかっているドライバをデータベース・ベンダー・サイトからダウンロードして使用する必要があります。現在、データベース用のサード・パーティ製JDBCドライバはサポートされていません。
Unicode環境がTeradataデータベースにある場合、Teradata 12.0またはTeradata 13.0のTeradata JDBCドライバをインストールする必要があります。バージョン12以前のバージョンを含めて、すべてのサポート対象バージョンのTeradataデータベースでこのドライバが必要です。Teradata 12.0とTeradata 13.0のTeradata JDBCドライバは、「Teradata JDBC Driver」(http://www.teradata.com/DownloadCenter)で入手できます。
Teradataデータベースを使用する場合は、次の要件が適用されます。
デッドロック問題が発生した場合は、DAC内の特定グループで「Execute Serially」オプションを使用することをお薦めします。Teradataの場合、これは必須です。このオプションがタスク・グループで選択されている場合は、タスクを含む実行プランを再ビルドしてから実行する必要があります。
Informatica Serverがインストールされているマシンに、Teradata Parallel Data Pump (TPump) Teradataロード・ユーティリティをインストールします。
Informatica PowerCenterをインストールする場合は、Informatica Serverのディレクトリ名またはディレクトリ・パスにスペースが含まれていないことを確認します。デフォルト・ディレクトリに含まれているスペースは、手動で削除する必要があります。
Teradata環境にOracle BI Applicationsをインストールする場合は、事前に構築されたInformaticaリポジトリ・ファイルのOracle_BI_DW_Teradata.repをロードする必要があります。これはORACLE_HOME\biapps\dwrep\Informatica\Repositoryにあります。
スキーマを作成する前に、TeradataのODBC構成で、セッション・モードをANSIに、DateFormatをAAAにそれぞれ設定します。テーブルは、ケース固有として作成する必要があります。スキーマを作成した後にこのODBC構成を行うと、テーブルがケース固有として作成されない場合があります。
算術計算に18,3(精度、スケール)を超える小数データ型が関係する場合は、オーバーフローが発生しないように、次の静的なソース・システム・パラメータを追加します。
$$Hint_Tera_Post_Cast = "as Decimal(18,3))"
$$Hint_Tera_Pre_Cast = "Cast("
DACでのソース・システム・パラメータの設定の詳細は、第4.18.2項「DACソース・システム・パラメータの設定」を参照してください。
Informaticaのserver/binディレクトリにreswords.txtファイルをインストールします。reswords.txtファイルを構成する場合、次の点に注意してください。
テーブル名や列名にデータベース予約語(MONTHやYEARなど)があると、Informatica統合サービスでデータベースに対してSQLを実行すたときに、データベース・エラーが発生してセッションは失敗します。予約語ファイルのreswords.txtを作成してserver/binディレクトリに保持できます。統合サービスでセッションを初期化するときには、reswords.txtが検索されます。ファイルが存在している場合には、データベースに対してSQLを実行する際に、統合サービスによって、一致した予約語が引用符で囲まれます。
予約語で作業する際、次のルールとガイドラインを使用します。
統合サービスは、SQLを生成して、ソース、ターゲットおよび検索のデータベースに接続すると、予約語ファイルを検索します。
ソース、ターゲットおよび検索のSQLよりも優先する場合、予約語を引用符で囲む必要があります。
引用符で囲まれた識別子に関するSQL-92規格を使用するために、SQL Serverなどのデータベースを有効にすることが必要になる場合があります。接続環境SQLを使用して、コマンドを発行します。
たとえば、SET QUOTED_IDENTIFIER ONコマンドを、サンプルreswords.txtファイルに対してSQL Serverで使用します。
予約語ファイルを使用するには、reswords.txtという名前のファイルを作成して、server/binディレクトリに格納します。データベースごとに、予約語の格納に必要なセクションを作成します。テーブルや列の名前で使用される予約語を追加します。データベースにおけるすべての予約語をこのファイルに格納する必要はありません。reswords.txtの予約語とデータベース名では大文字と小文字は区別されません。
サンプルのreswords.txtファイルは次のとおりです。
[Teradata] MONTH DATE INTERVAL
注意: ETLプロセス実行時に致命的なデッドロックが発生しないように、必ずInformaticaで「Session Level Retry on Deadlock」オプションを選択してください。 |
この項では、Teradataの配置におけるパフォーマンスを最大化するために推奨されているベスト・プラクティスを示します。この項の内容は次のとおりです。
注意: 次に示すベスト・プラクティスは、カスタマイズとして扱います。カスタム・ディレクトリにマッピングをコピーするなど、標準的なカスタマイズ方法を使用してください。デフォルトのオブジェクトで直接変更を行うことは避けてください。 |
ステージング・データベースおよびターゲット・データベースにテーブルが作成されたら、指定された統計収集を実行する必要があります。これに失敗すると、ETLのパフォーマンスに影響し、スプール領域エラー(エラー番号2646)が発生する可能性があります。
DACでは、ETLプロセスの一環として統計が再収集されます。ただし、DACではテーブル・レベルで統計収集ステートメントが発行され(たとえばw_org_dで統計を収集)、その対象は既存の統計に限られます。
Teradataコードのパフォーマンスは、各インストールの具体的な環境に大きく依存します。結合を伴う列で単一値(NULLかどうか)や少ない値の出現数が多いと、Teradata AMPにおいてデータに偏りが発生する場合があります。この影響としては、AMPごとのスプール制限を超過する可能性が高くなり、あるAMPでCPU使用率が上昇しながら、別のAMPでは偏りが発生する問合せで使用率が低くなることがあります。これによってこの問合せの処理時間が長くなり、偏りが発生するAMPでCPUリソースが競合するシステムにおいて他の問合せに悪影響が及びます。
環境によっては、現在のコードにより外部テーブルに結合キーで再分散できます。ただし、内部テーブルが小さい場合は除きます。Teradata Optimizerにより、内部テーブルをすべてのAMPにコピーして、外部テーブルに再分散しない場合があります。外部キーにNULLなどの値が多すぎると、結合操作中にTeradataでデータに偏りが発生します。これが発生した場合、関係するテーブルで統計が定義され収集されたことを確認してください。すべての必要な統計が定義され最近収集されていると、SQLの再記述が必要になる場合があります。
要素SILマッピングの多くは、ROW_ID/INTEGRATION_IDから次元ROW_WIDを取得する必要があります。たとえば、W_PER_RANK_FS.ACCNT_IDは、W_PER_RANK_Fテーブルにロードする前にACCNT_WIDに変換する必要があります。ACCT_IDはNULL値可能であるため、W_PER_RANK_FSとW_ORG_Dの結合は左側外部結合として定義されます。
ただし、データセットによっては、ACCT_IDカラムでのNULLの割合が50%以上になることがあります。ACCT_IDに従ってW_PER_RANK_FSを再分散すると、ACCT_ID = NULLであるすべての行が1つのAMPに格納されます。
通常、Teradataデータベースには数百ギガバイトのスプール領域が確保されていますが、このスプール領域は何百ものAMPに割り当てられます。各AMPのスプール領域は制限されています(たとえば上限が2ギガバイトなど)。
W_PER_RANK_FSの大部分が1つのAMPに割り当てられると、十分なスプール領域を確保できなくなることがあります。この状況は、スプール領域が小さすぎるために発生するのではなく、1つのAMPにスプールされるデータが多すぎる場合に発生します。
Teradataでのパラレル処理および左側外部結合解決のメカニズムを使用するには、SQLを記述しなおす必要があります。
たとえば、元のSQLが次のように記述されていたとします。
SELECT ... FROM W_PER_RANK_FS FS LEFT OUTER JOIN W_ORG_D ORG ON FS.ACCNT_ID = ORG.INTEGRATION_ID AND FS.DATASOURCE_NUM_ID = ORG.DATASOURCE_NUM_ID
前述のSQLは、次のSQL例で示すように、均等に分散されているのに一致していない複数の値へNULLを変換するように再コードします。
SELECT ... FROM W_PER_RANK_FS FS LEFT OUTER JOIN (SELECT FS.INTEGRATION_ID, FS.DATASOURCE_NUM_ID, ORG.ROW_WID, ORG.GEO_WID FROM W_PER_RANK_FS FS, W_ORG_D ORG WHERE FS.ACCNT_ID = ORG.INTEGRATION_ID AND FS.DATASOURCE_NUM_ID = ORG.DATASOURCE_NUM_ID AND FS.ACCNT_ID IS NOT NULL) ORG ON FS.DATASOURCE_NUM_ID = ORG.DATASOURCE_NUM_I AND FS.INTEGRATION_ID = ORG.INTEGRATION_ID
スプール領域の問題が発生している他のソース修飾子にも、同じようにSQLを再コーディングする方法を使用できます。
固有値の数が少ない場合は、GROUP BY句を使用した方が効率的です。固有値の数が多い場合を除いて、DISTINCT句は使用しないでください。
提供された事前構成済フィールドの一部を使用しない場合は、無関係のフィールドをマッピングとテーブルから除外することで、パフォーマンスが向上します。
この項では、Teradataで使用できるローダーと、Oracle Business Intelligence Applicationsでのその用途について説明します。
Teradataには、次の3種類のTeradataローダー・プロセスがあります。
Teradata Parallel Data Pump (Tpump): 詳細は、第3.5.3.5.1項「Tpump」を参照してください。
Fastload: 詳細は、第3.5.3.5.2項「Fastload」を参照してください。
Mload: 詳細は、Teradataのドキュメントを参照してください。
各ローダー・プロセスは、次の2種類のモードで使用できます。
ステージ・モード: Informaticaプロセスによって、次の処理が上から順に実行されます。
ソース・データから読み取ります。
データ・ファイルを作成します。
ローダー・プロセスを起動して、作成したデータ・ファイルを使用してテーブルをロードします。
長所: 障害が発生した場合に、Teradataリカバリ・プロセスを使用してリカバリできます。
短所: ステージ・モードはパイプ・モードよりも時間がかかります。また、大きなデータ・ファイルを作成できるため、より大きなディスク領域が必要となります。
パイプ・モード: Informaticaプロセスによってソースからの読取りが行われ、同時にそのデータがローダーにパイプ処理されてターゲット・テーブルのロードが開始されます。
長所: ステージ・モードよりも処理時間が短く、データ・ファイルが作成されないので大量のディスク領域を必要としません。
短所: 障害が発生した場合に、Teradataリカバリ・プロセスを使用してリカバリできません(TPumpでは、FastLoadやMultiLoadとは異なり、行コミットが行われるため)。
TPumpはデータ・ロード・ユーティリティで、Teradataデータベースにおいてデータの保守(更新、削除、挿入および原子アップサート)に役立ちます。TPumpによって、データ・ウェアハウスにおいてほぼリアルタイムでデータが処理できます。TPumpで標準のTeradata SQLを使用して、Teradataデータベースにおいて適度なデータ・ロード率から高いデータ・ロード率で処理されます。通常は、複数のセッションと複数文リクエストを使用して、スループットを向上させます。大半のロード・ユーティリティとは異なり、TPumpではテーブル・レベル・ロックではなく行ハッシュ・ロックを使用します。これによって、TPump実行中に問合せを実行できます。このことは、TPumpは即座に停止できることも意味します。
TPumpは次のモードで使用できます。
Tpump_Insert: 挿入を行う場合に使用します。
Tpump_Update: 更新を行う場合に使用します(このモードを使用するには、Informaticaのターゲット・テーブル定義でプライマリ・キーを定義する必要があります)。
Tpump_Upsert: 更新または更新の対象がなくて挿入を行う場合に使用します(このモードを使用するには、Informaticaのターゲット・テーブルの定義でプライマリ・キーを定義する必要があります)。
Tpump_Delete: 削除を行う場合に使用します(このモードを使用するには、Informaticaのターゲット・テーブル定義でプライマリ・キーを定義する必要があります)。
Informaticaでは、実際のターゲット・テーブル名を使用して、その制御ファイルの生成で使用するエラー・テーブルとログ・テーブルが生成されます。TPumpの2つのインスタンスが、同時に同じターゲット・テーブルへのロードを行う場合は、別々のエラー・テーブル名とログ・テーブル名を使用するようにセッションを変更する必要があります。
パイプ・モードのTPumpロード・プロセスは、増分ロードの際に、またテーブルにデータがある場合に役立ちます。エラーが発生した場合は、プロセスを再起動することで、最後にコミットされたデータからリロードが開始されます。
Teradataのローダーを使用するためのセッションの構成については、Informaticaのドキュメントを参照してください。
Fastload External Loaderプロセスは、空のテーブルに対して使用します。たとえば、ステージング・テーブルをロードする場合や、テーブルが空である初期ロードの場合などです。Fastloadプロセスでロードを開始すると、ターゲット・テーブルをロックします。これは、プロセス(検索など)でそのテーブルにアクセスできないことを意味します。この問題の解決策としては、検索オーバーライド用に、ダミーのSQLをセッション・レベルで指定します。
ヒント: Fastloadプロセスの実行中にセッションが失敗した場合は、SQL Assistantで単純なSQLコマンド(count(*)など)を実行して、テーブルがFastloadプロセスによってロックされていないかを確認します。 |
テーブル(W_ORG_DSなど)がロックされている場合は、次のスクリプトを使用してロックを解放します。
LOGON DATABASEALIAS/USER,PASSWORD BEGIN LOADING USER.W_ORG_DS ERRORFILES USER.ET_W_ORG_DS,USER.UV_W_ORG_DS; END LOADING;
前述のテキストをtest.ctlというファイルに保存した場合、コマンド・プロンプトで次のコマンドを入力するとこのプロセスを実行できます。
C:\fastload\test.ctl
ヒント: テーブルのロード・スクリプトを作成するには、前述のtest.ctlスクリプトを編集してログイン情報を変更し、W_ORG_DSの部分を必要なターゲット・テーブル名ですべて置き換えます。 |
ロード・プロセス・スクリプトが正常に実行されると、ターゲット・テーブルに対してselect count(*)コマンドを実行できるようになります。ロックを解放できない場合は、ロックを削除するためにテーブルの削除と再作成が必要になることがあります。これを行った場合は、統計を再作成する必要があります。
ヒント: 一般にFastLoadは、ステージング・テーブルのロードおよび初期ロードをパイプ・モードで行う場合に使用されます。エラーが発生した場合は、データ全体をリロードします。 |
Business Analyticsデータ・ウェアハウスをOracleデータベースでより簡単に構成するには、パラメータ・テンプレート・ファイルのinit10gR2.oraとinit11g.oraを参照してください。これらのファイルは、<DRIVE>:\<Oracle BI Applications install directory>\dwrep\Documentation\にあります。
パラメータ・テンプレート・ファイルにより、Oracle 10gと11gのコストベース・オプティマイザに基づくパラメータ・ガイドラインが示されます。このガイドラインはベースとして使用してください。具体的なデータベース・サイズ、データ・シェイプ、サーバー・サイズ(CPUとメモリ)およびストレージ・タイプを基に、変更を加える必要があります。データベース管理者は、パフォーマンスの監視とチューニングに基づいて、この設定に変更を加える必要があります。
適切なテンプレート・ファイルを$ORACLE_HOME/dbsディレクトリにコピーします。そして、テンプレート・ファイルの推奨内容を確認して、特定のデータベース構成に基づいて変更を行います。データベース管理者は、パフォーマンスの監視とチューニングに関する考慮事項に基づいて、設定に変更を加える必要があります。
注意: NLS_LENGTH_SEMANTICSパラメータにより、バイト長セマンティクスや文字長セマンティクスを定義できます。Oracle BI Applicationsでは、このパラメータにおいてBYTE値とCHAR値がサポートされています。MLS文字を使用する場合、このパラメータをinit10gR2.oraとinit11g.oraのファイルに追加できます。 |
この項では、Oracleデータベースのパフォーマンスを最適化するためのその他の提案を示します。
Oracle 11.1よりも前のデータベースでORA-00942エラーを回避するには、次のパラメータをシステム・パラメータとして設定することですべてのセッションでネイティブの完全外部結合実装を有効にするか、FULL_OUTER_JOIN_SUPPORTED機能をRPDで無効にできます。
alter session set "_optimizer_native_full_outer_join" = 'FORCE'; alter system set "_optimizer_native_full_outer_join" = 'FORCE' scope = both;
注意: RDBMSで完全外部結合のネイティブ実装を有効にするほうが、RPDでFULL_OUTER_JOIN_SUPPORTEDを無効にするよりは望ましい方法です。
Oracleを使用するOracle BI Applicationsでは、バイナリ・ソートのみがサポートされます。Oracleクライアントを実行している場合は、次のいずれかの操作を行います。
NLS_SORTパラメータをBINARYに設定します。
バイナリを含むNLS_LANG設定を選択します。
専用のWebクライアントで十分なパフォーマンスを得るには、これらの設定が必要です。
Oracleの開発用、テスト用および本番用の各データベースでコストベースの最適化が有効になっていること、および統計が最新であることを確認します。そうでない場合、ルールベース・オプティマイザが使用される場合があります。
外部キーをOracleデータベースで作成しますが、外部キー関係を適用しないようにOracleを構成します。外部キーがあると、Oracleで特定の問合せをさらに最適化できます。適用をオフにしても、データベースの負荷に悪影響を及ぼすことはありません。
アプリケーションを分析して、インデックスが付けられた偏りの大きなデータの出現状況を調べます。このインデックスのヒストグラム統計を作成して、オプティマイザがより円滑に問合せを実行できるようにします。
Oracle BI ServerとOracle間のデータ・スループットを高めるために、listener.oraでのSDUとTDUの設定を変更します。デフォルトは2KBで、8KBまで増やすことができます。
サーバー側で、listener.oraファイルを編集します。特定のSID_LISTエントリの下で、SID_DESCを次のように変更します。
SID_LIST_LISTENER = SID_LIST = SID_DESC = (SDU=16384)(TDU=16384) ORACLE_HOME = /.....) SID_NAME = SOLAP) ) )
一時表領域に十分なスペースがあることを確認してください。
ログ・ファイル・グループの数を4に設定します。
各ログ・ファイルのサイズを10MBに設定します。
クライアント側で、tnsnames.oraファイルを編集します。TNSの別名を、次のようにSDU=およびTDU=を追加して変更します。
myhost_orcl.world= DESCRIPTION=(SDU=16384)(TDU=16384) ADDRESS = (PROTOCOL = TCP)(HOST=myhost)(PORT=1521)) CONNECT_DATA=(SID=ORCL))
この項では、パーティション化を使用してOracle BI Applicationsの配置でパフォーマンスを最大にする方法について説明します。内容は次のとおりです。
範囲とコンポジット範囲-範囲パーティション化を要素テーブルで利用すると、ETLプロセス中のインデックスおよび統計のメンテナンス時間が短縮され、Web問合せパフォーマンスが向上します。大半の挿入と更新は最新のパーティションに影響を与えるので、影響のあるパーティションでのみローカル・インデックスを無効にしてから、無効にしたインデックスをロード後に再作成し、更新されたパーティションのみで統計を算出する必要があります。オンライン・レポートとダッシュボートでは、結果がより迅速にレンダリングされます。オプティマイザがパーティション化排除ロジックを使用して、より効率的な実行プランを構築するためです。
2000万行を超える大きな要素テーブルは、パーティション化に適している場合があります。最適なパーティション化テーブルを妥当なデータ分散で構築するには、月別、四半期別、年別などでパーティション化することを検討できます。初期ロード前にターゲット要素テーブルを特定してパーティション化するか、移入済テーブルをパーティション化オブジェクトに完全ロード後に変換できます。
パーティション化テーブルをOracle Business Analytics Data Warehouseでサポートするように実装するには、DACメタデータを更新して、ターゲット・データベース内のパーティション化テーブルに候補を手動で変換する必要があります。
パーティション化された要素テーブルを配置するには
大きな要素テーブルをパーティション化します。詳細は、第3.8.2項「大きな要素テーブルのパーティション化」を参照してください。
パーティション化されたテーブルのETLをサポートするようにDACを構成します。詳細は、第3.8.3項「パーティション化されたテーブルをサポートするようにDACを構成する方法」を参照してください。
大きな要素テーブルでパフォーマンスに影響を及ぼす場合、この項で説明するように、要素テーブルをパーティション化することによりパフォーマンスを最大化できます。
この項に記載されている手順では、W_WRKFC_EVT_MONTH_F要素テーブルをパーティション化テーブルに変換し年別に範囲パーティション化を使用する例を使用しています。
大きな要素テーブルをパーティション化するには
パーティション化キーを特定して、パーティション化間隔を決定します。
適切なパーティション化キーを選択することは、効果的なパーティション化において最も重要な要因です。Web問合せやETL更新で関係するパーティションの数が定義されるからです。パーティション化キーの列を選択する際、次のガイドラインを確認してください。
範囲パーティション化を実装するために、DATE型の適切な列を特定します。
Oracle BI Serverリポジトリに接続して、論理レイヤーとプレゼンテーション・レイヤーで列ごとに使用方法や依存性をチェックします。
それぞれの潜在的なパーティション化キー候補および時間の範囲別(月、四半期または年)のデータ・ボリュームによって、要約されたデータ分布をターゲット・テーブルで分析します。
コンパイル済データに基づいて、今後のパーティション化テーブルで適切なパーティション化キーとパーティション化範囲を決定します。
大半の実装における推奨パーティション化範囲は月ですが、四半期または年のパーティション化範囲に関する実装を検討することが必要になる場合があります。
これらのガイドラインでは、ほとんどの増分ETLボリューム・データは、新規レコードで構成されていると想定しています。つまり、それらは2つの最新パーティションの1つに格納されます。次に示すように、選択した範囲の粒度に応じて、最も影響が及ぶ最新パーティションでローカル・インデックスを再作成することをお薦めします。
月次範囲。最新のパーティションを2つ(つまり現在のパーティションと前のパーティション)保持することをお薦めします。
四半期別範囲。現在のパーティションのみを保持する必要があります。
年次範囲。現在のパーティションを保持することをお薦めします。
パーティション化テーブルを作成します。
初期ロード前にパーティション化テーブルを事前に作成したり、データを通常のテーブルにロードしてからパーティション化テーブルのコピーを作成し、要約されたデータを移行できます。通常のテーブルへの初期ロードが完了している状況で、パーティション化すると決定した場合、初期ロードの再実行は不要です。
テーブルをパーティション化テーブルに変換するオプションを2つ検討できます。
「as select」SQL文を使用してテーブルを作成します。
この方法は、より簡略で高速です。
交換パーティション構文を使用してテーブルを作成してから、パーティションを分割します。
エンド・ユーザーがデータにアクセスする状況でパーティション化を行う必要がある場合、この方法は高可用性データ・ウェアハウスに適しています。
次のSQLコマンドの構文で、1つの表領域(名前はUSERS)の例を使用します。
元のテーブルの名前を変更します。
SQL> rename W_WRKFC_EVT_MONTH_F to W_WRKFC_EVT_MONTH_F_ORIG;
年別でパーティション化されている範囲を使用してパーティション化テーブルを作成します。
SQL> create table W_WRKFC_EVT_MONTH_F partition by range (EVENT_YEAR)( partition PART_MIN values less than (2006), partition PART_2006 values less than (2007), partition PART_2007 values less than (2008), partition PART_2008 values less than (2009), partition PART_2009 values less than (2010), partition PART_2010 values less than (2011), partition PART_MAX values less than (maxvalue) ) tablespace BIAPPS_DATA nologging parallel enable row movement as select * from W_WRKFC_EVT_MONTH_F_ORIG;
注意: 年別パーティション化ではYYYY形式を、四半期別パーティション化ではYYYYQQ形式を、月別パーティション化ではYYYYMM形式を、それぞれ使用する必要があります。テーブルをパーティション化する前に、パーティション化列データ型を必ずチェックしてください。前述の例におけるEVENT_YEAR列では、数値(4)精度が使用されます。これによって、YYYY形式を使用してテーブル・パーティション値が定義されます。パーティション化キーでWID列を選択した場合、YYYYMMDD形式を使用してパーティション化範囲を定義する必要があります。 |
次のような構文を使用して、コンポジット範囲-範囲パーティション化を実装できます。この例では、パーティション化では四半期範囲を、サブパーティション化では年範囲を、それぞれ使用しています。EXPENDITURE_DT_WID列は数値(8)精度なので、YYYY形式の年別パーティション、YYYYMM形式の月別パーティションおよびYYYYMMDD形式のWID別パーティションを使用して、テーブル・パーティション値が定義されます。年の範囲ではYYYYのデータ形式を、四半期の範囲ではYYYYQQのデータ形式を、月別の範囲ではYYYYMMDDのデータ形式を、それぞれ使用する必要があります。テーブルをパーティション化する前に、パーティション化列データ型を必ずチェックしてください。
SQL> create table W_PROJ_EXP_LINE_F partition by range (CHANGED_ON_DT) subpartition by range (EXPENDITURE_DT_WID) (partition PART_MIN values less then (TO_DATE('01-JAN-2008','DD-MON-YYYY')) ( subpartition PART_MIN_MIN values less than (19980000) , subpartition PART_MIN_1998 values less than (19990000) , subpartition PART_MIN_1999 values less than (20010000) , subpartition PART_MIN_2001 values less than (20020000) , subpartition PART_MIN_2002 values less than (20030000) , subpartition PART_MIN_2003 values less than (20040000) , subpartition PART_MIN_2004 values less than (20050000) , subpartition PART_MIN_2005 values less than (20060000) , subpartition PART_MIN_2006 values less than (20070000) , subpartition PART_MIN_2007 values less than (20080000) , subpartition PART_MIN_2008 values less than (20090000) , subpartition PART_MIN_2009 values less than (20100000) , subpartition PART_MIN_MAX values less than (MAXVALUE) ) (partition PART_200801 values less then (TO_DATE('01-APR-2008','DD-MON-YYYY')) ( subpartition PART_200801_MIN values less than (19980000) ( subpartition PART_200801_1998 values less than (19990000) ( subpartition PART_200801_1999 values less than (20010000) ( subpartition PART_200801_2001 values less than (20020000) ( subpartition PART_200801_2002 values less than (20030000) ( subpartition PART_200801_2003 values less than (20040000) ( subpartition PART_200801_2004 values less than (20050000) ( subpartition PART_200801_2005 values less than (20060000) ( subpartition PART_200801_2006 values less than (20070000) ( subpartition PART_200801_2007 values less than (20080000) ( subpartition PART_200801_2008 values less than (20090000) ( subpartition PART_200801_2009 values less than (20100000) ( subpartition PART_200801_MAX values less than (MAXVALUE) ) ... ... , partition PART_MAX values less than (maxvalue) ( subpartition PART_MAX_MIN values less than (19980000) , subpartition PART_MAX_1998 values less than (19990000) , subpartition PART_MAX_1999 values less than (20010000) , subpartition PART_MAX_2001 values less than (20020000) , subpartition PART_MAX_2002 values less than (20030000) , subpartition PART_MAX_2003 values less than (20040000) , subpartition PART_MAX_2004 values less than (20050000) , subpartition PART_MAX_2005 values less than (20060000) , subpartition PART_MAX_2006 values less than (20070000) , subpartition PART_MAX_2007 values less than (20080000) , subpartition PART_MAX_2008 values less than (20090000) , subpartition PART_MAX_2009 values less than (20100000) , subpartition PART_MAX_MAX values less than (maxvalue) ) ) nologging parallel enable row movement as (select * from W_PROJ_EXP_LINE_F_ORIG);
名前を変更したテーブルでインデックスを削除してから名前を変更します。
SQL> spool drop_ind.sql SQL> SELECT 'DROP INDEX '|| INDEX_NAME||';' FROM USER_INDEXES WHERE TABLE_NAME = 'W_WRKFC_EVT_MONTH_F_ORIG'; SQL> spool off SQL> @drop_ind.sql
パーティション化変換が正常に完了するまで、元の名前変更済テーブルでインデックスを保持する場合、次のコマンドを使用します。
SQL> spool rename_ind.xql SQL> SELECT 'ALTER INDEX '|| INDEX _NAME ||' rename to '|| INDEX_NAME || '_ORIG; ' FROM USER_INDEXES WHERE TABLE_NAME = 'W_WRKFC_EVT_MONTH_F_ORIG'; SQL> spool off SQL> @rename_ind.sql
グローバル・インデックスとローカル・インデックスを作成します。
次の問合せをDACリポジトリ所有者として実行します。
SQL> spool indexes.sql SQL> SELECT 'CREATE' ||DECODE(ISUNIQUE,'Y','UNIQUE') ||DECODE(ISBITMAP,'Y','BITMAP') ||'INDEX' ||I.NAME ||'ON' ||T.NAME ||'(' ||MAX(DECODE(POSTN,1,C.NAME||'ASC')) ||MAX(DECODE(POSTN,2,' ,'||C.NAME||'ASC')) ||MAX(DECODE(POSTN,3,' ,'||C.NAME||'ASC')) ||MAX(DECODE(POSTN,4,' ,'||C.NAME||'ASC')) ||MAX(DECODE(POSTN,5,' ,'||C.NAME||'ASC')) ||MAX(DECODE(POSTN,6,' ,'||C.NAME||'ASC')) ||MAX(DECODE(POSTN,7,' ,'||C.NAME||'ASC')) ||') tablespace USERS_IDX ' ||DECODE(ISUNIQUE, 'Y','GLOBAL','LOCAL') ||' NOLOGGING;' FROM W_ETL_TABLE T, W_ETL_INDEX I, W_ETL_INDEX_COL C WHERE T.ROW_WID = I.TABLE_WID AND T.NAME = 'W_WRKFC_EVT_MONTH_F' AND I.ROW_WID = C.INDEX_WID AND I.INACTIVE_FLG = 'N' GROUP BY T.NAME,I.NAME,ISBITMAP,ISUNIQUE; S QL> spool off;
このスクリプトでは、最大で7つの位置でインデックスが作成されます。7列の位置よりも多くのインデックスがある場合は、MAX(DECODE(POSTN...))文を変更します。
スプール・ファイルのindexes.sqlをデータ・ウェアハウス・スキーマで実行します。次に例を示します。
SQL> @indexes.sql
統計をパーティション化テーブルで算出します。次に例を示します。
SQL> BEGIN dbms_stats.Gather_table_stats( NULL tabname => 'W_WRKFC_EVT_MONTH_F', CASCADE => true, estimate_percent => dbms_stats.auto_sample_size, method_opt => 'FOR ALL INDEXED COLUMNS SIZE AUTO'); END;
行移動を有効にすることでパーティション化テーブルをサポートするようにInformaticaを構成します。
Informatica Workflow Managerで、メニュー・バーから「Connections」→「Relational」を選択します。
「Relational Connection Browser」ダイアログ・ボックスで「DataWarehouse」接続を選択します。
接続環境SQLを次のように更新します。
ALTER SESSION SET SKIP_UNUSABLE_INDEX=TRUE;
パーティション化されたテーブルをサポートするようにDACを構成する必要があります。詳細は、第3.8.3項「パーティション化されたテーブルをサポートするようにDACを構成する方法」を参照してください。
第3.8.2項「大きな要素テーブルのパーティション化」の説明に従って、要素テーブルをパーティション化すると、パーティション化された要素テーブルをサポートするようにDACを構成する必要があります。この処理では、最初に新しいソース・システム・パラメータを作成します。そして、DACアクション機能を使用して、インデックスの削除と作成におけるデフォルトの動作よりも優先するインデックス・アクションを作成します。また、テーブルを分析するデフォルトのアクションよりも優先するテーブル・アクションも作成します。インデックスとテーブル・アクションを作成したら、これらのアクションを適切なインデックスとテーブルにDACリポジトリで関連付けます。
DACアクション機能の詳細は、Oracle Business Intelligenceデータ・ウェアハウス管理コンソール・ユーザーズ・ガイドを参照してください。
注意: このプロセスの例では、インデックスの再作成を設定して、年別の範囲パーティション化において2つの最新パーティション(つまり、前のパーティションと現在のパーティション)で統計をメンテナンスする方法が示されています。月次かそれより粒度の細かい範囲には、前のパーティションと現在のパーティションのみを実装することを検討してください。四半期別か年別の範囲でパーティションを実装する場合は、現在のパーティションのみを保持する必要があります。四半期別か年別で前のパーティションを保持すると、不必要なオーバーヘッドが発生して、増分ETL実行時間が長くなる場合があります。 |
パーティション化テーブルをサポートするようにDACを構成するには、次の手順を実行する必要があります。
DACアクション機能の詳細は、Oracle Business Intelligenceデータ・ウェアハウス管理コンソール・ユーザーズ・ガイドを参照してください。これは、Oracle Technology Network(http://www.oracle.com/technology/documentation/bi_dac.html
)で入手できます。
この手順に従って、パーティション化されたテーブルをサポートするようにDACでソース・システム・パラメータを作成します。
パーティション化されたテーブルをサポートするようにDACでソース・システム・パラメータを作成するには
DACにログインします。
DACにログインする方法の詳細は、第A.1項「DACにログインする方法」を参照してください。
「Design」ビューに移動して、適切なカスタム・コンテナをドロップダウン・リストから選択します。
「Source System Parameters」タブをクリックします。
ツールバーで「New」をクリックし、新規レコードを開きます。
年別パーティションの場合:
次の値でパラメータを作成します。
-Name: $$CURRENT_YEAR_WID
-Data Type: SQL
-Value: SELECT TO_CHAR(ROW_WID) FROM W_YEAR_D WHERE W_CURRENT_CAL_YEAR_CODE = 'Current'
-Logical Data Source: DBConnection_OLAP
次の値で2番目のパラメータを作成します。
-Name: $$PREVIOUS_YEAR_WID
-Data Type: SQL
-Value: SELECT TO_CHAR(ROW_WID) FROM W_YEAR_D WHERE W_CURRENT_CAL_YEAR_CODE = 'Previous'
-Logical Data Source: DBConnection_OLAP
月別パーティションの場合:
次の値でパラメータを作成します。
-Name: $$CURRENT_MONTH_WID
-Data Type: SQL
-Value: SELECT TO_CHAR(ROW_WID) FROM W_MONTH_D WHERE W_CURRENT_CAL_MONTH_CODE = 'Current'
-Logical Data Source: DBConnection_OLAP
次の値で2番目のパラメータを作成します。
-Name: $$PREVIOUS_MONTH_WID
-Data Type: SQL
-Value: SELECT TO_CHAR(ROW_WID) FROM W_MONTH_D WHERE W_CURRENT_CAL_MONTH_CODE = 'Previous'
-Logical Data Source: DBConnection_OLAP
四半期別パーティションの場合:
次の値でパラメータを作成します。
-Name: $$CURRENT_QTR_WID
-Data Type: SQL
-Value: SELECT TO_CHAR(ROW_WID) FROM W_QTR_D WHERE W_CURRENT_CAL_QTR_CODE = 'Current'
-Logical Data Source: DBConnection_OLAP
次の値で2番目のパラメータを作成します。
-Name: $$PREVIOUS_QTR_WID
-Data Type: SQL
-Value: SELECT TO_CHAR(ROW_WID) FROM W_QTR_D WHERE W_CURRENT_CAL_QTR_CODE = 'Previous'
-Logical Data Source: DBConnection_OLAP
この項では、インデックス・アクションを作成し、インデックスをパーティション化テーブルで無効にして作成する手順について説明します。内容は次のとおりです。
第3.8.3.2.3項「インデックス・アクションを作成してローカル・サブパーティション化インデックス・パラメータを有効にする方法」
第3.8.3.2.4項「インデックス・アクションを作成してローカル・ビットマップ・インデックス・パラメータを作成する方法」
このインデックス・アクションによりローカル・インデックスが無効になります。この例では年別パーティション範囲を使用しています。四半期別や月別のパーティション範囲を使用する場合、アクションとSQLでは適切な名前(PREVIOUS_MONTH_WID/CURRENT_MONTH_WIDやPREVIOUS_QTR_WID/CURRENT_QTR_WIDなど)で置換します。使用する範囲ごとに別々のアクションを定義する必要があります。
DACにログインします。
DACにログインする方法の詳細は、第A.1項「DACにログインする方法」を参照してください。
「Design」ビューに移動して、適切なカスタム・コンテナをドロップダウン・リストから選択します。
「Menu」バーから、「Tools」→「Seed Data」→「Actions」→「Index Actions」を選択します。
「Index Actions」ダイアログ・ボックスで「New」をクリックします。
新規レコード・フィールドがアクションのリストの上部に表示されます。
名前フィールドに、「Year Partitioning: Disable Local Index」と入力します。
「Save」をクリックします。
「Value」フィールドをダブルクリックして、「Value」ダイアログ・ボックスを開きます。
「Value」ダイアログ・ボックスが表示されます。
SQLスクリプトを定義します。
「Add」をクリックします。
新規レコード・フィールドがSQLブロックのリストの上部に表示されます。
新規レコード・フィールドに次の情報を入力します。
フィールド | 説明 |
---|---|
名前 | 「Disable PREVIOUS_YEAR_WID Local Indexes」と入力します。 |
タイプ | 「SQL」を選択します。 |
Database Connection | 「Target」を選択します。 |
Valid Database Platforms | フィールドをダブルクリックして「Supported Database Types」ダイアログ・ボックスを開き、適切なデータベースを選択します。 |
ウィンドウの右下部にあるテキスト・ボックスで、次のSQLを入力します。
alter index getIndexName() modify partition PART_@DAC_$$PREVIOUS_YEAR_WID unusable
注意: テキスト・エリアにおいてセミコロン(;)をSQLの末尾で使用しないでください。
「Save」をクリックします。
SQLを定義します。
「Add」をクリックします。
新規レコード・フィールドがSQLブロックのリストの上部に表示されます。
新規レコード・フィールドに次の情報を入力します。
フィールド | 説明 |
---|---|
名前 | 「Disable CURRENT_YEAR_WID Local Indexes」と入力します。 |
タイプ | 「SQL」を選択します。 |
Database Connection | 「Target」を選択します。 |
Valid Database Platforms | フィールドをダブルクリックして「Supported Database Types」ダイアログ・ボックスを開き、適切なデータベースを選択します。 |
ウィンドウの右下部にあるテキスト・ボックスで、次のSQLを入力します。
alter index getIndexName() modify partition PART_@DAC_$$CURRECT_YEAR_WID unusable
「Save」をクリックします。
このインデックス・アクションによりローカル・インデックスが有効になります。この例では年別パーティション範囲を使用しています。四半期別や月別のパーティション範囲を使用する場合、アクションとSQLでは適切な名前(PREVIOUS_MONTH_WID/CURRENT_MONTH_WIDやPREVIOUS_QTR_WID/CURRENT_QTR_WIDなど)で置換します。使用する範囲ごとに別々のアクションを定義する必要があります。
DACにログインします。
DACにログインする方法の詳細は、第A.1項「DACにログインする方法」を参照してください。
「Design」ビューに移動して、適切なカスタム・コンテナをドロップダウン・リストから選択します。
「Menu」バーから、「Tools」→「Seed Data」→「Actions」→「Index Actions」を選択します。
「Index Actions」ダイアログ・ボックスで「New」をクリックします。
新規レコード・フィールドがアクションのリストの上部に表示されます。
名前フィールドに、「Year Partitioning: Enable Local Index」と入力します。
「Save」をクリックします。
「Value」フィールドをダブルクリックして、「Value」ダイアログ・ボックスを開きます。
「Value」ダイアログ・ボックスが表示されます。
SQLスクリプトを定義します。
「Add」をクリックします。
新規レコード・フィールドがSQLブロックのリストの上部に表示されます。
新規レコード・フィールドに次の情報を入力します。
フィールド | 説明 |
---|---|
名前 | 「Enable PREVIOUS_YEAR_WID Local Indexes」と入力します。 |
タイプ | 「SQL」を選択します。 |
Database Connection | 「Target」を選択します。 |
Valid Database Platforms | フィールドをダブルクリックして「Supported Database Types」ダイアログ・ボックスを開き、適切なデータベースを選択します。 |
ウィンドウの右下部にあるテキスト・ボックスで、次のSQLを入力します。
alter index getIndexName() rebuild partition PART_@DAC_$$PREVIOUS_YEAR_WID nologging
注意: テキスト・エリアにおいてセミコロン(;)をSQLの末尾で使用しないでください。
「Save」をクリックします。
SQLスクリプトを定義します。
「Add」をクリックします。
新規レコード・フィールドがSQLブロックのリストの上部に表示されます。
新規レコード・フィールドに次の情報を入力します。
フィールド | 説明 |
---|---|
名前 | 「Enable CURRENT_YEAR_WID Local Indexes」と入力します。 |
タイプ | 「SQL」を選択します。 |
Database Connection | 「Target」を選択します。 |
Valid Database Platforms | フィールドをダブルクリックして「Supported Database Types」ダイアログ・ボックスを開き、適切なデータベースを選択します。 |
ウィンドウの右下部にあるテキスト・ボックスで、次のSQLを入力します。
alter index getIndexName() rebuild partition PART_@DAC_$$CURRECT_YEAR_WID nologging
注意: テキスト・エリアにおいてセミコロン(;)をSQLの末尾で使用しないでください。
「Save」をクリックします。
このインデックス・アクションはコンポジット・パーティション化専用です。この例では年別パーティション範囲を使用しています。四半期別や月別のパーティション範囲を使用する場合は、アクションとSQLでは適切な名前で置換します。
DACにログインします。
DACにログインする方法の詳細は、第A.1項「DACにログインする方法」を参照してください。
「Design」ビューに移動して、適切なカスタム・コンテナをドロップダウン・リストから選択します。
「Menu」バーから、「Tools」→「Seed Data」→「Actions」→「Index Actions」を選択します。
「Index Actions」ダイアログ・ボックスで「New」をクリックします。
新規レコード・フィールドがアクションのリストの上部に表示されます。
名前フィールドに、「Year Partitioning: Enable Local Index」と入力します。
「Save」をクリックします。
「Value」フィールドをダブルクリックして、「Value」ダイアログ・ボックスを開きます。
「Value」ダイアログ・ボックスが表示されます。
SQLスクリプトを定義します。
「Add」をクリックします。
新規レコード・フィールドがSQLブロックのリストの上部に表示されます。
新規レコード・フィールドに次の情報を入力します。
フィールド | 説明 |
---|---|
名前 | 「Enable Local Sub-partitioned Index」と入力します。 |
タイプ | 「Stored Procedure」を選択します。 |
Database Connection | 「Target」を選択します。 |
Valid Database Platforms | フィールドをダブルクリックして「Supported Database Types」ダイアログ・ボックスを開き、適切なデータベースを選択します。 |
ウィンドウの右下部にあるテキスト・ボックスで、次のSQLを入力します。
DECLARE CURSOR C1 IS SELECT DISTINCT SUBPARTITION_NAME FROM USER_IND_SUBPARTITIONS WHERE INDEX_NAME='getIndexName()' AND STATUS = 'UNUSABLE'; BEGIN FOR REC IN C1 LOOP EXECUTE IMMEDIATE 'alter index getIndexName() rebuild subpartition '||REC.SUBPARTITION_NAME||''; END LOOP; END
注意: テキスト・エリアにおいてセミコロン(;)をSQLの末尾で使用しないでください。
「Save」をクリックします。
この例では年別パーティション範囲を使用しています。四半期別や月別のパーティション範囲を使用する場合は、アクションとSQLでは適切な名前で置換します。
DACにログインします。
DACにログインする方法の詳細は、第A.1項「DACにログインする方法」を参照してください。
「Design」ビューに移動して、適切なカスタム・コンテナをドロップダウン・リストから選択します。
「Menu」バーから、「Tools」→「Seed Data」→「Actions」→「Index Actions」を選択します。
「Index Actions」ダイアログ・ボックスで「New」をクリックします。
新規レコード・フィールドがアクションのリストの上部に表示されます。
名前フィールドに、「Year Partitioning: Create Local Bitmap Index」と入力します。
「Save」をクリックします。
「Value」フィールドをダブルクリックして、「Value」ダイアログ・ボックスを開きます。
「Value」ダイアログ・ボックスが表示されます。
SQLスクリプトを定義します。
「Add」をクリックします。
新規レコード・フィールドがSQLブロックのリストの上部に表示されます。
新規レコード・フィールドに次の情報を入力します。
フィールド | 説明 |
---|---|
名前 | 「Create Local Bitmap Indexes」と入力します。 |
タイプ | 「SQL」を選択します。 |
Database Connection | 「Target」を選択します。 |
Valid Database Platforms | フィールドをダブルクリックして「Supported Database Types」ダイアログ・ボックスを開き、適切なデータベースを選択します。 |
ウィンドウの右下部にあるテキスト・ボックスで、次のSQLを入力します。
Create bitmap index getIndexName() on getTableName() (getUniqueColumns()) tablespace getTableSpace() local parallel nologging
注意: テキスト・エリアにおいてセミコロン(;)をSQLの末尾で使用しないでください。
「Save」をクリックします。
この例では年別パーティション範囲を使用しています。四半期別や月別のパーティション範囲を使用する場合は、アクションとSQLでは適切な名前で置換します。
DACにログインします。
DACにログインする方法の詳細は、第A.1項「DACにログインする方法」を参照してください。
「Design」ビューに移動して、適切なカスタム・コンテナをドロップダウン・リストから選択します。
「Menu」バーから、「Tools」→「Seed Data」→「Actions」→「Index Actions」を選択します。
「Index Actions」ダイアログ・ボックスで「New」をクリックします。
新規レコード・フィールドがアクションのリストの上部に表示されます。
名前フィールドに、「Year Partitioning: Create Local B-Tree Index」と入力します。
「Save」をクリックします。
「Value」フィールドをダブルクリックして、「Value」ダイアログ・ボックスを開きます。
「Value」ダイアログ・ボックスが表示されます。
SQLスクリプトを定義します。
「Add」をクリックします。
新規レコード・フィールドがSQLブロックのリストの上部に表示されます。
新規レコード・フィールドに次の情報を入力します。
フィールド | 説明 |
---|---|
名前 | 「Create Local B-Tree Index」と入力します。 |
タイプ | 「SQL」を選択します。 |
Database Connection | 「Target」を選択します。 |
Valid Database Platforms | フィールドをダブルクリックして「Supported Database Types」ダイアログ・ボックスを開き、適切なデータベースを選択します。 |
ウィンドウの右下部にあるテキスト・ボックスで、次のSQLを入力します。
Create index getIndexName() on getTableName() (getUniqueColumns()) tablespace getTableSpace() local parallel nologging
注意: テキスト・エリアにおいてセミコロン(;)をSQLの末尾で使用しないでください。
「Save」をクリックします。
この例では年別パーティション範囲を使用しています。四半期別や月別のパーティション範囲を使用する場合は、アクションとSQLでは適切な名前で置換します。
DACにログインします。
DACにログインする方法の詳細は、第A.1項「DACにログインする方法」を参照してください。
「Design」ビューに移動して、適切なカスタム・コンテナをドロップダウン・リストから選択します。
「Menu」バーから、「Tools」→「Seed Data」→「Actions」→「Index Actions」を選択します。
「Index Actions」ダイアログ・ボックスで「New」をクリックします。
新規レコード・フィールドがアクションのリストの上部に表示されます。
名前フィールドに、「Year Partitioning: Create Global Unique Index」と入力します。
「Save」をクリックします。
「Value」フィールドをダブルクリックして、「Value」ダイアログ・ボックスを開きます。
「Value」ダイアログ・ボックスが表示されます。
SQLスクリプトを定義します。
「Add」をクリックします。
新規レコード・フィールドがSQLブロックのリストの上部に表示されます。
新規レコード・フィールドに次の情報を入力します。
フィールド | 説明 |
---|---|
名前 | 「Create Global Unique Index」と入力します。 |
タイプ | 「SQL」を選択します。 |
Database Connection | 「Target」を選択します。 |
Valid Database Platforms | フィールドをダブルクリックして「Supported Database Types」ダイアログ・ボックスを開き、適切なデータベースを選択します。 |
ウィンドウの右下部にあるテキスト・ボックスで、次のSQLを入力します。
Create index getIndexName() on getTableName() (getUniqueColumns()) tablespace getTableSpace() global parallel nologging
注意: テキスト・エリアにおいてセミコロン(;)をSQLの末尾で使用しないでください。
「Save」をクリックします。
この項では、テーブル・アクションを作成し、統計をパーティション化テーブルで収集する手順について説明します。内容は次のとおりです。
この例では年別パーティション範囲を使用しています。四半期別や月別のパーティション範囲を使用する場合は、アクションとSQLでは適切な名前で置換します。
DACにログインします。
DACにログインする方法の詳細は、第A.1項「DACにログインする方法」を参照してください。
「Design」ビューに移動して、適切なカスタム・コンテナをドロップダウン・リストから選択します。
「Menu」バーから、「Tools」→「Seed Data」→「Actions」→「Table Actions」を選択します。
「Table Actions」ダイアログ・ボックスで「New」をクリックします。
新規レコード・フィールドがアクションのリストの上部に表示されます。
名前フィールドに、「Year Partitioning: Gather Partition Stats」と入力します。
「Save」をクリックします。
「Value」フィールドをダブルクリックして、「Value」ダイアログ・ボックスを開きます。
「Value」ダイアログ・ボックスが表示されます。
SQLスクリプトを定義します。
「Add」をクリックします。
新規レコード・フィールドがSQLブロックのリストの上部に表示されます。
新規レコード・フィールドに次の情報を入力します。
フィールド | 説明 |
---|---|
名前 | 「Gather Partition Stats」と入力します。 |
タイプ | 「Stored Procedure」を選択します。 |
Database Connection | 「Target」を選択します。 |
Valid Database Platforms | フィールドをダブルクリックして「Supported Database Types」ダイアログ・ボックスを開き、適切なデータベースを選択します。 |
ウィンドウの右下部にあるテキスト・ボックスで、次のSQLを入力します。
DECLARE CURSOSR C1 IS SELECT DISTINCT UIP.PARTITION_NAME FROM USER_IND_PARTITIONS UIP, USER_PART_INDEXES UPI WHERE UPI.TABLE_NAME = 'getTableName()' AND UIP.INDEX_NAME=UPI.INDEX_NAME AND UIP.STATUS = 'USABLE' AND UIP.PARTITION_NAME IN ('PART_@DAC_$$CURRENT_YEAR_WID','PART_@DAC_$$PREVIOUS_YEAR_WID'); BEGIN FOR REC IN C1 LOOP DBMS_STATS.GATHER_TABLE_STATS( NULL, TABNAME => 'getTableName()', CASCADE => TRUE PARTNAME => REC.PARTITION_NAME ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE, GRANULARITY => 'PARTITION', METHOD_OPT => 'FOR ALL INDEXED COLUMNS SIZE AUTO', DEGREE => DBMS_STATS.DEFAULT_DEGREE); END LOOP; END
注意: テキスト・エリアにおいてセミコロン(;)をSQLの末尾で使用しないでください。
「Save」をクリックします。
四半期別や月別のパーティション範囲を使用する場合は、アクションとSQLでは適切な名前で置換します。
注意: 変更したインデックスでは「Drop and Create Always」と「Drop and Create Always Bitmap」のプロパティを変更しないでください。これらのチェック・ボックスの選択を解除すると、DACでは定義されているインデックス・アクションがスキップされます。
DACにログインします。
DACにログインする方法の詳細は、第A.1項「DACにログインする方法」を参照してください。
「Design」ビューに移動して、適切なカスタム・コンテナをドロップダウン・リストから選択します。
「Menu」バーから、「Tools」→「Seed Data」→「Actions」→「Table Actions」を選択します。
「Table Actions」ダイアログ・ボックスで「New」をクリックします。
新規レコード・フィールドがアクションのリストの上部に表示されます。
名前フィールドに、「Quarter Composite Partitioning: Gather Partition Stats」と入力します。
「Save」をクリックします。
「Value」フィールドをダブルクリックして、「Value」ダイアログ・ボックスを開きます。
「Value」ダイアログ・ボックスが表示されます。
SQLスクリプトを定義します。
「Add」をクリックします。
新規レコード・フィールドがSQLブロックのリストの上部に表示されます。
新規レコード・フィールドに次の情報を入力します。
フィールド | 説明 |
---|---|
名前 | 「Gather Partition Stats」と入力します。 |
タイプ | 「Stored Procedure」を選択します。 |
Database Connection | 「Target」を選択します。 |
Valid Database Platforms | フィールドをダブルクリックして「Supported Database Types」ダイアログ・ボックスを開き、適切なデータベースを選択します。 |
ウィンドウの右下部にあるテキスト・ボックスで、次のSQLを入力します。
DECLARE CURSOSR C1 IS SELECT DISTINCT UIP.PARTITION_NAME FROM USER_IND_PARTITIONS UIP, USER_PART_INDEXES UPI WHERE UPI.TABLE_NAME = 'getTableName()' AND UIP.INDEX_NAME=UPI.INDEX_NAME AND UIP.STATUS = 'USABLE' AND UIP.PARTITION_NAME IN ('PART_@DAC_$$CURRENT_QTR_WID','PART_@DAC_$$PREVIOUS_QTR_WID'); BEGIN FOR REC IN C1 LOOP DBMS_STATS.GATHER_TABLE_STATS( NULL, TABNAME => 'getTableName()', CASCADE => TRUE PARTNAME => REC.PARTITION_NAME ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE, GRANULARITY => 'PARTITION', METHOD_OPT => 'FOR ALL INDEXED COLUMNS SIZE AUTO', DEGREE => DBMS_STATS.DEFAULT_DEGREE); END LOOP; END
注意: テキスト・エリアにおいてセミコロン(;)をSQLの末尾で使用しないでください。
「Save」をクリックします。
インデックス・アクションをDACで作成したら、前の手順で作成した次のインデックス・アクションごとに、インデックス・アクションを特定のインデックスに割り当てる必要があります。
ローカル・インデックスの無効化
ローカル・インデックスの有効化
ローカル・ビットマップ・インデックスの作成
ローカルBツリー・インデックスの作成
グローバル一意インデックスの作成
インデックス・アクションをインデックスに割り当てるには
「DAC Design」ビューで、「Index」タブをクリックします。
割当て対象のインデックス・アクションに基づいて、適切なインデックスをパーティション化テーブルで問い合せます。
注意: グローバル・インデックスは問合せに含めないでください。割り当てられているインデックス・アクション・タスクがグローバル・インデックスに存在してはいけません。
クエリー結果の一覧で右クリックし、「Add Actions」を選択します。
「Add Actions」ダイアログ・ボックスが開きます。
「Action Type」フィールドで、適切なアクション・タイプを選択します。
「Load Type」フィールドで次の操作を行います。
「Incremental for Disable」と「Enable Local Indexes」のアクションを選択します。
「Initial for Create Local Bitmap Index」、「Create Local B-Tree Index」および「Create Global Unique Index」を選択します。
「Action」フィールドで、ダブルクリックして「Choose Action」ダイアログを開きます。
適切なアクション名を選択します。
「OK」をクリックして、「Add Actions」ダイアログ・ボックスを閉じます。
テーブル・アクションをDACで作成したら、前の手順で作成したテーブル・アクションごとに、テーブル・アクションを特定のテーブルに割り当てる必要があります。
インデックス・アクションをインデックスに割り当てるには
「DAC Design」ビューで、「Index」タブをクリックします。
割当て対象のテーブル・アクションに基づいて適切なテーブルを問い合せます。
クエリー結果の一覧で右クリックし、「Add Actions」を選択します。
「Add Actions」ダイアログ・ボックスが開きます。
「Action Type」フィールドで、「Analyze Table」を選択します。
「Load Type」フィールドで、「Incremental」を選択します。
「Action」フィールドで、ダブルクリックして「Choose Action」ダイアログを開きます。
適切なアクション名(<Range> Partitioning: Gather Partition Statsなど)を選択します。
「OK」をクリックして、「Add Actions」ダイアログ・ボックスを閉じます。
「OK」をクリックして、「Add Actions」ダイアログ・ボックスを閉じます。
注意: コンポジット範囲-範囲テーブルでは、コンポジット・パーティション化テーブル・アクションを必ず使用してください。
この項には次のトピックが含まれます:
OracleのSiebel Applicationsユーザー向けに、SAシステム・サブジェクトエリアの事前に構成済のマッピングを表3-5に示します。OracleのSiebelトランザクション・データベースにないフィールドは、デフォルトでこの表の値に設定されます。
デフォルトの上書き。S_USERテーブルに対する拡張テーブルを作成することで、これらのフィールドにユーザー固有の値を追加して、ユーザー固有のデフォルトを格納できます。また、デフォルト値はいずれも変更可能です。次の論理テーブルのメタデータを変更して、物理的な拡張テーブルを組み込むことができます。
SA User.(User)
手順については、OracleのSiebel Business Applicationsのテーブルとカラムの構成に関するドキュメントを参照してください。
プロバイダ情報の設定。一般に、Oracle Business Analytics Warehouseでは携帯電話番号とFAX番号にプロバイダ名が含まれません。このため、ポケベルは一般に555-483-3843などの数値に設定されます。このアドレスにプロバイダを追加するには、次のガイドラインに従ってください。
会社全体が同じプロバイダを使用している場合は、カラムのマッピングでプロバイダを追加できます。
複数のユーザーが異なるプロバイダを使用できる場合は、拡張テーブルを作成する必要があります。手順については、OracleのSiebel Business Applicationsのテーブルとカラムの構成に関するドキュメントを参照してください。
表3-5 SAシステム・サブジェクトエリアのユーザー・テーブルに対する事前に構成済のマッピング
論理カラム | 物理テーブル | 式 | 備考 |
---|---|---|---|
携帯電話 |
'' |
このフィールドにSMTPアドレスが含まれている場合は、S_CONTACT.CELL_PH_NUMにマップされます。 |
|
携帯電話の優先順位 |
'' |
デフォルトはN |
|
表示名 |
S_CONTACT |
"Real Time OLTP"."".SIEBEL.S_CONTACT_User.FST_NAME || ' ' || "Real Time OLTP"."".SIEBEL.S_CONTACT_User.LAST_NAME |
名と姓の連結 |
電子メール |
S_CONTACT |
EMAIL_ADDR |
|
電子メールの優先順位 |
'HNL' |
デフォルトはN |
|
電子メールのタイプ |
'html' |
デフォルトはHTML |
|
グループ名 |
S_RESP |
NAME |
|
ハンドヘルド |
'' |
デフォルトは空の文字列 |
|
ハンドヘルドの優先順位 |
'' |
デフォルトは空の文字列 |
|
言語 |
'en' |
デフォルトは'en' |
|
ロケール |
'en' |
デフォルトは'en' |
|
ログオン |
S_USER |
LOGIN |
|
ポケベル |
'' |
このフィールドにSMTPアドレスが含まれている場合は、S_CONTACT.PAGER_PH_NUMにマップされる可能性があります。 |
|
ポケベルの優先順位 |
'' |
デフォルトはN |
|
タイムゾーン |
S_TIMEZONE |
NAME |
表3-6に、すべてのOracle BI Applicationsに共通の初期化ブロックの一部と、その目的を示します。各Oracle BI Applications領域固有の初期化ブロックは、ここに示されていません。
Oracle BI Applicationsで用意されている初期化ブロックを表示するには、変数マネージャをOracle Business Intelligence Enterprise Edition Administration Toolで開きます。詳細は、『Oracle Business Intelligence Server管理ガイド』を参照してください。
表3-6 初期化ブロックとその目的
初期化ブロック | 目的 |
---|---|
Authorization |
データベースからユーザーの職責を計算します。 |
Authentication |
基幹業務アプリケーション・ユーザーとして存在するユーザーを、データベースに対して認証し、検証します。 |
External Metadata Strings |
ユーザーのロケール用に翻訳されたメタデータ文字列の値を取得します。この初期化ブロックは、各国対応の配置におけるIntelligenceダッシュボードに必要不可欠です。 |
LOCALE |
Oracle BI Serverでのユーザーのロケール仕様を設定します。 |
Login Properties |
ユーザーのログイン・プロパティ(フルネームなど)をデータベースから取得します。この初期化ブロックでは、ユーザーのログレベルも設定されます。デフォルトでは、全ユーザーのログ・レベルが0になります。すべてのユーザーにOracle BIクエリー・ログを生成する場合は、デフォルト値および初期化SQLの値を変更することで、この初期化ブロックを更新する必要があります。 |
Default System Language ID |
基幹業務アプリケーション・データベースにクエリーを実行することで、変数OLTP_LANG_IDを設定します。 |
Organizations for Org-based Security |
基幹業務アプリケーション・データベースに問い合せて、各ユーザーについて組織メンバーシップを取得します。ORGANIZATION変数が設定されます。 |
Primary Owner ID |
ユーザーのログインIDに基づいて、プライマリ所有者IDを設定します。 |
Primary Position ID |
基幹業務アプリケーション・データベースにクエリーを実行して、変数PRIMARY_POSTN_IDを設定します。 |
Warehouse Refresh Date |
CURRENT_YEARなどの、複数の時間ベースの変数を設定します。 |
ETL Run Date |
ETL実行日を取得します。 |
ETL Default Currency |
デフォルト通貨を取得します。 |
パフォーマンスをSiebel CRMで最大にするために、ORACLE_HOME\biapps\dwrepディレクトリで利用可能なSQLファイルを使用してインデックスを実装できます。表3-7に、特定のアプリケーションに該当するSQLファイルを示します。
SQLファイルによって、事前構成済アプリケーションで使用されているすべてのS_.*テーブルにインデックスが生成されます。
注意: テスト環境から本番環境に移行する場合は、本番環境でインデックスを削除して再作成する必要があります。 |
チェンジ・キャプチャSQLによって、次のSQLが生成されます。
Insert into S_ETL_I_IMG_XX (ROW_ID, LAST_UPD) AS SELECT ROW_ID, LAST_UPD, MODIFICATION_NUM From S_XXX WHERE LAST_UPD > 'LAST REFRESH_DATE – PRUNE DAYS' AND NOT EXISTS ( SELECT 'X' FROM S_ETL_R_IMAGE WHERE S_ETL_R_IMAGE.ROW_ID = S_XXX.ROW_ID AND S_ETL_R_IMG_XX.MODIFICATION_NUM = S_XXX.MODIFICATION_NUM AND S_ETL_R_IMG_XX.LAST_UPD = S_XXX.LAST_UPD )
SQL生成スクリプトが前述のSQLに基づいてS_CONTACTテーブルに作成するインデックスを、表3-8に示します。
Oracle EBSソース・データベース・テーブルに必須のLAST_UPDATE_DATE列があります。これをOracle BI Applicationsで使用して、増分データ変更を取得します。Oracle BI Applicationsで使用されるOracle EBSソース・テーブルには、インデックスがLAST_UPDATE_DATE列にないテーブルがあります。インデックスがあると、ソース・アプリケーションのパフォーマンスに影響が及ぶ場合があるからです。
Oracle EBSテーブルには、LAST_UPDATE_DATE列のインデックスに関連するカテゴリが3つあります。
カテゴリ1: LAST_UPDATE_DATE列にインデックスはないがパフォーマンスが低下せずにインデックスを作成できるテーブル。
カテゴリ2: LAST_UPDATE_DATE列にインデックスがあるテーブル。これらのインデックスはOracle EBSリリース12で導入されました。
カテゴリ3: パフォーマンスがOracle EBS環境で低下するため、LAST_UPDATE_DATE列にインデックスを作成できないテーブル。
次のDDLスクリプトにより、カスタム・インデックスをLAST_UPDATE_DATE列でカテゴリ1テーブル(つまり、このインデックスが作成されていないすべてのOracle EBSリリースのテーブル、およびそのようなインデックスの作成においてパフォーマンスに関する既知の影響がないテーブル)用に作成します。
ソース・システムがOracle EBSリリース11iまたはリリース12の環境において、特定のサブジェクトエリアを実装する際に増分抽出マッピングのパフォーマンスが低い場合、このDDLスクリプトを実行する必要があります。
注意: ソース・システムが、Oracle EBSリリース12、Oracle EBSリリース11.5.10、Oracle EBSリリース11.5.9またはそれより以前のリリースの環境において、Oracle Applications Tablespace Model(OATM)に移行されている場合、<IDX_TABLESPACE>
をAPPS_TS_TX_IDX
で置換します。
DDLスクリプトは次のとおりです。
CREATE index AP.OBIEE_AP_INVOICE_PAYMENTS_ALL ON AP.AP_INVOICE_PAYMENTS_ALL(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE>;
CREATE index AP.OBIEE_AP_PAYMENT_SCHEDULES_ALL ON AP.AP_PAYMENT_SCHEDULES_ALL(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE>;
CREATE index AP.OBIEE_AP_INVOICES_ALL ON AP.AP_INVOICES_ALL(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE>;
CREATE index GL.OBIEE_GL_JE_HEADERS ON GL.GL_JE_HEADERS (LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE>;
CREATE index ONT.OBIEE_OE_ORDER_HEADERS_ALL ON ONT.OE_ORDER_HEADERS_ALL(LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE>;
CREATE index PER.OBIEE_PAY_INPUT_VALUES_F ON PER.PAY_INPUT_VALUES_F (LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE>;
CREATE index PER.OBIEE_PAY_ELEMENT_TYPES_F ON PER.PAY_ELEMENT_TYPES_F (LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE>;
CREATE index PO.OBIEE_RCV_SHIPMENT_LINES ON PO.RCV_SHIPMENT_LINES (LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE>;
CREATE index PO.OBIEE_RCV_SHIPMENT_HEADERS ON PO.RCV_SHIPMENT_HEADERS (LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE>;
CREATE index AR.OBIEE_AR_CASH_RECEIPTS_ALL ON AR.AR_CASH_RECEIPTS_ALL (LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE>;
CREATE index WSH.OBIEE_WSH_DELIVERY_DETAILS ON WSH.WSH_DELIVERY_DETAILS (LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE>;
CREATE index WSH.OBIEE_WSH_NEW_DELIVERIES ON WSH.WSH_NEW_DELIVERIES (LAST_UPDATE_DATE) tablespace <IDX_TABLESPACE>;
注意:
必ず、FND_STATSを使用して新規作成インデックスで統計を算出し、Oracle EBSデータベースの新規インデックス作成テーブル列で統計を更新してください。
この項においてDDLで作成されたインデックスすべてには接頭辞OBIEE_があります。この接頭辞は、標準のOracle EBSインデックス・ネーミング規則に従っていません。このため、Autopatchが今後のアップグレード中に失敗する場合があります。そのような場合は、OBIEE_接頭辞のインデックスを削除して、Autopatchを再起動する必要があります。
次のDDLにより、カスタム・インデックスをLAST_UPDATE_DATE列でカテゴリ2テーブル(つまり、Oracleリリース12のLAST_UPDATE_DATE列でインデックスが導入されたテーブル)用に作成します。
ソース・システムがOracle EBSリリース11iの場合は、このDDLスクリプトを実行する必要があります。
注意: ソース・システムが、Oracle EBSリリース11.5.10、Oracle EBSリリース11.5.9またはそれより以前のリリースの環境において、Oracle Applications Tablespace Model (OATM)に移行されている場合、<IDX_TABLESPACE>
をAPPS_TS_TX_IDX
で置換します。
DDLスクリプトは次のとおりです。
CREATE index PO.RCV_TRANSACTIONS_N23 ON PO.RCV_TRANSACTIONS (LAST_UPDATE_DATE) INITIAL 4K NEXT 2M MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 2 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE>;
CREATE index PO.PO_DISTRIBUTIONS_N13 ON PO.PO_DISTRIBUTIONS_ALL (LAST_UPDATE_DATE) INITIAL 4K NEXT 2M MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 2 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE>;
CREATE index PO.PO_LINE_LOCATIONS_N11 ON PO.PO_LINE_LOCATIONS_ALL (LAST_UPDATE_DATE) INITIAL 4K NEXT 2M MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 2 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE>;
CREATE index PO.PO_LINES_N10 ON PO.PO_LINES_ALL (LAST_UPDATE_DATE) INITIAL 4K NEXT 4K MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 2 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE>;
CREATE index PO.PO_REQ_DISTRIBUTIONS_N6 ON PO.PO_REQ_DISTRIBUTIONS_ALL (LAST_UPDATE_DATE) INITIAL 4K NEXT 250K MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 4 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE>;
CREATE index PO.PO_REQUISITION_LINES_N17 ON PO.PO_REQUISITION_LINES_ALL (LAST_UPDATE_DATE) INITIAL 4K NEXT 250K MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 4 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE>;
CREATE index PO.PO_HEADERS_N9 ON PO.PO_HEADERS_ALL (LAST_UPDATE_DATE) INITIAL 4K NEXT 1M MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 2 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE>;
CREATE index PO.PO_REQUISITION_HEADERS_N6 ON PO.PO_REQUISITION_HEADERS_ALL (LAST_UPDATE_DATE) INITIAL 4K NEXT 250K MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 4 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE>;
CREATE index AR.RA_CUSTOMER_TRX_N14 ON AR.RA_CUSTOMER_TRX_ALL (LAST_UPDATE_DATE) INITIAL 4K NEXT 4M MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0 INITRANS 4 MAXTRANS 255 PCTFREE 10 tablespace <IDX_TABLESPACE>;
注意: 必ず、FND_STATSを使用して新規作成インデックスで統計を算出し、Oracle EBSデータベースの新規インデックス作成テーブル列で統計を更新してください。
英語以外のOLTPデータ・ソースでETLを実行するには、適切なソース・システム・コンテナのコピーを作成し、言語、国、大陸の各パラメータを構成する必要があります。
英語以外のOLTPデータ・ソースでETLを実行するには
DACで、「File」→「New Source System」を選択して「New Source System Container」ダイアログ・ボックスを表示します。
「Create as a Copy of Existing Container」ラジオ・ボタンを選択します。
「Existing Containers」ドロップダウン・リストで、コピーするコンテナを選択し、「OK」をクリックします。
「Design」ビューに移動します。
適切なコンテナが「Containers」ドロップダウン・リストで選択されていることを確認してください。
「Source System Parameters」タブを選択します。
「Source System Parameters」リストの下の「Edit」タブで、リスト内の次のパラメータの値を変更します。
$$DFLT_LANG(デフォルトの言語)–たとえば、日本語のデータ・ソースの場合は、この値をJPNに変更します。
(オプション)$$DFLT_COUNTRY(デフォルトの国)
(オプション)$$DFLT_CONTINENT(デフォルトの大陸)
ヒント: $$DFLT_LANGパラメータに指定する値を特定するには、OLTPデータベースに対してクエリー「select VAL from S_SYS_PREF where SYS_PREF_CD=<ETL value>」を発行します。たとえば、デフォルトのETL言語を特定するには、次のコマンドを発行します。
select VAL from S_SYS_PREF where SYS_PREF_CD='ETL Default Language';
新しいソース・システム・コンテナに新しいETLプランを作成し、そのパラメータを次のように編集します。
「Execute」タブをクリックします。
「Execution Plans」サブタブをクリックします。
「New」をクリックして空白の実行タブを新規に作成し、その下のサブタブ(「Subject Areas」、「Parameters」、「Ordered Tasks」など)を使用して、実行プランの詳細を指定します。
「Save」をクリックします。
「Run Now」をクリックして、新しいETLプランを実行します(または、「Schedule」タブを使用して、新しい実行プランを実行するタイミングを指定します)。