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)
'DB > Tibero' 카테고리의 다른 글
[Tibero교육] Tibero Database Administration (0) | 2022.12.07 |
---|---|
[Tibero] MVCC 기능 시나리오 따라하다가 생긴 의문점 (0) | 2022.11.28 |
[Tibero교육] Tibero SQL Developers (1) | 2022.11.24 |
[Tibero교육] Tibero Architecture (0) | 2022.11.23 |
[Tibero] 혼자서 해보는 Tibero 설치하기 (1) | 2022.11.21 |