콘텐츠로 이동

Dumplf

dumplf#

개요#

Altibase는 복구를 위해서 트랜잭션이 변경 연산(INSERT, DELETE, UPDATE 등)을 수행할 때, 데이터베이스 영역(DB File)외의 별도 파일에 로그를 남긴다. 이 로그는 IO 최소화를 위해서 이진(binary) 형식으로 기록되어 있다. 이 로그가 기록되는 로그 파일은 altibase.properties의 LOG_DIR 프로퍼티에 설정되는 디렉토리에 logfile#(#은 로그파일 번호로 계속 증가한다) 형태로 저장된다.

dumplf는 이 로그 파일의 내용을 텍스트 형식으로 변환해서 보여주는 유틸리티이다. 이 로그를 통해서 데이터베이스에 수행된 연산의 종류 및 변경 연산을 수행하는 트랜잭션의 빈도를 측정할 수 있다.

dumplf {-f log_file_name} [-t transaction_id][-s] [-l][-S lsn [-F path] [-g]]

구문#

파라미터#

파라미터 설명
-f 출력할 로그 파일의 이름
-t 출력할 로그에 해당하는 트랜잭션 ID
-s 로그 파일의 헤더만 출력하고자 할 때 명시
-l 로그의 유형 (LT 필드) 또는 서브로그유형 (OPTYPE 과 UTYPE 필드)과 관련된 정보만 출력
-S MMDB에서 INSERT, UPDATE, DELETE, COMMIT, ROLLBACK의 로그 개수를 출력한다. 특정 lsn을 입력하면 해당 lsn 이후의 로그만, '0,0'을 입력하면 전체 로그를 보여준다.
-F 로그를 분석할 대상 경로를 지정할 수 있으며, 생략할 경우 $ALTIBASE_HOME/logs 의 경로를 분석한다.
-g 테이블의 오브젝트 ID별 통계가 전체 통계 정보와 함께 출력된다. 생략하면 전체 통계 정보만 출력된다.

설명#

로그 파일의 내용을 텍스트 형식으로 변환해서 보여준다.

사용 예#

쉘 프롬프트 상에서 다음과 같이 수행한다.

$ dumplf -f logfile0

출력 항목#

다음은 dumplf의 출력 예이다.

LSN=<0,820>, COMP:N, MAGIC:820, TID: 6400,BE: N, REP: Y, ISVP: N, ISVP_DEPTH: 0 PLSN=<0,739>, LT: SMR_LT_MEMTRANS_COMMIT, SZ: 45

로그 파일의 내용 중, 필드들은 다음과 같은 의미를 갖는다.

