ヘッダーをスキップ

Oracle® Warehouse Builder スクリプト・リファレンス
10g リリース1(10.1)
部品番号 B13521-01
Go To Table Of Contents
目次

Previous Next

1 概要

OMB Plusは、Oracle Warehouse Builder用の、柔軟性の高い高レベルなコマンドライン・メタデータ・アクセス・ツールです。OMB Plusを使用すると、Warehouse Builder Design RepositoryおよびRuntime Repositoryで、オブジェクト・メタデータの作成、変更、削除、取得ができます。

この章では、次のトピックについて説明します。

OMB Scripting Languageについて

OMB Plusとは、Warehouse Builderのスクリプト言語のことで、Tclプログラミング言語を拡張したものです。OMB Plusを使用することで、変数サポート、条件やループの制御構造、エラー処理、ライブラリの標準プロシージャのような構文的な構造を記述できます。

OMB Plusを使用すると、Warehouse Builder Design RepositoryおよびRuntime Repositoryで、オブジェクト・メタデータの作成、変更、削除、取得ができます。

OMB Plusでは、スクリプト・インタフェースを使用して、Warehouse Builderリポジトリ・メタデータを編集できます。このスクリプト・インタフェースでは、次の作業ができます。

OMB Plusの使用

OMB Plusを使用するには、最初に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のコマンドは、複数の行に分けて記述できます。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で、スクリプトの記述と実行ができます。記述可能なスクリプトの例は、「OMB Plusのスクリプトのサンプル」を参照してください。

対話型シェル内で、source test.tclと入力します。このtestは、実行するスクリプトの名前です。

コマンドラインで、スクリプトに対して、UNIXの場合はOMBPlus.sh test.tcl、Windowsの場合はOMBPlus.bat test.tclと入力します。

スクリプトおよび複数行コマンドでのエラー検出

OMB Plusでは、コマンドの実行時に検出された最初のエラーのみが報告されます。最初のエラーが検出されると、ただちにコマンドの処理が停止され、エラーの報告が終了します。

OMB Plusの複数行コマンドを実行中にエラーが発生した場合、表示されるエラー・メッセージでは、エラーがどの行で発生したかが特定されていません。エラーが発生した行を特定するには、エラーの検出後、次のコマンドをただちに実行します。

OMB+> puts $errorInfo

定義済Tclプロシージャ

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 Plusのコマンド

この後の項では、OMB Scripting Languageを構成する各種コマンドについて説明します。

  • メタデータ操作言語(MML)コマンド: メタデータ・オブジェクトの作成、変更、削除および取得に使用するコマンドです。

  • シェル・コマンド: ヘルプと環境サポートに使用するコマンドで、OMBDCCOMBHELPなどがあります。これらのコマンドは、スクリプト環境の制御には使用できますが、メタデータの編集には使用できません。

  • 管理コマンド: Warehouse BuilderバックエンドにMMLを適合させます。OMBCONNECTOMBDISCONNECTOMBCOMMITOMBROLLBACKなどが管理コマンドです。

  • ナビゲーション・コマンド: UNIXファイル・システムと同じ方法で、Warehouse Builderリポジトリをナビゲートできます。

  • サービス・コマンド: 検証、コンパイル、配布、インポート、エクスポートなどの、Warehouse Builderメタデータ・サービスを起動できます。

メタデータ操作言語(MML)コマンド

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の特定オブジェクトを指定できます。また、参照句によって対応関係を取得することもできます。たとえば、getSCOClausesco_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>

オブジェクト名や文字列プロパティ値などの文字列値は、一重引用符で囲む必要があります。

Warehouse Builderのメタデータ・オブジェクト

OMB Plusでは、ファースト・クラス・オブジェクトと呼ばれる、次のWarehouse Builderオブジェクトにアクセスして操作できます。

