Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

DBDBDEEP

Tibero Monitoring (tm 사용) 본문

Tibero 이론

Tibero Monitoring (tm 사용)

Kihwane 2022. 11. 15. 16:08

데이터 딕셔너리 (Data Dictionary)

 

- 데이터 사전은 데이터베이스 관리 시스템을 효율적으로 사용하기 위해 데이터베이스에 저장된 정보를 요약한 것.

즉, 일련의 메타데이터이다.

- SQL 명령이 실행 될 때 마다 데이터 사전은 Access 된다.

- 데이터 사전은 자동 갱신되고 Database 구조, 감사, 사용자 권한 등의 변경사항을 반영한다.

데이터 사전에 저장되는 정보

 

1. 데이터베이스 스키마 객체 (Table , View, Index, Cluster, Synonym 등)

2. 프로시저와 함수 및 트리거, 패키지에 대한 정보

3. 유저, 권한, 롤 등의 사용자 정보

4. 기본 키, 외래 키 등의 데이터 무결성 제약정보등

5. 일반적인 DATABASE 정보..

 

데이터 사전 구성

1. 기반 테이블 (Base Table)

2. 정적 (Static View)

3. 동적 뷰 (Dynamic View)

 

1. 기반 테이블

- 중복된 데이터를 제거하는 정규화 과정을 거친 테이블.

- SYS 스키마에 위치하고 있음

- 데이터베이스 사용자는 정적/동적 뷰를 이용하여 기반 테이블의 내용을 참조하도록 한다.

 2. 정적뷰

- 하나 이상의 기반 테이블과 다른 정적/동적 뷰를 기반으로 정의 된 뷰.

- 기반 테이블과 정적/동적 뷰 간의 조인을 하여 생성된다.

 

설명
DICTIONARY 또는 DICT 데이터 사전의 정보를 보여줌 (데이터 사전 목록조회)
DICK_COLUMS 데이터 사전의 컬럼 정보 보여줌
ALL_/USER_/DBA_     OBJECTS 객체
ALL_/USER_/DBA_     TABLES 테이블
ALL_/USER_/DBA_     TAB_PRIVS 테이블 권한
ALL_/USER_/DBA_     CONSTRAINTS 제약조건
ALL_/USER_/DBA_     SYS_PRIVS 시스템 권한
ALL_/USER_/DBA_     ERRORS 코드 에러
ALL_/USER_/DBA_     SOURCE 프로시저,함수,패키지
ALL_/USER_/DBA_     TRIGGERS 트리거

 

3. 동적 뷰

- 동적으로 변경되는 데이터를 테이블 형태로 보여주는 뷰

- 세션, 프로세스, 트랜잭션 정보 등의 동적 데이터는 디스크에 저장안된다. 

  실시간으로 동적 뷰 사용할 때마다 테이블 형태로 생성

 

v$, gv$ : 다이나믹 퍼포먼스 뷰 라고 하며, 현재 Database 상태에 관한 정보 등 DBA의 모니터링 작업용 정보를 제공

 

v$ : 일반적인 동적 성능 뷰, 접속한 인스턴스의 정보를 보여줌

gv$ : 클러스터링 환경에서의  동적 성능 뷰,  인스턴스의 정보를 보여줌. 또한 각각의 인스턴스 마다 v$를 수행하여 그

        결과를 보여줌.

 

설명
V$SESSION 세션 정보
V$SESSION_WAIT 세션의 현재 대기 상태에 대한 정보
V$SESSTAT 시스템의 현재 시점까지의 통계별 누적 정보
V$SYSTEM_EVENT 대기 이벤트별 누적 정보
V$PROCESS 프로세스 정보
V$SQLAREA 부모 커서 정보
V$SQL 자식 커서 정보  
V$LATCH 래치별 누적 획득 정보
V$LOCK 현재 시점의 락 획득과 대기정보
V$ROWCACHE 딕셔너리 캐시에 대한 누적 통계 정보
V$LIBRARYCACHE 라이브러리 캐시에 대한 누적 통계 정보

 

SQL> select * from v$session;

\

 

 

 


 

 

Tibero Parameter File

