プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Business Intelligence Enterprise Editionメタデータ・リポジトリ作成者ガイド
12c (12.2.1.2.0)
E82973-02
目次へ移動
目次

前
前へ
次
次へ

初期化ブロックの操作

初期化ブロックは、動的リポジトリ変数、システム・セッション変数、およびシステム以外のセッション変数を初期化するために使用されます。

たとえば、NQ_SYSTEM初期化ブロックはシステム・セッション変数をリフレッシュするために使用されます。

この項では、次の項目について説明します。

変数を含む初期化ブロックの使用について

初期化ブロックには、そのブロックに関連付けられた変数を初期化またはリフレッシュするために実行されるSQL文が含まれます。

このSQL文は、「初期化ブロック」ダイアログの「接続プール」フィールドで指定された接続プールを使用してアクセスできる物理表を参照する必要があります。

初期化ブロックの問合せにデータベース固有のSQLを含める必要がある場合、その問合せのデータベース・タイプを選択できます。初期化ブロックをインスタンス化したときにそのデータベース・タイプのSQL初期化文字列が定義されていると、その文字列が使用されます。そうでなければ、デフォルトの初期化SQL文字列が使用されます。

注意:

デフォルトでは、「初期化ブロック」ダイアログをオンライン・モードで編集用に開くと、初期化ブロック・オブジェクトは自動的にチェックアウトされます。初期化ブロックがチェックアウトされている間、設定されているリフレッシュ間隔に応じて、Oracle BIサーバーはこの初期化ブロックでリフレッシュされる動的変数の値をリフレッシュし続けることができます。初期化ブロックをチェックインすると、動的変数の値はデフォルトのイニシャライザで示された値にリセットされます。この処理を実行しない場合は、「チェックアウトを元に戻す」オプションを使用します。

この項では、次の項目について説明します。

動的リポジトリ変数の初期化

動的リポジトリ変数の値は、「初期化ブロック」ダイアログの「デフォルトの初期化文字列」フィールドで定義された問合せによって設定されます。

Oracle BIサーバーが問合せを実行して変数の値を定期的にリフレッシュするようにスケジュールを設定できます。Oracle BIサーバーを停止して再起動すると、サーバーは自動的にリポジトリ変数初期化ブロックのSQL文を実行して、リポジトリ変数を再度初期化します。

管理者アカウントのログ・レベルがインストール時に2以上に設定されていると、Oracle BIサーバーはリポジトリ変数情報を取得するために発行されたすべてのSQL問合せをobis1_query.logに記録します。このログは、DOMAIN_Home/servers/obis1/logsにあります。管理者のログ・レベルを2に設定すると、最も有用な情報のレベルが提供されます。

Oracle BI EE 11gバージョンを使用している場合、問合せとエラーはnqquery.logに記録されます。

セッション変数の初期化

動的リポジトリ変数と同様に、セッション変数も初期化ブロックからその値を取得します。動的リポジトリ変数と異なり、セッション変数はスケジュールされた時間の間隔で更新されません。

そのかわり、ユーザーが新しいセッションを開始するたびに、Oracle BIサーバーはこれらの変数の新しいインスタンスを作成します。その値は、セッションの間変わりません。

セッション・ログイン時のセッション変数初期化ブロックの実行は、それに関連付けられたセッション変数が実際にセッション内でアクセスできるようになるまで遅できます。「初期化ブロックの作成」を参照してください。

Identity Managerのユーザー・オブジェクトでログ・レベルが2以上に設定されている場合、または変数マネージャでLOGLEVELシステム・セッション変数が2以上に設定されている場合、Oracle BIサーバーはセッション変数情報を取得するために発行されたすべてのSQL問合せをログに記録します。

Oracle BI EE 12cでは、問合せとエラーがDOMAIN_Home/servers/obis1/logs内のobis1_query.logに記録されます。

『Oracle Business Intelligence Enterprise Editionシステム管理者ガイド』の「問合せログの管理」を参照してください。

