フェデレーテッド・パーティション・キューブのメンテナンスおよびトラブルシューティング

フェデレーテッド・パーティションを含むEssbaseキューブのメンテナンスまたはトラブルシューティングを行うには、次のガイドラインを使用します。

このトピックでは、フェデレーテッド・パーティションを作成しており、前のトピックで説明した情報を確認済であることを前提としています。

フェデレーテッド・パーティション・キューブのモデリングとテスト

フェデレーテッド・パーティション・キューブを設計するときに、作成に時間がかかりすぎる場合はこれらのテスト・ガイドラインに従ってください。これらのガイドラインは、段階的な方法でパフォーマンスのトラブルシューティングやモニターを実行するために役立ちます。

  • テスト環境でフェデレーテッド・パーティション・プロジェクトを開始します。

  • 次の特性があるキューブ・モデルから始めます:

    • レベルが多くない

    • 共有メンバーや属性が多くない

  1. フェデレーテッド・パーティションを作成するとき、インスタンスに対する問合せが許可されていない場合はオフライン操作をスケジュールします。

  2. MaxLalter application disable commandsまたはdisable connects (新しいユーザー・アクティビティを防止するため)、あるいはその両方を使用し、その後にalter system logout sessionまたはkill request (完了する必要がないアクティブなセッションを終了する必要がある場合)、あるいはその両方を使用して、アクティブなEssbaseユーザー・セッションを徐々に切断します。なお、MaxLによって、Autonomous Data Warehouseで実行されている可能性があるリクエストを終了することはできません。アプリケーションでコマンドを無効にする場合は、フェデレーテッド・パーティションの作成後に、必ずコマンドを再度有効にしてください。

  3. 次のようにタイムアウト・チューニングを実行します。
    • カスタマ・ネットワークのHTTPSプロキシ - カスタマ・ネットワーク・タイムアウトを調整します
    • ロード・バランサ - LoadBalanceタイムアウトを1260秒(21分)に増やします
    • HTTPDタイムアウトを21分に増やします
      /etc/httpd/conf.d/00_base.conf:ProxyTimeout 1260
      /etc/httpd/conf.d/00_base.conf:Timeout 1260
    • APS/JAPIタイムアウト:
      • Essbase Webインタフェースにある「コンソール」ページで、「構成」を選択し、olap.server.netSocketTimeOutの値を書き留めます。値200ミリ秒は、これらのプロパティのカウント5ごとに1秒の待機時間を与えることを意味します。
      • APS/JAPIのタイムアウト制限を30分に設定するには、olap.server.netRetryCountを9000に設定します。
  4. フェデレーテッド・パーティション作成します。
  5. ステップ3のタイムアウト調整を元に戻します。
  6. alter application enable commandsまたはconnects (あるいはその両方)を使用して(以前にこれらが無効になっていた場合)、ユーザーがシステムに戻れるようにします。
  7. フェデレーテッド・パーティションを含むEssbaseキューブに関するレポートの場合、QRYGOVEXECTIMEを、フェデレーテッド・パーティションに対する問合せの予想実行時間より長くするように調整します。なお、QRYGOVEXECTIMEによって、Autonomous Data Warehouseで実行されている可能性があるリクエストを終了することはできません。
  8. 開発環境のテストおよび調整が完了したら、前述の手順1から7を使用して、フェデレーテッド・パーティションを本番環境に追加します。

ノート:

フェデレーテッド・パーティションの作成時に「アウトラインの保存に失敗しました」というエラーが表示された場合は、セッションが完了するまで待機してから、ブラウザをリフレッシュします。フェデレーテッド・パーティションが作成されている場合は、SQL Developerで検証します。SQL Developerで検証されると、フェデレーション・パーティションが使用可能になります。SQL Developerで検証されない場合、モデルを修正する必要があり、前述のステップ3で説明したようにタイムアウト・チューニングが必要です。

