본문 바로가기

DB/Tibero

[Tibero] Operating GuideFor Beginner

1. Overview

본 문서는 티베로를 처음 접하는 사용자가 티베로 설치 후 확인 및 운영에 필요한 기본적인 내용을 담고 있다. 기능에 대한 자세한 내용은 매뉴얼을 참조한다.

 

2. Tibero Configuration

 

2.1 Environment

 

OS 사용자 계정에 대한 환경 구성 파일(.bashrc, .bash_profile, .profile 등)이 있다. 티베로를 위한 환경변수를 포함하고 있다.

Item Description Script
TB_HOME Tibero Engine Path $ echo $TB_HOME
TB_SID Tibero Instance Name $ echo $TB_SID
.profile OS User Configuration File $ cat ~/.bash_profile (.profile)

Note

For the detailed information, refer to Tibero_Installation_Guide.

 

2.2 Tibero Initialization Parameter

 

"Tibero Initalization Parameter(.tip)"은 데이터베이스 환경 파일이다. "Key=value"으로 Tibero 파라메터가 구성된다.

TIP(Tibero Initialization Parameter) Description
DB_NAME DataBase의 고유 이름을 지정
LISTENER_POR Client 접속에 사용할 Port를 지정
CONTROL_FILES DataBase의 메타정보를 갖고 있는 Controlfile 경로 지정
DB_CREATE_FILE_DEST DataBase에서 생성되는 파일들이 생성되는 Default 경로 지정
LOG_ARCHIVE_DEST Archivelog가 생성되는 경로 지정
MAX_SESSION_COUNT 최대 동시 접속 가능 수
TOTAL_SHM_SIZE DataBase에서 사용할 공유메모리 크기 설정
MEMORY_TARGET DataBase에서 사용할 전체 메모리 크기 설정

Note

For the detailed information, refer to Tibero_Reference_Guide.

 

2.3 System files

 

Tibero가 NORMAL MODE 상태까지 기동 되기 위한 SYSTEM 관련 파일들을 말한다. Tibero가 설치가 완료되면 CONTROLFILE, SYSTEM, UNDO, SYSSUB, USR, TEMP, REDOLOG, .passwd 파일들이 기본적으로 구성된다. 정상적으로 티베로가 기동된 상태에서 SQL 명령어로 위치 및 정보를 확인할 수 있다.

Item Description Script
Controlfile 데이터베이스 자체의 메타데이터를 보관하고 있는 바이 너리 파일 SQL> select * from v$controlfile;
Datafiles SYSTEM : Data Dictionary(Meta Data) 정보가 들어있는 테이블스페이스

UNDO : commit/rollback을 위한 테이블스페이스

SYSSUB : TPR용 테이블스페이스

USR : 일반 유저 테이블스페이스(기본생성)
SQL> select *
from dba_data_files
where tablespace_name in ('SYSTEM','UNDO','SYSSUB','USR')
order by tablespace_name;
Tempfiles 메모리 가용 공간이 부족할 때 swap 용도로 사용하는 테이블스페이스 SQL> select * from dba_temp_files;
Redo Log 데이터베이스에서 발생하는 모든 변경내용을 저장하는 Log파일 SQL> select * from v$log;
SQL> select * from v$logfile;
.passwd nomount 와 mount 모드로 부트시 인증에 사용 DB_CREATE_FILE_DEST 에 위치

# Controlfile

# SYSTEM Datafiles

# SYSTEM Tempfiles

# RedoLog files

# .passwd

Note

For the detailed information, refer to Tibero_Administrator's_Guide.

 

2.4 Tibero Instance Logs

 

Tibero가 설치 되면 기본적으로 $TB_HOME/instance/$TB_SID/log 디렉토리에 로그들이 생성된다. 파라메터(tip)를 통 해서 위치를 바꿀 수 있다.