行単位の初期化について

行単位の初期化オプションを使用して、セッション変数を動的に作成し、セッションの開始時にそれらの値を設定することができます。

セッション変数の名前および値は、接続プールを介してアクセスする外部データベースに格納されます。変数は、「初期化ブロック」ダイアログで入力した初期化文字列からその値を受け取ります。

たとえば、RW_SESSION_VARSという名前の表に含まれる値を使用してセッション変数を作成するとします。この表には次の3つの列が含まれます。

  • USERID: ユーザーの一意のIDを表す値が含まれます。

  • NAME: セッション変数名を表す値が含まれます。

  • VALUE: セッション変数の値を表す値が含まれます。

次の表に例を示します。

USERID NAME VALUE

JOHN

LEVEL

4

JOHN

STATUS

FULL-TIME

JANE

LEVEL

8

JANE

STATUS

FULL-TIME

JANE

GRADE

AAA

行単位の初期化を使用するには、初期化ブロックを作成して「行単位の初期化」オプションを選択します(「初期化ブロックの作成」を参照)。この例では、初期化文字列に次のSQL文を指定します。

SELECT NAME, VALUE
FROM RW_SESSION_VARS
WHERE USERID='VALUEOF(NQ_SESSION.USERID)'

NQ_SESSION.USERIDは、別の初期化ブロックを使用してすでに初期化されているので注意してください。

次のセッション変数が作成されます。

  • JohnがOracle BIサーバーに接続すると、そのセッションには行単位の初期化からの2つのセッション変数が含まれます(LEVEL: 値は4STATUS: 値はFULL_TIME)。

  • JaneがOracle BIサーバーに接続すると、そのセッションには行単位の初期化からの3つのセッション変数が含まれます(LEVEL: 値は8STATUS: 値はFULL-TIMEGRADE: 値はAAA)。

値リストを含む変数の初期化

行単位の初期化オプションを使用して、値リストを含む変数を初期化できます。SQLのIN演算子を使用して、指定されたリストの値をテストできます。

たとえば、前の例の表の値を使用して、次のSQL文を入力して初期化文字列を取得します。

SELECT 'LIST_OF_USERS', USERID
FROM RW_SESSION_VARS
WHERE NAME='STATUS' AND VALUE='FULL-TIME'

このSQL文により、変数LIST_OF_USERSに、JOHNJANEの値を含むコロン区切りのリスト(JOHN:JANE)が移入されます。次のWHERE句に示すように、フィルタでこの変数を使用できます。

WHERE TABLE.USER_NAME = valueof(NQ_SESSION.LIST_OF_USERS)

変数LIST_OF_USERSには、値リスト(1つ以上の値)が含まれます。論理WHERE句は、次の文のような物理IN句に展開されます。

WHERE TABLE.USER_NAME IN ('JOHN', 'JANE')

注意:

前述の説明および例は、論理SQLに固有の内容です。値のリストと変数を物理SQLを使用して初期化する場合、VALUELISTOF関数を使用する必要があります。たとえば、変数LIST_OF_USERS内のユーザー名に割り当てられた顧客を取得するためには、次の文を使用します。

Select 'LIST_OF_CUSTOMERS', Customer_Name from RW_CUSTOMERS where RW.CUSTOMERS.USER_NAME in (VALUELISTOF(NQ_SESSION.LIST_OF_USERS))

リストに表示されている指定された値のみでフィルタをするには、ValueNameofを使用して、次の例のようにします。最初の値は「0」であることに留意してください。「1」ではありません。

Select 'LIST_OF_CUSTOMERS', Customer_Name from RW_CUSTOMERS where RW.CUSTOMERS.USER_NAME in '(ValueNameOf(0,NQ_SESSION.LIST_OF_USERS))

初期化ブロックの作成

これらのトピックでは、初期化ブロックについて学習します。

「変数を含む初期化ブロックの使用について」を参照してください。

初期化ブロックを作成するには、次の項の手順を実行します。