表1-2 Warehouse Builderのメタデータ・オブジェクト

  • アドバンスト・キュー
  • ファンクション
  • プロセス・フロー

  • コレクション
  • Gatewayモジュール
  • プロセス・フロー・モジュール
  • コネクタ
  • ロケーション
  • プロセス・フロー・パッケージ
  • キューブ表
  • マッピング
  • プロジェクト
  • 配布アクション・プラン
  • マテリアライズド・ビュー
  • ランタイム・リポジトリ接続
  • ディメンション表
  • オブジェクト・タイプ
  • SAPモジュール
  • 外部表
  • Oracleモジュール
  • 順序
  • フラット・ファイル
  • パッケージ
  • スナップショット
  • フラット・ファイル・モジュール
  • プロシージャ

Oracleモジュールの場合、アクセスできるのは、ウェアハウス・モジュールとして指定されているOracleモジュールだけです。OMB Plusを使用して、Oracleソース・モジュールにアクセスすることはできません。

シェル・コマンド

シェル・コマンドには対話型インタフェースが用意されていて、Warehouse Builderスクリプトと標準Tclコマンドの実行に使用できます。OMB Plusのシェル・コマンドには、OMBHELPOMBCCOMBDCCOMBENVなどがあります。

OMBHELP

OMBHELPコマンドは、Warehouse Builderコマンドのヘルプを表示する際に使用します。ヘルプには、各コマンドの目的、BNF形式での構文、個々のキーワードとオプションの説明が表示されます。OMBCREATEOMBALTEROMBRETRIEVEのような複雑なコマンドの場合は、オプションとして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

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リポジトリの管理ジョブを実行する際に使用します。OMBCONNECTOMBDISCONNECTOMBCOMMITおよびOMBROLLBACKを管理コマンドとして使用できます。

connect ::= OMBCONNECT <username>/<password>@<host>:<port>:<sid>
disconnect ::= OMBDISCONNECT
commit ::= OMBCOMMIT
rollback ::= OMBROLLBACK

ナビゲーション・コマンド

次のコマンドを使用すると、UNIXファイル・システムと同じ方法で、Warehouse Builderリポジトリをナビゲートできます。

OMBCC

Warehouse Builderのナビゲーション・ツリーで、コンテキストを上下に変更できます。たとえば、...と入力すると、現行コンテキストが親コンテキストに変更されます。ただし、現行コンテキストが変更済プロジェクトの場合は、エラー・メッセージが表示されて、変更のコミットまたはロールバックが求められます。

OMBDCC

現行コンテキストとそのコンテキスト・タイプが表示されます。OMBDCCの構文は次のとおりです。

display_current_context ::= OMBDCC

OMBLIST

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コマンドは、ルート・コンテキストからのみ起動できる。

CREATE_MODE (CREATE)REPLACE_MODE (REPLACE)UPDATE_MODE (UPDATE)MERGE_MODE (INCREMENTALUPDATE)の4つのモードを使用できる。コマンドにモードを指定しない場合、デフォルト・モードはCREATE_MODEになる。

OMBVALIDATE このコマンドは、フォルダまたは、表、ビュー、順序、ディメンション、キューブなどのファースト・クラス・オブジェクトを検証する際に使用する。

キャッシュ・データとリポジトリ・オブジェクトの同期化

OMB Plusのセッションを開始すると、オブジェクトに関するデータがOWBリポジトリからフェッチされ、OMB Plusのセッションにキャッシュされます。キャッシュ・データは、事前に定義された一定の間隔で、リポジトリのデータと同期化されます。

オブジェクトが同期化される範囲は、実行するOMB Plusコマンドによって異なります。たとえば、ナビゲーション・ツリーの親子関係をすべて同期化するコマンドもあれば、現在操作中のファースト・クラス・オブジェクトしか同期化しないコマンドもあります。

  • OMBLISTコマンドでは、ナビゲーション・ツリーの親子関係がすべて同期化されます。

  • OMBCREATEコマンドおよびOMBRETRIEVEコマンドでは、現在操作中のファースト・クラス・オブジェクトのみが同期化されます。

  • OMBCREATEコマンドでは、親フォルダのみが同期化されます。