File Remark
slog 디버깅을 위한 파일이다. 서버가 하는 중요한 일이 기록되는 파일이며, 서버 성능이 저하되는 원인을 찾거나 Tibero 자체의 버그를 해결하는 데 사용될 수 있다.
dlog 시스템 로그 파일에 기록되는 정보보다 좀 더 중요한 정보가 기록되는 파일이며, 서버 기동 및 종류, DDL 문장의 수행 등이 기록되는 파일이다.
Ilog 스레드별로 설정된 이벤트에 대한 시스템 로그가 기록되는 파일이며, Internal 로그를 보려면 tbv를 이용해야 한다.
lsnr Listener의 디버깅을 위한 파일이다. 리스너에서 일어난 중요한 일이 기록되는 파일이며, 리스너의 버그를 해결하는 데 사용될 수 있다.

# Location : $TB_HOME/instance/$TB_SID/log

Note

For the detailed information, refer to Tibero_Administrator's_Guide.

 

3. Tibero Client Connection

 

3.1 tbsql

Tibero에서 제공하는 SQL 문장을 처리하는 대화형 유틸리티이다.

 

# No alias defaults to TB_SID

# tbdsn.tbr alias usage

Note

For the detailed information, refer to Tibero_Utility_Guide.

 

3.2 tbdsn.tbr

 

Client에서 Tibero 서버에 접근하기 위한 접속 정보를 설정하는 환경파일이다.

Parameter Description
HOST 서버의 IP 주소
PORT 서버의 포트번호
DB_NAME 데이터베이스 이름

# Location : $TB_HOME/client/config/tbdsn.tbr

Note

For the detailed information, refer to Tibero_Administrator's_Guide.

 

4. Tibero Process Startup & Shutdown

 

티베로 기동과 종료 절차이다. 티베로는 Single / TAC / TSC 로 구성이 가능하며 각각의 구성방식에 따라 기동/종료 절차가 다르다. 각자의 구성에 맞는 기동 방법을 확인해야한다. 다양한 기동/다운 옵션 및 설명은 매뉴얼을 참고한다.

 

Note

For the detailed information, refer to

Tibero_Administrator's_Guide, Tibero_Active Storage_Guide.

 

4.1 Single

하나의 Instance 로 구성된 DB 이다

1) Startup

순서 스크립트
1 Tibero $ tbboot

2) Shutdown

순서 스크립트
1 Tibero $ tbdown immediate

 

4.2 TAC

하나의 Database 에 복수의 Instance 로 구성된 DB 이다. TAS(Tibero Active Storage)를 쓰는 경우와 아닌 경우로 나눠진다.

 

4.2.1 without TAS

1) Startup

순서 스크립트
1 Cluster Manager $ tbcm –b
2 Tibero $ tbboot

# Node1

# Node2

2) Shutdown

순서 스크립트
1 Cluster Manager $ tbcm –d
2 Tibero $ tbdown immediate

# Node1

# Node2

4.2.2 Using TAS

1) Startup

순서 케이스 스크립트
1 CM Common $ tbcm –b
2 TAS cmrctl 사용 $ cmrctl start as --name <AS1_Name>
Tibero
command 사용
$ export TB_SID= <AS1_Name>
$ tbboot
Remote
other nodes
$ cmrctl start as --name <AS2_Name> --remote <CM2_SID>@<Cluster_Name>
3 TAC cmrctl 사용 $ cmrctl start db --name <DB1_Name>
Tibero
command 사용
$ export TB_SID= <DB1_Name>
$ tbboot
Remote
other nodes
$ cmrctl start db --name <DB2_Name> --remote <CM2_SID>@<Cluster_Name>

# Node1

# Common

# Case 1 Using cmrctl command

# Case 2

# Case 3 Remote boot other nodes

# Node2

 

# Common

# Case 1 Using cmrctl command

# Case 2

2) Shutdown

