OMB Plusは、Oracle Warehouse Builder用の、柔軟性の高い高レベルなコマンドライン・メタデータ・アクセス・ツールです。OMB Plusを使用すると、Warehouse Builder Design RepositoryおよびRuntime Repositoryで、オブジェクト・メタデータの作成、変更、削除、取得ができます。
この章では、次のトピックについて説明します。
OMB Plusとは、Warehouse Builderのスクリプト言語のことで、Tclプログラミング言語を拡張したものです。OMB Plusを使用することで、変数サポート、条件やループの制御構造、エラー処理、ライブラリの標準プロシージャのような構文的な構造を記述できます。
OMB Plusを使用すると、Warehouse Builder Design RepositoryおよびRuntime Repositoryで、オブジェクト・メタデータの作成、変更、削除、取得ができます。
OMB Plusでは、スクリプト・インタフェースを使用して、Warehouse Builderリポジトリ・メタデータを編集できます。このスクリプト・インタフェースでは、次の作業ができます。
クライアント・ユーザー・インタフェースを起動することなく、Warehouse Builderで複雑なアクションを直接実行する。
Warehouse Builderで実行する一連のルーチン操作を定義する。
Warehouse Builderでバッチ操作を実行する。
Warehouse Builderでの一連の条件付き操作を自動化する。
OMB Plusを使用するには、最初にOMB Plusを起動し、次にリポジトリに接続します。OMB Plusのコマンドとキーワードは、すべて大文字で入力します。
OMB Plusコンソールを起動するには、各オペレーティング・システムで次の手順を実行します。
UNIX: コマンド・プロンプトで、次のように入力します。
<OWB_HOME>/bin/unix/OMBPlus.sh
Windows: 「スタート」メニューから、「Oracle-OUI」にある「Warehouse Builder」に進みます。 メニュー項目のリストから「OWB OMB Plus」を選択します。
OMB Plusコンソールで、次のように入力します。
OMBCONNECT <repos>/<password>@<host>:<port>:<service_name>
この式では、<repos>
は設計時のリポジトリの名前、<host>
はリポジトリがインストールされているマシン、<servicename>
はリポジトリを格納するデータベースの名前です。
OMB Plusのコマンドは、複数の行に分けて記述できます。OMB Plusのコマンドを複数行に分けて記述する場合は、各行の終わりに円記号を1つだけ使用する必要があります。
OMB Plusのコマンドを実行するときは、次の点に注意してください。
OMB Plusのコマンドの中では、ナンバー記号(#)を使用しないでください。
OMBIMPORT、OMBVALIDATE、OMBLOGなど、フルパスを使用するコマンドでフルパスを指定するときは、円記号を使用しないでください。たとえば、次のコマンドでは、ログ・ファイルは作成されません。
set OMBLOG c:\my_project\omb_logfile.log(Windowsの場合) set OMBLOG \home\my_project\omb_logfile.log(UNIXの場合)
UNIXの場合は、パスのセパレータにスラッシュを使用します。次のコマンドでは、ログ・ファイルが作成されます。
set OMBLOG /home/my_project/omb_logfile.log
Windowsの場合は、パスのセパレータに、1つのスラッシュ(/)または2つの円記号(\\)を使用します。かわりに、1つの円記号をパスに使用できますが、その場合は、ファイル名全体を中括弧で囲みます。次のコマンド例は、いずれもログ・ファイルの作成に使用できます。
set OMBLOG c:/my_project/omb_logfile.log set OMBLOG c:\\my_project\\omb_logfile.log set OMBLOG {c:\my_project\omb_logfile.log}
引用符付き文字列では、セミコロン(;)を使用しないでください。セミコロンとは、2つのコマンドを区切るために使用する特殊文字です。そのため、引用符付き文字列でセミコロンを使用すると、エラーが発生します。この問題を回避するには、セミコロンの直前に円記号(\)を挿入することで、セミコロン文字をエスケープします。次に例を示します。
OMBCREATE FLATFILE ‘FF_DSR_RLE’ \ SET PROPERTIES(DATA_FILE_NAME,IS_DEMILITED,CHARACTER_SET,RECORD_DELIMITER,\ FIELD_DELIMITER,FIELD_LEFT_ENCLOSURE,FIELD_RIGHT_ENCLOSURE) \ VALUES(‘DSR_RLE.dat’,’TRUE’,’WE8MSWIN1252’,’\n’,’\;’,’""’,’""’)
この前の例にあるIS_DELIMITEDプロパティのようなブール型の構成プロパティに設定できる値は、TRUE、FALSE、YES、NO、1または0のいずれかです。値にTRUE、FALSE、YESまたはNOを設定するときは、一重引用符で値を囲みます。構成プロパティに数値を指定するときは、一重引用符で囲む必要はありません。
OMB Plusで、スクリプトの記述と実行ができます。記述可能なスクリプトの例は、「OMB Plusのスクリプトのサンプル」を参照してください。
対話型シェル内で、source test.tcl
と入力します。このtestは、実行するスクリプトの名前です。
コマンドラインで、スクリプトに対して、UNIXの場合はOMBPlus.sh test.tcl
、Windowsの場合はOMBPlus.bat test.tcl
と入力します。
OMB Plusでは、コマンドの実行時に検出された最初のエラーのみが報告されます。最初のエラーが検出されると、ただちにコマンドの処理が停止され、エラーの報告が終了します。
OMB Plusの複数行コマンドを実行中にエラーが発生した場合、表示されるエラー・メッセージでは、エラーがどの行で発生したかが特定されていません。エラーが発生した行を特定するには、エラーの検出後、次のコマンドをただちに実行します。
OMB+> puts $errorInfo
OMB Plusでは、次の定義済Tclプロシージャを使用できます。
OMBToSettableString: このプロシージャでは、エスケープする必要がある一重引用符を含む文字列値の設定に使用します。このプロシージャの入力はTcl文字列で、出力は一重引用符がすべてエスケープされたTcl文字列です。
OMBToTypeObjListString: このプロシージャでは、2次元の入力リストがカンマ区切りの文字列に変換されます。たとえば、次のような書式の入力があるとします。
{{<object_type> <name>} ... }
これは、次のように変換されます。
"<object_type> <name>,..."
OMBPageBreak: このプロシージャでは、入力文字列は連続するページとして表示され、各ページの終わりで一時停止します。コマンドの出力がページの高さを超える場合、(ユーザー補助機能として使用する)画面読取り用のソフトウェアでは、テキスト全体を読み取るのが困難になります。このプロシージャを使用すると、コマンド出力を複数ページに分割できます。
OMBPageBreakコマンドには入力するものが2つあり、1つは各ページに表示する行数で、もう1つは複数ページに分割する文字列です。この入力文字列には、OMB Plusのコマンドの出力を指定することもできます。たとえば、次のコマンドでは、OMBHELP OMBCREATEコマンドの出力が、各ページに10行ずつ表示されます。
OMBPageBreak 10 [OMBHELP OMBCREATE]
この出力の次の10行を表示するには、[Enter]キーを押します。
OMPageBreakプロシージャは、OMB Plusのあらゆるセッションで使用できます。
この後の項では、OMB Scripting Languageを構成する各種コマンドについて説明します。
メタデータ操作言語(MML)コマンド: メタデータ・オブジェクトの作成、変更、削除および取得に使用するコマンドです。
シェル・コマンド: ヘルプと環境サポートに使用するコマンドで、OMBDCC
やOMBHELP
などがあります。これらのコマンドは、スクリプト環境の制御には使用できますが、メタデータの編集には使用できません。
管理コマンド: Warehouse BuilderバックエンドにMMLを適合させます。OMBCONNECT
、OMBDISCONNECT
、OMBCOMMIT
、OMBROLLBACK
などが管理コマンドです。
ナビゲーション・コマンド: UNIXファイル・システムと同じ方法で、Warehouse Builderリポジトリをナビゲートできます。
サービス・コマンド: 検証、コンパイル、配布、インポート、エクスポートなどの、Warehouse Builderメタデータ・サービスを起動できます。
OMB Plusを使用すると、Warehouse Builder Design RepositoryおよびRuntime Repositoryで、オブジェクト・メタデータの作成、変更、削除、取得ができます。OMB Plusのコマンドは、ファースト・クラス・オブジェクトのコンテキストで動作します。ファースト・クラス・オブジェクトの一覧は、「Warehouse Builderのメタデータ・オブジェクト」を参照してください。
表1-1に、MMLの標準コマンド名の一覧を示します。
表1-1 メタデータ操作言語コマンド
メタデータ操作言語(MML) | 説明 |
---|---|
OMBCREATE | ファースト・クラス・オブジェクトを作成する。 |
OMBDROP | ファースト・クラス・オブジェクトを削除する。 |
OMBALTER | ファースト・クラス・オブジェクトを変更する。 |
OMBRETRIEVE | ファースト・クラス・オブジェクトから情報を取得する。 |
OMB Plusでは、OMBCREATE、OMBALTER、OMBDROPなどのコマンドが、ネストされたトランザクションの中で実行されます。
OMB Plusでは、1つのコマンドの中にある各句が1つずつ解釈されます。次に例を示します。
OMBCREATE TABLE 'T1' \ MODIFY COLUMN 'C1' RENAME TO 'C1_NEW' \ ADD UNIQUE_KEY 'UK1' \ SET REF COLUMNS ('C1_NEW', 'C2')
この例では、modify_column句の解析時に、列C1
の名前がC1_NEW
に変更されます。最後の行では、列の新しい名前C1_NEW
を使用して、新しい一意キーに対する参照列を指定します。キャッシュ・データの同期化の詳細は、「キャッシュ・データとリポジトリ・オブジェクトの同期化」を参照してください。
OMBCREATEコマンドおよびOMBRETRIEVEコマンドでは、現在操作中のファースト・クラス・オブジェクトのみが同期化されます。OMBCREATEコマンドでは、親フォルダのみが同期化されます。
次の例は、OMBCREATEコマンドを使用して高レベルなスクリプトを作成するコマンド構文定義です。
OMBCREATE <fco_type> <fco_name> ( [ rename_clause ] [ properties_clause ] [ [ sco_add_clause_for_alter ] | [ sco_modify_clause ] | [ sco_delete_clause ] ]* )1 rename_clause ::= RENAME TO <new_name> sco_add_clause_for_alter ::= ADD <sco_type> <sco_name> [ OF parent_sco_clause ] [ AT POSITION <position> ] [ properties_clause ] [ references_clause ]* sco_modify_clause ::= MODIFY <sco_type> <sco_name> [ OF parent_sco_clause ] ( [ rename_clause ] [ move_to_clause ] [ properties_clause ] [ references_clause ]* )1 move_to_clause ::= MOVE TO POSITION <position> sco_delete_clause ::= DELETE <sco_type> <sco_name>
[ OF parent_sco_clause ]
この例で、( )で囲まれた句のグループの後に1という数字があります。これは、その前の句を少なくとも1つ指定する必要があることを意味します。
親のファースト・クラス・オブジェクトから集計関係をトレースすることで、Warehouse Builderの特定オブジェクトを指定できます。また、参照句によって対応関係を取得することもできます。たとえば、getSCOClause
のsco_type
は、セカンド・クラス・オブジェクト・タイプです。
作成、変更、削除または取得の各アクションで操作の対象となるのは、現在指定されているオブジェクトのプロパティと、その直接の子のみです。たとえば、表に対する取得コマンドでアクセスできるのは、その表のプロパティと、その表が所有する列名と制約名の一覧のみです。列と制約の詳細な説明にドリルダウンするには、各オブジェクトに対して別々に取得コマンドをコールします。
次の文では、列のデータ型と長さがビューに取得されます。
OMBRETRIEVE VIEW 'V1' COLUMN 'COL1' \ GET PROPERTIES (DATATYPE, LENGTH)
set_properties_clause
またはget_properties_clause
を使用してプロパティを設定または取得するときは、任意の順序でプロパティ名を指定できます。
スクリプトでは、オブジェクトの識別子として物理名が使用されます。ビジネス名は、オブジェクトのプロパティを表します。ビジネス名は、オブジェクトの識別には使用されません。コンポーネント間でファースト・クラス・オブジェクトを識別するには、次のパス表記を使用します。
/<project_name>/<module_name>/<fco_name>
または
../<module_name> <fco_name>
オブジェクト名や文字列プロパティ値などの文字列値は、一重引用符で囲む必要があります。
OMB Plusでは、ファースト・クラス・オブジェクトと呼ばれる、次のWarehouse Builderオブジェクトにアクセスして操作できます。
表1-2 Warehouse Builderのメタデータ・オブジェクト
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Oracleモジュールの場合、アクセスできるのは、ウェアハウス・モジュールとして指定されているOracleモジュールだけです。OMB Plusを使用して、Oracleソース・モジュールにアクセスすることはできません。
シェル・コマンドには対話型インタフェースが用意されていて、Warehouse Builderスクリプトと標準Tclコマンドの実行に使用できます。OMB Plusのシェル・コマンドには、OMBHELP
、OMBCC
、OMBDCC
、OMBENV
などがあります。
OMBHELP
コマンドは、Warehouse Builderコマンドのヘルプを表示する際に使用します。ヘルプには、各コマンドの目的、BNF形式での構文、個々のキーワードとオプションの説明が表示されます。OMBCREATE
、OMBALTER
、OMBRETRIEVE
のような複雑なコマンドの場合は、オプションとしてfco_type
パラメータを指定できます。それにより、指定したパラメータ・タイプに適用される詳細な構文が表示されます。また、各コマンドには、ヘルプ・ページのサブセクションを表示できる固有のオプションがあります。
OMBHELP
の構文は次のとおりです。
help ::= OMBHELP <command_name> [ <command_specific_options> ] [DETAIL]
たとえば、OMBHELP OMBCONNECT
では、次のように表示されます。
OMBCONNECT Purpose To connect to OWB repository. Syntax OMBCONNECT <user>/<password>@<host:port:SID> where <user> is the OWB repository user name <password> is the OWB repository user password <host> is the name or IP address of the OWB repository host machine <port> is the numeric port for OWB repository database listener <SID> is the unique database identifier for OWB repository database Notes: The connection to OWB repository will be established in single user mode.
OMBHELP <command_ name>
の後に[DETAIL]
を入力すると、コマンドの目的、前提条件、構文、個々のキーワードとパラメータの説明、およびコマンド使用方法の例が表示されます。
OMBHELPコマンドでは、現在操作中のFCOのみが同期化されます。
OMBENV
の構文は次のとおりです。
environment ::= OMBENV
このコマンドを実行すると、Warehouse Builder固有の環境変数の値がすべて一覧表示されます。表1-3に、環境変数の一覧を示します。環境変数を設定するには、Tcl set
コマンドを使用します。環境変数の設定を解除するには、unset
を使用します。
表1-3 Warehouse Builderの環境変数
環境変数 | 意味 | 設定可能な値 |
---|---|---|
OMBTIMER | Warehouse Builderの各スクリプト・コマンドで、タイマーを有効にする。時間は、ログ・ファイルに記録される。コンソールまたはシェルにも出力される。 | Tclの無効なブール値。 |
OMBLOG | Warehouse Builderのログ・ファイルのファイル名を格納する。 | パスを含む有効なファイル名。 |
OMBPROMPT | OMBCCをコールするたびにコマンド・プロンプトを更新するかどうかを指定する。 | Tclの無効なブール値。 |
OMBCONTINUE_ON_ERROR | スクリプトを構成するコマンドで発生したエラーを無視し、スクリプト内の次のコマンドに進む。 | Tclの無効なブール値。 |
管理コマンドは、Warehouse Builderリポジトリの管理ジョブを実行する際に使用します。OMBCONNECT
、OMBDISCONNECT
、OMBCOMMIT
およびOMBROLLBACK
を管理コマンドとして使用できます。
connect ::= OMBCONNECT <username>/<password>@<host>:<port>:<sid> disconnect ::= OMBDISCONNECT commit ::= OMBCOMMIT rollback ::= OMBROLLBACK
次のコマンドを使用すると、UNIXファイル・システムと同じ方法で、Warehouse Builderリポジトリをナビゲートできます。
Warehouse Builderのナビゲーション・ツリーで、コンテキストを上下に変更できます。たとえば、...
と入力すると、現行コンテキストが親コンテキストに変更されます。ただし、現行コンテキストが変更済プロジェクトの場合は、エラー・メッセージが表示されて、変更のコミットまたはロールバックが求められます。
OMBLIST
では、フォルダの子のファースト・クラス・オブジェクトが一覧表示されます。このコマンドをフォルダに使用すると、フォルダのプロパティのみが表示されます。この一覧表示コマンドでは、正規表現による名前マッチングを使用できる点に注意してください。正規表現を含めない場合は、すべてのオブジェクトがアルファベット順に表示されます。
フォルダ・コンテキストでのOMBLIST
の汎用的な構文は次のとおりです。
list_folder ::= OMBLIST ( <child_type1_plural> | …| <child_typeN_plural> ) [ name_in_regexp ] name_in_regexp ::= a name in regular expression
たとえば、ルート・コンテキストでは次のように使用できます。
list_root ::= OMBLIST PROJECTS [ name_in_regexp ]
OMBLISTコマンドでは、ナビゲーション・ツリーの親子関係がすべて同期化されます。
サービス・コマンドは、Warehouse Builderメタデータで、バッチ操作などのサービスを実行します。表1-4に、サービス・コマンドとその説明の一覧を示します。
表1-4 サービス・コマンド
コマンド | 説明 |
---|---|
OMBCOMPILE | このコマンドは、フォルダまたは、表、ビュー、順序、ディメンション、キューブなどのファースト・クラス・オブジェクトをコンパイルする際に使用する。 |
OMBDEPLOY | 配布サービスを提供する。 |
OMBIMPORT | メタデータ・インポート・サービスを提供する。OMBIMPORT コマンドは、ルート・コンテキストからのみ起動できる。
|
OMBVALIDATE | このコマンドは、フォルダまたは、表、ビュー、順序、ディメンション、キューブなどのファースト・クラス・オブジェクトを検証する際に使用する。 |
OMB Plusのセッションを開始すると、オブジェクトに関するデータがOWBリポジトリからフェッチされ、OMB Plusのセッションにキャッシュされます。キャッシュ・データは、事前に定義された一定の間隔で、リポジトリのデータと同期化されます。
オブジェクトが同期化される範囲は、実行するOMB Plusコマンドによって異なります。たとえば、ナビゲーション・ツリーの親子関係をすべて同期化するコマンドもあれば、現在操作中のファースト・クラス・オブジェクトしか同期化しないコマンドもあります。
OMBLISTコマンドでは、ナビゲーション・ツリーの親子関係がすべて同期化されます。
OMBCREATEコマンドおよびOMBRETRIEVEコマンドでは、現在操作中のファースト・クラス・オブジェクトのみが同期化されます。
OMBCREATEコマンドでは、親フォルダのみが同期化されます。
キャッシュ・データの同期化について、次の例を考えてみます。OMB PlusのセッションとOWB Clientの両方を開いているとします。OWB Clientで、FFM1という名前のフラット・ファイル・モジュールを削除します。次に、FFM1の削除を取り消し、その変更をコミットします。OMB Plusのセッションで、次の順序で一連の操作を実行します。操作結果とその背後のロジックの詳細は、説明を参照してください。
OMBCC FFM1
コンテキストがモジュールFFM1に変更されます。
OMBCREATE FLATFILE
フラット・ファイル・モジュールは作成されません。OMBCREATEでは、親フォルダが同期化されるためです。この場合、同期化の実行時に、親フォルダがキャッシュに見つかりません。
OMBLIST FLAT_FILE_MODULE
FFM1はモジュールの1つとして表示されます。OMBLISTコマンドでは、ナビゲーション・ツリーの親子関係がすべて同期化されるためです。
OMBCREATE FLATFILE
フラット・ファイルが作成されます。OMBLISTコマンドでは、削除の取消しがキャッシュに反映されるためです。
構文図は、有効なSQL構文を図式化してわかりやすくしたものです。構文図を読むときは、図の矢印に従って、左から右に見ていってください。コマンドと他のキーワードは、四角形の中に大文字で記載されています。コマンドとキーワードは、この記述どおりに正確に入力してください。パラメータは楕円形の中に小文字で記載されています。パラメータには変数が使用されます。記号、演算子、デリミタおよび終了記号は、円の中に記載されています。
構文図に複数のパスがある場合は、任意のパスを選択して、そのパスをたどります。たとえば、図1-1の構文図は、ADD、MODIFY、DELETE
のいずれかを指定できることを示しています。
キーワード、演算子またはパラメータを複数選択できる場合、それらのオプションは構文図で縦並びに記載されています。たとえば、図1-2の構文図では、複数のパラメータの中から1つ以上を指定できます。
必須のキーワードとパラメータが1つのみの場合は、それが記載されています。複数ある場合は、縦並びに記載されています。必須のキーワードとパラメータが1つのみの場合は、メイン・パス上に記載されます。メイン・パスとは、現在たどっている横線のことです。
必須のキーワードとパラメータが複数あって、縦並びに記載されてメイン・パスと交差している場合は、その中の1つが必須です。キーワードまたはパラメータを1つ選択する必要がありますが、メイン・パス上にあるもの以外も選択できます。図1-3の例では、表示されている設定から1つを選択します。
ループ機能があるので、ループ内で構文を何回でも繰り返すことができます。図1-4の例では、1つのプロパティ値を選択した後に、別のプロパティ値を繰り返し選択できます。選択したプロパティ値はカンマで区切ります。
本文では、ほとんどすべてのリファレンス・トピックに例が用意されています。この項では、1つのOMBコマンド文を使用する場合に当てはまる詳細な例を示します。これらの例の目的は、Warehouse Builderの特定の機能を、連続する一連のステップとして利用する方法を紹介することです。これらの各例は、リファレンス本文にある個々のOMBコマンド文の構文図や説明に替わるものではありません。
この項では、次のタスクを実行するサンプル・スクリプトについて説明します。
スクリプトを使用するケースとしては、リポジトリ・メタデータで大量の更新を実行する場合が考えられます。次のスクリプトを記述することで、モジュールMY_MODULE内にある、名前がEDWで始まる表それぞれで、IDというローカル列に、主キーを追加できます。
OMBCC MY_MODULE; foreach tableName [OMBLIST TABLE EDW*] { \ OMBCREATE TABLE '$tableName' \ ADD PRIMARY_KEY '$tableName_PK' SET REFERENCE COLUMNS ('ID');}
if-then-elseを使用することで、より強力で便利なスクリプトを構築できます。
foreach tableName [OMBLIST TABLE EDW*] { \ set columnList [OMBRETRIEVE TABLE '$tableName' GET COLUMNS]; # Use lsearch to search for a name in a list if {[lsearch $columnList 'ID'] == -1} { OMBCREATE TABLE '$tableName' \ ADD COLUMN 'ID' \ SET PROPERTIES (DATATYPE, LENGTH, NOT_NULL) VALUES \ ('NUMBER', 10, 'true'); } }
このスクリプトでは、名前がEDWで始まる表の一覧に対して、その各表にID列が含まれるかどうかがチェックされます。ID列がない場合は、その表にID列が作成されます。したがって、このスクリプトを実行すると、名前がEDWで始まるすべての表にID列が定義されます。
レポートも、スクリプトを使用する目的として考えられます。次のスクリプトでは、表T1およびその列定義のプロパティが標準出力に表示されます。
#Displaying metadata of a table puts -nonewline "Please enter the table name: " gets stdin tableName puts "" puts "Report on $tableName" puts "=======================================" puts "Physical name = $tableName" puts "Logical name = [lindex [OMBRETRIEVE TABLE '$tableName' GET \ PROPERTIES(BUSINESS_NAME)] 0]" puts "Description = [lindex [OMBRETRIEVE TABLE '$tableName' GET \ PROPERTIES(DESCRIPTION)] 0]" puts "---------------------------------------" set columnList [OMBRETRIEVE TABLE '$tableName' GET COLUMNS] set i 1 foreach colName $columnList { set dt [lindex [OMBRETRIEVE TABLE '$tableName' COLUMN '$colName' GET \ PROPERTIES(DATATYPE)] 0] if { $dt == "VARCHAR2" } { set prop [OMBRETRIEVE TABLE '$tableName' COLUMN '$colName' GET PROPERTIES(LENGTH, NOT_NULL)] puts "Column $i: $colName datatype=VARCHAR2 length=[lindex $prop 0] \ not_null=[lindex $prop 1]" } elseif { $dt == "NUMBER" } { set prop [OMBRETRIEVE TABLE '$tableName' COLUMN '$colName' \ GET PROPERTIES(PRECISION, SCALE, NOT_NULL)] puts "Column $i: $colName datatype=NUMBER precision=[lindex $prop 0] \ scale=[lindex $prop 1] not_null=[lindex $prop 2]" } elseif { $dt == "DATE" } { set prop [OMBRETRIEVE TABLE '$tableName' COLUMN '$colName' GET \ PROPERTIES(NOT_NULL)] puts "Column $i: $colName datatype=DATE not_null=[lindex $prop 0]" } # end else incr i }
出力例を次に示します。
Physical name = T1 Logical name = Table 1 Description = This is my first table. ===================================== Column: ID datatype=NUMBER precision=0 scale=0 not_null=1 Column: NAME datatype=VARCHAR2 length=30 not_null=1 Column: VALUE datatype=VARCHAR2 length=100 not_null=0
次のようなスクリプトを作成して、検証サービスに利用することもできます。
set tableList [OMBLIST TABLES]; foreach tableName $tableList { if { [OMBCOMPILE TABLE '$tableName]' == "Invalid." } { set context [OMBDCC]; puts "Table $context/$tableName is invalid."; } }
このスクリプトでは、現行モジュールにある無効な表が報告されます。
次に紹介するもう1つのシナリオでは、Warehouse Builderリポジトリのナビゲートに、OMB Plusの対話型シェル(および各種のADA画面読取りソフトウェア)が欠かせない、障害をお持ちのユーザーを念頭に置いています。
OMB+> OMBCONNECT owb/owb@localhost:1521:dev901 Connected. OMB+> OMBLIST PROJECTS DIM_TEST_PROJ MY_PROJECT PROJ_ENDTOEND PROJ_RELATIONAL TEST_DIM_PROJ OMB+> OMBLIST PROJECTS .*RELATION.* PROJ_RELATIONAL OMB+> OMBCC 'PROJ_RELATIONAL' Context changed. OMB+> OMBDCC PROJECT /PROJ_RELATIONAL OMB+> set OMBPROMPT ON ON OMB+> OMBDCC PROJECT /PROJ_RELATIONAL /PROJ_RELATIONAL> /PROJ_RELATIONAL> OMBLIST ORACLE_MODULES WH /PROJ_RELATIONAL> OMBCC 'WH' Context changed. /PROJ_RELATIONAL/WH> OMBLIST TABLES PRODUCT PO /PROJ_RELATIONAL/WH> OMBRETRIEVE TABLE 'PO' GET COLUMNS OID PROD_ID ORDER_DATE CUSTNAME /PROJ_RELATIONAL/WH> OMBCC ‘..’ Context changed. /PROJ_RELATIONAL> OMBCC ‘..’ Context changed. /> /> OMBDISCONNECT Disconnected.