database
, tablespace
, segment
,extent
등이 있으며,control file
, password file
, datafile
, tempfile
, redolog file
, archived redolog file
, backup set
가 있다.질문 ! >>>>>>>>>>>>>>
1.백업저장소는 리눅스 시스템 상에서 어떻게 확인할 수 있는지?
[-> 백업저장소가 따로 있는게 아니라 백업파일을 만들어 놓은 곳이 저장소가 됨. 어디에다 만들지는 자신이 결정할 수 있다. 백업을 하기 위해서는 tibero 서버에 접속하여 일련의 과정을 거쳐 세팅을 해준 후, 백업 저장소로 정한 경로로 데이터 파일을 cp하면됨.]
2.데이터블록은 물리저장구조인지, 논리저장구조인지?
[datablock은 논리저장구조이다. os에서 block을 모아서 DB에서 사용하는 block size로 변환시켜 사용. 주로 datablock 사이즈는 default로 8K. OS에 사용하는 block은 filesystem의 format type에 따라 default 값이 달라짐.]
<출처 : Tibero 6 온라인 매뉴얼_Tibero 관리자 안내서_3.2. 테이블 스페이스>
데이터베이스 자체의 meta data를 보관하고 있는 바이너리 파일
최초의 컨트롤 파일은 Tibero 설치 시 생성되고, 이에 대한 정보는 $TB_SID.tip 파일에 저장된다.
#-----$TB_SID.tip------#
DB_NAME=six
LISTENER_PORT=8629
CONTROL_FILES="/home/tibero1/tibero6/database/sixth/c1.ctl"
MAX_SESSION_COUNT=20
TOTAL_SHM_SIZE=1G
MEMORY_TARGET=2G
CONTROL_FILES
의 경로로 가면 실제로 해당 컨트롤 파일이 있는 것을 확인할 수 있다.
control file은 Tibero 서버 mount, open시에 필요하다.
Tibero에서는 데이터베이스를 다시 기동할 때마다 먼저 컨트롤 파일을 참조하는데, 컨트롤 파일 내에는 아래와 같은 내용이 담겨져 있다.
database
: 데이터베이스 이름, $TB_SID.tip파일 이름, 타임스탬프
table space
: 테이블 스페이스를 구성하는 datafile, 타임스탬프
datafile
: datafile의 이름, 위치, 타임스탬프
redo log
: 로그그룹의 개수, 로그 멤버(로그파일)의 이름, 위치, 타임스탬프
checkpoint
: 타임스탬프
Tibero에 의해서만 생성과 갱신을 할 수 있으며 DBA가 컨트롤 파일의 내용을 조회하거나 갱신할 수는 없다.
redolog와 같이 최소 다른 disk상에 2개 이상의 control files를 가지도록 권장한다. _[아래그림 참고]
출처 : Tibero 6 Online Manual
Tibero에서는 컨트롤 파일로부터 정보를 확인할 때 여러 복사본 중에서 하나만 읽는다. 그리고 테이블 스페이스의 변경 등의 이유로 컨트롤 파일을 갱신해야 하는 경우에는 모든 복사본을 동시에 갱신한다. 디스크 에러 등의 원인으로 일부 컨트롤 파일에 장애가 발생했을 경우에도 하나 이상의 컨트롤 파일이 정상이면 Tibero는 문제없이 운영된다.
데이터파일의 구조
Tables & Indexes 들과 같은 Logical structure들이 물리적으로 Datafiles에 저장된다.
하나의
datafile
이 여러개의tablespace
에 걸쳐 있을 수 없음.
하나의table
이 여러개의datafile
에 걸쳐 있을 수는 있음.
데이터파일의 이름, 경로 변경시에는 해당 테이블 스페이스를 오프라인
으로 설정 후 변경가능하다.
$ TB_HOME/database/데이터베이스명
의 경로에서 datafile 확인가능하다.
[tibero1@:sixth:/home/tibero1/tibero6/database/six]ls
java redo001.redo redo011.redo redo021.redo syssub001.dtf system001.dtf temp001.dtf undo001.dtf usr001.dtf
datafile
에 저장되는 데이터는 영구적이며, 데이터베이스의 내용이 디스크에 유지될 때 사용되는데 반해, tempfile
에는 저장되는 데이터는 일시적이며, 특정 쿼리 또는 작업이 완료되면 해당 데이터는 삭제된다.정렬
, 조인
, 그룹화
등과 같은 연산을 수행할 때 사용되는 임시 작업 공간을 마련하는데 쓰인다.DBA_TEMP_FILES
, V$TEMPFILE
에서 모니터링 할 수 있음.데이터베이스에서 변경이 발생하면 변경내용이 기록된다.
redolog에 있는 내용
데이터 변경 내용, TSN와 타임스탬프, transaction ID, transaction이 커밋될 때의 TSN과 타임스탬프, 변경을 수행한 작업 유형, 변경된 데이터 세그먼트 이름 및 유형
redo는 사람이 알아볼 수 없는 binary형식의 파일
로그 전환(log switch)
리두로그를 순환하며 변경사항들을 write한다. 하나의 그룹이 다 차면 그 다음 그룹으로 옮겨가 쓰기 시작하는데, 이를 log switch라고 한다.
Archivelog Mode일 경우, Log Switch가 일어날 때마다 log_archive_dest에 카피되어 향후 복구에 사용된다.
로그 파일 다중화 (log multiplexing)
로그 파일이 들어있는 disk가 손상될 경우를 대비하여 여러개의 disk에 동일한 redolog 파일을 위치시키는 것.
출처 : Tibero 6 Online Manual
다중화를 하려면 동일한 그룹에 속해 있는 모든 로그 멤버의 크기는 일정해야 하며, 동일한 데이터를 저장하고 동시에 갱신되어야 한다.
동시에 하나의 로그 그룹만을 사용하는 데 현재 사용 중인 로그 그룹을 활성화(active)된 로그 그룹이라고 함
_LOG_WRITE_SYSCALL=1 파라미터와 관련
archive mode
에서 logswitch
가 일어날때 온라인 리두로그멤버 파일이 복사되어 archive redo log file로 저장된다.Tibero Active Cluster(TAS)
Tibero Database에서 사용하는 전용 파일시스템
Tibero TAC 환경에서 TAS를 기반으로 데이터베이스를 생성하여 운영할 수 있음
Oracle의 ASM과 비슷
운영체제의 파일 시스템
주로 쓰는 파일 저장 방식
LVM에 의해 생성된 논리볼륨을 기반으로 구축되어 있음.
RAW 장치
Raw Device는 디스크 파티션 혹은 논리볼륨이다.
파일시스템과 달리 cache
를 거치지 않고 직접 I/O를 수행할 수 있음.
but, 생성과 관리가 어려워 주로 Tibero TAC 구조에서 쓰임. (비용적인 면에서 장점이 있다)
클러스터 파일 시스템
여러 컴퓨터에서 파일의 저장소를 공유하는 기능을 제공한다.
Tibero TAC 환경에서 쓰일 수 있음.
DATA BLOCK
> EXTENT
> SEGMENT
> TABLESPCACE
의 위계질서로 이루어져 있다. OS block
이 모여 Data block
을 형성databaseblock
의 집합extent
는 여러 데이터파일에 걸쳐서 존재할 수 없음.segment
가 할당됨TABLE
, INDEX
, LOB
등 이 있음transaction
은 하나의 UNDO 세그먼트를 할당받음.transaction
이 할당될 수 있음
물리적 구조로 보자면, DML을 수행하면DB_CACHE
와LOG_BUFFER
에 해당 UNDO segment가 적재되고 각각 Datafile과 Redo logfile에 저장된다
질문------> DML 수행시 현재의 block 정보는 undo에 기록하고,
답변)
DML을 수행하면 현재의 block 정보는 undo에 기록하고 수행할 DML은 redolog에서 처리합니다.
이렇게 나뉘어져 있는 이유는 사용자가 잘못된 DML을 날렸을 경우 DML을 수행하기 전 상태로 돌아가기 위해서 입니다.(ROLLBACK)
DB_CACHE -> undo datafile (이전에 얘기했던 오라클쪽 consistant read를 공부해봅시다!)
LOG_BUFFER -> REDO LOGFILE
논리적 구조로 보자면,
UNDO 데이터는 UNDO 테이블스페이스의 블록에 저장되며, 다른 데이터블록처럼 변경 발생 시REDO log
를 생성한다. 위 그림과 같이extent
가 순환하며 재사용 및 추가 할당 된다.
UNDO_RETENTION
시간동안 해당 UNDO 데이터를 보존함.질문 !!
undo extent의 상태는 active, unexpired, expired로 나뉜다고 들었는데요,,!
undo_retention이 지난 extent는 expired 상태가 되는 것인가요?
그리고 active와 unexpired의 차이가 무엇인지 궁금합니다
답변)
active 상태의 extent는 expired 또는 unexpired 상태가 됩니다.
그 조건은
Active -> Unexpired되는 경우는 현재 undo extent의 마지막 block까지 사용하는 경우 , tx의 시작 undo extent와 현재 undo extent가 다를 경우에만 commit이후 undo extent의 상태가 변하게 됩니다.
Active -> Expired로 되는 경우는 현재 tx가 commit이 되었다 하더라도 사용하고 있던 undo extent의 사용가능한 block이 남아있기에 STATUS를 Expired로 변경하게 됩니다.(retention시간 이전에 undo가 덮어써지는 것을 방지함)
이건 다음에 만나면 직접 보여드릴게요.
HWM(High Water Mark)
BITMAP
을 사용하여 공간을 관리한다.
데이터 입력시, HWM 하위 여유공간이 있는 블록을 사용함.
Full Scan시에Segment Header Block
의BITMAP
정보를 이용하여 엑세스함.
segment
를 저장하는 논리 저장소, 한 개 이상의 datafile
이나 tempfile
을 사용하여 데이터를 저장한다.Redo log
와 이름은 비슷하지만 헷갈리지 말 것, instance 실행 중 error 등을 기록해주는 파일
서버 기동시 문제가 생기면 해당 log 파일을 보고 추적해볼 수 있다.
slog
Trace Log File
로 $TB_HOME/instance/$TB_SID/log/slog
디렉토리에서 확인 가능.
instance 내부 에러, 데드락 에러 등 서버 성능이 저하되는 원인
찾거나 티베로 자체 버그
해결하는데 사용된다.
dlog
DBMS Log File
로 $TB_HOME/instance/$TB_SID/log/slog
디렉토리에서 확인 가능.
서버 기동 및 종류, DDL 문장의 수행 등이 기록된다.
ilog
slog 보다 더 상세한 log. 디스크가 full 날 수 있어 조심해서 사용해야한다.
lsnr log
listener
의 상태와 관련된 log
질문 >>>>>>>>>>
위 설명이 맞을까요? .....