순서 케이스 스크립트
1 TAC cmrctl 사용 $ cmrctl stop db --name <DB1_Name>
Tibero
command 사용
$ export TB_SID= <DB1_Name>
$ tbdown immediate
Remote
other nodes
$ cmrctl stop db --name <DB2_Name> --remote
<CM2_SID>@<Cluster_Name>
2 TAS Cmrctl 사용 $ cmrctl stop as --name <AS1_Name>
Tibero
command 사용
$ export TB_SID= <AS1_Name>
$ tbdown immediate
Remote
other nodes
$ cmrctl stop as --name <AS2_Name> --remote
<CM2_SID>@<Cluster_Name> 
3 CM Common $ tbcm –d

# Node1

# Case 1 Using cmrctl command

# Case 2

# Case 3 Remote down other nodes

# Common

# Node2

# Case 1 Using cmrctl command

# Case 2

# Common

4.3 SSVR+TAS+TAC

 

SSVR 로 구성되어 있을 경우 기동/종료 순서이다.

1) Startup

순서 케이스 스크립트
1 SSVR Common $ tbboot mount ( * 1..n )
2 CM Common $ tbcm –b
3 TAS Cmrctl 사용 $ cmrctl start as --name <AS1_Name>
Tibero
command 사용
$ export TB_SID= <AS1_Name>
$ tbboot
Remote
other nodes
$ cmrctl start as --name <AS2_Name> --remote
<CM2_SID>@<Cluster2_Name>
4 TAC Cmrctl 사용 $ cmrctl start db --name <DB1_Name>
Tibero
command 사용
$ export TB_SID= <DB1_Name>
$ tbboot
Remote
other nodes
$ cmrctl start db --name <DB2_Name> --remote
<CM2_SID>@<Cluster_Name>

# SSVR1..n 만큼 Startup 수행.

# 4.2.2 Using TAS 1) Startup 절차 수행

 

3) Shutdown

순서 케이스 스크립트
1 TAC Using cmrctl $ cmrctl stop db --name <DB1_Name>
Tibero
command
$ export TB_SID= <DB1_Name>
$ tbdown immediate
Remote
other nodes
$ cmrctl stop db --name <DB2_Name> --remote <CM2_SID>@<Cluster_Name> 
2 TAS Using cmrctl $ cmrctl stop as --name <AS1_Name>
Tibero
command
$ export TB_SID= <AS1_Name>
$ tbdown immediate
Remote
other nodes
$ cmrctl stop as --name --remote <CM2_SID>@<Cluster_Name>
3 CM Common $ tbcm –d
4 SSVR Common $ tbdown immediate

example

4.4 TSC

Tibero Standby Cluster로 구성되어 있을 때 기동/종료 순서이다. Standby 서버가 recovery 모드로 실제 운영이 될 Active 서버보다 먼저 기동되야한다.

 

1) Startup

순서 스크립트
1 Standby $ tbboot recovery
SQL> alter database open read only continue recovery;
2 Active $ tbboot

example

2) Shutdown

순서 스크립트
1 Active $ tbdown immediate
2 Standby $ tbdown immediate

example

4.5 Startup Error

 

비정상 종료 이력이 있는 경우, 다음 같은 메시지가 발생할 수 있다. 아래 절차로 수행하면 기동할 수 있다.

5. Tibero Monitoring

 

티베로를 모니터링할 수 있는 쿼리 및 Command 이다.

Note

For the detailed information, refer to Tibero_Reference_Guide(Data Dictionary)

 

5.1 Instance/Database Info

Column Description
Instance Name 노드 별 인스턴스 이름
Database Name 데이터베이스 이름
Version 티베로 버전 정보
Status 데이터베이스 OPEN Mode
NLS Character 캐릭터셋 정보(NLS_CHARACTERSET/NLS_NCHAR_CHARACTERSET)
Log Mode 로그 모드(NOARCHIVELOG/ARCHIVELOG)
DB Create Time DB 생성 시간
DB Uptime DB 가동 시간

example

set linesize 160

col "Instance Name" format a15
col "Database Name" format a15
col "Version" format a24
col "Status" format a12
col "NLS Character" format a20
col "Log Mode" format a13
col "DB Create Time" format a20
col "DB Uptime" format a15

