✅ brtools 를 사용하는 작업은
ora<SID>
계정 사용
테이블 아카이빙 또는 데이터 삭제 이후, 테이블의 할당 크기를 실제 사용량만큼으로 줄여주는 작업.
주기적인 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 를 수행한다.
brtools
-> 2. Space management
-> 7. Additional space functions
-> 1. Show Tablespaces
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 에서 제외하는 것이 좋다.
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)
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)
brspace -f tbreorg -s PSAPSR3 -t "*" -p 20 -c
❗❗❗❗ 모든 테이블에 대해서 Reorg 를 수행할 경우, 엄청난 Archive Log 가 떨어지게 되므로, 모든 테이블 Reorg 를 수행하기 전, 반드시 No Archive Log 모드로 변경하고 수행하거나, 수시로 Archive Log 폴더가 가득차지 않도록 Log 를 삭제해줘야 한다. (또는 crontab 으로 삭제 스크립트 수행)
ZTEST 테이블에 대해서 Reorg 수행
brspace -f tbreorg -t ZTEST
ZTEST1, ZTEST2, ZTEST3 테이블에 대해서 Reorg 수행 (병렬 프로세스 3개 할당)
brspace -f tbreorg -t ZTEST1,ZTEST2,ZTEST3 -p 3
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