名前およびスケジュールの初期化ブロックへの割当て

リポジトリ変数では、開始日時の日、日付、および時刻、およびリフレッシュ間隔を指定できます。

セッション初期化ブロック・オプションは次のとおりです。

  • 無効。このオプションを選択すると、初期化ブロックは無効になります。

    変数マネージャで既存の初期化ブロックを右クリックして、「無効化」または「有効化」を選択することもできます。このオプションにより、初期化ブロック・ダイアログを開くことなく、このプロパティを変更できます。

  • 遅延実行の許可。このオプションを選択すると、初期化ブロックの実行は関連付けられたセッション変数にセッション中に初めてアクセスできるようになるまで遅延されます。

    このオプションを使用することで、セッション・ログオン・ステージ時にすべてのセッション変数初期化ブロックが実行されることはなくなり、ログオン時間が短くなります。セッション中に不要なセッション変数は、初期化ブロックが実行されません。そのため、これらの不要な初期化ブロックの実行に使用されるリソースが節約されます。

    初期化ブロックの遅延実行は、すべての未実行の先行初期化ブロックの実行もトリガーします。関連付けられているすべての初期化ブロックの変数およびその未実行の先行部分は、遅延実行から返された値で更新されます。

    注意:

    「遅延実行の許可」オプションは使用できない場合があります。「セッション変数初期化ブロックの実行を遅延できないケース」を参照してください。

  • 認証のために必要。このオプションを選択すると、この初期化ブロックはユーザーのログインに成功する必要があります。つまり、初期化ブロックの実行に失敗すると、ユーザーはOracle Business Intelligenceへのアクセスが拒否されます。初期化ブロックで不正な資格証明が拒否された場合、またはデフォルトの初期化文字列にエラーがある場合は、実行が失敗する可能性があります。

    単一のユーザー・セッション変数が初期化ブロックに関連付けられている場合、この要件は偽装を使用する内部プロセス(デリバーなど)には適用されません。その場合、信頼できる内部プロセスが、初期化ブロックの成否にかかわらず、接続できます。

  1. 管理ツールで、「管理」を選択してから、「変数」を選択して、初期化ブロックに名前とスケジュールを割り当てます。
  2. または変数マネージャで、「セッション」「初期化ブロック」を選択します。
  3. 「リポジトリ変数初期化ブロック」または「セッション変数初期化ブロック」のダイアログで、ブロックの名前を入力します。NQ_SYSTEM初期化ブロック名は予約されています。
  4. (リポジトリ初期化ブロックのみ)「スケジュール」エリアで、開始日付および時刻とリフレッシュ間隔を選択します。
  5. (セッション初期化ブロックのみ)オプションを選択します。

次の手順は、データソースおよび接続プールを選択することです。

データソースおよび接続プールの選択およびテスト

初期化ブロックのデータソース・タイプとして「データベース」を選択する場合、データベースから返されるSQL文の列の値は、初期化ブロックに関連付けられた変数に割り当てられます。

セッション変数初期化ブロックでは、「LDAPサーバー」や「カスタム認証システム」も選択できます。

データベース」をデータソース・タイプとして選択する初期化ブロックの専用接続プールを作成することをお薦めします。さらに、Oracle BIサーバーの起動中に、初期化ブロックが特定の接続プールに対して失敗した場合、その接続プールを使用する初期化ブロックはそれ以上処理されません。そのかわり、接続プールはブラックリストに記載され、その接続プールの後続の初期化ブロックはスキップされます。