フェデレーテッド・パーティション・キューブでのメタデータに関する注意

Essbaseフェデレーテッド・パーティションがある場合、キューブ・アウトラインの編集時には注意してください。メンバーを追加または名前変更した場合は、メタデータ変更がAutonomous Data Warehouse内のファクト表にも反映されていることを確認してください。

EssbaseアウトラインがAutonomous Data Warehouse内のファクト表と同期されなくなると、フェデレーテッド・パーティションが無効になるか正しく機能しなくなります。これを修正するには、フェデレーテッド・パーティションを削除し、アウトラインとファクト表を変更してから、フェデレーテッド・パーティションを再作成する必要があります。

フェデレーテッド・パーティションが無効になった場合、Essbaseエラー(1040235): フェデレーテッド・パーティションからのリモート警告で始まるエラーが発生することがあります。

次のタイプのEssbaseアウトライン変更により、フェデレーテッド・パーティションが無効になります:

  • ディメンションの追加、名前変更または削除

  • ピボット・ディメンションでの保管済メンバーの追加、名前変更または削除

  • 保管済から動的へのメンバーの変更

前述以外の他のタイプのEssbaseアウトライン変更の場合は(ピボット・ディメンション以外のメンバーの追加や名前変更など)、それに対応する変更をファクト表内の影響を受けるデータ行に加える必要があります。そうしないと、フェデレーテッド・パーティションが正しく機能しない場合があります。

Essbaseアウトライン・メタデータが変更されることが事前にわかっている場合は、まずフェデレーテッド・パーティションを削除し、アウトライン変更を加え、ファクト表を更新してから、フェデレーテッド・パーティションを再作成することをお薦めします。

しかしながら、Essbaseメタデータが変更されてフェデレーテッド・パーティションが無効になった場合は、次の操作を実行します:

  1. 「フェデレーテッド・パーティションの削除」で説明されているとおりに、フェデレーテッド・パーティション、およびそれに関連付けられている接続を削除します(別の方法で使用されていない場合)。

    Autonomous Data Warehouseフェデレーテッド・パーティション・ユーザー・スキーマから、フェデレーテッド・パーティションで削除に失敗した、Essbaseで生成された表およびその他のオブジェクトを手動で削除します。

  2. Essbaseキューブでアウトライン変更が完了していることを確認します。

  3. ファクト表を再度作成します。「ファクト表の作成」を参照してください。

  4. Autonomous Data Warehouseへの接続を再作成します。これは、グローバル接続(Essbase Webインタフェースにあるメインの「ソース」アイコンの下)であるか、そのアプリケーション専用に定義されている「ソース」内にある場合があります。「フェデレーテッド・パーティションの接続の作成」の手順に従います。

  5. 「フェデレーテッド・パーティションの作成」で説明されているとおりに、フェデレーテッド・パーティションを再作成します。

データベース接続の詳細が変更された場合の対応

Essbaseフェデレーテッド・パーティションに使用されるAutonomous Data Warehouse接続詳細を変更した場合は、そのフェデレーテッド・パーティションを削除および再作成し、関連するオブジェクトおよびメタデータ表をデータベース・スキーマからクリーン・アップする必要があります。

フェデレーテッド・パーティションの作成後に次のいずれかのイベントが発生した場合は、フェデレーテッド・パーティションを削除してから再作成する必要があります:

接続の詳細が変更されることが事前にわかっている場合は、変更が行われる前にフェデレーテッド・パーティションを削除し、後で再度作成することをお薦めします。ただし、接続が変更され、フェデレーテッド・パーティションが無効になった場合は、次のステップに従います。

フェデレーテッド・パーティションの削除

「フェデレーテッド・パーティションの削除」で説明されているとおりに、フェデレーテッド・パーティション、およびそれに関連付けられている接続を削除します(別の方法で使用されていない場合)。

フェデレーテッド・パーティション関連オブジェクトおよびメタデータ表のクリーン・アップ