Instance를 시작하기 위해서는 Tibero은 반드시 Parameter file($TB_SID.tip)을 읽는다.

기본으로 TSM에 있는 Memory 구성을 얼마로 할 것인지 Setting이 필요하게 된다.

Control file의 위치와 이름


TIP 파일

 

DB_NAME=tibero
LISTENER_PORT=8629
CONTROL_FILES="/tibero/examples/tbdata/single/t6/c1.ctl","/tibero/examples/tbdata/single/t6/c2.ctl"
DB_CREATE_FILE_DEST="/tibero/examples/tbdata/single/t6"
LOG_ARCHIVE_DEST="/tibero/examples/arch/single/t6"

MAX_SESSION_COUNT=20 // 
TOTAL_SHM_SIZE=1G // 공유메모리 크기는 1G . OS로부터 TSM의 크기는 1G로 할당받아 사용하게 될 것이다.
MEMORY_TARGET=2G // 2-1(TOTAL_SHM_SIZE) 즉, 나머지 크기를 PGA 메모리 영역으로 사용을 하게 될 것이다. 


Tibero 초기화 파라미터는 인스턴스와 데이터베이스 설정을 수행하며, 데이터베이스 서버 설치 시 생성하여 사용한다.

텍스트 파일로서 $TB_HOME/config/$TB_SID.tip 이름을 갖고 있으며 \

파일의 파라미터를 수정하여 티베로에 적용하기 위해서는 인스턴스 재기동이 필요하다.

 

파라미터는 동적으로 변경가능한 것들이 존재. 변경 값이 서버 재기동 후에도 영속적으로 적용되려면 파라미터 파일에 명시 되어야함

 

초기화 파라미터 파일에 적히는 정보

− 공유 메모리 영역 크기

− 데이터베이스 동작 관련 항목의 기본 값 최대 값

− 컨트롤 파일의 경로,이름

− 아카이브로그 파일의 경로,이름


Monitoring

티베로 모니터링의 대상이 되는 것은 다양한 항목이 존재한다.

1. 일반 정보

2. 세션

3. 공간

4. 메모리

5. 이벤트,잠금

6. I/O ..

 

 

Tibero Monitoring shell (TM) 사용하기

 

Monitor Shell(이하 tm) 은 티베로 엔지니어가 기술지원 시 DB의 여러 정보를 확인하기 위한 Tool.

운영 중에 DB의 정보를 확인하는데 보조적인 역할을 할 수 있는 내용에 대해 할 수 있다.

tibero Monitor Shell 은 바이너리에 같이 들어있기 때문에 tm -> tibero -> 확인하고자 하는 숫자 입력 으로 확인가능하다.

 

tm 입력시 나오는 화면. 여러가지 정보를 확인할 수 있다.

 

 

● 11 - Instance/Database Info

instance name (SID), DB_NAME, 상태 등을 할 수 있다. 

NLS_Character로 한글의 깨짐을 알 수도 있고, log Mode도 알 수 있다.

DB 생성 시간, DB가 기동된후 얼마 지난지도 알 수 있다.

 

 

이 쿼리는 tbi/monitoring/sql/1_instace.sql에 저장되어 있다. 

set feedback off
set linesize 140

col "Instance Name"  format a15
col "Database Name"  format a15
col "Version"        format a20
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
/

exit

 

 

 

● 13 - Tibero Memory Info

 Choose the Number or Command : 13
=====================
 TSM(SGA) Infomation
=====================

NAME                                                             Size           
---------------------------------------------------------------- --------------------
SHARED MEMORY                                                    1024(MB)
SHARED POOL MEMORY                                               205(MB)
Database Buffers                                                 683(MB)
Redo Buffers                                                     10(MB)
DB_BLOCK_SIZE                                                    8(KB)

===============================
 Tibero Used Memory Infomation
===============================

NAME                                                               Size(MB)
---------------------------------------------------------------- ----------
MEMORY_TARGET                                                          2048
SGA(Used)                                                             910.9
PGA(Allocated)                                                       290.67
PGA(Used)                                                             49.66

 

Memory_Target : Tibero가 전체 사용하는 메모리

SGA : Tibero Shared Memory 이다. 사용하는 값에 따라서 1G미만의 값을 보여주게 된다.