参照:

  • データ・ソース・タイプとして「データベース」を選択し、「OBI EEサーバーの使用」オプションを選択していない場合、変数のリフレッシュに使用されるSQL文は、「接続プール」フィールドで指定された接続プールを介してアクセスできる物理表を参照する必要があります。メタデータの物理レイヤーに表を含める必要はありません。実行時に、データベース・タイプの初期化文字列が定義されている場合、その初期化文字列が使用されます。データベース・タイプの初期化文字列が定義されていない場合、データベース・タイプのデフォルトの初期化SQLが使用されます。デフォルトの文字列は上書きできます。

    SQLを作成してそれを直接データベースに送信する場合(たとえば、初期化ブロックでデータベース固有のSQLを使用する場合など)、SQL文はOracle BIサーバーを迂回します。SQL文の列の順序および初期化ブロックに関連付けられた変数の順序により、どの列が各変数に割り当てられるかが決定されます。

    [リポジトリ|セッション]変数初期化ブロック・データ・ソースダイアログの「テスト」ボタンを使用して、このSQLをテストする必要があります。SQL文にエラーがある場合、データベースはエラー・メッセージを返します。

  • データソース・タイプとして「データベース」を選択し、「OBI EEサーバーの使用」オプションを選択する場合、次のように処理されます。

    変数のリフレッシュに使用するSQL文は、特定のデータベース用に記述されている場合があります。ただし、そのSQL文はOracle BIサーバーで処理されるため、他のデータ・ソースでも機能します。Oracle BIサーバーはデータ・ソースで使用できない可能性がある関数(PIなど)を提供することもありますが、そのSQL文はOracle BIサーバーでサポートされる他のデータ・ソース(ADF、SQL Server、Oracle、XMLファイルなど)では機能します。「OBI EEサーバーの使用」オプションを選択すると、SQL文がOracle BIサーバーに送信され、元になるデータベースには直接送信されないため、接続プールは不要です。

    オンライン・モードの場合、[リポジトリ|セッション]変数初期化ブロック・データ・ソースダイアログの「テスト」ボタンを使用してのみ、このSQL文をテストできます。SQL文にエラーがある場合、データベースはエラー・メッセージを返します。

  1. Oracle BI管理ツールで、「管理」を選択してから、「変数」を選択します。

  2. 「変数マネージャ」で、編集する初期化ブロックを選択します。

  3. 接続プール」フィールドの横の「データ・ソースの編集」をクリックします。

  4. データ・ソース・タイプ」リストで、次のタイプのいずれかを選択します。

    • データベース: リポジトリ変数およびセッション変数用。

    • LDAPサーバー: セッション変数用。

    • カスタム認証システム: セッション変数用。

  5. データソース・タイプに「データベース」を選択している場合、次のいずれかの手順を実行します。

    • デフォルトの初期化文字列」または「データベース固有のSQLの使用」を選択して、次の手順を実行します。

      1. 接続プール」フィールドの横の「参照」をクリックして、ターゲット情報が存在するデータベースに関連付けられている接続プールを選択します。初期化文字列を入力する前に接続プールを選択していない場合、接続プールを選択するよう促すメッセージが表示されます。

      2. 「接続プールの選択」ダイアログで、接続プールを選択して「選択」をクリックします。初期化文字列を入力する前に接続プールを選択する必要があります。

        デフォルトでは、物理レイヤーのデータベース・オブジェクトの下の最初の接続プールは選択できません。これにより、問合せに使用する接続プールと同じ接続プールを初期化ブロックで使用できないようになります。

        「オプション」ダイアログの「初期化ブロックに最初の接続プールを許可」を選択することで、最初の接続プールを選択可能にするよう動作を変更できますが、これはお薦めしません。

      3. データベース固有のSQLの使用」を選択した場合、「データベース」ペインでデータベースを開いて選択します。そこで、それに関連付けられた文字列を入力します。

        それを選択しない場合、「デフォルトの初期化文字列」ボックスで変数の移入に必要なSQL初期化文字列を入力します。

        初期化ブロックを編集し、それを使用して階層列の選択手順をオーバーライドする場合、「デフォルトの初期化文字列」ボックスに、JSON初期化文字列を入力します。

      4. (オプション)「テスト」をクリックして、SQL文のデータソース接続をテストします。

      5. OK」をクリックして、「初期化ブロック」ダイアログに戻ります。

    • OBI EEサーバーの使用」を選択して、次の手順を実行します。

      1. ボックスで、変数の移入に必要なSQL初期化文字列を入力します。

        ここで入力した文字列はOracle BIサーバーで処理されるため、Oracle BIサーバーでサポートされていれば、文字列は別のデータ・ソースでも機能します。

        たとえば、初期化ブロックは、SQL Serverに固有の関数pi()を使用する場合があります。ただし、「OBI EEサーバーの使用」を選択すると、問合せは、Oracle BIサーバーによって適切なデータベース用に書き換えられます。SQL Serverバックエンド・データベースをOracleに変更しても、問合せは機能します。

      2. OK」をクリックして、「初期化ブロック」ダイアログに戻ります。

  6. データソース・タイプに「LDAPサーバー」を選択している場合、次の手順を実行します。

    1. 参照」をクリックして既存のLDAPサーバーを選択するか、「新規」をクリックして「LDAPサーバー」ダイアログの「一般」タブを開きLDAPサーバーを作成します。

    2. OK」をクリックして、「初期化ブロック」ダイアログに戻ります。

      LDAPサーバー名とそれに関連付けられたドメイン識別子が「名前」および「ドメイン識別子」列に表示されます。

  7. データソース・タイプに「カスタム認証システム」を選択している場合、次の手順を実行します。

    1. 参照」をクリックして既存のカスタム認証システムを選択するか、「新規」を選択してそれを作成します。

    2. OK」をクリックして、「初期化ブロック」ダイアログに戻ります。

  8. 「OK」をクリックします。

