PaaS/Data

Oracle의 Segment Advisor 사용하기

armyost 2022. 8. 9. 13:13
728x90

Segment Advisor 란?

- Advisor가 감지한 세그먼트 관련 데이터를 기반한 신뢰성있는 적합성 평가 수행

- 재구성이 필요한 대상을 자동으로 선별해주어 관리효율성 제고

- 선별된 대상에 대해 분석을 수행하고 개선권고 사항까지 도출함으로써 성능개선 계획수립에 활용가능

 

※ 해당 기능은 DB 서버 부하와 같은 운영상의 이유로 Disable 한 경우도 있으니 활성화 되어 있지 않다면 담당자와 협의후 Enable을 진행하기 바람

 

 

1. Auto Segment Advisor 사용

①  auto space advisor(=segment advisor) 활성화 상태 확인

SQL > SELECT CLIENT_NAME, OPERATION_NAME, STATUS FROM DBA_AUTOTASK_OPERATION;
CLIENT_NAME         OPERATION_NAME          STATUS
------------------------------------------------------
auto space advisor  auto space advisor job  DISABLED

 

② auto space advisor 활성화

SQL > EXEC DBMS_AUTO_TASK_ADMIN.ENABLE(client_name=>'auto space advisor', operation=> NULL, window_name=>NULL);

 

③ auto space advisor JOB이 등록되었는지 확인

SQL > SELECT JOB_NAME, SCHEDULE_TYPE, SCHEDULE_NAME FROM DBA_SCHEDULER_JOBS;

 

▼ 수일동안 Advisor가 분석 수행

 

④ auto space advisor 분석 결과 확인

SQL > SELECT TABLESPACE_NAME, SEGMENT_OWNER, SEGMENT_NAME, SEGMENT_TYPE, ALLOCATED_SPACE, USED_SPACE, RECLAIMABLE_SPACE, RECOMMENDATIONS, C1, C2, C3
FROM TABLE(DBMS_SPACE.ASA_RECOMMENDATIONS('FALSE','FALSE','FALSE'))
WHERE SEGMENT_NAME IN ('TABLE1','TABL2'..) // 확인코자하는 TABLE이 있을 경우

 

⑤ 완료 후 auto space advisor 비활성화

SQL > EXEC DBMS_AUTO_TASK_ADMIN.DISFSABLE(client_name=>'auto space advisor', operation=> NULL, window_name=>NULL);

 

 

 

2. Manual하게 Segment Advisor 수행

Auto Segment Advisor를 Enable할 수 없다면 선별된 세그먼트 오브젝트에 대하여 수동으로 Advisor를 적용해본다.

 

1) task 생성

DECLARE
seg_task_id   number;
seg_task_name varchar2(100);
seg_task_desc varchar2(500);
BEGIN
seg_task_name := 'jpkimtest';
seg_task_desc := 'Manual Segment Advisor Run for table TESTTABLE';
dbms_advisor.create_task (
advisor_name => 'Segment Advisor',
task_id      => seg_task_id,
task_name    => seg_task_name,
task_desc    => seg_task_desc);
END;

2) task 정의
※ 주의사항 : attribute는 반드시 대문자 사용

DECLARE
obj_id        number;
BEGIN
dbms_advisor.create_object (
task_name   => 'jpkimtest',
object_type => 'TABLE',          // 분석할 Segment  Type. INDEX 일 수도 있음
attr1       => 'ORACLE',           // OWNER
attr2       => 'TESTTABLE',        // TABLE NAME
attr3       => NULL,
attr4       => NULL,
attr5       => NULL,
object_id   => obj_id);
END;

3) JOB 등록
BEGIN
dbms_advisor.set_task_parameter(
task_name => 'jpkimtest',
parameter => 'recommend_all',
value     => 'TRUE');
END;

4) JOB 실행
exec dbms_advisor.execute_task('jpkimtest');

'PaaS > Data' 카테고리의 다른 글

InfluxDB 설치하기  (0) 2022.10.22
Data Mesh란?  (0) 2022.08.16
ElasticSearch-Filebeat 인덱스 이름 Custom하게 변경  (0) 2022.08.08
ElasticSearch 색인성능 최적화  (0) 2022.07.24
ElasticSearch 운영하기  (0) 2022.07.24