SAP Oracle 통계정보 생성 및 업데이트__Creating and Updating Oracle Statistics

감귤은탱귤·2024년 2월 22일
0

SAP BC - 중급

목록 보기
8/13
post-thumbnail

SAP 에서 Oracle DB 를 사용한다면, DB 퍼포먼스에 관해서 여러가지 부분을 고려해야 한다.

퍼포먼스에 관한 부분은 많은 요소들이 있지만, 이번 글에서는 오라클 통계정보 관리에 관해서 서술한다.



오라클 통계정보는 옵티마이저가 가장 효율적으로 실행 계획을 수립하기 위한 기초 데이터이다. (Oracle 10g 이상부터는 Cost Based Optimizer_이하 CBO)

따라서, 통계정보가 제대로 관리 되지 않는다면, SQL 문 런타임이 길어지게 되고, 전반적인 시스템 로드가 높아지게 된다.

이러한 통계정보는 테이블의 데이터 변화량이나 인덱스 추가, 컬럼 추가 등에 따라 주기적으로 재생성을 해줘야하며, 보통은 DBA 작업(DB13) 에서 Check and Update Optimizer statistics 작업을 매일 수행하여 통계정보를 관리한다.

허나 이러한 자동화된 통계정보 수집과는 다른 대체 통계 유지 방법에 대한 정보도 읽어보길 바란다.
SAP Notes 1057511 - Collecting statistis - An alternative approach

그러나, 이 DBA 작업 외에도 따로 통계정보 관리가 필요할 경우가 있는데, 수작업으로 통계정보를 생성/ 갱신하는 방법과, 여러 SAP Notes 에 대해서 기록한다.



1. 통계정보 생성 및 갱신

Oracle 에서는 analyze, dbms_stats 를 사용하여 통계정보를 생성하지만,
SAP 시스템에서는 다양한 방법으로 통계정보를 생성/갱신할 수 있다

1-1. Brtools

brtools 의 brconnect 명령어를 사용하여 통계정보를 생성/갱신 할수 있다.

  • 특정 테이블 통계정보 생성/갱신
    brconnect -u / -c -f stats -t <table> -f collect

  • 전체 테이블 통계정보 생성/갱신
    brconnect -u / -c -f stats -t all -f collect

  • 통계정보가 누락된 테이블에 대해서만 통계정보 수집
    brconnect -f stats -t missing

brconnect 를 사용하여 통계정보 생성/갱신을 했음에도, 실제로 통계정보가 생성되지 않는 경우가 있다.
이 현상은 brconnect 에서 통계정보 생성 시, 새 통계가 필요한지에 대해서 확인을 하는데, 여기서 불필요 하다고 판단하면 통계정보가 생성되지 않는다.
강제로 생성하고 싶다면 다음 옵션을 추가하면 된다.
-f allsel,keep

1-2. Tcode DB20

Tcode : DB20

  • 테이블 통계정보 확인
    Table : <대상 테이블>
    -> 상단 메뉴 Update Info (Ctrl+F1)

  • 테이블 통계정보 생성/갱신
    Table : <대상 테이블>
    -> 상단 메뉴 Create Statistics (Ctrl+F2)

  • 전역 통계 수행
    상단 메뉴 Global Statistics (Ctrl+F5)

1-3. RSANAORA

Program : RSANAORA

-> Table / Index 선택
-> Object : <대상 테이블/인덱스>

-> Function
-> Collect Statistics 선택 후, 실행



2. SAP 주요 테이블에 대한 CBO 통계 구현

주요 스탠다드 테이블에 대해서, SAP 에서 제공하는 통계정보가 있다.

다음 Notes 에서 대상 테이블과 작동방식에 대한 설명을 확인할 수 있다.

SAP Notes 1020260 - Delivery of Oracle statistics (Oracle >= 10g)

해당 통계정보는 시스템에 영구적으로 유지되고, Brconnect 를 이용한 통계정보 생성/갱신에 영향을 받지 않고 고정된다.
(수동으로 해당 테이블에 통계정보를 생성해도, SAP 제공 통계정보가 적용된다.)

Notes 에 따라 통계정보를 적용하기 전 대상 테이블과 하단 주의사항에 대해서 면밀히 검토한 후 적용해야 한다.

특히 다음 사항은 필수로 확인한다.
1. SAP 제공 통계정보 테이블 중, 만약 Customer-specific 수정이 있는 경우 (테이블 컬럼 추가, 인덱스 추가 등등)
2. 모든 고객한테 유용하지 않은 것으로 간주된 특정 테이블에 대한 점검 (VBDATA, VBHDR... 등등)


Notes 제공 통계정보 적용하는 방법

Notes 1020260 의 Attachments statistics.txt 최신 버전을 다운로드 받아 statistics.txt 스크립트 파일을 적용할 서버로 올린다.

다음 명령어를 사용하여 해당 스크립트를 실행한다.

sqlplus /nolog @statistics.txt SAPSR3

만약 SAP 제공 통계정보 적용 후, 문제가 발생하여 통계를 원복해야 한다면, 다음 명령어로 하루 전에 존재했던 통계로 복원할 수 있다.
EXEC DBMS_STATS.RESTORE_TABLE_STATS('<owner>', '<table_name>', SYSDATE - 1);

profile
SAP BC (2019 ~ )

0개의 댓글