選択手順をオーバーライドする変数で使用される初期化文字列

階層列を含む分析で、選択手順はセッション変数またはリポジトリ変数でオーバーライドされます。

このセッション変数およびリポジトリ変数では、初期化文字列にSQL構文ではなく有効なJSON構文が含まれている必要があります。

JSONを使用して、タイプ、列およびメンバーを次の構文で定義します。

{
  "type": "Hierarchy",
  "column": {
    "subject_area":"your_subject_area",
    "hier_id":"your_hier_id",
    "dim_id":"your_dim_id",
    "table_name":"your_table_name"
  },
  "members": [
    {
      "level_id":"your_level_id",
      "values": [
        your_value,
        your_value
      ]
    },
    {
      "level_id":"your_level_id",
      "values": [
        your_value
      ]
    }
  ]
}

説明:

"type"は、階層タイプを表します。

"column"は、サブジェクト領域および表明などの階層列の情報を表します。

"dim_id"は、論理ディメンション名です。

"members"は、階層レベルおよびメンバーIDを表します。

"level_id"は、プレゼンテーション・レベル名です。

標準的な階層構文の例

{
  "type": "Hierarchy",
  "column": {
    "subject_area": "A - Sample Sales",
    "hier_id": "H2 Offices",
    "dim_id": "H3 Offices",
    "table_name": "Offices"
  },
  "members": [
    {
      "level_id": "Company",
      "values": [
        10001,
        10002
      ]
    },
    {
      "level_id": "Organization",
      "values": [
        1005
      ]
    }
  ]
}

親子階層構文の例

{
  "type":"Hierarchy",
  "column":{
    "subject_area":"A - Sample Sales",
    "hier_id":"Sales Rep Hierarchy",
    "dim_id":"H5 Sales Rep",
    "table_name":"Sales Person"
  },
  "members":[
    {
      "level_id":"Grand Total",
      "values":[
        27,
        24,
        18,
        16
      ]
    }
  ]
}

初期化文字列の例

これらの例は、文字列を初期化する方法を示しています。

サイトでデリバーを使用する場合のSQL文字列

SELECT username, groupname, dbname, schemaname FROM users
WHERE username=':USER' 
NQS_PASSWORD_CLAUSE(and pwd=':PASSWORD')NQS_PASSWORD_CLAUSE

このSQLのWHERE句には、2つの制約が含まれます。

':USER' (コロンと一重引用符を使用)は、ログイン時にユーザーが入力するIDです。