필드 이름 설명
LSN 형식: ( FileNo, Offset) 각 값의 범위: 0 - unsigned int 타입의 최대값 , 로그의 sequence number로 로그의 물리적인 위치를 표시한다. LSN은 파일 번호, 오프셋으로 구성된다.
COMP Y|N Y: 로그가 압축(compress)되었음 N: 압축되지 않음
MAGIC 0 - unsigned short 타입의 최대값 로그 레코드가 유효하다는 것을 나타내기 위해서 로그 LSN의 로그 파일 번호와 오프셋으로 이 값을 만들고 Redo, Undo시 로그를 읽었을 때 이 값이 현재 로그의 LSN과 동일한지 검사한다.
TID 0 - unsigned int 타입의 최대값 트랜잭션 식별자
BE Y|N Y : Begin Transaction Log
REP Y|N Y: 이중화가 걸려있는 경우 Sender가 Standby로 보내거나 참조하는 로그이다. N: Sender는 이 로그를 무시한다
ISVP Y|N Y: 묵시적 저장점 (Implicit Savepoint) 로그. 문장(Statement) 시작 후 처음으로 찍힌 로그이다. 트랜잭션이 문장을 수행했을 때 오류가 발생하면 이 로그까지 부분 철회(Partial Rollback)을 한다.
ISVP_DEPTH 0 - 255 어떤 SQL 구문이 다른 구문 내에 중첩되었을 때 묵시적 저장점의 중첩 깊이
PLSN 형식: (FileNo, Offset) 각 값의 범위: 0 - unsigned int 타입의 최대값 Previous Log LSN으로 이 값을 이용하여 같은 트랜잭션이 기록한 로그들끼리 체인(Chain)으로 연결되어 있다.
LT 문자열 로그의 유형을 나타낸다. 자세한 내용은 아래 로그 유형에 대한 표를 참고한다.
SZ 0 - unsigned int 타입의 최대값 로그 크기 (단위: bytes)
RdSz 0 - unsigned int 타입의 최대값 로그 레코드의 크기 (단위: bytes)
DMIOff 0 - unsigned int 타입의 최대값 논리적 로그의 위치. 트랜잭션 언두 또는 이중화에서 사용한다.
TableOID 0 - unsigned int 타입의 최대값 테이블의 오브젝트 ID
OID 0 - unsigned int 타입의 최대값 테이블을 제외한 모든 오브젝트의 ID. 레코드 오브젝트도 포함한다.
ContType 0, 1 이중화를 위해 사용하는 내부 값
OPTYPE LogTypeName<LogTypeNumber> Nested Top Action (NTA) 로그의 작업 유형
AFTER SZ: <size>, Value: <value> 로그 레코드의 변경 후 이미지 (after image)
BEFORE SZ: <size>, Value: <value> 로그 레코드의 변경 전 이미지 (before image)
UTYPE LogTypeName<LogTypeNumber> UPDATE 로그의 작업 유형
UPOS 형식: (SPACEID:<SpaceID>, PID:<PageID>, OFFSET:<Offset> => OID:<OID>) 변경된 객체의 주소. 또한 변경 작업 동안 발생한 정보도 포함한다.
SPACEID 0 - unsigned short 타입의 최대값 변경된 객체를 포함하고 있는 테이블스페이스의 ID
PID 0 - unsigned int 타입의 최대값 변경된 객체를 포함하고 있는 페이지의 ID
Offset 0 - unsigned int 타입의 최대값 변경된 객체를 포함하고 있는 페이지 내에서의 offset
FLISlot PrevPID NextPID 형식: (<BeforePID> => <AfterPID>) 메모리 테이블스페이스를 관리하기 위해 사용하는 내부 값
ESLSN 형식: (FileNo, Offset) 각 값의 범위: 0 - unsigned int 타입의 최대값 복구 수행 시 시작할 LSN
Lob Locator 0 - unsigned long 타입의 최대값 이중화에서 LOB타입과 관련해서 내부적으로 사용하는 값

dumplf의 결과 중 LT (Log Type: 로그 유형)의 의미는 다음과 같다.

설명
SMR_LT_DUMMY Dummy 로그
SMR_LT_CHKPT_BEGIN Checkpoint Begin 로그
SMR_LT_DIRTY_PAGE Dirty Page 로그
SMR_LT_CHKPT_END Checkpoint End 로그
SMR_LT_MEMTRANS_COMMIT Memory Transaction Commit 로그
SMR_LT_MEMTRANS_ABORT Memory Transaction Abort 로그
SMR_LT_DSKTRANS_COMMIT Disk Transaction Commit 로그
SMR_LT_DSKTRANS_ABORT Disk Transaction Abort 로그
SMR_LT_SAVEPOINT_SET Savepoint Set 로그
SMR_LT_SAVEPOINT_ABORT Savepoint Abort Begin 로그
SMR_LT_XA_PREPARE XA Prepare 로그
SMR_LT_TRANS_PREABORT Abort Begin 로그
SMR_LT_DDL DDL (Data Definition Language) 로그
SMR_LT_XA_SEGS XA Prepare Transaction Segment Information
SMR_LT_LOB_FOR_REPL 이중화를 위한 LOB 로그
SMR_LT_UPDATE MMDB(Main Memory Database) Update 로그
SMR_LT_NTA MMDB NTA(Nested Top Action) 로그
SMR_LT_COMPENSATION Compensation 로그
SMR_LT_DUMMY_COMPENSATION Dummy Compensation 로그
SMR_LT_FILE_BEGIN File Begin 로그
SMR_LT_FILE_TBS_UPDATE Tablespace Update 로그
SMR_LT_FILE_END File End 로그
SMR_DLT_READONLY DRDB(Disk Resident Database) Redo Only 로그
SMR_DLT_UNDOABLE DRDB Undo 로그
SMR_DLT_NTA DRDB NTA 로그
SMR_DLT_COMPENSATION DRDB Compensation 로그
SMR_DLT_REF_NTA DRDB Reference NTA 로그
SMR_LT_TABLE_META 이중화를 위한 테이블 메타 로그

