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을 참고하기 바란다.