':PASSWORD' (コロンと一重引用符を使用)はユーザーが入力するパスワードです。これは、USERシステム・セッション変数が使用される場合、常にともに存在するはずのシステム変数です。PASSWORD変数を設定する必要はありません。この変数はデータベース接続プールで使用することで、ユーザーIDとそのユーザーのパスワードを使用するログインを通過させることができます。またこの変数はSQL文でも使用できます。

デリバーによる外部表認証を使用している場合、:PASSWORD制約を構成するSQL文の一部をNQS_PASSWORD_CLAUSE句の間に埋め込む必要があります。

ユーザーIDとパスワードが指定された表に存在する値と一致する場合にのみ、問合せはデータを返します。USERおよびPASSWORD変数に正しい値を代入し、NQS_PASSWORD_CLAUSE句を削除して、Oracle BIサーバーの外部でSQL文をテストする必要があります。

サイトでデリバーを使用しない場合のSQL文字列

SELECT username, groupname, dbname, schemaname FROM users
WHERE username=':USER' 
AND pwd=':PASSWORD'

このSQL文のWHERE句には、2つの制約が含まれます。

':USER' (コロンと一重引用符に注目してください)は、ログイン時にユーザーが入力するIDです。

':PASSWORD' (コロンと一重引用符を使用)はユーザーが入力するパスワードです。これは、USERシステム・セッション変数が使用される場合、常にともに存在するはずのシステム変数です。PASSWORD変数を設定する必要はありません。この変数はデータベース接続プールで使用することで、ユーザーIDとそのユーザーのパスワードを使用するログインを通過させることができます。またこの変数はSQL文でも使用できます。

ユーザーIDとパスワードが指定された表に存在する値と一致する場合にのみ、問合せはデータを返します。USERおよびPASSWORD変数に正しい値を代入して、Oracle BIサーバーの外部でSQL文をテストする必要があります。

複数のデータソースから表を結合するSQL文 - 'OBI EE Server'設定を使用する場合

select WUSER.name, wuser_detail.email 
from "db-11g/orcl"."NAME"."WUSER', 
"sqlexpress"."master"."dbo"."wuser_detail" 
where username=:USER:

前述の初期化ブロックの問合せの例では、異なるデータソース(SQL Server、Oracle、XML Filesなど)からの複数の表の結合問合せを使用しています。「OBI EEサーバーの使用」オプションを選択すると、問合せがOracle BI Serverによって指定されたデータソース用に書き換えられるため、この問合せは機能します。

初期化ブロックのテスト

「テスト」ボタンを使用して、またはOracle BI EEクライアント・ユーティリティなどのSQLツールを使用して、SQL文をテストする必要があります。

SQLツールを使用する場合、同じDSNまたは指定された接続プール内のDSNと同一に設定されたDSNを使用してください。

オンライン・モードでは、初期化ブロック・テストは:USER:PASSWORDをユーザー名とパスワードに使用するように設定された接続プールが機能しません。オフライン・モードでは、:USER:PASSWORDを移入できるように「変数の値の設定」ダイアログが表示されます。

  1. 管理ツールで、「管理」を選択してから、「変数」を選択します。
  2. 「変数マネージャ」ダイアログで、初期化ブロックをダブルクリックします。
  3. 「リポジトリ変数初期化ブロック」または「セッション変数初期化ブロック」のダイアログで、「データ・ソースの編集」をクリックします。
  4. [リポジトリ|セッション]変数初期化ブロック・データソースダイアログで、「テスト」をクリックします。

    注意:

    「テスト」ボタンは、「OBI EEサーバーの使用」オプションがオフライン・モードで選択されている場合、無効になります。

  5. 「変数の値の設定」ダイアログで、情報が正しいか確認し、「OK」をクリックします。
  6. 表からのデータの表示ダイアログで、問合せの行数と開始行を入力して、「問合せ」をクリックします。

    「結果」ダイアログには、変数とその値がリストされます。