OPTYPE 과 UTYPE 에 가능한 로그 타입 이름

설명
SMR_OP_SMM_PERS_LIST_ALLOC
SMR_OP_SMC_FIXED_SLOT_ALLOC
SMR_OP_SMC_VAR_SLOT_ALLOC
SMR_OP_SMC_FIXED_SLOT_FREE
SMR_OP_SMC_VAR_SLOT_FREE
MMDB의 페이지와 슬롯에 관련된 로그
SMR_OP_CREATE_TABLE
SMR_OP_CREATE_INDEX
SMR_OP_DROP_INDEX
SMR_OP_ALTER_TABLE
SMR_OP_SMM_CREATE_TBS
SMR_OP_INSTANT_AGING_AT_ALTER_TABLE
SMR_OP_SMC_TABLEHEADER_ALLOC
MMDB에서 DDL 구문 수행과 관련된 로그
SMR_MEM_LOB_CURSOR_OPEN
SMR_DISK_LOB_CURSOR_OPEN
SMR_LOB_CURSOR_CLOSE
SMR_PREPARE4WRITE
SMR_FINISH2WRITE
MMDB에서 LOB 데이터 제어와 관련된 로그
SDR_OP_SDP_CREATE_TABLE_SEGMENT
SDR_OP_SDP_CREATE_LOB_SEGMENT
SDR_OP_SDP_CREATE_INDEX_SEGMENT
SDR_OP_SDP_ADD_LOB_PAGE_TO_AGINGLIST
SDR_OP_SDC_ALLOC_UNDO_PAGE
SDR_OP_SDPTB_ALLOCATE_AN_EXTENT_FROM_TBS
SDR_OP_SDPTB_ALLOCATE_AN_EXTDIR_FROM_LIST
SDR_OP_SDPTB_RESIZE_GG
SDR_OP_SDPST_ALLOC_PAGE
SDR_OP_SDPSF_ALLOC_PAGE
SCT_UPDATE_MRDB_CREATE_TBS
SCT_UPDATE_MRDB_CREATE_CIMAGE_FILE
SCT_UPDATE_MRDB_DROP_TBS
SCT_UPDATE_MRDB_ALTER_AUTOEXTEND
SCT_UPDATE_MRDB_ALTER_TBS_ONLINE
SCT_UPDATE_MRDB_ALTER_TBS_OFFLINE
SCT_UPDATE_DRDB_CREATE_TBS
SCT_UPDATE_DRDB_DROP_TBS
SCT_UPDATE_DRDB_ALTER_TBS_ONLINE
SCT_UPDATE_DRDB_ALTER_TBS_OFFLINE
SCT_UPDATE_DRDB_CREATE_DBF
SCT_UPDATE_DRDB_DROP_DBF
SCT_UPDATE_DRDB_EXTEND_DBF
SCT_UPDATE_DRDB_SHRINK_DBF
SCT_UPDATE_DRDB_AUTOEXTEND_DBF
SCT_UPDATE_DRDB_ALTER_DBF_ONLINE
SCT_UPDATE_DRDB_ALTER_DBF_OFFLINE
SCT_UPDATE_VRDB_CREATE_TBS
SCT_UPDATE_VRDB_DROP_TBS
SCT_UPDATE_VRDB_ALTER_AUTOEXTEND
SCT_UPDATE_COMMON_ALTER_ATTR_FLAG
테이블스페이스와 세그먼트에 관련된 로그
SDR_OP_SDPST_UPDATE_WMINFO_4DPATH
SDR_OP_SDPST_UPDATE_MFNL_4DPATH
SDR_OP_SDPST_UPDATE_BMP_4DPATH
SDR_OP_SDPSF_ADD_PIDLIST_PVTFREEPIDLIST_4DPATH
SDR_OP_SDPSF_MERGE_SEG_4DPATH
SDR_OP_SDPSF_UPDATE_HWMINFO_4DPATH
SDR_OP_SDP_DPATH_ADD_SEGINFOSET
DRDB에서 Direct Page Insert를 위한 페이지 관리와 관련된 로그
SDR_OP_SDN_INSERT_KEY_WITH_NTA
SDR_OP_SDN_DELETE_KEY_WITH_NTA
DRDB에서 B-tree 인덱스를 위한 NTA 로그
SDR_OP_STNDR_INSERT_KEY_WITH_NTA
SDR_OP_STNDR_DELETE_KEY_WITH_NTA
DRDB에서 R-tree 인덱스를 위한 NTA 로그
SDR_SDP_1BYTE
SDR_SDP_2BYTE
SDR_SDP_4BYTE
SDR_SDP_8BYTE
SDR_SDP_BINARY
물리적 DRDB 로그
SDR_SDP_PAGE_CONSISTENT
SDR_SDP_INIT_PHYSICAL_PAGE
SDR_SDP_INIT_LOGICAL_HDR
SDR_SDP_INIT_SLOT_DIRECTORY
SDR_SDP_FREE_SLOT
SDR_SDP_FREE_SLOT_FOR_SID
SDR_SDP_RESTORE_FREESPACE_CREDIT
SDR_SDP_RESET_PAGE
SDR_SDP_WRITE_PAGEIMG
SDR_SDP_WRITE_DPATH_INS_PAGE
DRDB의 페이지와 슬롯에 관련된 로그
SDR_SDPST_INIT_SEGHDR
SDR_SDPST_INIT_BMP
SDR_SDPST_INIT_LFBMP
SDR_SDPST_INIT_EXTDIR
SDR_SDPST_ADD_RANGESLOT
SDR_SDPST_ADD_SLOTS
SDR_SDPST_ADD_EXTDESC
SDR_SDPST_ADD_EXT_TO_SEGHDR
SDR_SDPST_UPDATE_WM
SDR_SDPST_UPDATE_MFNL
SDR_SDPST_UPDATE_PBS
SDR_SDPST_UPDATE_LFBMP_4DPATH
SDR_SDPSC_INIT_SEGHDR
SDR_SDPSC_INIT_EXTDIR
SDR_SDPSC_ADD_EXTDESC_TO_EXTDIR
SDR_SDPTB_INIT_LGHDR_PAGE
SDR_SDPTB_ALLOC_IN_LG
SDR_SDPTB_FREE_IN_LG
DRDB를 위한 세그먼트와 테이블스페이스에 관련된 로그
SDR_SDC_INSERT_ROW_PIECE
SDR_SDC_INSERT_ROW_PIECE_FOR_UPDATE
SDR_SDC_INSERT_ROW_PIECE_FOR_DELETEUNDO
SDR_SDC_UPDATE_ROW_PIECE
SDR_SDC_OVERWRITE_ROW_PIECE
SDR_SDC_CHANGE_ROW_PIECE_LINK
SDR_SDC_DELETE_FIRST_COLUMN_PIECE
SDR_SDC_ADD_FIRST_COLUMN_PIECE
SDR_SDC_DELETE_ROW_PIECE_FOR_UPDATE
SDR_SDC_DELETE_ROW_PIECE SDR_SDC_LOCK_ROW
DRDB의 테이블 레코드 관리에 관련된 로그
SDR_SDC_UPDATE_LOBDESC
SDR_SDC_UPDATE_LOBDESC_KEY
SDR_SDC_LOB_WRITE_PIECE
SDR_SDC_LOB_WRITE_PIECE4DML
SDR_SDC_INIT_LOBPAGE
SDR_SDC_LOB_PAGE_TO_AGING_LIST
DRDB에서 LOB 타입 사용에 관련된 로그
SDR_SDC_PK_LOG DRDB에서 이중화를 위한 프라이머리 키 사용에 관련된 로그
SDR_SDC_INIT_CTL
SDR_SDC_EXTEND_CTL
SDR_SDC_BIND_CTS
SDR_SDC_UNBIND_CTS
SDR_SDC_BIND_ROW
SDR_SDC_UNBIND_ROW
SDR_SDC_ROW_TIMESTAMPING
SDR_SDC_DATA_SELFAGING
DRDB에서 레코드를 위한 MVCC 관련된 로그
SDR_SDC_BIND_TSS
SDR_SDC_UNBIND_TSS
SDR_SDC_SET_INITSCN_TO_TSS
SDR_SDC_INIT_TSS_PAGE
SDR_SDC_INIT_UNDO_PAGE
SDR_SDC_INSERT_UNDO_REC
DRDB에서 Trasaction Status Slots (TSS)과 언두 레코드에 관련된 로그
SDR_SDN_INSERT_INDEX_KEY
SDR_SDN_FREE_INDEX_KEY
SDR_SDN_INSERT_UNIQUE_KEY
SDR_SDN_INSERT_DUP_KEY
SDR_SDN_DELETE_KEY_WITH_NTA
SDR_SDN_FREE_KEYS
SDR_SDN_COMPACT_INDEX_PAGE
DRDB에서 B-tree 인덱스 관련된 로그
SDR_SDN_MAKE_CHAINED_KEYS
SDR_SDN_MAKE_UNCHAINED_KEYS
SDR_SDN_KEY_STAMPING
SDR_SDN_INIT_CTL
SDR_SDN_EXTEND_CTL
SDR_SDN_FREE_CTS
DRDB에서 B-tree 인덱스 키를 위한 MVCC에 관련된 로그
SDR_STNDR_MAKE_CHAINED_KEYS
SDR_STNDR_MAKE_UNCHAINED_KEYS
SDR_STNDR_KEY_STAMPING
DRDB에서 R-tree 인덱스 관련된 로그
SMR_PHYSICAL MMDB에서 물리적 로그
SMR_SMM_MEMBASE_SET_SYSTEM_SCN
SMR_SMM_MEMBASE_ALLOC_PERS_LIST
SMR_SMM_MEMBASE_ALLOC_EXPAND_CHUNK
SMR_SMM_PERS_UPDATE_LINK
SMR_SMM_PERS_UPDATE_NEXT_FREE_PAGE_LINK
SMR_SMM_MEMBASE_INFO
MMDB에서 기본 정보와 관련된 로그
SMR_SMC_TABLEHEADER_INIT
SMR_SMC_TABLEHEADER_UPDATE_INDEX
SMR_SMC_TABLEHEADER_UPDATE_COLUMNS
SMR_SMC_TABLEHEADER_UPDATE_INFO
SMR_SMC_TABLEHEADER_SET_NULLROW
SMR_SMC_TABLEHEADER_UPDATE_ALL
SMR_SMC_TABLEHEADER_UPDATE_ALLOCINFO
SMR_SMC_TABLEHEADER_UPDATE_FLAG
SMR_SMC_TABLEHEADER_SET_SEQUENCE
SMR_SMC_TABLEHEADER_UPDATE_TABLE_COLUMN_COUNT
SMR_SMC_TABLEHEADER_UPDATE_TABLE_SEGMENT
SMR_SMC_TABLEHEADER_UPDATE_FLAG_FOR_MEDIA_RECV
SMR_SMC_TABLEHEADER_SET_SEGSTOATTR
SMR_SMC_TABLEHEADER_SET_INSERTLIMIT
SMR_SMC_INDEX_SET_FLAG
SMR_SMC_INDEX_SET_SEGATTR
SMR_SMC_INDEX_SET_SEGSTOATTR
SMR_SMC_INDEX_SET_DROP_FLAG
MMDB에서 테이블 헤더와 인덱스 헤더에 관련된 로그
SMR_SMC_PERS_INIT_FIXED_PAGE
SMR_SMC_PERS_INIT_FIXED_ROW
SMR_SMC_PERS_UPDATE_FIXED_ROW
SMR_SMC_PERS_UPDATE_FIXED_ROW_NEXT_FREE
SMR_SMC_PERS_UPDATE_FIXED_ROW_NEXT_VERSION
SMR_SMC_PERS_SET_FIX_ROW_DROP_FLAG
SMR_SMC_PERS_SET_FIX_ROW_DELETE_BIT
SMR_SMC_PERS_INIT_VAR_PAGE
SMR_SMC_PERS_UPDATE_VAR_ROW_HEAD
SMR_SMC_PERS_UPDATE_VAR_ROW
SMR_SMC_PERS_SET_VAR_ROW_FLAG
SMR_SMC_PERS_SET_VAR_ROW_NXT_OID
SMR_SMC_PERS_WRITE_LOB_PIECE
SMR_SMC_PERS_INSERT_ROW
SMR_SMC_PERS_UPDATE_INPLACE_ROW
SMR_SMC_PERS_UPDATE_VERSION_ROW
SMR_SMC_PERS_DELETE_VERSION_ROW
MMDB에서 테이블 레코드와 관련된 로그

MVCC와 관련된 자세한 설명은 Administrator's Manual을 참고하기 바란다.