Autonomous Data Warehouseフェデレーテッド・パーティション・ユーザー・スキーマから、フェデレーテッド・パーティションで削除に失敗した、Essbaseで生成された表およびその他のオブジェクトを削除します。

  1. opcユーザーとしてEssbaseサーバー・ホストにssh接続します。

    ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
  2. oracleユーザーに変更します(およびホーム・ディレクトリに移動します)。

    sudo su - oracle
  3. アプリケーション・ディレクトリに移動します。

    cd /u01/data/essbase/app
  4. Essbaseアプリケーションおよびキューブ名を使用して、フェデレーテッド・パーティション・オブジェクトおよびメタデータに関連付けられている一意の接頭辞を識別します。

    1. アプリケーション名(AppName)を取得します。名前は大文字と小文字が区別されるため、大文字と小文字を正確に取得します。この例では、AppName = Sampleです。

      ls
      Sample
    2. アプリケーション名の文字数(appx)をカウントします。

      例: appx = 6。

    3. キューブ・ディレクトリに移動し、キューブ名(DbName)を取得します。名前は大文字と小文字が区別されるため、大文字と小文字を正確に取得します。この例では、DbName = Basicです。

      cd /Sample
      ls
      Basic
    4. キューブ名の文字数(dby)をカウントします。

      例: dby = 5。

    5. Prefixを次のように作成します:

      ESSAV_<appx><AppName>_<dby><DbName>_

      次に例を示します。

      <Prefix> = ESSAV_6Sample_5Basic_
  5. SQL Developerまたは他のツールを使用して、フェデレーテッド・パーティションが接続されているスキーマのユーザーとしてOracle Databaseに接続します。

  6. SELECT文を実行して、フェデレーテッド・パーティション・アプリケーションに関連付けられたオブジェクトのリストを作成します。これらは、次のステップでクリーン・アップするオブジェクトです。

    SELECT文の書式は次のとおりです:

    SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like '<Prefix>%';

    次に例を示します。

    SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like 'ESSAV_6Sample_5Basic_%';
  7. 接頭辞に関連付けられているすべての分析ビュー、パッケージ、階層、表およびその他のオブジェクトをクリーン・アップするストアドPL/SQLプロシージャを実行します。

    ESSAV_6Sample_5Basic_Prefixに置き換えます。

    SET SERVEROUTPUT ON;
    
    declare
      prefix_str varchar2(70) := 'ESSAV_6Sample_5Basic_';
    
    BEGIN
    
      FOR c IN ( SELECT ANALYTIC_VIEW_NAME FROM user_analytic_views WHERE ANALYTIC_VIEW_NAME like prefix_str || '%' )
      LOOP
        EXECUTE IMMEDIATE 'DROP ANALYTIC VIEW "' || c.ANALYTIC_VIEW_NAME || '" ';
        DBMS_OUTPUT.PUT_LINE('ANALYTIC VIEW ' || c.ANALYTIC_VIEW_NAME || ' dropped successfully.');
      END LOOP;
    
      FOR c IN ( SELECT distinct OBJECT_NAME FROM USER_PROCEDURES WHERE OBJECT_TYPE='PACKAGE' and OBJECT_NAME like prefix_str || '%' )
      LOOP
        EXECUTE IMMEDIATE 'DROP PACKAGE "' || c.OBJECT_NAME || '" ';
        DBMS_OUTPUT.PUT_LINE('PACKAGE ' || c.OBJECT_NAME || ' dropped successfully.');
      END LOOP;
    
      FOR c IN ( SELECT distinct HIER_NAME FROM USER_HIERARCHIES WHERE HIER_NAME like prefix_str || '%' )
      LOOP
        EXECUTE IMMEDIATE 'DROP HIERARCHY "' || c.HIER_NAME || '" ';
        DBMS_OUTPUT.PUT_LINE('HIERARCHY ' || c.HIER_NAME || ' dropped successfully.');
      END LOOP;
    
      FOR c IN ( SELECT distinct DIMENSION_NAME FROM USER_ATTRIBUTE_DIM_TABLES_AE WHERE DIMENSION_NAME like prefix_str || '%' )
      LOOP
        EXECUTE IMMEDIATE 'DROP ATTRIBUTE DIMENSION "' || c.DIMENSION_NAME || '" ';
        DBMS_OUTPUT.PUT_LINE('ATTRIBUTE DIMENSION ' || c.DIMENSION_NAME || ' dropped successfully.');
      END LOOP;
    
      FOR c IN ( SELECT distinct TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME like prefix_str || '%' )
      LOOP
        EXECUTE IMMEDIATE 'DROP TABLE "' || c.TABLE_NAME || '" purge';
        DBMS_OUTPUT.PUT_LINE('TABLE ' || c.TABLE_NAME || ' dropped successfully.');
      END LOOP;
    
      FOR c IN ( SELECT distinct VIEW_NAME FROM USER_VIEWS WHERE VIEW_NAME like prefix_str || '%' )
      LOOP
        EXECUTE IMMEDIATE 'DROP VIEW "' || c.VIEW_NAME || '" ';
        DBMS_OUTPUT.PUT_LINE('VIEW ' || c.VIEW_NAME || ' dropped successfully.');
      END LOOP;
    
      FOR c IN ( SELECT distinct TYPE_NAME FROM USER_TYPES WHERE TYPE_NAME like prefix_str || '%' )
      LOOP
        EXECUTE IMMEDIATE 'DROP TYPE "' || c.TYPE_NAME || '" FORCE';
        DBMS_OUTPUT.PUT_LINE('TYPE ' || c.TYPE_NAME || ' dropped successfully.');
      END LOOP;
    
    END;
    /
    
  8. 関連するメタデータ関連表を削除および更新します。まず、ESSBASE_INSTANCE_UNIQUE_IDおよびOTL_IDの値を取得する必要があります。

    1. opcユーザーとしてEssbaseサーバー・ホストにssh接続します。

      ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
    2. oracleユーザーに変更します(およびホーム・ディレクトリに移動します)。

      sudo su - oracle
    3. Essbaseエージェント・プロセスを検索します。

      ps -ef | grep ESSS | grep -v "grep"

      前述のコマンドは、oracleで始まり、2つのプロセスIDが続くプロセス・リストを返す必要があります。たとえば、次のようになります

      oracle   10769  19563 ...

      最初のプロセスIDが<PID>であるとします。このIDは次のステップで使用します。

    4. stringsコマンドを使用して、ESSBASE_INSTANCE_UNIQUE_IDの値を取得します。

      strings /proc/<PID>/environ | grep ESSBASE_INSTANCE_UNIQUE_ID

      次に例を示します。

      strings /proc/10769/environ | grep ESSBASE_INSTANCE_UNIQUE_ID

      前述のコマンドは、ESSBASE_INSTANCE_UNIQUE_IDの値を返します。たとえば、次のようになります

      ESSBASE_INSTANCE_UNIQUE_ID=EWRnHFlQteCEzWUhF7P3TPKunf3bYs
    5. SQL Developerまたは他のツールを使用して、フェデレーテッド・パーティションが接続されているスキーマのユーザーとしてOracle Databaseに接続します。

    6. SELECT文を実行して、OTL_IDの値を取得します。

      SELECT文の書式は次のとおりです:

      SELECT OTL_ID FROM ESSAV_OTL_MTD_VERSION where APPNAME ='<AppName>' and "JAGENT_INSTANCE_ID"='<ESSBASE_INSTANCE_UNIQUE_ID>';

      ESSAV_6Sample_5BasicAppNameに置き換え、'EWRnHFlQteCEzWUhF7P3TPKunf3bYs'ESSBASE_INSTANCE_UNIQUE_IDに置き換えます。

      SELECT OTL_ID FROM ESSAV_OTL_MTD_VERSION where APPNAME ='ESSAV_6Sample_5Basic' and "JAGENT_INSTANCE_ID"='EWRnHFlQteCEzWUhF7P3TPKunf3bYs';
    7. 前述の問合せは、OTL_IDの値を返します。たとえば、次のようになります

      62
    8. ストアドPL/SQLプロシージャを実行して、OTL_IDに関連付けられているメタデータ関連表を削除します。

      62OTL_IDに置き換えます。

      SET SERVEROUTPUT ON;
      BEGIN
        FOR c IN ( SELECT distinct TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME like 'ESSAV_MTD_62_%' )
        LOOP
          EXECUTE IMMEDIATE 'DROP TABLE "' || c.TABLE_NAME || '" purge';
          DBMS_OUTPUT.PUT_LINE('TABLE ' || c.TABLE_NAME || ' dropped successfully.');
        END LOOP;
      END;
      /
      
    9. UPDATE文を実行して、ESSAV_OTL_MTD_VERSION表を非アクティブ・ステータスに設定します。

      ESSAV_6Sample_5BasicAppNameに置き換え、EWRnHFlQteCEzWUhF7P3TPKunf3bYsESSBASE_INSTANCE_UNIQUE_IDに置き換えます。

      UPDATE "ESSAV_OTL_MTD_VERSION" SET  "OTL_STATUS" = 'INACTIVE'  where APPNAME ='ESSAV_6Sample_5Basic' and "JAGENT_INSTANCE_ID"='EWRnHFlQteCEzWUhF7P3TPKunf3bYs';
      commit;