次の手順は、変数と初期化ブロックを関連付けることです。

初期化ブロックの変数の順序

SQL文の列の順序および初期化ブロックに関連付けられた変数の順序により、各変数に割り当てられる列値が決定されます。

変数を初期化ブロックに関連付けると、最初の列で返された値は、リストの最初の変数に割り当てられます。

オンライン・モードでリポジトリを開く場合、「初期化ブロック」ダイアログの「デフォルトの初期化文字列」フィールドに表示される値は、Oracle BIサーバーに認識されているその変数の現在の値です。関連付けられた変数の数は、取得される列の数とは異なる場合があります。列よりも変数のほうが数が少ない場合、余分な列値は無視されます。列よりも変数のほうが数が多い場合、余分な変数はリフレッシュされません。変数は、それぞれの元の値を保持します。正しいSQLであれば初期化ブロックを使用して実行できます。これには、データベースに書き込むSQLおよびデータベース構造を変更するSQLが含まれます(その接続プールに関連付けられたユーザーIDにこれらのアクションを実行する権限がある場合)。

Oracle BIサーバーを停止して再起動すると、サーバーは自動的にリポジトリ変数初期化ブロックのSQL文を実行し、リポジトリ変数を再度初期化します。

セッション変数初期化ブロックでは、「行単位の初期化」を選択できます。「行単位の初期化」 オプションを選択すると、「キャッシュの使用」オプションが自動的に選択されます。「キャッシュの使用」オプションが選択されることで、Oracle BIサーバーは問合せの結果をメイン・メモリー・キャッシュに保存することになります。「行単位の初期化について」を参照してください。

Oracle BIサーバーは、後続セッション用にキャッシュされた結果を使用します。これにより、セッションの起動時間を短縮できます。ただし、キャッシュされた結果には最新のセッション変数の値が含まれていない場合があります。各新規セッションでセッション変数の最新セットとそれぞれに対応する値が必要な場合、このオプションを選択解除する必要があります。

「変数を含む初期化ブロックの使用について」を参照してください。

変数と初期化ブロックとの関連付け

この手順を使用して、リポジトリまたはセッション変数を初期化ブロックに関連付けます。

参照:

  1. 管理ツールで、「管理」を選択してから、「変数」を選択して、変数を初期化ブロックに関連付けます。
  2. 「変数マネージャ」ダイアログで、初期化ブロックをダブルクリックして、リポジトリ初期化ブロックまたはセッション初期化ブロックを編集します。
  3. データ・ターゲットの編集」をクリックします。
  4. リポジトリ|セッション変数初期化ブロック変数ターゲット」ダイアログで、次のいずれかの手順を実行します。
    • 新規」をクリックし、「変数」ダイアログで新しい変数を作成して、初期化ブロックに関連付けます。
    • 「参照」ダイアログで「リンク」をクリックし、変数を選択してその変数を初期化ブロックに関連付けてから、「OK」をクリックします。
    • セッション変数初期化ブロックの場合にかぎり、「行単位の初期化」を選択します。
  5. 変数とこのブロックとの関連付けを削除するには、変数を選択して「削除」をクリックします。
  6. 「OK」をクリックします。

次の手順は実行優先度を確立することです。

実行優先度の確立

リポジトリに複数の初期化ブロックがある場合、ブロックを初期化する順序を設定できます(優先度の確立)。

