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

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

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

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

フェデレーテッド・パーティション・キューブを設計する際に、作成に長時間かかる場合はこれらのテスト・ガイドラインに従ってください。これらのガイドラインは、トラブルシューティングまたはパフォーマンスのモニターに段階的なアプローチをとる場合に役立つ可能性があります。

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

  • 次の特徴を持つキューブ・モデルから始めます:

    • レベルが多くない

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

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

  2. MaxL alter application disable commandsdisable connects (新規ユーザー・アクティブを防ぐため)、またはその両方に続いてalter system logout sessionkill 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 commandsconnects、またはその両方を使用して、ユーザーをシステムで再び有効にします(以前に無効化した場合)。
  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. Prefixに関連付けられたすべての分析ビュー、パッケージ、階層、表および他のオブジェクトをクリーン・アップするストアド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>とみなされ、次のステップで使用します。

    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_5Basicは各自のAppNameに、'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に関連付けられたメタデータ関連表を削除します。

      62は各自のOTL_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_5Basicは各自のAppNameに、EWRnHFlQteCEzWUhF7P3TPKunf3bYsは各自のESSBASE_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 Error(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. フェデレーテッド・パーティション再作成します。