PGA(Allocated) : Shared하지 않는 영역에 대에 할당되는 메모리이다.

                             SQL실행, Index 빌드 하는 작업이 있으면 사용하는 영역이다.

                             또한 쿼리가 조인이 되기도 하는데 그런 영역에 대해 할당받는 영역이다.

                             MEMORY_TARGET SGA 영역만큼 사용한다.

 

 

 

● 21 - Database Buffer Hit Ratio 

 

===========================
 Database Buffer Hit Ratio
===========================

Time                Physical read Logical read        Hit Status
------------------- ------------- ------------ ---------- --------
2022/11/15 15:17:11           971       825694      99.88 Good

Logical read : 버퍼 캐시에 있는 블럭을 액세스 하는 것을 말한다.

Physical read : 버퍼 캐시에 없는 블럭을 I/O가 작동하면서 버퍼캐시에 올리는 것을 말한다.

 

* (825694 - 971) / 825694 = 99.88 % * Status는 사용자가 직접 짜는 것이기 때문에 직접 판단하는게 좋다.

 

 

 

 

 

● 22 - Shared Cache Hit Ratio

========================
 Shared Cache Hit Ratio
========================

Time                Name                   Hit(%) Status
------------------- ------------------ ---------- --------
2022/11/15 15:19:52 SQL(Library) Cache      99.41 Good
2022/11/15 15:19:52 Dictionary Cache        99.01 Good

Time                Name                      Used(MB)  Total(MB) Memory Usage(%)
------------------- ----------------------- ---------- ---------- ---------------
2022/11/15 15:19:52 Shared Cache Free Space         92        205           44.86

Time                Soft Parse(%)
------------------- -------------
2022/11/15 15:19:52         85.76

SQL은 실행계획을 만들어서 실행을 하게 되는데, 기존에 만들어진 실행계획을 재사용 하는 것이 좋다. 

 

 

● 41 - Current Lock Info

 

=======================
 Blocking/Waiting Lock
=======================

SQL File :  4_blockinglock_6.sql

Blocking User   Waiting User     Blocking Sid  Waiting Sid Lock Type    Holding mode    Request mode    SQL_ID
--------------- --------------- ------------- ------------ ------------ --------------- --------------- -------------------------
SYS             SYS                        63           65 WLOCK_TX     [5]Exclusive(X) [6]PIN          8dqc12uq08fk5/231

======================
 DML Lock Information
======================

SQL File :  4_lockinfo_6.sql

  Sid Status   User            Object                              Lock_time       Lock mode       SQL_ID
----- -------- --------------- ----------------------------------- --------------- --------------- -------------------------
   63 READY    SYS             TIBERO.T1                           0:07:02         [2]Row-X(RX)    8dqc12uq08fk5/231
   65 RUNNING  SYS             TIBERO.T1                           0:00:27         [2]Row-X(RX)    5r40s7xp79fww/232

============================================
 Object Lock Information(Library cache Lock)
============================================

SQL File :  4_lockobj_6.sql

  Sid Owner           Object                              Type            LOCK_TYPE
----- --------------- ----------------------------------- --------------- ---------------
   65 TIBERO          T1                                  TABLE           WLOCK_DD_OBJ
   65 TIBERO          T1                                  TABLE           WLOCK_DD_OBJ

 

 

Block / wait 락이 존재한다.

현재 SYS:63 이 블락중이고, SYS:65가 웨잇중이다.

 

 

 

SID 63

 

SID 65

63번이 락을 잡고있어 65번이 업데이트를 하지 못하는 상황임.

 

63번에서 commit 하자마자 65번 session에서 update가 완료되었음.

63번이 락을 잡던게 해제되고, 65번이 락을 잡았다.

'Tibero 이론' 카테고리의 다른 글

TPR(Tibero Performance Repository)  (0) 2022.11.16
Tibero Admin 과정 중 몰랐던 것들  (1) 2022.11.02
Partitioning  (0) 2022.11.01
Tibero DB구성 (HA, TAC, TAS, TSC, TBCM..)  (0) 2022.10.28
Tibero 구조  (0) 2022.10.28