select i.instance_name "Instance Name"
 , d.name "Database Name"
 , v.vv "Version"
, d.open_mode "Status"
 , c.cc "NLS Character"
 , d.log_mode "Log Mode"
 , to_char(d.create_date,'YYYY/MM/DD HH24:MI:SS') "DB Create Time"
 , floor(xx)||'d '||floor((xx-floor(xx))*24)||'h '||floor( ((xx - floor(xx))*24 -
floor((xx-floor(xx))*24) )*60 )||'m' as "DB Uptime"
from v$database d
 , ( select instance_name, (sysdate-startup_time) xx
 from v$instance
 ) i
 , ( select aggr_concat(value, ' ') vv
 from v$version
 where name in ('PRODUCT_MAJOR', 'PRODUCT_MINOR', 'BUILD_NUMBER',
'STABLE_VERSION')
 ) v
 , ( select aggr_concat(value, '/') cc
 from _dd_props
 where name in ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET')
 ) c;

5.2 Memory Info

 

Memory 영역 모니터링은 데이터베이스 성능과 밀접한 연관을 가진다. 대표적으로 악성 sql 로 인해 불필요한 Disk I/O 가 많이 발생된다면 메모리 재 사용률은 떨어지게 되고 DB 전체 성능이 안좋아진다. 그 결과 낮은 Hit Ratio 결과로 보여질 것이다. 성능 진단 6.1 TPR 또는 5.7 Top SQL Info 를 통해 문제되는 sql 을 찾아 Tunning 함으로 DB 전체의 성능을 향상시킬 수 있다.

 

5.2.1 Tibero Memory Info

Name Description
MEMORY_TARGET 인스턴스가 사용 가능 메모리 최대값
TSM/SGA(Used) 인스턴스에서 사용하는 공유 메모리 값
PGA(Allocated) 할당되어 진 PGA(세션단위로할당) 메모리 총 값
PGA(Used) 사용 중 인 PGA 메모리 총 값

example

set linesize 130

select name, round(value/1024/1024, 2) "Size(MB)"
from v$parameters
where name = 'MEMORY_TARGET'
union all
select 'TSM/SGA(Used)' name, round(sum(used)/1024/1024, 2) "Size(MB)"
from v$sga
where name in ('FIXED MEMORY', 'SHARED POOL MEMORY')
union all
select 'PGA(Allocated)' name, round(sum(value)/1024/1024, 2) "Size(MB)"
from v$pgastat
where name in ('FIXED pga memory', 'ALLOCATED pga memory')
union all
select 'PGA(Used)' name, round(value/1024/1024, 2) "Size(MB)"
from v$pgastat
where name = 'USED pga memory (from ALLOCATED)';

5.2.2 Buffer Hit Ratio

Item Description
Database Buffer 데이터를 메모리에서 처리 한 확률 수치이며, 통상적으로 90% 이상이 정상이나 업무 특성 및 시점(batch수행)에 따라 낮을 수 있다.

example

set linesize 132
set feedback off

col "Time" format a19

SELECT TO_CHAR(sysdate,'yyyy/mm/dd hh24:mi:ss') "Time"
,"Physical read"
 ,"Logical read"
 ,"Hit"
 ,CASE WHEN "Hit" > 90 then 'Good'
 WHEN "Hit" between 70 and 90 then 'Average'
 ELSE 'Not Good'
 END as "Status"
FROM
(
SELECT pr1.value + pr2.value "Physical read"
 ,bg1.value + bg2.value + bg3.value "Logical read"
 ,ROUND( (1 - (pr1.value + pr2.value) / (bg1.value + bg2.value + bg3.value) ) *
100, 2) "Hit"
FROM v$sysstat pr1, v$sysstat pr2,
 v$sysstat bg1 , v$sysstat bg2 , v$sysstat bg3
WHERE pr1.name = 'block disk read'
 and pr2.name = 'multi block disk read - blocks'
 and bg1.name = 'consistent block gets'
 and bg2.name = 'consistent multi gets - blocks'
 and bg3.name = 'current block gets' 
);

