SAP BRTOOLS 을 사용한 테이블 Reorg__Table Reorg Using SAP BRTOOLS

감귤은탱귤·2024년 1월 8일
0

SAP Oracle DB

목록 보기
2/4
post-thumbnail

✅ brtools 를 사용하는 작업은 ora<SID> 계정 사용

Reorg

테이블 아카이빙 또는 데이터 삭제 이후, 테이블의 할당 크기를 실제 사용량만큼으로 줄여주는 작업.

주기적인 Reorg 로 낭비되는 용량을 회수한다면 테이블스페이스 여유공간 확보에 도움이 된다.

옵션에 따라서 테이블스페이스 전체를 Reorg 하거나, 각 테이블 별로 Reorg 를 할 수 있다.

또한 BRTOOLS 를 사용한 Reorg 는 Online Reorg 로, Reorg 마지막 테이블 스위칭하는 순간을 제외하면 Reorg 중에도 테이블 엑세스가 가능하다.
(만약 해당 테이블 lock 이 걸려 있다면, 테이블 스위칭을 대기하다가, lock 이 풀리면 스위칭한다.)

Brtools 를 사용한 Reorg 는 대상 테이블을 변환 테이블(임시 테이블) QCM 테이블로 새로 만들고, 기존 테이블 삭제 후, QCM 테이블을 기존 테이블 이름으로 Rename 한다.

Reorg 시 테이블 필드 데이터 유형이 LOB(CLOB, BLOB 등), LONG RAW(LRAW), LONG 이 있을 경우, Reorg 효율이 안나오기 때문에 해당 테이블은 제외하고 수행하는것이 좋다.

Reorg 대상이 되는 테이블은
1. 데이터 insert, delete 가 많은 테이블
2. 데이터 대비 테이블의 HWM 가 높은 테이블
이번 글은 2번을 대상으로 Reorg 를 수행한다.

1. Tablespace 사용량 확인

brtools
-> 2. Space management
-> 7. Additional space functions
-> 1. Show Tablespaces

2. Reorg 대상 테이블 선정을 위한 SQL 검색

sqlplus "/as sysdba"

SQL>

SELECT table_name, blocks*8192/1024/1024 TOTAL_MB, num_rows*avg_row_len/1024/1024 USED_MB, (num_rows*avg_row_len)/(blocks*8192)*100 USED_PCT
FROM dba_tables
WHERE owner = 'SAPSR3' and tablespace_name = 'PSAPSR3' and num_rows*avg_row_len != 0 and blocks > 1000 and blocks > 100*1024*1024/8192
ORDER BY 4 desc;

PSAPSR3 Tablespace 에서 HWM 대비 Used Percentage 계산 테이블 리스트

SQL 출력물 리스트에서 USED_PCT 값에 따라 Reorg 대상 테이블을 선정하면 된다.

위에 상기했듯이 대상 테이블들의 필드를 확인하여 데이터 유형이 LOB, LONG 타입이 있는지 확인하여, 해당 데이터 유형이 있다면 Reorg 에서 제외하는 것이 좋다.

3. BRTOOLS Reorg 수행 (GUI)

brtools
-> 3. Sagment management
-> 1. Reorganize tables
-> 3. Reorganization action
-> "Reorg"
-> 6. Table names
-> "Reorg 대상 테이블 이름 입력"

이후 Continue(c) 를 입력하면 테이블 Reorg 진행
Reorg 종료 후, 결과 메세지 Successful 확인

BRTOOSL Reorg 수행 결과는 다음 파일에서도 확인가능하다.
/oracle/<SID>/sapreorg/spacePRD.log
(tbr / tbreorg)

4. BRTOOLS Reorg 수행 (Command)

Brtools 의 brspace 명령어를 이용해, 한 줄의 명령어로도 Reorg 수행이 가능하다.

3번의 GUI 수행을 명령어로 바꾸면 다음과 같다.
brspace -f tbreorg -s PSAPSR3 -t <Reorg 대상 테이블 이름> -c

brspace 명령어의 옵션은 다음과 같다. (주요 옵션)
-f : 수행 펑션 (Reorg 의 경우 tbreorg)
-a : Action 명
-s : Tablespace 명
-o : Owner 명
-t : 테이블 명
-c : 강제 Confirm (중간에 입력 없이 실행)
-p : 병렬 프로세스 (한번에 돌릴 Reorg 프로세스 수, 없다면 Default 1)

  • 명령어를 사용한 Reorg 수행 예시
  1. PSAPSR3 Tablespace 모든 테이블 Reorg 수행 (병렬 프로세스 20개 할당)
    brspace -f tbreorg -s PSAPSR3 -t "*" -p 20 -c

❗❗❗❗ 모든 테이블에 대해서 Reorg 를 수행할 경우, 엄청난 Archive Log 가 떨어지게 되므로, 모든 테이블 Reorg 를 수행하기 전, 반드시 No Archive Log 모드로 변경하고 수행하거나, 수시로 Archive Log 폴더가 가득차지 않도록 Log 를 삭제해줘야 한다. (또는 crontab 으로 삭제 스크립트 수행)

  1. ZTEST 테이블에 대해서 Reorg 수행
    brspace -f tbreorg -t ZTEST

  2. ZTEST1, ZTEST2, ZTEST3 테이블에 대해서 Reorg 수행 (병렬 프로세스 3개 할당)
    brspace -f tbreorg -t ZTEST1,ZTEST2,ZTEST3 -p 3

5. Reorg 강제 종료 시, Cleanup

SAP Notes 2128162 - Errors due to terminated reorganization

BRTOOLS Reorg 작업이 오류 혹은 사용자가 강제 종료할 시, 수행 중 생기는 여러 임시 객체를 강제로 제거해줘야 한다.

이때, Action Cleanup 을 사용하여, 이러한 임시 객체들을 강제 제거가 가능하다.

  • 모든 Reorg 작업 Cleanup
    brspace -f tbreorg -t "*" -a cleanup

  • 개별 테이블 ZTEST1 Cleanup
    brspace -f tbreorg -t ZTEST1 -a cleanup

profile
SAP BC (2019 ~ )

0개의 댓글