초기화 블록 유지보수

Oracle Analytics Cloud와 함께 데이터 게이트웨이 또는 Remote Data Connector를 사용하는 경우 각 질의 실행 기간에 약간의 오버헤드가 발생합니다.

0.3초 미만이므로 보고서를 실행할 때 추가 기간은 눈에 띄지 않습니다. 하지만 초기화 블록 질의는 순차적으로 실행되므로 사인인이 발생할 때마다 많은 초기화 블록(성능 요구사항에 따라 개수가 다름)이 실행되면 성능 문제가 발생할 수 있습니다. 초기화 블록에 지연 옵션을 사용해도 문제가 해결되지 않습니다. 첫번째 대시보드 페이지를 열 때 초기화 블록이 실행되기 때문입니다.

이는 Oracle BI 애플리케이션을 사용하는 경우 발생하는 문제입니다. 200개가 넘는 초기화 블록이 실행되기 때문입니다. Oracle Analytics Cloud의 경우 이러한 성능 문제를 방지하는 최적의 방법은 초기화 블록 수를 줄이는 것입니다.

세션 초기화 블록 수를 줄이는 방법에 대한 권장사항은 다음과 같습니다.

  • 실제로 필요하지 않은 모든 초기화 블록을 사용 안함으로 설정합니다.

    예를 들어, Oracle BI 애플리케이션에서는 더 이상 사용하지 않는 Oracle BI 애플리케이션 모듈을 참조하는 초기화 블록을 사용 안함으로 설정합니다.

  • 우선순위 규칙이 있는 경우를 제외하고 동일한 접속 풀을 사용하는 모든 row_wise 초기화 블록을 병합한 후 해당 질의 사이에 UNION ALL을 사용하여 동일한 데이터 유형을 반환합니다.

    예를 들어, 다음과 같습니다.

    Init block 1: query1
    
    Init block 2: query2
    
    Merged init block: query1 union all query2
  • dual 또는 W_DUAL_G에서 하드 코딩된 값을 선택하는 모든 초기화 블록을 사용 안함으로 설정하고, 해당 변수의 기본 초기화 프로그램에 하드 코딩된 값을 넣습니다.
  • 이중에서 데이터를 선택하는 나머지 초기화 블록을 단일 select 문으로 병합합니다.
  • Oracle BI 애플리케이션 고객을 위해 해당 속성이 사용되지 않는 경우(표준 기본값 'HIDE'가 이러한 변수의 현재 값인 경우) 또는 Oracle Human Capital Management를 Oracle BI 애플리케이션 데이터 소스로 사용하지 않는 경우 Oracle Human Capital Management 사용자정의 속성 이름 및 값을 검색하는 데 사용되는 모든 초기화 블록을 사용 안함으로 설정합니다(Oracle BI 애플리케이션에는 이와 같은 100개의 초기화 블록이 있음).
    HR xxx Attribute yyy
  • row_wise가 아닌 나머지 초기화 블록을 모두 병합하고 동일한 접속 풀을 사용합니다. 예를 들어, 다음과 같습니다.

    초기화 블록 1은 query1 select colA from tableA where…를 기반으로 합니다.

    초기화 블록 2는 query2 select colB from tableB where…를 기반으로 합니다.

    다음과 같은 질의를 사용하여 단일 초기화 블록으로 병합할 수 있습니다.

    Select MAX(colA), MAX(colB) from (
    
    select cola as cola, null as colB from tableA where….
    
    Union all
    
    Select null, colB from tableB where…) tmp

하나의 단일 질의에 동일한 접속 풀에서 모든 변수를 검색하는 데 필요한 만큼 논리합을 수행할 수 있습니다.

구현 또는 유지보수는 쉽지 않으며, 질의를 생성하고 모든 변수를 단일 초기화 블록에 지정할 때 실수할 위험이 있습니다. 초기화 블록 질의 및 변수를 신중하게 구현하고 유지보수하면 사인인 후 첫번째 대시보드 페이지를 표시하는 데 걸리는 시간을 크게 줄일 수 있습니다.