5.2.3 Shared Cache Hit Ratio

Item Description
SQL(Library) Cache 사용자가 문장을 수행할 때 SQL 과 Parse Tree, Plan 등을 저장하여 공유하는 메모 리 공간이며, 통상적으로 90% 이상이 정상이나 업무 특성을 고려하여 모니터링 하여야 한다.
Dictionary Cache SYSTEM TABLESPACE 에 저장되어 있는Data Dictionary 정보가 Shared Pool 에 상 주하는 부분으로 Tibero 데이터베이스에 저장된 모든 객체 및 이와 관련된 정보들 을 저장하는 시스템 테이블들이 로딩되는 영역이다. 유저가 실행한 SQL 문장을 파 싱 할 때 Syntax 와 접근 권한 등을 체크 하면서 참조 되고 공유하는 내용이기 때 문에 Shared Pool 영역에 저장된다. 다음에서 Hit 율이 95% 이하이면 Shared Pool 사이즈를 늘려 줘야만 한다.

example

set linesize 132
set feedback off

col "Time" format a19

SELECT TO_CHAR(sysdate,'yyyy/mm/dd hh24:mi:ss') AS "Time"
 , 'SQL(Library) Cache' AS "Name"
 , hit AS "Hit(%)"
 , CASE WHEN hit > 90 then 'Good'
 WHEN hit between 70 and 90 then 'Average'
 ELSE 'Not Good'
 END AS "Status"
FROM ( SELECT gethitratio AS hit
 FROM v$librarycache
 WHERE namespace= 'SQL AREA' )
UNION ALL
SELECT TO_CHAR(sysdate,'yyyy/mm/dd hh24:mi:ss') AS "Time"
 , 'Dictionary Cache' AS "Name"
 , hit AS "Hit(%)"
 , CASE WHEN hit > 90 then 'Good'
 WHEN hit between 70 and 90 then 'Average'
 ELSE 'Not Good'
 END AS "Status"
FROM ( SELECT ROUND((1- sum(miss_cnt)/(sum(hit_cnt+miss_cnt)))*100, 2) AS hit
 FROM v$rowcache );

5.3 Tablespace Usage Info

 

테이블스페이스가 Full 이 되는 상황을 방지하도록 점검하여 Free Space 사이트 정책 기준 이하일 경우 Datafile 을 추가하도록 한다.

Column Description
Tablespace Name 테이블스페이스 이름
Bytes(MB) 할당 용량
Used(MB) 사용한 용량(MB)
Percent(%) 사용한 용량(%)
Free(MB) 남아있는 용량(MB)
Free(%) 남은 용량(%)
MaxBytes(MB) 최대 늘어날 수 있는 용량(MB)

example

set linesize 150
set pagesize 100

col "Tablespace Name" format a20
col "Bytes(MB)" format 999,999,999
col "Used(MB)" format 999,999,999
col "Percent(%)" format 9999999.99
col "Free(MB)" format 999,999,999
col "Free(%)" format 9999.99
col "MaxBytes(MB)" format 999,999,999

SELECT ddf.tablespace_name "Tablespace Name",
 ddf.bytes/1024/1024 "Bytes(MB)",
 (ddf.bytes - dfs.bytes)/1024/1024 "Used(MB)",
 round(((ddf.bytes - dfs.bytes) / ddf.bytes) * 100, 2) "Percent(%)",
 dfs.bytes/1024/1024 "Free(MB)",
 round((1 - ((ddf.bytes - dfs.bytes) / ddf.bytes)) * 100, 2) "Free(%)",
 ROUND(ddf.MAXBYTES / 1024/1024,2) "MaxBytes(MB)"
FROM
(SELECT tablespace_name, sum(bytes) bytes, sum(maxbytes) maxbytes
 FROM dba_data_files
 GROUP BY tablespace_name) ddf,