まず、最後に実行するブロックを開き、その前に実行する初期化ブロックを追加します。たとえば、リポジトリにAとBという2つの初期化ブロックがあるとします。初期化ブロックBを開き、ブロックBの前にブロックAを実行することを指定します。そうすると、ブロックAは自身の単独での実行に加えて、ブロックBのスケジュールに応じても実行されるようになります。

  1. 管理ツールで、「管理」を選択してから、「変数」を選択します。
  2. 「変数マネージャ」ダイアログで、最後に初期化する初期化ブロックをダブルクリックします。
  3. 「リポジトリ変数初期化ブロック」または「セッション変数初期化ブロック」のダイアログで、「実行優先度の編集」をクリックします。
  4. [リポジトリ|セッション]変数初期化ブロック実行プリファレンスダイアログで、「追加」をクリックします。

    選択されていない初期化ブロックがある場合にのみ「追加」を使用できます。

  5. 「参照」ダイアログで、開いたブロックの前に初期化する必要があるブロックを選択して、「OKをクリックします。
  6. ブロックを削除するには、[リポジトリ|セッション]変数初期化ブロック実行プリファレンスダイアログで削除するブロックを選択して、「削除」をクリックします。
  7. 「OK」をクリックします。
  8. 初期化ブロックを必須にするには、「リポジトリ変数初期化ブロック」または「セッション変数初期化ブロック」のダイアログで、「認証のために必要」オプションを選択します。
  9. 「OK」をクリックします。

注意:

初期化ブロックで「OBI EEサーバーの使用」オプションを選択すると、次のような状態になります。

  • 実行優先度は適用されません。これは、ユーザーのログイン中に、「OBI EEサーバーの使用」オプションが選択された初期化ブロックが「OBI EEサーバーの使用」オプションが選択されていない初期化ブロックの後に実行されるためです。

  • 認証のために必要」オプションはグレー表示されます。これは、このタイプの初期化ブロックは認証後に実行されるためです。

セッション変数初期化ブロックの実行を遅延できないケース

セッション変数初期化ブロックの実行は、場合によっては遅延できないことがあります。

セッション変数初期化ブロックの実行が遅延できない場合、その理由を説明するメッセージが表示されます。

「名前およびスケジュールの初期化ブロックへの割当て」を参照してください。

セッション変数初期化ブロックの実行を遅延できないシナリオは、次のとおりです。

  • セッション変数初期化ブロック変数ターゲット・ダイアログで「行単位の初期化」オプションが選択されていて、変数はデフォルト値を使用して明示的に宣言されていません。

    メッセージ例: 初期化ブロック'A_blk'は、行単位の初期化を使用しているため、その実行を遅延することはできません。

  • 「セッション変数初期化ブロック」ダイアログで「認証のために必要」オプションが選択されています。

    メッセージ例: 初期化ブロック'A_blk'は、認証に必要であるため、その実行を遅延することはできません。

  • データ・ソース・タイプ」が「データベース」ではありません。

    メッセージ例: 初期化ブロック'A_blk'には接続プールがないため、その実行を遅延することはできません。

  • PROXYまたはUSERという名前のセッション変数で初期化ブロックが使用されています。

    メッセージ例: 初期化ブロック'A_blk'は、セッション変数'PROXY'によって使用されているため、その実行を遅延することはできません。

  • 「セッション変数」ダイアログで「セキュリティ・センシティブ」オプションが選択されているセッション変数で初期化ブロックが使用されています。

    メッセージ例: 初期化ブロック'A_blk'はセキュリティ・センシティブなセッション変数'A'で使用されているため、その実行を遅延することはできません。

  • その初期化ブロックが、「遅延実行の許可」オプションが選択されていない別の初期化ブロックの先行ブロックです。

    メッセージ例: 初期化ブロック'A_blk'の後の初期化ブロックの1つにAllow deferred executionフラグが設定されていません。初期化ブロック'B_blk'にAllow deferred executionフラグが設定されていません。

初期化ブロックの有効化と無効化

Oracle BI管理ツールの変数マネージャを使用して、初期化ブロックを有効化および無効化できます。

  1. 管理ツールで、「管理」を選択してから、「変数」を選択します。
  2. 「変数マネージャ」で、「リポジトリ」または「セッション」の下の「初期化ブロック」を選択します。
  3. 右ペインで、有効化または無効化する初期化ブロックを右クリックします。
  4. 右クリック・メニューから「有効化」または「無効化」を選択します。
  5. 変数マネージャを閉じてリポジトリを保存します。