接続およびフェデレーテッド・パーティションの再作成

  1. Autonomous Data Warehouseへの接続を再作成します。これは、グローバル接続(Essbase Webインタフェースにあるメインの「ソース」アイコンの下)であるか、そのアプリケーション専用に定義されている「ソース」内にある場合があります。接続の手順に従います。必ず接続をテストし保存してください。

  2. 「フェデレーテッド・パーティションの作成」で説明されているとおりに、フェデレーテッド・パーティションを再作成します。

  3. Essbaseエラー(1350012): OCIに接続しようとして失敗しました」などの接続エラーが引き続き表示される場合は、https://support.oracle.com/rs?type=doc&id=2925030.1を確認してください。

フェデレーテッド・パーティション・アプリケーションのバックアップとリストア

フェデレーテッド・パーティションEssbaseアプリケーションで移行されません。アプリケーションとキューブの別のサーバーへの移動または別のEssbaseバージョンへの移行を準備する場合は、フェデレーテッド・パーティションを削除し、新しい環境でそれを再作成する必要があります。

フェデレーテッド・パーティション・キューブをバックアップするには、

  1. データを含めず、他の必要なもの(構成プロパティ、フィルタ、変数、計算スクリプト、その他のアーティファクトなど)をすべて含めて、アプリケーションをバックアップします。これを行うには、「LCMエクスポート」(またはEssbase Webインタフェースにある「LCMのエクスポート」ジョブ)を使用します。

  2. ファクト表をバックアップします。Autonomous Databaseのバックアップおよびリストアを参照してください。

  3. 「フェデレーテッド・パーティションの削除」の手順に従って、キューブからフェデレーテッド・パーティション定義を削除します。

フェデレーテッド・パーティション・キューブをバックアップからリストアするには、

  1. LcmImport: キューブ・ファイルのリストア(またはEssbase Webインタフェースにある「LCMのインポート」ジョブ)を使用してアプリケーションを再作成します。

  2. 必要に応じて、Autonomous Data Warehouseでファクト表をリストアします。

  3. Autonomous Data Warehouseへの接続を再作成します。エラーが発生しないようにするために、新しい接続名を使用することをお薦めします。

  4. フェデレーテッド・パーティション再作成します。