(SELECT tablespace_name, sum(bytes) bytes
 FROM dba_free_space
 GROUP BY tablespace_name) dfs
WHERE ddf.tablespace_name = dfs.tablespace_name
ORDER BY ((ddf.bytes-dfs.bytes)/ddf.bytes) DESC;

5.4 Object Info

 

5.4.1 Total Object

Column Description
OWNER 오브젝트 소유 유저
OBJECT_TYPE 오브젝트 종류
COUNT 오브젝트 종류 별 합계

example

set linesize 132
set pagesize 100

col "OWNER" format a20

SELECT owner "OWNER"
, object_type "OBJECT_TYPE"
, count(*) "COUNT"
FROM dba_objects
GROUP BY owner, object_type
ORDER BY owner, object_type;

5.4.2 Invalid Object

Column Description
OWNER 오브젝트 소유 유저
Object type 오브젝트 종류
Object name 오브젝트 이름
Status 오브젝트 상태
Last DDL Time 마지막 DDL 시간

example

set linesize 132
set pagesize 100

col "Owner" format a20
col "Object name" format a50
col "Last DDL Time" format a19

SELECT owner "OWNER"
, object_type "Object type"
, object_name "Object name"
, status "Status"
, to_char(last_ddl_time, 'YYYY-MM-DD HH24:MI:SS') "Last DDL Time"
FROM dba_objects
WHERE status = 'INVALID'
AND object_type != 'SYNONYM'
ORDER BY owner, object_type, object_name, status;

5.5 Session Info

 

5.5.1 Sql Information

 

DBMS_XPLAN Package 를 통해 plan 을 확인할 수 있다.

Package Command
DBMS_XPLAN SQL> set pagesize 120
SQL> set lines 200
SQL> set pages 0
SQL> select * from table(dbms_xplan.display_cursor(<sql_id>,<sql_child_number>,'ALL'));

example

set pagesize 120
set lines 200
set pages 0

select * from table(dbms_xplan.display_cursor('2pq5dar43cfwv',2284,'ALL'));

 

Note

For the detailed information, refer to Tibero_tbPSM_Reference_Guide.

 

5.5.2 Current Session

example

set lines 160

col "Inst_ID" format 999999
col "Sid,Serial" format a10
col "Username" format a14
col "Status" format a10
col "Ipaddr" format a15
col "Logon_Time" format a18
col "Program" format a17
col SQL_ID for A24

SELECT * FROM
(
SELECT inst_id "Inst_ID"
      ,sid || ',' ||serial# "Sid,Serial"
      ,username "Username"
      ,status "Status"
      ,ipaddr "IPaddr"
      ,to_char(logon_time,'yy/mm/dd hh24:mi:ss') "Logon_Time"
      ,prog_name "Program"
      --,NVL(sql_id, prev_sql_id) "SQL_ID"
      ,NVL(sql_id, prev_sql_id) || '/' || NVL2(sql_id, sql_child_number,
prev_child_number) "SQL_ID"
      ,client_pid "Client_Pid"
      ,pid "Wthr_Pid"
      ,wthr_id "Wthr_Id"
FROM gv$session
ORDER BY inst_id, sid
)
UNION ALL
SELECT null
     , '[Run: ' || sum(decode(status, 'RUNNING', cnt, 0)) || ']'
     , '[Tot: ' || sum(cnt) || ']'
     ,null ,null ,null ,null ,null ,null ,null, null
FROM
(select status
     , count(*) cnt
     from gv$session
     group by status);

5.6 Lock Info

 

5.6.1 Current Lock Info

example

set linesize 200
set pagesize 50

col "User" format a15
col "Sid" format 9999
col "Object" format a35
col "Status" format a8
col "Lock_time" format a15
col "Lock mode" format a15
col "SQL_ID" for a40