キャッシュ・データの同期化について、次の例を考えてみます。OMB PlusのセッションとOWB Clientの両方を開いているとします。OWB Clientで、FFM1という名前のフラット・ファイル・モジュールを削除します。次に、FFM1の削除を取り消し、その変更をコミットします。OMB Plusのセッションで、次の順序で一連の操作を実行します。操作結果とその背後のロジックの詳細は、説明を参照してください。

  1. OMBCC FFM1

    コンテキストがモジュールFFM1に変更されます。

  2. OMBCREATE FLATFILE

    フラット・ファイル・モジュールは作成されません。OMBCREATEでは、親フォルダが同期化されるためです。この場合、同期化の実行時に、親フォルダがキャッシュに見つかりません。

  3. OMBLIST FLAT_FILE_MODULE

    FFM1はモジュールの1つとして表示されます。OMBLISTコマンドでは、ナビゲーション・ツリーの親子関係がすべて同期化されるためです。

  4. OMBCREATE FLATFILE

    フラット・ファイルが作成されます。OMBLISTコマンドでは、削除の取消しがキャッシュに反映されるためです。

構文図の読み方

構文図は、有効なSQL構文を図式化してわかりやすくしたものです。構文図を読むときは、図の矢印に従って、左から右に見ていってください。コマンドと他のキーワードは、四角形の中に大文字で記載されています。コマンドとキーワードは、この記述どおりに正確に入力してください。パラメータは楕円形の中に小文字で記載されています。パラメータには変数が使用されます。記号、演算子、デリミタおよび終了記号は、円の中に記載されています。

構文図に複数のパスがある場合は、任意のパスを選択して、そのパスをたどります。たとえば、図1-1の構文図は、ADD、MODIFY、DELETEのいずれかを指定できることを示しています。

図1-1 複数のパスがある構文図

Description of alterTableConstraintClauses.gif is in surrounding text

キーワード、演算子またはパラメータを複数選択できる場合、それらのオプションは構文図で縦並びに記載されています。たとえば、図1-2の構文図では、複数のパラメータの中から1つ以上を指定できます。

図1-2 複数のパラメータがある構文図

Description of addActivityClause.gif is in surrounding text

必須のキーワードとパラメータ

必須のキーワードとパラメータが1つのみの場合は、それが記載されています。複数ある場合は、縦並びに記載されています。必須のキーワードとパラメータが1つのみの場合は、メイン・パス上に記載されます。メイン・パスとは、現在たどっている横線のことです。

必須のキーワードとパラメータが複数あって、縦並びに記載されてメイン・パスと交差している場合は、その中の1つが必須です。キーワードまたはパラメータを1つ選択する必要がありますが、メイン・パス上にあるもの以外も選択できます。図1-3の例では、表示されている設定から1つを選択します。

図1-3 必須パラメータに複数の選択肢がある構文図

Description of propertyValue.gif is in surrounding text

必須でないキーワードとパラメータ

キーワードとパラメータがメイン・パスよりも上に縦並びに記載されている場合は、必須でないことを示しています。

構文のループ

ループ機能があるので、ループ内で構文を何回でも繰り返すことができます。図1-4の例では、1つのプロパティ値を選択した後に、別のプロパティ値を繰り返し選択できます。選択したプロパティ値はカンマで区切ります。

図1-4 構文のループがある構文図

Description of propertyValueList.gif is in surrounding text

OMB Plusのスクリプトのサンプル

本文では、ほとんどすべてのリファレンス・トピックに例が用意されています。この項では、1つのOMBコマンド文を使用する場合に当てはまる詳細な例を示します。これらの例の目的は、Warehouse Builderの特定の機能を、連続する一連のステップとして利用する方法を紹介することです。これらの各例は、リファレンス本文にある個々のOMBコマンド文の構文図や説明に替わるものではありません。

この項では、次のタスクを実行するサンプル・スクリプトについて説明します。

Design Repositoryの更新

スクリプトを使用するケースとしては、リポジトリ・メタデータで大量の更新を実行する場合が考えられます。次のスクリプトを記述することで、モジュール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.";
   }
}

このスクリプトでは、現行モジュールにある無効な表が報告されます。

OMB Plusの使用によるリポジトリのナビゲート

次に紹介するもう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.