통합 파티션 큐브 유지 관리 및 문제 해결

다음 지침에 따라 통합 파티션이 있는 Essbase 큐브를 유지 관리하거나 문제를 해결하십시오.

이 항목에서는 통합 파티션 생성을 완료했고 앞의 항목에 설명된 정보를 검토했다고 가정합니다.

통합 파티션 큐브 모델링 및 테스트

통합 파티션 큐브를 설계할 때 생성 시간이 너무 오래 걸리면 다음 테스트 지침을 따르십시오. 이 지침은 단계적 접근법을 취해 문제를 해결하거나 성능을 모니터하는 데 유용할 수 있습니다.

  • 테스트 환경에서 통합 파티션 프로젝트를 시작합니다.

  • 다음 특성을 가진 큐브 모델부터 시작합니다.

    • 레벨이 많지 않음

    • 공유 멤버나 속성이 많지 않음

  1. 통합 파티션을 생성할 때 인스턴스에 대한 질의가 허용되지 않는 경우 오프라인 작업 일정을 잡습니다.

  2. 활성 Essbase 사용자 세션을 점진적으로 접속 해제합니다. MaxL alter application disable commands 및/또는 disable connects를 사용하고(새로운 사용자 활동 방지), 그 뒤에 alter system logout session 및/또는 kill request를 사용하면 됩니다(완료할 필요가 없는 활성 세션을 종료해야 하는 경우). MaxLAutonomous 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 웹 인터페이스콘솔 페이지에서 구성을 선택하고 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 웹 인터페이스의 메인 소스 아이콘 아래), 해당 애플리케이션에만 정의된 소스에 있을 수 있습니다. 통합 파티션에 대한 접속 생성의 지침을 따르십시오.

  5. 통합 파티션 생성에 설명된 대로 통합 파티션을 다시 생성합니다.

데이터베이스 접속 세부정보가 변경된 경우 수행할 작업

Essbase통합 파티션에 사용한 Autonomous Data Warehouse 접속 세부정보가 변경된 경우 통합 파티션을 삭제했다가 다시 생성하고, 데이터베이스 스키마에서 연계된 객체 및 메타데이터 테이블을 정리해야 합니다.

통합 파티션이 생성된 후 다음 이벤트가 발생할 경우 통합 파티션을 삭제하고 다시 생성해야 합니다.

  • Autonomous Data Warehouse 포트 변경

  • 접속 이름 변경

  • 접속이 전자 지갑을 사용하고, 한 서비스 이름을 다른 것으로 전환한 경우(성능 또는 동시성 변경)

  • 아웃라인을 업데이트하면 멤버와 사실 값 테이블 매핑이 변경되어 통합 파티션이 동기화되지 않습니다. 자세한 내용은 통합 파티션 큐브에 대한 메타데이터 예방 조치을(를) 참조하십시오.

접속 세부정보가 변경될 것을 미리 알고 있다면 변경이 발생하기 전에 통합 파티션을 제거했다가 그 후에 다시 생성하는 것이 좋습니다. 그러나 접속이 변경되었고 통합 파티션이 무효화되었다면 다음 단계를 따르십시오.

통합 파티션 삭제

통합 파티션 제거에 설명된 대로 통합 파티션 및 이와 연계된 접속(다른 곳에 사용되지 않는 경우)을 제거합니다.

통합 파티션 관련 객체 및 메타데이터 테이블 정리

Autonomous Data Warehouse통합 파티션 사용자 스키마에서 Essbase가 생성한 테이블과, 그밖에 통합 파티션과 함께 제거되지 못한 객체를 삭제합니다.

  1. Essbase 서버 호스트에 opc 사용자로 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_IDOTL_ID 값을 가져와야 합니다.

    1. Essbase 서버 호스트에 opc 사용자로 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로 시작해 두 개의 프로세스 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 웹 인터페이스의 메인 소스 아이콘 아래), 해당 애플리케이션에만 정의된 소스에 있을 수 있습니다. 접속의 지침을 따르십시오. 접속을 테스트하고 저장하십시오.

  2. 통합 파티션 생성에 설명된 대로 통합 파티션을 다시 생성합니다.

  3. Essbase 오류(1350012): OCI에 대한 접속 시도를 실패했습니다와 같은 접속 오류가 계속 표시되면 https://support.oracle.com/rs?type=doc&id=2925030.1을 확인하십시오.

통합 파티션 애플리케이션 백업 및 복원

통합 파티션Essbase 애플리케이션과 함께 이전되지 않습니다. 애플리케이션과 큐브를 다른 서버로 이동하거나 다른 Essbase 버전으로 이전하려고 준비할 때 통합 파티션을 삭제했다가 새 환경에 다시 생성해야 합니다.

통합 파티션 큐브를 백업하려면 다음과 같이 하십시오.

  1. 데이터는 제외하고 필요한 모든 것(예: 구성 속성, 필터, 변수, 계산 스크립트 및 기타 아티팩트)을 포함하여 애플리케이션을 백업합니다. 이를 수행하려면 LCM 익스포트(또는 Essbase 웹 인터페이스LCM 익스포트 작업)를 사용하십시오.

  2. 사실 값 테이블을 백업합니다. Backing Up and Restoring Autonomous Database을(를) 참조하십시오.

  3. 통합 파티션 제거의 단계에 따라, 큐브에서 통합 파티션 정의를 삭제합니다.

통합 파티션 큐브를 백업에서 복원하려면 다음과 같이 하십시오.

  1. LcmImport: 큐브 파일 복원(또는 Essbase 웹 인터페이스LCM 임포트 작업)을 사용하여 애플리케이션을 다시 생성합니다.

  2. 필요한 경우 Autonomous Data Warehouse에 사실 값 테이블을 복원합니다.

  3. Autonomous Data Warehouse에 대한 접속을 재생성합니다. 오류 발생을 방지하려면 새 접속 이름을 사용하는 것이 좋습니다.

  4. 통합 파티션재생성합니다.