오라클 DB 에서 뭔가 큰테이블을 생성하거나 대량으로 데이터를 Insert 하는 등의 대형작업을 수행할 때,
언제쯤 내 작업이 끝날지, 지금 얼마나 수행되었는지 궁금할때가 있습니다.
이때 확인하는 방법들중에 Realtime SQL Monitor 기능을 이용하는 방법을 살펴보겠습니다.
Realtime SQL Monitor 에 대해서는 예전에 포스팅한게 있으니 참고 바랍니다. >> 여기 클릭 <<
대형작업을 시연하기 위해서 아래와 같이 connect by 문을 이용해서 2천만건의 데이터를 가진 테이블을 만들어보겠습니다.
위 CTAS SQL 문장은 데이터건수도 많지만, 레코드 길이도 lpad() 함수를 써서 매우 길게 만들어집니다.
즉, 대량으로 데이터를 Writing 하는 좀 오래 걸리는 작업 되겄심다~
위 작업이 계속 돌고 있는 상태에서 이 작업이 얼마나 수행되었는지 보기 위해 새로운 창을 띄웁니다.
새로운 SQL Plus 창에서 아래의 스크립트를 수행합니다.
SQL>
set long 1000000 longchunksize 1000000 linesize 1000 pagesize 0
set trim on trimspool on echo off feedback off tab off
set verify off
select dbms_sqltune.report_sql_monitor_list(type=>'TEXT', report_level=>'ALL', active_since_sec=>60) as report from dual;
위 SQL을 실행하면 아래와 같이 현재 실행되고 있는 SQL Text 와 SQL ID 를 확인할 수 있습니다.
SQL Text 를 보고 내가 실행중인 SQL ID 값을 찾는 겁니다.
위에서 찾은 SQL ID 값을 아래 스크립트를 실행하면서 입력해주면 됩니다.
SQL>
set long 1000000
set longchunksize 1000000
set linesize 1000
select DBMS_SQLTUNE.report_sql_monitor(sql_id => '&sql_id', type=>'TEXT' , report_level => 'ALL') from dual;
그러면, 아래처럼 SQL 문, 통계정보, 실행계획 등이 나오는 것을 확인할 수 있습니다.
위 실행계획에 보면 Rows(Actual) 값이 9M 라고 나옵니다. 이건 9백만건을 처리했다는 얘기입니다.
좀 시간을 두고 다시 똑같이 실행해보면 이 값이 점점 늘어나는 것을 확인할 수 있습니다.
이제 12M 이라고 나오네요. 1천2백만건을 처리한 것입니다.
2천만건 중에서 1천2백만건을 처리했으니 반절이상 처리한 것을 확인할 수 있습니다.
이렇게 Realtime SQL Monitoring 기능을 이용하면 쉽게 Long Transaction 의 작업상황을 모니터링 가능합니다.
'IT관련' 카테고리의 다른 글
MS Office 파워포인트 에러 - "프레젠테이션에 저장할 수 없는 글꼴이 있습니다." (0) | 2019.12.11 |
---|---|
Oracle Exadata 에서 Smart Scan 끄고 켰을때 성능 비교 테스트 (0) | 2019.12.09 |
Oracle 무료 DB관리툴 ((EM Express)) - 접속 방법 (0) | 2019.11.29 |
Oracle DB관리툴 "EM Express" 와 "EM Cloud Control" 소개 및 차이 비교 (0) | 2019.11.29 |
Oracle 무료 DB관리툴 2탄 - EM Express 소개 (0) | 2019.11.29 |