SELECT s.sess_id "Sid"
      ,s.status "Status"
      ,s.user_name "User"
      ,o.owner|| '.' ||o.object_name "Object"
      ,FLOOR((sysdate - vt.start_time)*24) || ':'||
        LPAD(FLOOR(MOD((sysdate - vt.start_time)*1440, 60)),2,0) ||':'||
        LPAD(FLOOR(MOD((sysdate - vt.start_time)*86400,60)),2,0) AS "Lock_time"
      ,DECODE(lmode, 0, '[0]', 1, '[1]Row-S(RS)', 2, '[2]Row-X(RX)', 3, '[3]Shared(S)',
4, '[4]S/Row-S(SRX)', 5, '[5]Exclusive(X)', 6, '[6]PIN', TO_CHAR (lmode) ) "Lock mode"
    --,NVL(s.sql_id, s.prev_sql_id) "SQL_ID"
      ,NVL(s.sql_id, s.prev_sql_id) || '/' || NVL2(s.sql_id, s.sql_child_number,
s.prev_child_number) "SQL_ID"
FROM vt_wlock l,
    vt_session s,
    dba_objects o ,
    vt_transaction vt
WHERE l.type='WLOCK_DML'
  AND l.sess_id = s.vtr_tid
  AND l.id1 = o.object_id (+)
  AND l.sess_id = vt.sess_id order by "Lock_time" DESC;

5.6.2 Hierarchical Lock Info(TAC)

example

set linesize 150
set pagesize 100

col "Sid-Path" for a50

alter session set _inline_with_query=n;

with ttl as (select * from gv$lock, dual)
select path "Sid-Path"
      --, lev "Level"
      --, isleaf
      , type
      , id1
      , id2
      , lmode
      , requested
from (
select substr(sys_connect_by_path('('||nvl(inst_id, 0)||')'||sess_id, '/'), 2) path
      ,level lev
      --,connect_by_isleaf as isleaf
      --,connect_by_iscycle as iscycle
      , l.*
from ttl l
start with lmode > 0 and requested =0
connect by
        prior type = type
        and prior id1 = id1
        and prior id2 = id2
        and prior requested != requested
        --and prior nvl(inst_id,0)||prior sess_id != nvl(inst_id, 0)||sess_id
and requested > 0
 and level < 3
--order siblings by thr_id
) t
where lev = 2
order by type, path;

5.7 Top SQL Info

Case 별 Top sql 을 추출해서 개선할 여지가 있는지 확인한다.

 

5.7.1 Top 10 SQL Ordered by Elapsed Time

example

set linesize 150

col USERNAME for A20
col MODULE for A30
col "SQL_ID" for A30

select * from
(
select (select username from all_users where user_id = PARSING_USER_ID ) USERNAME,
                                                 round(ELAPSED_TIME/1000000,3) as
"Elapsed_Time(s)",
       EXECUTIONS,
       round(BUFFER_GETS/EXECUTIONS,3) "Gets/Exec",
       round(ELAPSED_TIME/EXECUTIONS/1000,3) as "Elap/Exec(ms)",
       MODULE "MODULE",
       sql_id|| '/' || child_number "SQL_ID"
from v$sql
where ELAPSED_TIME > 0
and EXECUTIONS > 0
order by 2 desc
) where rownum <=10;

5.7.2 Top 10 SQL Ordered by gets

example

set linesize 150

col USERNAME for A20
col MODULE for A30
col "SQL_ID" for A30

select * from
(
select (select username from all_users where user_id = PARSING_USER_ID ) USERNAME,
 BUFFER_GETS,
 EXECUTIONS,
 round(BUFFER_GETS/EXECUTIONS,3) "Gets/Exec",
 round(ELAPSED_TIME/1000000,3) "Elapsed_Time(s)",
 MODULE "MODULE",
 sql_id|| '/' || child_number "SQL_ID"
from v$sql
where ELAPSED_TIME > 0
and EXECUTIONS>0
--and rownum <=10
order by 2 desc
) where rownum <=10;

5.7.3 Top 10 SQL Ordered by Elap/Exec(ms)