c
ALTIBASE HDB ADMINISTRATION II MONITORING TRACE FILES META TABLES PERFORMANCE VIEWS 통계정보수집
TRACE FILES
모니터링항목 모니터링항목평상시혹은문제가발생했을때확인해야하는항목 trace file 알티베이스가구동중발생하는여러사항들에대한 trace 정보들이기록된파일 $ALTIBASE_HOME/trc 디렉토리에위치 meta table 데이터베이스객체에관한모든정보를기록하기위한시스템정의테이블 소유자는 SYSTEM_ DDL 수행시시스템에의해변경 performance view 시스템메모리, 프로세스상태, 세션, 버퍼등의최신정보를제공 read only
TRACE FILES Trace file 종류 C1 C2 C3 E/SQL CLI ODBC JDBC IPC UNIX DOMAIN TCP/IP altibase_boot.log Physical Memory ALTIBASE Parsing/ validation Transaction Manager Query Processor Storage Manager Memory Tables Optimizer Recovery Manager Executor Buffer Manager Buffer Replication altibase_qp.log altibase_sm.log altibase_rp.log Checkpoint image files Datafiles loganchor logfiles ALTIBASE Architecture
TRACE FILES Trace file 종류 파일이름 altibase_boot.log altibase_rp.log altibase_sm.log altibase_qp.log 주요내용 Altibase HDB가동작된상태를기록구동및종료에관련된각종 step 정보를기록구동중디스크부족으로인한에러등여러가지에러상황을기록비정상종료가발생할경우 Call-Stack 정보 Replication 모듈에서발생하는경고메시지나트레이스메시지이중화상태, 이중화 conflict 등의메시지 Storage Manager 모듈에서발생하는경고메시지나트레이스메시지 checkpoint, 백업등의메시지 Query Processor 모듈에서발생하는경고메시지나트레이스메시지등이기록 DDL 문의성공 / 실패메시지
META TABLES
META TABLE 주요 meta table 분류 관련메타테이블 사용자관련테이블관련인덱스관련권한관련뷰관련트리거관련 SYS_USERS_ SYS_TBS_USERS_ SYS_TABLES_ SYS_COLUMNS_ SYS_CONSTRAINTS_ SYS_CONSTRAINT_COLUMNS_ SYS_INDICES_ SYS_INDEX_COLUMNS_ SYS_GRANT_OBJECT_ SYS_GRANT_SYSTEM_ SYS_PRIVILEGES_ SYS_VIEWS_ SYS_VIEW_PARSE_ SYS_VIEW_RELATED_ SYS_TRIGGERS_ SYS_TRIGGER_DML_TABLES_ SYS_TRIGGER_STRINGS_
META TABLE SYS_USERS_ DB 에생성된사용자정보 컬럼 설명 USER_ID USER_NAME PASSWORD LAST_DDL_TIME DEFAULT_TBS_ID 사용자의고유번호 사용자의이름 암호화된패스워드 사용자정보에최종적으로변경이수행된시각 TABLESPACE 절을명시하지않은테이블생성시사용되는기본테이블스페이스의고유번호
META TABLE SYS_TABLES_ DB 에생성된테이블, 뷰, 시퀀스, 큐정보 컬럼 설명 USER_ID TABLE_ID TABLE_OID COLUMN_COUNT TABLE_NAME 테이블이속한사용자의고유번호테이블의고유번호내부적으로사용되는테이블의고유참조번호테이블내의컬럼의총개수테이블의이름 TABLE_TYPE T: (Table), V: (View), Q:(Queue), S:(Sequence) MAXROW 0: ( 무제한 ), 기타 : ( 최대로저장될수있는레코드개수 ) TBS_ID LAST_DDL_TIME 테이블이저장되어있는테이블스페이스의고유번호 테이블에변경이수행된최종시각
META TABLE 사용예 < 전제 > 'SYS 사용자소유의테이블목록을보고자한다. < 질의 > isql> SELECT a.user_name, b.table_name, b.table_type 2 FROM system_.sys_users_ a, system_.sys_tables_ b 3 WHERE a.user_id = b.user_id 4 AND a.user_name = 'SYS' ; USER_NAME TABLE_NAME TABLE_TYPE ------------------------------------------------------------ SYS PERSON T SYS CUSTOMER T SYS PERSON_SEQ S SYS GOODS T SYS DEPARTMENT T SYS ORDERS T...
META TABLE SYS_COLUMNS_ 테이블, 뷰, 시퀀스에정의된컬럼정보 컬럼 설명 COLUMN_ID DATA_TYPE TABLE_ID SIZE PRECESION SCALE COLUMN_NAME IS_NULLABLE DEFAULT_VALUE 컬럼식별자 CHAR: 1, VARCHAR: 12, NUMERIC: 2, DATE: 9, BLOB:30, CLOB:40, 테이블식별자칼럼의물리적길이지정한 PRECESION 지정한 SCALE, 숫자타입만저장됨컬럼의이름 T: NULL 허용, F: NULL 불허테이블생성시지정한기본값
META TABLE 사용예 < 전제 > T1 테이블의컬럼정보와해당컬럼의기본값을보고자한다. < 질의 > isql> SELECT column_id, column_name, data_type, default_val, is_nullable 2 FROM system_.sys_columns_ 3 WHERE table_id = (SELECT table_id FROM system_.sys_tables_ WHERE table_name='t1'); COLUMN_ID COLUMN_NAME DATA_TYPE DEFAULT_VAL IS_NULLABLE ------------------------------------------------------------------------- 2270208 C1 2 F 2270209 C2 1 T 2270210 C3 9 SYSDATE T
META TABLE SYS_INDICES_ 인덱스정보 컬럼 설명 INDEX_ID INDEX_NAME TABLE_ID IS_UNIQUE COLUMN_CNT TBS_ID LAST_DDL_TIME CREATED 인덱스식별자인덱스이름테이블식별자 UNIQUE 인덱스인지인덱스를구성하는컬럼의개수테이블스페이스식별자마지막으로 DDL 변경이일어난시간인덱스가생성된시간
META TABLE SYS_INDEX_COLUMNS_ 인덱스구성컬럼의정보 컬럼 설명 INDEX_ID COLUMN_ID TABLE_ID INDEX_COL_ORDER SORT_ORDER 인덱스식별자컬럼식별자테이블식별자인덱스구성칼럼의순서 A: 오름차순, B: 내림차순
META TABLE 사용예 < 전제 > T1 테이블에생성된인덱스와칼럼의정보를보고자한다. < 질의 > isql> SELECT a.index_name, b.index_col_order, c.column_name, 2 DECODE(b.sort_order,'A','ASC','D','DESC') AS sort_order 3 FROM system_.sys_indices_ a, system_.sys_index_columns_ b, system_.sys_columns_ c 4 WHERE a.index_id = b.index_id 5 AND b.column_id = c.column_id 6 AND a.table_id = (SELECT table_id FROM system_.sys_tables_ WHERE table_name='t1') 7 ORDER BY 1, 2; INDEX_NAME INDEX_COL_ORDER COLUMN_NAME SORT_ORDER ------------------------------------------------------------------------- T1_IDX1 0 C1 ASC T1_IDX1 1 C2 DESC
META TABLE SYS_CONSTRAINTS_ 제약조건정보 컬럼 설명 CONSTRAINT_ID CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_ID INDEX_ID COLUMN_CNT REFERENCED_TABLE_ID DELETE_RULE 제약조건식별자 제약조건이름 제약조건타입 0: FOREIGN KEY, 1: NOT NULL, 2: UNIQUE, 3: PRIMARY KEY, 4: NULL 테이블식별자 제약조건의인덱스식별자 제약조건의칼럼개수 parent table 의식별자 Delete CASCADE 동작여부 0: No action, 1: Delete CASCADE
META TABLE SYS_CONSTRAINT_COLUMNS_ 제약조건에구성된컬럼의정보 컬럼 설명 CONSTRAINT_ID CONSTRAINT_COL_ORDER COLUMN_ID 제약조건식별자 제약조건칼럼순서 칼럼식별자
META TABLE 사용예 < 전제 > T1 테이블에생성된제약조건과컬럼의정보를보고자한다. < 질의 > isql> SELECT a.constraint_name, b.constraint_col_order, c.column_name, 2 DECODE(a.constraint_type,0,'forieign',1,'not null',2,'unique',3,'primary',4,'null') AS constraint_type 3 FROM system_.sys_constraints_ a, system_.sys_constraint_columns_ b, system_.sys_columns_ c 4 WHERE a.constraint_id = b.constraint_id 5 AND b.column_id = c.column_id 6 AND a.table_id = (SELECT table_id FROM system_.sys_tables_ WHERE table_name='t1') 7 ORDER BY 1, 2; CONSTRAINT_NAME CONSTRAINT_COL_ORDER COLUMN_NAME CONSTRAINT_TYPE --------------------------------------------------------------------------- SYS_CON_NOT_NULL_ID_207 0 C3 not null SYS_CON_PRIMARY_ID_208 0 C1 primary SYS_CON_PRIMARY_ID_208 1 C2 primary
PERFORMANCE VIEWS
Performance View Performance View 사용자가질의를통해쉽게조회할수있도록테이블처럼만든형태 performance view 목록을조회하는방법 isql> SELECT * FROM v$tab; 주요 Performance view 분류 Session 관련 Statement 관련 Lock 관련 Transaction관련 Property관련 Replication 관련 Resource 관련 v$session v$statement, v$sqltext v$lock, v$lock_wait v$transaction, v$memgc v$property v$repgap, v$repsender, v$repreceiver 연관 Performance View v$memstat, v$memtbl_info, v$tablespaces, v$mem_tablespaces, v$vol_tablespaces, v$segment, v$disktbl_info, v$lfg, v$buffpool_stat, v$datafiles, v$sysstat, v$sesstat
Performance View V$SESSION DB 에접속중인세션의정보 컬럼 설명 ID CLIENT_PID TRANS_ID COMM_NAME AUTOCOMMIT_FLAG DB_USERNAME CURRENT_STMT_ID 세션의고유번호사용자프로그램의 process id 마지막수행중인트랜잭션의고유번호접속한방식, IP 주소, 포트번호 AUTOCOMMIT 여부 (0: NON-AUTOCOMMIT) 세션을사용중인 DB User 마지막수행중인질의문의고유번호
Performance View V$STATEMENT 접속이유효한세션에서실행한최종질의의수행정보 컬럼 설명 ID SESSION_ID TX_ID 세션별로수행한질의문의고유번호 세션의고유번호 해당질의가속해있는트랜잭션의고유번호 QUERY 실제질의문장 (16Kbyte 까지만표현 ) TOTAL_TIME EXECUTE_TIME FETCH_TIME EXECUTE_SUCCESS EXECUTE_FAILURE 질의가최종수행된시점의전체소요시간 질의가최종수행시점에 DBMS 내부에서처리된소요시간 (DB 의 SM 모듈에서수행된시간 ) 최종질의에대해 DB 와프로그램과발생한통신의누적소요시간 ( 통신비용의합 ) 동일한질의가성공적으로수행된누적횟수 동일한질의가실패한누적횟수
Performance View V$SQLTEXT 질의문전체를저장 SID STMT_ID PIECE TEXT 컬럼 세션의고유번호 세션별질의문의고유번호 설명 질의문의조각순서 (64byte 단위로나누어저장되어있음 ) 실제질의문의내용
Performance View 특정세션에수행한질의를찾고자할경우 < 전제 > 프로그램의 PID 는 1234 이다. 이프로그램이수행중인 SQL 문과처리시각을보려고한다. < 질의 > isql> SELECT a.query, a.execute_time, a.fetch_time 2 FROM v$statement a, v$session b 3 WHERE a.session_id = b.id 4 AND b.client_pid = 1234; 수행된횟수가가장많고, 처리시간이긴질의를찾는경우 < 질의 > isql> SELECT a.client_pid, a.comm_name, b.execute_success, b.execute_time,.bquery, 2 FROM v$session a, v$statement b 3 WHERE a.id = b.session_id 4 ORDER BY b.execute_success DESC, b.execute_time DESC 5 LIMIT 1;
Performance View V$LOCK 테이블단위의 Lock 정보 컬럼 LOC_ITEM_TYPE TBS_ID TABLE_OID TRANS_ID LOCK_DESC 설명 LOCK이획득된대상의종류 (TBL, TBS) LOCK이획득된대상이속한테이블스페이스고유번호 LOCK이획득된테이블의고유번호트랜잭션의고유번호 LOCK의유형 (X_LOCK, IX_LOCK, IS_LOCK) IS_GRANT LOCK 을획득했는지여부 (1: 획득 )
Performance View V$LOCK_WAIT Lock 의상호대기정보 TRANS_ID 컬럼 WAIT_FOR_TRANS_ID 트랜잭션의고유번호 설명 TRANS_ID 가대기하고하는트랜잭션의고유번호 isql> SELECT * FROM v$lock_wait; TRANS_ID WAIT_FOR_TRANS_ID --------------------------------------------- 17856 139648 17856 트랜잭션은 139648 트랜잭션이완료되기를기다리고있다는의미임.
Performance View 내가발생시킨트랜잭션을기다리고있는트랜잭션의개수는? < 전제 > 자신의세션 ID 를리턴하는함수는 SESSION_ID() 라는함수로제공된다. < 질의 > isql> SELECT COUNT(*) 2 FROM v$lock_wait 3 WHERE wait_for_trans_id IN 4 ( SELECT tx_id FROM v$statement 5 WHERE session_id = SESSION_ID() )
Performance View V$PROPERTY DBMS 내에설정된프로퍼티정보 컬럼 설명 NAME MIN MAX VALUE1 프로퍼티의명칭설정할수있는최소값설정할수있는최대값현재설정된상태값 isql> SELECT value1 FROM v$property WHERE name LIKE '%DB_NAME%'; --------------------------------------------- mydb isql> SELECT value1 FROM v$property WHERE name = 'PORT_NO'; --------------------------------------------- 20302
Performance View V$TABLESPACES 테이블스페이스에대한정보 칼럼 설명 ID NAME TYPE STATE SEGMENT_MANAGEMENT TOTAL_PAGE_COUNT ALLOCATE_PAGE_COUNT PAGE_SIZE EXTENT_PAGE_COUNT 테이블스페이스 ID 테이블스페이스이름 테이블스페이스타입 테이블스페이스상태 테이블스페이스에서세그먼트를생성할때어떤타입으로생성할것인지나타냄 테이블스페이스의전체페이지개수 테이블스페이스에할당된페이지개수 테이블스페이스의페이지크기 extent 의페이지개수
Performance View V$DATAFILES 디스크테이블스페이스의데이터파일에대한정보주로데이터파일의사용량을확인하고싶을때사용 칼럼 설명 ID NAME SPACEID MAXSIZE INITSIZE NEXTSIZE CURRSIZE AUTOEXTEND STATUS 데이터파일 ID 데이터파일경로와이름 데이터파일이속한테이블스페이스 ID 데이터파일생성시지정한 MAXSIZE. AUTOEXTEND OFF 이면 0 데이터파일생성시지정한 SIZE 데이터파일생성시지정한 NEXT AUTOEXTEND OFF 이면 0 데이터파일의현재크기 AUTOEXTEND OFF 이면 INITSIZE 와같음 0: OFF, 1: ON 1: 오프라인, 2: 온라인, 4: 백업시작, 8: 백업종료, 128: 삭제 (dropped)
Performance View disk tablespace 의데이터파일별사용량확인 < 질의 > isql> SELECT b.name tbs_name, a.id 'FILE#', a.name datafile_name, 2 currsize*8/1024 'ALLOC(M)', 3 ROUND(CASE2(a.maxsize=0, currsize, a.maxsize)*8/1024) 'MAX(M)', 4 DECODE(autoextend, 0, 'OFF', 'ON') 'AUTOEXTEND' 5 FROM v$datafiles a, 6 v$tablespaces b 7 WHERE b.id = a.spaceid 8 ORDER BY b.name, a.id; ALLOC(M) - 데이터파일의현재크기 MAX(M) - 데이터파일이 AUTOEXTEND ON 으로생성되었을경우에확장될수있는최대크기 AUTOEXTEND OFF 로생성되었다면생성시크기
Performance View V$MEM_TABLESPACES 메모리테이블스페이스에대한정보메모리테이블스페이스의사용량을확인하고싶을때사용 칼럼 설명 SPACE_ID SPACE_NAME MAXSIZE ALLOC_PAGE_COUNT FREE_PAGE_COUNT 테이블스페이스 ID 테이블스페이스이름 테이블스페이스최대크기 DECODE(MAXSIZE, 0, ALLOC_PAGE_COUNT*PAGE_SIZE, MAXSIZE) 테이블스페이스의전체페이지개수 테이블스페이스의 free 페이지개수
Performance View V$VOL_TABLESPACES 휘발성테이블스페이스에대한정보휘발성테이블스페이스의사용량을확인하고싶을때사용 칼럼 설명 SPACE_ID SPACE_NAME MAXSIZE ALLOC_PAGE_COUNT FREE_PAGE_COUNT 테이블스페이스 ID 테이블스페이스이름 테이블스페이스최대크기 DECODE(MAXSIZE, 0, ALLOC_PAGE_COUNT*PAGE_SIZE, MAXSIZE) 테이블스페이스의전체페이지개수 테이블스페이스의 free 페이지개수
Performance View 메모리테이블스페이스의사용량조회 < 질의 > isql> SELECT space_id, space_name, autoextend_mode, 2 DECODE(maxsize, 140737488322560, 'UNDEFINED', 3 0, alloc_page_count*32/1024, 4 maxsize/1024/1024) 'MAX(M)', 5 alloc_page_count * 32/1024 'TOTAL(M)', 6 (alloc_page_count-free_page_count)*32/1024 'ALLOC(M)', 7 ((alloc_page_count-free_page_count)*32/1024) 8 /DECODE(maxsize, 0, alloc_page_count*32/1024, maxsize/1024/1024) 'USAGE(%)' 9 FROM v$mem_tablespaces; MAX(M) - 메모리테이블스페이스 maxsize. 테이블스페이스생성시지정 TOTAL(M) - 메모리테이블스페이스가현재까지할당받은크기 ALLOC(M) - 메모리테이블스페이스가현재까지할당받은페이지중빈페이지를제외한사용공간 USAGE(%) - 메모리테이블스페이스가최대로할당할수있는크기대비사용중인공간에대한백분율
Performance View V$MEMTBL_INFO 메모리테이블정보어느테이블이메모리를많이사용하는지확인하고싶을때사용 칼럼 TABLESPACE_ID TABLE_OID FIXED_ALLOC_MEM FIXED_USED_MEM VAR_ALLOC_MEM VAR_USED_MEM UNIQUE_VIOLATION_COUNT UPDATE_RETRY_COUNT DELETE_RETRY_COUNT 설명 테이블스페이스 ID 테이블식별자. sys_tables_ 와조인하여 table_name 확인테이블에서할당한고정영역의메모리크기테이블에서실제사용하고있는고정영역의메모리크기테이블에서할당한가변영역의메모리크기테이블에서실제사용하고있는가변영역메모리크기 UNIQUE 제약조건이위반된횟수 UPDATE 시재시도한횟수 DELETE 시재시도한횟수 할당공간은 (FIXED_ALLOC_MEM+VAR_ALLOC_MEM), 사용공간은 (FIXED_USED_MEM+VAR_USED_MEM) 을질의
Performance View 휘발성테이블스페이스와메모리테이블스페이스에속한테이블의실제사용메모리를확인 < 질의 > isql> SELECT a.user_name, b.table_name, d.name tablespace_name, 2 (c.fixed_alloc_mem + c.var_alloc_mem)/(1024*1024) 'ALLOC(M)', 3 (c.fixed_used_mem + c.var_used_mem)/(1024*1024) 'USED(M)', 4 (c.fixed_used_mem + c.var_used_mem)/(c.fixed_alloc_mem + c.var_alloc_mem)*100 5 'EFFICIENCY(%)' 6 FROM system_.sys_users_ a, system_.sys_tables_ b, v$memtbl_info c, v$tablespaces d 7 WHERE a.user_name <> 'SYSTEM_' 8 AND b.table_type = 'T' 9 AND a.user_id = b.user_id 10 AND b.table_oid = c.table_oid 11 AND b.tbs_id = d.id 12 ORDER BY 4 DESC ; ALLOC(M) - 테이블이할당받은메모리합계 USED(M) - 테이블이할당받은페이지중에서 실제로데이터가적재된페이지 의메모리합계예를들어, ALLOC 이 100M 크기인메모리테이블에전체 DELELE 를수행하면 ALLOC 은 100M 로변함없으나 USED 는 0 에가깝게됨 EFFICIENCY(%) - 테이블이소유한페이지중에서 실제로데이터가적재된페이지 에대한백분율로공간효율성을나타냄
Performance View V$DISKTBL_INFO 디스크테이블정보어느테이블이디스크를많이사용하는지확인하고싶을때사용 칼럼 TABLESPACE_ID TABLE_OID DISK_PAGE_CNT 설명 테이블스페이스 ID 테이블식별자. sys_tables_ 와조인하여 table_name 확인테이블에서데이터를갖고있는페이지개수
Performance View 디스크테이블의사용량확인 < 질의 > isql> SELECT user_name, a.table_name, d.name tbs_name, 2 ROUND((b.disk_page_cnt*8)/1024) 'ALLOC(M)' 3 FROM system_.sys_tables_ a, v$disktbl_info b, system_.sys_users_ c, v$tablespaces d 4 WHERE a.table_oid = b.table_oid 5 AND a.user_id = c.user_id 6 AND a.tbs_id=d.id 7 AND c.user_name <> 'SYSTEM_'
Performance View V$MEMSTAT ALTIBASE 내부모듈들이사용하는메모리사용량정보 컬럼 NAME ALLOC_SIZE MAX_TOTAL_SIZE 설명 메모리를할당하여사용하는모듈의명칭현재할당된메모리의사용량 DB구동이후최대로사용했던메모리의크기 V$MEMSTAT 의정보는적절한주기를가지고모니터링하여메모리의증가현상이발생할때 ALTIBASE HDB 에의한문제일경우어떤모듈에의해메모리가증가했는지를추적하는데유용한정보로활용할수있음 가장많은메모리를사용했던모듈을 5 개만출력하라 isql> SELECT name, max_total_size, alloc_size 2 FROM v$memstat 3 ORDER BY max_total_size 4 LIMIT 5;
Performance View V$SYSSTAT DB 의전체세션들의활동을누적한통계정보 컬럼 SEQNUM NAME VALUE 설명 통계항목의고유번호통계항목의명칭현재까지누적된수치 주기적인모니터링을통해성능이슈에대한분석정보로활용 현재질의수행의성공, 실패누적횟수를출력하라 isql> SELECT name, value 2 FROM v$sysstat 3 WHERE seqnum IN (25, 26); -------------------------------------- execute success count 2039404 execute failure count 201
Performance View V$LFG 로그파일이미처생성되지못해트랜잭션이로그파일이생성될때까지기다렸는지확인할때사용 칼럼 CUR_WRITE_LF_NO LF_PREPARE_COUNT LF_PREPARE_WAIT_COUNT END_LSN_FILE_NO END_LSN_OFFSE 설명 기록로그파일번호미리생성한로그파일의수로그스위치시대기한횟수 restart redo가시작될 LSN의파일번호 restart redo가시작될 LSN의오프셋
Performance View logfile switch 시트랜잭션이얼마나대기했는지확인 < 질의 > isql> SELECT lf_prepare_wait_count 2 FROM v$lfg; LF_PREPARE_WAIT_COUNT ------------------------ 0
통계정보수집
통계정보수집 DBMS stat 데이터베이스에대한통계자료를수집하는기능 시스템저장프로시저형태로제공 SYS 사용자만수행할수있으며이저장프로시저를사용해서통계자료를수집하고실행계획을재구축. 이름 설명 GATHER_SYSTEM_STATS 데이터베이스시스템에대한통계자료를수집한다. GATHER_DATABASE_STATS 모든테이블에대한통계자료를수집한다. GATHER_TABLE_STATS 특정테이블에대한통계자료를수집한다. GATHER_INDEX_STATS 특정인덱스에대한통계자료를수집한다.
통계정보수집 GATHER_SYSTEM_STATS 데이터베이스시스템에대한통계자료를수집한다. 구문 GATHER_SYSTEM_STATS( ) ; 결과값 저장프로시저이므로결과값을반환하지않는다. 예제 isql> EXEC GATHER_SYSTEM_STATS ( ) ; Execute success.
통계정보수집 GATHER_DATABASE_STATS 데이터베이스에존재하는모든테이블에대한통계자료를수집한다. 구문 EXEC GATHER_DATABASE_STATS ( estimate_percent FLOAT DEFAULT NULL, degree INTEGER DEFAULT NULL, no_invalidate BOLLEAN DEFAULT FALSE) ; 결과값 저장프로시저이므로결과값을반환하지않는다. 예제 isql> EXEC GATHER_DATABASE_STATS ( ) ; SYSTEM_.SYS_TABLES_ SYSTEM_.SYS_COLUMNS_ SYSTEM_.SYS_DATABASE_ SYSTEM_.SYS_USERS_ Execute success.
통계정보수집 GATHER_TABLE_STATS 특정테이블과그테이블에정의된인덱스들에대한통계자료를수집한다. 구문 EXEC GATHER_TABLE_STATS ( ownname VARCHAR, tabname VARCHAR, partname VARCHAR DEFAULT NULL, estimate_percent FLOAT DEFAULT NULL, degree INTEGER DEFAULT NULL, no_invalidate BOLLEAN DEFAULT FALSE) ; 결과값 저장프로시저이므로결과값을반환하지않는다. 예제 isql> EXEC GATHER_TABLE_STATS ( SYS, T1 ) ; Execute success.
통계정보수집 GATHER_INDEX_STATS 특정인덱스에대한통계자료를수집한다. 구문 EXEC GATHER_TABLE_STATS ( ownname VARCHAR, idxname VARCHAR, estimate_percent FLOAT DEFAULT NULL, degree INTEGER DEFAULT NULL, no_invalidate BOLLEAN DEFAULT FALSE) ; 결과값 저장프로시저이므로결과값을반환하지않는다. 예제 isql> EXEC GATHER_INDEX_STATS ( SYS, T1_IDX ) ; Execute success.
ALTIBASE HDB ADMINISTRATION II BACKUP & RECOVERY CHECKPOINT BACKUP RECOVERY
CHECKPOINT
CHECKPOINT 체크포인트 (Checkpoint) 데이터베이스에대한변경및현재상황을데이터파일에저장하는것 체크포인트완료시의처리과정 기존복구시작시점을완료시점으로변경 데이터파일에반영이완료된불필요한리두로그파일을삭제 주기적인체크포인트는시스템장애시데이터베이스복구시간을줄일수있음 ALTIBASE HDB 체크포인트의특징 fuzzy & ping-pong checkpoint 체크포인트수행중에도성능저하없이트랜잭션을처리할수있음 메모리테이블스페이스에한하여데이터파일을두벌로유지
CHECKPOINT 체크포인트수행 자동수행 프로퍼티 CHECK_POINT_ENABLED에의해자동수행여부를우선적으로설정 시간주기 - CHECK_POINT_INTERVAL_IN_SEC 리두로그파일개수 - CHECK_POINT_INTERVAL_IN_LOG 수동수행 사용자명령 - 사용자 "SYS" 로만실행이가능한명시적인체크포인트명령어 isql> ALTER SYSTEM CHECKPOINT; 체크포인트수행이완료되더라도리두로그파일이삭제되지않는경우 완료되지않은트랜잭션의리두로그파일인경우 아카이브로그모드에서, 아카이브되지않은리두로그파일인경우 이중화로전송되지않은리두로그파일인경우
BACKUP
데이터베이스모드 데이터베이스모드 (database mode) 체크포인트완료시리두로그파일을관리하는방식에따라두가지로분류 아카이브로그모드 (archivelog mode) - 지정된경로로축적 (archiving) 후삭제하는방식 노아카이브로그모드 (noarchivelog mode) - 삭제하는방식 데이터베이스생성구문 (CREATE DATABASE) 에의해최초로지정됨 데이터베이스생성이후에도 CONTROL 단계에서변경은가능하나재구동필요 데이터베이스모드의비교 데이터베이스모드특징고려사항 아카이브로그모드 (archivelog mode) 노아카이브로그모드 (noarchivelog mode) 매체복구 (media recovery) 가가능. 아카이브로그파일의손실이없다면현재시점까지복구가가능하다. 아카이브로그파일을저장하기위한디스크공간이필요없다. 아카이브로그파일에대한 DBA 의관리가필요없다. 아카이브로그파일을저장하기위한디스크공간이필요하다. 아카이브로그파일에대한 DBA 의관리가필요하다. 매체복구가불가능. 오프라인백업을받은시점까지만복구가가능하다.
데이터베이스모드 현재데이터베이스모드확인 성능뷰 v$archive 를통하여보다상세한정보를확인할수있음 isql(sysdba)> SELECT archive_mode, archive_dest FROM v$archive; ARCHIVE_MODE ARCHIVE_DEST -------------------------------------------------------------------- 0 /home/alti2/altibase_home/arch_logs 데이터베이스생성이후데이터베이스모드변경 DB 구동종료후 CONTROL 단계에서데이터베이스모드를변경 SYSDBA 자격의사용자 "SYS" 로만수행이가능 isql> connect sys/manager as sysdba isql(sysdba)> shutdown immediate; isql(sysdba)> startup control; isql(sysdba)> ALTER DATABASE ARCHIVELOG; isql(sysdba)> startup;
데이터베이스백업 데이터베이스백업종류와대상객체 온라인데이터베이스백업 온라인테이블스페이스백업 백업종류대상객체복구시점 온라인테이블스페이스백업 by DBA 리두로그파일을제외한데이터베이스전체 ( 데이터파일, 리두로그앵커파일 ) 특정테이블스페이스의데이터파일 최신시점 데이터베이스모드 아카이브로그필수 온라인리두로그앵커백업 리두로그앵커파일 오프라인백업 aexport, iloader 백업 데이터베이스전체 ( 데이터파일, 리두로그앵커파일, 리두로그파일 ) 스키마생성스크립트, 특정테이블의데이터 백업시점 노아카이브로그 아카이브로그 온라인백업관련구문은 SYSDBA 자격의사용자 "SYS" 로만수행이가능 SYSDBA 자격으로접속가능한세션은하나이므로동시에여러세션에서수행불가능
데이터베이스백업 온라인데이터베이스백업 DB 구동중특정시점에전체데이터베이스를백업 구문수행시모든데이터파일과리두로그앵커파일이지정한경로로자동백업됨 메모리테이블스페이스관련데이터파일은시간단축을위해 0, 1 중한벌만백업 임시테이블스페이스관련데이터파일은쿼리연산용이므로백업하지않음 isql(sysdba)> ALTER DATABASE BACKUP DATABASE TO 'backup_dir ';
데이터베이스백업 온라인테이블스페이스백업 DB 구동중특정테이블스페이스를백업 구문수행시테이블스페이스와관련된데이터파일이지정한경로로자동백업됨 메모리테이블스페이스데이터파일은시간단축을위해 0, 1 중한벌만백업 isql(sysdba)> ALTER DATABASE BACKUP 2 TABLESPACE tablespace_name TO 'backup_dir ';
데이터베이스백업 온라인테이블스페이스백업 by DBA DB 구동중특정테이블스페이스를백업 구문수행으로백업시작과종료시점을통제후 OS copy 명령어를사용하여테이블스페이스관련데이터파일을수동으로복사 관련리두로그파일을강제로아카이빙하기위해로그스위치수행절차필요 동시에여러테이블스페이스를백업가능하므로 3 rd party 백업솔루션과연동가능 1. isql(sysdba)> ALTER TABLESPACE tablespace_name BEGIN BACKUP; 2. OS copy 명령어로테이블스페이스관련데이터파일복사 3. isql(sysdba)> ALTER TABLESPACE tablespace_name END BACKUP; 4. isql(sysdba)> ALTER SYSTEM SWITCH LOGFILE;
데이터베이스백업 온라인로그앵커백업 DB 구동중리두로그앵커파일을백업 구문수행시리두로그앵커파일 3 개모두지정한경로로자동백업됨 테이블스페이스변경 (ALTER) 시복구를대비하여변경된테이블스페이스, 딕셔너리테이블스페이스와함께백업함 isql(sysdba)> ALTER DATABASE BACKUP LOGANCHOR TO 'backup_dir '; isql(sysdba)> ALTER DATABASE BACKUP 2 TABLESPACE tablespace_name TO 'backup_dir '; isql(sysdba)> ALTER DATABASE BACKUP 2 TABLESPACE SYS_TBS_MEM_DIC TO 'backup_dir ';
데이터베이스백업 오프라인데이터베이스백업 DB 종료후데이터베이스전체를백업 정상종료확인후 OS 명령어를사용하여데이터파일, 리두로그파일, 리두로그앵커파일을복사 1. isql(sysdba)> shutdown immediate; 2. OS copy 명령어로데이터파일, 리두로그파일, 리두로그앵커파일복사 3. isql(sysdba)> startup;
데이터베이스백업 오프라인데이터베이스백업예제 프로퍼티파일 (altibase.properties) 의설정상태 MEM_DB_DIR =?/mem_dbs DEFAULT_DISK_DB_DIR =?/dbs LOG_DIR =?/logs LOGANCHOR_DIR =?/logs 수행절차 테이블스페이스관련데이터파일은기본경로에만위치한경우를가정 isql(sysdba)> shutdown immediate; shell> cp r $ALTIBASE_HOME/mem_dbs/* /backup shell> cp r $ALTIBASE_HOME/dbs/* /backup shell> cp r $ALTIBASE_HOME/logs /backup isql(sysdba)> startup;
데이터베이스백업 백업관련유의사항 오프라인데이터베이스백업시프로퍼티파일상의기본경로만확인해서는안된다. 데이터파일의위치가기본경로가아닌경우누락될수있음 데이터파일관련성능뷰를통하여누락여부를확인하는과정이필요 온라인백업과체크포인트는동시에수행될수없다. 체크포인트수행중에온라인백업명령을수행하면체크포인트완료까지대기 온라인백업중에는체크포인트가수행되지않으며수행시도시에러발생 [ERR-110A4 : Backup is in progress. Please wait until the current backup process completes.] 테이블스페이스에대한변경시는복구를대비하여아래백업중하나를해야한다. 해당테이블스페이스, 딕셔너리테이블스페이스, 리두로그앵커파일백업 온라인 / 오프라인데이터베이스백업 이중화가걸려있는경우이중화정보도같이백업된다. 백업한데이터베이스를다른시스템에서복구시 IP 변경으로인해이중화문제발생가능
RECOVERY
데이터베이스복구 자동복구 (Restart Recovery) 정전, 시스템 crash 같은비정상종료후재구동시자동으로수행되는복구 TRANSITION TO PHASE : META [SM] Recovery Phase - 1 : Preparing Database : Dynamic Memory Version => Parallel Loading [SM] Recovery Phase - 2 : Loading Database [SM] Recovery Phase - 3 : Starting Recovery Initializing Active Transaction List Redo Refine Disk Table.. Undo [SM] Refine Memory Table :... [SUCCESS]
데이터베이스복구 매체복구 (Media recovery) 데이터파일이유실되거나손상되었을때아카이브로그파일과이전에백업한데이터파일및리두로그앵커파일을사용하여수동으로수행하는복구 CONTROL 단계에서구문으로수행하는오프라인매체복구 ( 온라인매체복구불가 ) 아카이브로그모드로운영될때에만가능 완전복구와불완전복구로분류
매체복구 완전복구 구문을수행하여현재시점까지데이터베이스를복구 isql(sysdba)> ALTER DATABASE RECOVER DATABASE; 요구사항 데이터베이스전체백업받은시점이후의아카이브로그파일은물론온라인리두로그파일까지모두손상이없어야함 현재시점의최신리두로그앵커파일이필요
매체복구 불완전복구 구문을수행하여특정시점으로데이터베이스를복구 온라인리두로그파일또는아카이브로그파일이손상 / 유실된경우 isql(sysdba)> ALTER DATABASE RECOVER DATABASE UNTIL CANCEL; 데이터베이스전체를특정시점으로되돌리고자하는경우 isql(sysdba)> ALTER DATABASE RECOVER DATABASE UNTIL TIME 2010-09-10:17:55:00 ; 불완전복구수행후에는온라인리두로그를초기화해야만함 Meta 단계로전이, 다음재구동 시자동복구가수행되지않도록위한필수과정 isql(sysdba)> ALTER DATABASE db_name META RESETLOGS; 요구사항 복구하려는시점에대응하는리두로그앵커파일이필요
매체복구 데이터파일유실복구예제 (1) - 백업받은데이터파일을이용한복구 백업받은데이터파일의 LSN(Log Sequence Number) 부터현재시점의 LSN 사이의 Logfile 들을사용함 Log Anchor 백업한 User1.dbf User1.dbf 정보파일생성 LSN(20:012284) Checkpoint LSN(102:172168) User1.dbf LSN 32:345698 Online Logs 디렉토리 Recovery 구문실행 Log File 101 Log File 102 Media Recovery 프로세스 Redolog 재수행 Archive Logs 디렉토리 Log File 0 Log File 32 Log File 100 User1.dbf LSN 102:172168
매체복구 데이터파일유실복구예제 (2) - 빈데이터파일생성을통한복구 데이터파일생성한후, Archive Log 와 Active Log 를사용하여 Recovery 데이터파일생성시점의 LSN(Log Sequence Number) 과현재시점의 LSN 사이의 Log File 들을사용함 Log Anchor 유실된 User1.dbf 생성 User1.dbf 정보파일생성 LSN(20:012284) Checkpoint LSN(102:172168) User1.dbf Online Logs 디렉토리 Recovery 구문실행 Log File 101 Log File 102 Media Recovery 프로세스 Redolog 재수행 Archive Logs 디렉토리 Log File 0 Log File 20 Log File 100 User1.dbf LSN 102:172168
매체복구 매체복구를위한빈데이터파일생성 백업된데이터파일이없는경우 CONTROL 단계에서구문수행을통해생성 메모리테이블스페이스관련빈데이터파일생성 isql(sysdba)> ALTER DATABASE CREATE CHECKPOINT IMAGE 'USER_MEM_DATA-1-0'; 디스크테이블스페이스관련빈데이터파일생성 isql(sysdba)> ALTER DATABASE CREATE DATAFILE 'user_disk_data001.dbf'; 요구사항 데이터파일경로가리두로그앵커파일에기록된경로와일치해야만함
매체복구 매체복구시유의사항 일부데이터파일은백업정책으로인하여사용자가직접생성 메모리테이블스페이스관련데이터파일의경우 OS 명령어를사용하여나머지한벌을생성해야함 shell> cp USER_MEM_DATA-1-0 USER_MEM_DATA-0-0; 임시테이블스페이스관련데이터파일의경우 CONTROL 단계에서빈데이터파일을생성해야함 isql(sysdba)> ALTER DATABASE CREATE DATAFILE 'temp001.dbf'; 매체복구후유의사항 불완전복구후에는반드시데이터베이스백업 또다시복구수행시리두로그초기화이후의데이터베이스변경사항은복구가불가능
ALTIBASE HDB ADMINISTRATION II UTILITIES ILOADER AEXPORT ALTIPASSWD ALTIPROFILE DUMP ALTIERR ORANGE for ALTIBASE MIGRATION CENTER
ILOADER
iloader iloader $ALTIBASE_HOME/bin 에위치 DB의데이터를 CSV 또는, 텍스트형태의파일로다운로드및업로드 특정시점의테이블을백업하는용도로도활용 Shell::/home/alti1> iloader u sys p manager s 127.0.0.1 port 20301 formout T t1 -f t1.fmt ----------------------------------------------------------------- Altibase Data Load/Download utility. Release Version 6.1.1.0.10 Copyright 2000, ALTIBASE HDB Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------------------------- ISQL_CONNECTION : TCP
iloader il 스크립트 $ALTIBASE_HOME/bin 에위치 isql 처럼 iloader 의입력옵션을생략하고쓸수있도록제공하는스크립트 Shell::/home/alti1> cat $ALTIBASE_HOME/bin/il #!/bin/sh ${ALTIBASE_HOME}/bin/iloader -S 127.0.0.1 -U SYS -P MANAGER $* 접속과관련된부분만생략할수있도록제공되는스크립트
iloader iloader 실행시기능옵션 기능옵션 formout in out 설명 iloader 동작시에필요한 form 파일을생성하도록동작 iloader 동작시에지정된데이터파일을읽어데이터를서버로전송하는동작 iloader 동작시에대상테이블에서데이터를읽어지정된파일로저장하는동작 form 파일이란? 테이블에서데이터를다운로드및업로드를수행할때대상컬럼과날짜형컬럼의형식및데이터의문자셋등을정의한파일 ( 필요시사용자가편집가능한구조 ) 데이터파일이란? iloader 를통해저장된파일또는, 사용자가타 DBMS 나엑셀등으로부터 iloader 가인식할수있는형태로데이터를저장해놓은파일
iloader iloader 실행시입력옵션 ( 접속및동작관련 ) 입력옵션 설명 -s 접속할 ALTIBASE HDB IP 를지정 -u ALTIBASE HDB DB 사용자계정명을지정 -p 계정의패스워드를지정 -port ALTIBASE HDB Listen Port 번호를지정 -log 수행결과를저장할로그파일명을지정 ( 오류도같이기록됨 ) -bad -mode -replication 수행중오류가발생한데이터를별도의파일로저장해야할경우 truncate 옵션 : 테이블을먼저 TRUNCATE 시킨후입력 ( 옵션미사용시일반 INSERT 와동일하게동작 ) true/false : 이중화환경에서상대편으로의반영여부를지정 (True : iloader 로입력된데이터가이중화로상대편에전송됨 ) (False : iloader 로입력된데이터가이중화로전송되지않음 )
iloader iloader 실행시입력옵션 ( 성능관련 ) 입력옵션 -commit -array -parallel 설명 지정된숫자만큼서버에서처리된후 COMMIT 됨 (COMMIT 으로인한 I/O 비용을감소시키는효과, 기본값 =1000) 지정된숫자만큼통신버퍼에담은후서버로데이터를전송 ( 통신비용을감소시키는효과, 기본값 =1) 지정된숫자만큼쓰레드가테이블을적절한개수로나누어데이터를다운로드또는, 하나의파일을적절하게나누어업로드를수행 array 옵션과같이쓰는것이성능상유리함 ( 파일은 datafile.dat0, datafile.dat1 과같은형식으로생성 ) ( 업로드시에는개별파일에대한 parallel 옵션으로동작함 )
iloader iloader 실행시입력옵션 ( 데이터 / 파일관련 ) 입력옵션 설명 -t 컬럼간의구분자를지정 -r 레코드간의구분자를지정 -f formout 동작시저장될 form 파일명을지정 -d in/out 동작시사용될 ( 저장될 ) 데이터파일명을지정 -rule 데이터파일을 csv 파일형식으로생성하고자할경우지정 -error 지정된숫자만큼오류가발생하면실행을멈춤 ( 기본값 :50) -split 데이터파일마다저장할레코드의개수를지정 ( 파일명은 datafile.dat0, datafile.dat1 과형식으로생성됨 ) -T 작업대상테이블명을지정
iloader iloader 사용예 ( 테이블명을 T1 이라고가정 ) 데이터를다운로드받는경우 iloader u sys p manager s 127.0.0.1 port 20301 formout T T1 f T1.fmt iloader u sys p manager s 127.0.0.1 port 20301 out f T1.fmt d T1.dat 데이터를업로드하는경우 iloader u sys p manager s 127.0.0.1 port 20301 in f T1.fmt d T1.dat 업로드의경우는테이블의형식이동일하다면이전에받은 form 파일을재사용하여도된다. 데이터파일을여러개로나누어다운로드 iloader u sys p manager s 127.0.0.1 port 20301 out f T1.fmt d T1.dat parallel 4 array 50 iloader u sys p manager s 127.0.0.1 port 20301 out f T1.fmt d T1.dat split 50000 CSV 가아닌명시적인구분자를지정하여다운로드 iloader u sys p manager s 127.0.0.1 port 20301 in f T1.fmt d T1.dat t "!@$" r "$^%n"
iloader iloader Form 파일의수정예 ( 테이블명을 T1 이라고가정 ) 지정된컬럼만다운받고자할경우 지정된컬럼을제외한삭제대상컬럼을 form 파일에서지움 조건절을명시하여조건에해당하는데이터만다운받고자할경우 form 파일내에 "DOWNLOAD CONDITION" 구문을사용 DOWNLOAD CONDITION "WHERE C1 > 1000" 날짜형식을변경하고자할경우 form 파일내에 "DATEFORM" 구문을사용 DATEFORM YYYY/MM/DD HH:MI:SS 문자셋변경 form 파일내에 "DATA_NLS_USE" 구문을사용 ( 데이터다운로드시에만유효 ) DATA_NLS_USE=MS949
iloader iloader Form 파일의수정예 ( 테이블명을 T1 이라고가정 ) Shell::/home/alti1> il formout T T1 f t1.fmt Shell::/home/alti1> vi t1.fmt table t1 { A integer; B char(10); C date; } DOWNLOAD CONDITION "WHERE a > 1000 ORDER BY a DESC" DATEFORM YYYY/MM/DD HH:MI:SS DATA_NLS_USE=MS949
iloader iloader 업로드시에 Sequence 의사용 데이터를업로드할때순차적인번호를부여하고자할경우사용 사용할 Sequence 객체는미리생성되어있어야함 데이터파일에는 Sequence에해당하는부분이없어도업로드가가능 isql> CREATE SEQUENCE seq1 START WITH 1 INCREMENT BY 1; isql> QUIT; Shell::/home/alti1> vi t1.fmt SEQUENCE seq1 NUM table t1 { NUM integer; B integer; } # 사용자가직접수정 # 위에서정의한 seq1 의 Alias 명을사용
iloader iloader 업로드시에함수의사용 데이터를업로드할때, 함수를이용한결과값으로데이터를입력할경우사용 내장함수 / 사용자정의함수를모두사용가능 폼파일에사용자가추가해야하며변수부분을 "?" 바인딩처리해야함 Shell::home/alti1> il formout T T1 f t1.fmt Shell::home/alti1> vi t1.fmt table t1 { } A integer "TRIM (?)" # 사용자가직접함수명을추가 B varchar(20) "CONCAT ('$',?)";
iloader iloader 사용시발생할수있는오류사항 (1) 실행시입력인자의잘못된사용 [ERR-91031 : -T option(table name) is not used or precedence option is not correct] [ERR-9103B : Option (-k) is invalid.] [ERR-9102C : Input Command Parser Error] Shell::/home/alti1> iloader -s 127.0.0.1 -u sys -p manager -port 20301 -T t1 -f t1.fmt ----------------------------------------------------------------- Altibase Data Load/Download utility. Release Version 6.1.1.0.10 Copyright 2000, ALTIBASE HDB Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------------------------- [ERR-9102C : Input Command Parser Error] Use help. iloader> help (formout, out, in) 옵션이입력되어동작구분이지정되어야하나누락된경우
iloader iloader 사용시발생할수있는오류사항 (2) 올바르지않은구분자의사용 (-log 옵션을사용할경우확인가능 ) [ERR-9103D : Data Parsing Error (Column : A)] 이미존재하는데이터를중복삽입하는경우 [ERR-11058 : The row already exists in a unique index.] 날짜형데이터에잘못된데이터형식또는데이터가존재하는경우 [ERR-21038 : Literals in the input do not match format string.] [ERR-21033 : Date format picture ends before converting entire input string.] 형변환이불가능한데이터로업로드를수행하려할경우 [ERR-21011 : Invalid literal] [ERR-2100C : Conversion not applicable] 숫자형컬럼에허용범위를넘는데이터로업로드를수행하려할경우 [ERR-21010 : Value overflow]
iloader iloader 사용시발생할수있는오류사항 ( 사례 -1) iloader 동작시 unique violation 오류가발생한경우 Shell::/home/alti1> il in T T1 f t1.fmt d t1.dat log t1.log Shell::/home/alti1> cat t1.log <DataLoad> TableName : T1 Start Time : Wed Jul 21 14:49:50 2010 Recode 1 : 117783^%2010/07/21 14:49:03 [ERR-11058 : The row already exists in a unique index.] Recode 2 : 217783^%2010/07/21 14:49:05 [ERR-11058 : The row already exists in a unique index.] End Time : Wed Jul 21 14:49:50 2010 Total Row Count : 2 Load Row Count : 0 Error Row Count : 2 에러가발생했을경우
iloader iloader 사용시발생할수있는오류사항 ( 사례 -2) iloader 동작시잘못된날짜형식으로오류가난경우 Shell::/home/alti1> cat t1.fmt table T1 { A integer; B date; } DATEFORM YYYY/MM/DD HH:MI:SS DATA_NLS_USE=US7ASCII Form 파일의날짜형식과실제데이터형식불일치 Shell::/home/alti1> cat a.log <DataLoad> TableName : T1 Start Time : Wed Jul 21 14:55:13 2010 Recode 1 : 117783^%2010/07/21 14:49:033 [ERR-21033 : Date format picture ends before converting entire input string.]
iloader iloader 사용시발생할수있는오류사항 ( 사례 -3) iloader 동작시잘못된구분자지정으로오류가발생한경우 사용자는 ^ 를컬럼구분자로설정하고자했으나데이터값에존재하는값이었거나어떤실수로구분자가변형된상태 (TABLE T1: A, B, C 3 개의컬럼으로구성된경우아래와같이데이터파일존재 ) 1^^ ^^2010/07/21 14:49:03 2^Hello^2010/07/21 14:49:05 Shell::/home/alti1> cat a.log <DataLoad> TableName : T1 Start Time : Wed Jul 21 15:00:58 2010 Recode 1 : [ERR-9103D : Data Parsing Error (Column : B)] 데이터에구분자가포함되어경우
AEXPORT
AEXPORT aexport $ALTIBASE_HOME/bin 에위치 DB 간의자동화된데이터마이그레이션 (migration) 을지원하기위한도구 DB 에생성된객체들의생성스크립트를 SQL문형식으로파일에저장 Shell::/home/alti1> aexport ----------------------------------------------------------------- Altibase Export Script Utility. Release Version 6.1.1.0.10 Copyright 2000, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : sys Write Password : manager
AEXPORT aexport 수행전 $ALTIBASE_HOME/conf/aexport.properties 파일이존재해야함 존재하지않을경우아래와같이오류가발생 [ERR-91066 : Property File Loading Error.(conf/aexport.properties)] $ALTIBASE_HOME/conf/aexport.properties.sample 을복사하여사용 설정파일내에서는 "#" 기호가주석으로사용됨 사용자가수정할옵션은다음 2 가지항목으로 iloader 스크립트를생성할때 구분자로사용되는부분임으로데이터에중복되지않게복잡한문자열을지정 (10 자이내 ) ILOADER_FIELD_TERM = ^ ILOADER_ROW_TERM = %n 이옵션을주석으로처리할경우 aexport 에생성된 iloader 쉘스크립트의데이터파일저장형식은 CSV 를사용함
AEXPORT aexport 실행시입력옵션 입력옵션 설명 -s 접속할 ALTIBASE HDB 서버의 IP -u ALTIBASE HDB DB 사용자명 (sys 이외의경우해당사용자정보만추출 ) -p 사용자의패스워드 -port -object -tserver -tport -nls_use ALTIBASE HDB Listen Port 번호 추출할객체를소유자와함께명시 추출할데이터를업로드할대상서버를지정 접속할대상서버의포트번호 ALTIBASE HDB 문자셋정보 ( 주석등에한글을사용한경우를대비해올바른문자셋입력필요 ) -tserver, -tport 옵션사용시생성된스크립트의서버 IP 정보와 Port 번호정보는로컬 서버정보가아닌 -tserver, -tport 에명시된타겟서버의정보로대체
AEXPORT aexport 에의해생성되는파일 : SQL 파일 전체 DB 모드 : SYS 사용자만실행가능 파일명 SYS_CRT_DIR.sql SYS_CRT_USER.sql SYS_CRT_REP.sql SYS_CRT_SYNONYM.sql ALL_CRT_VIEW_PROC.sql ALL_CRT_TBS.sql ALL_CRT_TBL.sql ALL_CRT_INDEX.sql ALL_CRT_FK.sql ALL_CRT_TRIG.sql ALL_CRT_SEQ.sql ALL_CRT_LINK.sql 설명모든디렉토리를생성하는 SQL문을저장모든 DB 사용자를생성하는 SQL문을저장이중화객체생성정보를저장모든시노님 (synonym) 객체생성 SQL문을저장모든뷰와프로시저생성 SQL문을저장모든테이블스페이스생성 SQL문을저장모든사용자테이블생성 SQL문을저장모든사용자인덱스생성 SQL문을저장모든사용자의외래키생성 SQL문을저장모든사용자의트리거생성 SQL문을저장모든사용자의시퀀스생성 SQL문을저장모든사용자의데이터베이스 LINK 생성 SQL문을저장
AEXPORT aexport 에의해생성되는파일 : SQL 파일 사용자모드 : SYS 사용자와지정사용자가실행가능 파일명사용자명 _CRT_TBS.sql 사용자명 _CRT_INDEX.sql 사용자명 _CRT_FK.sql 사용자명 _CRT_TRIG.sql 사용자명 _CRT_SEQ.sql 사용자명 _CRT_LINK.sql 설명지정한사용자의모든테이블생성 SQL문을생성지정한사용자의모든인덱스생성 SQL문을생성지정한사용자의모든외래키생성 SQL문을생성지정한사용자의모든트리거생성 SQL문을생성지정한사용자의모든시퀀스생성 SQL문을생성지정한사용자의모든데이터베이스 LINK 생성 SQL문을생성 객체모드 : SYS 사용자와지정사용자가실행가능 파일명 사용자명 _ 객체명 _CRT.sql 설명 지정한사용자의객체생성 SQL 문을저장
AEXPORT aexport 에의해생성되는파일 : 쉘실행파일 파일명 run_is.sh run_is_cons.sh run_is_fk.sh run_is_index.sh run_is_repl.sh run_il_in.sh run_il_out.sh 설명 테이블스페이스, DB 사용자, 테이블, 프로시저, VIEW, 사용자권한등을순차적으로생성하는스크립트 제약사항 (constraints) 을순차적으로생성하는스크립트 (TWO_PHASE_SCRIPT 프로퍼티 ON 생성시생성되며인덱스, 외래키, 트리거, 이중화객체생성스크립트를포함 ) 참조키를순차적으로생성하는스크립트 (TWO_PHASE_SCRIPT 프로퍼티 ON 설정시생성되지않음 ) 인덱스를순차적으로생성하는스크립트 (TWO_PHASE_SCRIPT 프로퍼티 ON 설정시생성되지않음 ) 이중화객체를생성하는스크립트 (TWO_PHASE_SCRIPT 프로퍼티 ON 설정시생성되지않음 ) 데이터를순차적으로업로드하는스크립트 데이터를순차적으로다운로드하는스크립트 -tserver, -tport 옵션사용시생성된스크립트중 run_il_out.sh ( 데이터다운로드스크립트 ) 의경우입력옵션의서버 IP 정보를로컬서버 ( 데이터를추출할서버 ) 정보로수정이필요
AEXPORT aexport 를이용한전체 DB 마이그레이션절차 1. 소스장비에서 aexport 를실행하여객체정보를스크립트파일로백업 2. 소스장비에서 aexport 를통해만들어진 run_il_out.sh 를실행하여데이터를백업 3. 소스장비에서 (1, 2 번 ) 과정에서생성된파일을모두대상장비로이관 4. 대상장비의 DB 재생성및구동 5. 대상장비에서 run_is.sh 을수행 ( 테이블스페이스, DB 사용자, 테이블등을생성 ) 6. 대상장비에서 run_il_in.sh 을수행 ( 데이터를업로드 ) 7. 대상장비에서 run_is_index.sh 을수행 ( 인덱스정보를생성 ) 8. 대상장비에서 run_is_fk.sh 을수행 ( 참조키를생성 ) 이미대상장비에동일한 DB 객체가존재할경우에는 5 번과정을생략하고대상장비의모든테이블을 TRUNCATE 한후데이터를업로드해야함 TWO_PHASE_SCRIPT 프로퍼티가 ON 일경우는 6 번, 8 번과정대신 run_is_con.sh 스크립트를실행
ALTIPASSWD
ALTIPASSWD altipasswd $ALTIBASE_HOME/bin 에위치 SYS 계정의패스워드를 "ALTER USER" 구문으로변경한경우반드시수행해야함 변경하지않은경우 ALTIBASE HDB 구동 / 종료등모든 DBA 권한작업에서패스워드오류발생 수행방법의예 아래와같이 isql 상에서 "SYS" 계정의패스워드를변경한후 isql> ALTER USER sys IDENTIFIED BY ppp1234; 아래와같이사용자프롬프트상에서 altipasswd 를이용하여동일하게변경 Shell::/home/alti1> altipasswd Previous Password : New Password : Retype New Password : 기존패스워드입력새로운변경패스워드입력패스워드확인
ALTIPROFILE
ALTIPROFILE altiprofile $ALTIBASE_HOME/bin 에위치 프로파일링을수행한이후생성된결과물을분석할수있게변환하는유틸리티 프로파일링으로저장되는정보 질의를수행한클라이언트정보 질의처리의통계정보 ( 처리시간, 실행계획, 수행누적횟수, 바인딩정보 ) Shell::/home/alti1> altiprofile alti-xxx-x.prof > res.txt 수행된결과를화면에출력하기때문에위와같이 redirection 으로저장
ALTIPROFILE altiprofile 사용을위한사전수행절차 질의처리통계를파일에저장하도록프로파일링을개시 (isql 을이용 ) isql> ALTER SYSTEM SET TIMED_STATISTICS = 1; isql> ALTER SYSTEM SET QUERY_PROF_FLAG = 1; $ALTIBASE_HOME/trc/ 에프로파일링결과가누적저장 Shell::/home/alti1> ls lrt $ALTIBASE_HOME/trc -rw------- 1 alti1 alti1 3400 Jul 16 19:08 alti-1279274882-0.prof ( 파일명은수행시마다변동됨 ) altiprofile 을수행시주의사항 프로파일링정보를파일로계속저장하기때문에디스크 Full 이발생하지않도록주의 중지시에는 "ALTER SYSTEM SET QUERY_PROF_FLAG = 0; " 를 isql 에서반드시실행 실시간으로파일에분석정보를기록하기때문에성능저하가발생할수있음
ALTIPROFILE altiprofile 실행및분석결과 생성된 alti-xxxx-y.prof 파일을입력파일명으로지정 프로파일링결과물은사용자가해석할수없음으로변환이필요 Shell::/home/alti1/altibase_home/trc> altiprofile alti-127974882-0.prof > res.txt 생성된분석파일결과의예 Shell::/home/alti1/altibase_home/trc> cat res.txt [STATEMENT] 2010/07/16 19:08:02 (57/5/0) SQL => [alter SYSTEM set QUERY_PROF_FLAG = 1] 실행시각 User Info User ID = 2 Client PID = 31764 Client Type = [CLI-64LE] Client AppInfo = [isql] 세션정보 질의문
ALTIPROFILE altiprofile 실행 ( 계속 ) Elapsed Time Total = 0 sec 195 usec SoftP = 0 sec 86 usec Parse = 0 sec 0 usec Valid = 0 sec 0 usec Optim = 0 sec 0 usec Execu = 0 sec 58 usec Fetch = 0 sec 51 usec 수행시각 실행결과 Query Execute Info EXECUTE Result = 1 (0:failure, 1:success) Optimizer Mode = 0 Used Memory = 0 SUCCESS SUM = 4 FAILURE SUM = 0 PROCESSED ROW = 0
ALTIPROFILE altiprofile 실행 ( 계속 ) Index Access Info Memory Full Scan Count = 1 Memory Index Scan Count = 1 Disk Full Scan Count = 0 Disk Index Scan Count = 0 인덱스비용 Disk Access Info READ DATA PAGE = 0 WRITE DATA PAGE = 0 GET DATA PAGE = 0 CREATE DATA PAGE = 0 READ UNDO PAGE = 0 WRITE UNDO PAGE = 0 GET UNDO PAGE = 0 CREATE UNDO PAGE = 0 버퍼캐쉬 / 디스크접근비용
ALTIPROFILE altiprofile 실행 ( 계속 ) [PLAN] 2010/07/21 15:36:56(82/2/620673) [------------------------------------------------------------ PROJECT ( COLUMN_COUNT: 2, TUPLE_SIZE: 12 ) SCAN ( TABLE: T1, INDEX: SYS_IDX_ID_102, ACCESS: 1, SELF_ID: 2 ) ------------------------------------------------------------ ] 실행계획
DUMP
DUMPLA dump 유틸리티 구분 dumpla 설명 로그앵커파일을분석가능하도록화면에출력복구나 DB 의일부정보를임의로확인하기위해사용 dumplf 리두로그파일에기록된트랜잭션로그를분석하는유틸리티 dumpddf 디스크데이터파일에대한복구시작점을확인디스크데이터파일이갖고있는특정페이지의무결성을임의로사용 체크해야할경우
DUMPLA dumpla $ALTIBASE_HOME/bin 에위치 로그앵커파일의정보를해석해주는유틸리티 Shell::/home/alti1/altibase_home/logs> dumpla loganchor0 ----------------------------------------------------------------- Altibase Client Dump LogAnchor utility. Release Version 6.1.1.0.10 Copyright 2000, ALTIBASE HDB Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------------------------- << DUMP OF LOGANCHOR FILE - loganchor0 >>
DUMPLA dumpla 결과의이해 (1) 로그앵커파일의기본속성정보 각정보들을로그앵커에기록할때해당정보가저장되는구조체의길이를의미 ------------------------ [LOGANCHOR ATTRIBUTE SIZE Loganchor Static Area [ 1280 ] Tablespace Attribute [ 600 ] Checkpoint Path Attribute [ 520 ] Checkpoint Image Attribute [ 404 ] Disk Datafile Attribute [ 584 ]
DUMPLA dumpla 결과의이해 (2) 로그앵커헤더정보 ------------------------ [LOGANCHOR HEADER] Binary DB Version [ 5.4.1 ] Archivelog Mode [ Archivelog ] Transaction Segment Entry Count [ 512 ] Begin Checkpoint LSN [ 0, 3, 4796393 ] End Checkpoint LSN [ 0, 3, 4797952 ] Disk Redo LSN [ 0, 3, 4796393 ] Global SN [ 29473 ] SN for Recovery from Replication [ NULL ] Server Status [ SERVER STARTED ] Log File Group Count [ 1 ] Log File Group [ 0 ] archive 모드 복구시작점 ALTIBASE HDB 구동정보
DUMPLA dumpla 결과의이해 (3) 로그앵커헤더정보 ( 계속 ) ------------------------ [LOGANCHOR HEADER].. End LSN [ 0, 3,4796393 ] ResetLog LSN [ 4294967295, 4294967295, 4294967295 ] Last Created Logfile Num [ 6 ] Delete Logfile(s) Range [ 2 ~ 1 ] Update And Flush Count [ 399 ] New Tablespace ID [ 6 ] 체크포인트시삭제된로그파일범위
DUMPLA dumpla 결과의이해 (4) 로그앵커에저장된테이블스페이스정보 [ TABLESPACE ATTRIBUTE ] Tablespace ID [ 1 ] Tablespace Name [ SYS_TBS_MEM_DATA ] New Database File ID [ 0 ] Extent Management [ FREE EXTENT BITMAP TABLESPACE ] Tablespace Status [ ONLINE ] TableSpace Type [ 1 ] Checkpoint Path Count [ 0 ] Autoextend Mode [ Autoextend ] Shared Memory Key [ 0 ] Stable Checkpoint Image Num. [ 1 ] Init Size [ 8 MBytes ( 257 Pages ) ] Next Size [ 4 MBytes ( 128 Pages ) ] Maximum Size [ 134217727 MBytes ( 4294967295 Pages ) ] Split File Size [ 1024 MBytes ( 32768 Pages ) ]
DUMPLA dumpla 결과의이해 (5) 로그앵커에저장된디스크데이터파일의정보 [ DISK DATABASE FILE ATTRIBUTE ] Tablespace ID [ 5 ] Database File ID [ 0 ] Database File Path [ /home/alti1/dbs/user_data001.dbf ] Create LSN [ 0, 0, 509526 ] Database File Status [ ONLINE ] Autoextend Mode [ Autoextend ] Create Mode [ 1 ] Initialize Size [ 100 MBytes ( 12800 Pages ) ] Current Size [ 100 MBytes ( 12800 Pages ) ] Next Size [ 1 MBytes ( 128 Pages ) ] Maximum Size [ 2048 MBytes ( 262144 Pages ) ] 생성시점의리두로그파일정보
DUMPLA dumpla 결과의이해 (6) 로그앵커에저장된메모리체크포인트패스정보 [ MEMORY CHECKPOINT PATH ATTRIBUTE ] Tablespace ID [ 1 ] Checkpoint Path [ /home/alti1/altibase_home/dbs ] [ MEMORY CHECKPOINT IMAGE ATTRIBUTE ] Tablespace ID [ 1 ] File Number [ 0 ] Create LSN [ 0, 0, 1380 ] Create On Disk (PingPong 0) [ Created ] Create On Disk (PingPong 1) [ Created ]
DUMPLF dumplf $ALTIBASE_HOME/bin 에위치 리두로그파일을분석하기위한유틸리티 (redirection 방법으로결과를저장 ) Shell::/home/alti1/altibase_home/logs> dumplf logfile1234 > 1234.txt Shell::/home/alti1/altibase_home/logs> cat 1234.txt ----------------------------------------------------------------- Altibase Client Dump LogAnchor utility. Release Version 6.1.1.0.10 Copyright 2000, ALTIBASE HDB Corporation or its subsidiaries. All Rights Reserved. -----------------------------------------------------------------....
DUMPLF dumplf 로그파일의시작로그 SN=<251745>,LSN=< 0,0>, COMP:N, MAGIC:12288, TID: 4294967295,BE: N, REP: N, ISVP: N PLSN=< 4294967295, 4294967295, 4294967295 >, LT: SMR_LT_FILE_BEGIN, SZ: 49 LFGID: 0, FileNo: 3 로그파일의종료로그 SN=<251744>,LSN=< 0,10485648>, COMP:N, MAGIC:12176, TID: 4294967295, BE: N, REP: N, ISVP: N PLSN=< 4294967295, 4294967295, 4294967295 >, LT: SMR_LT_FILE_END, SZ: 41 사용자가임의로확인할경우는일반적으로없지만특정문제가발생한시점의트랜잭션의종류나대상테이블을확인하고자할경우유용 각명칭에대해서는슬라이드노트를참조
DUMPLF dumplf 주요로그타입의분류 LT 설명 SMR_LT_DUMMY SMR_LT_CHKPT_BEGIN SMR_CHKPT_END SMR_LT_TRANS_COMMIT SMR_LT_TRANS_ABORT SMR_LT_UPDATE 트랜잭션과무관한로깅발생시 ( 내부리소스로깅등 ) 체크포인트개시체크포인트종료트랜잭션 COMMIT 로그트랜잭션 ROLLBACK 로그트랜잭션로그임을표기
DUMPLF dumplf 트랜잭션로그의예 (DELETE 문로그 ) SN=<570331>,LSN=< 0,5584455>, COMP:N, MAGIC:22087, TID: 22336, BE: N, REP: N, ISVP: N PLSN=< 0, 5, 5584372 >, LT: SMR_LT_UPDATE, SZ: 83 UTYPE: SMR_SMC_PERS_DELETE_VERSION_ROW, UPOS( SPACEID: 1, PID: 328, OFFSET: 15304 => OID: 10763208 ) TTblOID: 2916376 DELETE 수행 트랜잭션고유번호 대상테이블의고유번호
DUMPDDF dumpddf $ALTIBASE_HOME/bin 에위치 데이터파일의헤더정보및페이지의무결성을임의로체크해보고자할경우사용 Shell::/home/alti1> dumpddf m f $ALTIBASE_HOME/dbs/system001.dbf [BEGIN DATABASE FILE HEADER] Binary DB Version [ 5.4.1 ] # DB 버전 Redo LSN [ 0, 7, 2701724 ] # Recovery시에필요한로그파일정보 Create LSN [ 0, 0, 2036 ] # 데이터파일생성시점의로그파일정보 [END DATABASE FILE HEADER]
DUMPDDF dumpddf 입력옵션 옵션 설명 -p 페이지의고유번호를명시할경우 -f 대상데이터파일명을지정 -m 대상데이터파일의헤더를출력
DUMPDDF dumpddf 사용결과예 Shell::/home/alti1/altibase_home/dbs> dumpddf -m -f system001.dbf -p 27 [END DATABASE FILE HEADER] PID(27), Start Offset(229376) ----------- Physical Page Begin ---------- Checksum : 903803392 Page ID : 0.. Page Start Pointer : 7fbfffc000 Page Type : 0 Page State : 0 Index SMO Number : 0 ----------- Physical Page End ---------- This page(27) is not currupted. 데이터파일의 27 번 Page 가정상임을확인
ALTIERR
ALTIERR Altierr ATLIBASE HDB 에러코드에대한상세한설명을검색하여출력 에러메시지패턴을이용하여검색이가능 구문 altierr { -w keyword pattern [-n] error number} 파라미터 파라미터 -w -n 설명 지정한검색패턴을포함하는에러메시지를찾는다. 검색패턴을포함하는모든에러메시지를출력한다. 에러번호를사용하여검색한다. 에러번호는 16 진수 / 양의정수 / 음의정수형태로입력가능하다. 에러코드와정확히일치하는레코드만검색된다. 에러번호를사용하여검색할경우파라미터 ( -n ) 를생략할수있다.
ORANGE for ALTIBASE
ORANGE FOR ALTIBASE ORANGE FOR ALTIBASE ALTIBASE HDB 운영환경에서쉽고, 빠르게개발의효율성과생산성을높이고성능의최적화가가능한어플리케이션개발및성능관리 DBA 툴 SQL 및 PSM 개발을지원하는다양한도구들을제공하여쉽고빠르게개발할수있는환경을제공 시스템의안정적인운영및관리를위해세션 (session), SQL, 락 (Lock) 들에대한모니터링기능을제공 제품구성 Standard Edition : 개발자 / 컨설턴트를위한필수기능 DBA Edition : DBA 혹은성능분석을위한고급기능
ORANGE FOR ALTIBASE ORANGE 실행화면 [ 시작 ] [ 모든프로그램 ] [Orange for ALTIBASE 5.0 DBA] 를실행
ORANGE FOR ALTIBASE ORANGE 상세기능 SQL Tool 다수의 SQL을일괄또는순차실행하거나특정 SQL만을선택적으로실행할수있고실행결과를직접수정하거나파일로저장할수있음
ORANGE FOR ALTIBASE ORANGE 상세기능 Table Editor 데이터의 DML 작업을 GUI환경에서편리하게할수있으며, 조건에의한일부데이터의조회, 편집, 저장기능을제공
ORANGE FOR ALTIBASE ORANGE 상세기능 Trace Tool Trace 파일을분석하여파싱정보와실행계획정보를실시간으로제공
ORANGE FOR ALTIBASE ORANGE 상세기능 Description Tool 데이터베이스접속사용자에게허용된모든 Object 의상세 Description 을제공하며, 다양한검색조건에의한특정객체찾기기능을제공
ORANGE FOR ALTIBASE ORANGE 상세기능 Database Information 데이터베이스의전반적인구성정보를제공
ORANGE FOR ALTIBASE ORANGE 상세기능 Data Dictionary Tool 자료사전에존재하는다양한뷰를성격및역할에따라카테고리화하고관련설명을제공
ORANGE FOR ALTIBASE ORANGE 상세기능 Query Builder GUI 환경에서논리적인데이터베이스객체모델을생성할수있도록개발된사용자중심의 SQL 쿼리생성기
ORANGE FOR ALTIBASE ORANGE 상세기능 File Editor 텍스트데이터파일을편집하는등의작업시전용으로쓸수있는에디터
ORANGE FOR ALTIBASE ORANGE 상세기능 SQL Monitor 실행된 Dynamic SQL중에서성능저하를유발시키는 Top N SQL을쉽고빠르게찾아주는기능을제공
ORANGE FOR ALTIBASE ORANGE 상세기능 Session Monitor DB에현재접속되어있는모든 Agent 리스트와각 Agent 의여러가지상세정보를제공
ORANGE FOR ALTIBASE ORANGE 상세기능 Instance Monitor 데이터베이스운영에관련된많은통계정보중가장중요하고자주보는핵심적인통계정보를그래프를이용하여서버현황을파악
ORANGE FOR ALTIBASE ORANGE 상세기능 Unload Tool 데이터베이스의테이블이나 VIEW 를선택하여 txt, csv, xls 등다양한포맷의파일로데이터를내려받을수있는기능을제공
ORANGE FOR ALTIBASE ORANGE 상세기능 Load Tool Txt, csv, xls 등다양한포맷의외부파일로부터데이터베이스의테이블에데이터로 Load 할수있는기능을제공
ORANGE FOR ALTIBASE ORANGE 상세기능 Data Generation Tool 임의의데이터들을생성하여원하는테이블에 Insert 하는역할
ORANGE FOR ALTIBASE ORANGE 상세기능 Script Generation Tool 유저가소유하고있는오브젝트를스크립트파일로생성
ORANGE FOR ALTIBASE ORANGE 상세기능 Space Manager 테이블스페이스와데이터파일에대한사용현황을다양한방식으로제공
ORANGE FOR ALTIBASE ORANGE 상세기능 Security Manager 데이터베이스에정의된사용자, 권한등보안관련사항을다양한관점에서손쉽게조회하고사용자변경작업을용이하게할수있는기능을제공
ORANGE FOR ALTIBASE ORANGE 상세기능 Health Check 데이터베이스가가동이된이후 Session, Statement, Lock, Memory DB, Memory, Replication, GC, Logfile, Tablespace 등의정보를 Reporting
ORANGE FOR ALTIBASE ORANGE 상세기능 Schema Browser Schema Object와 Tablespace, Replication, Schema 객체정보등을 Tree 형태로일목요연하게보여줌 Table Data View Index Data View Tablespace Data View
ORANGE FOR ALTIBASE ORANGE 상세기능 Template Browser 사용자가 DML, DDL, PL/SQL, SQL Function, SQL Optimizer 와같이복잡한 SQL 문법을쉽게만들수있도록 Template 을제공
MIGRATION CENTER
MIGRATION CENTER MIGRATION CENTER 이기종데이터베이스간의데이터 Migration 을간편하게수행할수있는도구 주요이점 원본데이터베이스의객체들을 ALTIBASE HDB 로쉽게마이그레이션. 데이터를외부파일로내보내어 (export), iloader 로 ALTIBASE HDB 에가져올 (import) 때사용. 마이그레이션과정을단축시킬수있는병렬수행옵션을제공. 이기종데이터베이스간에다른데이터타입들의데이터타입매핑을제공하며 유연성을위해사용자정의타입매핑기능도제공. Schema Migration DB1 DB2 Data Migration
MIGRATION CENTER 시스템요구사항 하드웨어요구사항 CPU : 800Mhz 펜티엄 III 이상 메인메모리 : 512MB 이상 디스크 : 150MB 이상의여유공간 화면해상도 : 1024 x 768 화소이상 (GUI모드경우 ) 소프트웨어요구사항 Oracle 또는 IBM Java 5 이상의 JRE 호환가능한데이터베이스시스템 ALTIBASE HDB : 5.5.1 이상버전 Oracle Database : 10g 이상버전 Microsoft SQL Server : 2005 이상버전 Oracle MySQL : 5.0 이상버전
MIGRATION CENTER 설치및제거 다운로드 알티베이스고객지원서비스포털 (http://support.altibase.com) 에서다운로드 Zip 또는 tar.gz 파일형태로제공되며이파일은실행파일과몇가지 JDBC 드라이버를포함 설치 Migration Center 설치파일의압축을해제하고디렉토리를원하는위치로이동 제거 Migration Center 설치디렉토리삭제
MIGRATION CENTER GUI 모드 Migration Center GUI 는 프로젝트 (Project), 정보 (Information), 로그 (Log) 3 개의창으로구성 Information Project Log
MIGRATION CENTER Migration Center 시작 윈도우환경에서는 migcenter.bat 아이콘을더블클릭해서실행하고, 유닉스계열의운영체제에서는 migcenter.sh 를실행 데이터베이스연결등록 Database 메뉴아래의 Add Database Connection 메뉴항목을선택하거나도구모음에서 Add Database Connection 아이콘을클릭
MIGRATION CENTER 프로젝트생성 Project 메뉴아래의 Create Project 메뉴항목을선택하거나, 도구모음에서 Create Project 아이콘을클릭
MIGRATION CENTER 프로젝트열기 Project 메뉴아래의 Open Project 메뉴항목을선택 원본및대상데이터베이스로연결 원본및대상데이터베이스로연결은 구축 단계로진행하기위해필수적 Project 메뉴아래의 Connect 메뉴항목을선택하거나열려진프로젝트에오른쪽마우스버튼을클릭해서 Connect 를선택
MIGRATION CENTER 프로젝트구축 Migration 메뉴아래의 Build 메뉴아이템을선택하거나, 도구모음에서 Build 아이콘을클릭
MIGRATION CENTER 프로젝트구축 (Build Report)
MIGRATION CENTER 프로젝트조정 Migration 메뉴아래의 Reconcile 메뉴항목을선택하거나, 도구모음에서 Reconcile 아이콘을클릭 User Mode Table Mode
MIGRATION CENTER 프로젝트실행 Migration 메뉴아래의 Run 메뉴항목을선택하거나, 도구모음에서 Run 아이콘을클릭
MIGRATION CENTER 커맨드라인인터페이스 (CLI) 모드 CLI 모드 GUI 모드실행이불가능할경우사용 마이그레이션절차중 실행 단계만수행가능 CLI 모드수행방법 project_path 는상대경로, 절대경로모두사용가능 #./migcenter.sh run project_path
MIGRATION CENTER 마이그레이션가능한데이터베이스객체 타데이터베이스 to ALTIBASE HDB 데이터베이스객체유형 User 모드에서마이그레이션가능여부 Table 모드에서마이그레이션가능여부 비고 Table O O Primary Key Constraint O O Unique Constraint O O Check Constraint 지원예정 Foreign Key Constraint O Index O O Sequence Private Synonym O O Procedure Function View Trigger 지원예정지원예정지원예정지원예정
MIGRATION CENTER 데이터타입매핑 오라클데이터베이스 to ALTIBASE HDB 인덱스소스대상특이사항 1 CHAR CHAR 2 NCHAR NCHAR 원본및대상데이터베이스의 NCHAR 칼럼의명시적인크기는같다 ( 예.NCHAR(10) -> NCHAR(10)). 그러나, 오라클 JDBC 드라이버에서는 NCHAR 칼럼의크기가사용되는바이트의개수로정의되는반면, ALTIBASE HDB 의 JDBC 드라이버에서는 NCHAR 칼럼의크기가저장되는문자의개수로정의된다. 이는 ALTIBASE HDB 에서생성되는 NCHAR 칼럼이필요에따라오라클보다 2 배또는 3 배정도클것이라는의미이므로, 이런점을유의하도록한다. 3 VARCHAR2 VARCHAR 4 NVARCHAR2 NVARCHAR NCHAR와같은이유로, 칼럼크기가서로다르다. 5 LONG CLOB 6 NUMBER NUMERIC 7 FLOAT FLOAT 8 BINARY FLOAT FLOAT
MIGRATION CENTER 데이터타입매핑 오라클데이터베이스 to ALTIBASE HDB 인덱스소스대상특이사항 9 BINARY DOUBLE VARCHAR(310) ALTIBASE HDB 에는오라클 BINARY DOUBLE 타입과호환되는데이터타입이없으므로데이터손실을막기위해문자형으로저장된다. 10 DATE DATE 11 TIMESTAMP DATE 스케일의차이로인해서소량의데이터손실이발생할수있다. 오라클에서는타임스탬프값의스케일이나노초 (9 자리수 ) 인반면, ALTIBASE HDB 에서는타임스탬프값의스케일이마이크로초 (6 자리수 ) 이다. 12 RAW BLOB 13 LONG RAW BLOB 14 BLOB BLOB 15 CLOB CLOB 16 NCLOB NVARCHAR(10666) ALTIBASE HDB 에는오라클 NCLOB 타입과호환가능한데이터타입이없으므로, 최대크기의 NVARCHAR 타입으로변환된다. 실제데이터크기가 NVARCHAR 최대크기를초과하는경우, 데이터를마이그레이션하는동안데이터손실이발생할수도있다.
MIGRATION CENTER 데이터타입매핑 MS SQL Server to ALTIBASE HDB 인덱스 소스 대상 특이사항 1 BIGINT BIGINT 2 DECIMAL NUMERIC 3 INT INTEGER 4 NUMERIC NUMERIC 5 SMALLINT SMALLINT 6 MONEY FLOAT 7 TINYINT SMALLINT 8 SMALLINTMONEY FLOAT 9 BIT CHAR(1) 10 FLOAT VARCHAR(310) ALTIBASE HDB 에는 SQL Server FLOAT 타입과호환가능한데이터타입이없으므로, 데이터손실을막기위해 VARCHAR(310) 으로맵핑된다. 11 REAL FLOAT 12 DATE DATE
MIGRATION CENTER 데이터타입매핑 MS SQL Server to ALTIBASE HDB 인덱스소스대상특이사항 13 DATETIME2 DATE 스케일의차이로인해서시간의 fraction 손실이발생할수있다. SQL Server 의 DATETIME2 타입스케일이나노초의 100 배 (7 자리수 ) 인반면, ALTIBASE HDB 에서는 DATE 타입의스케일이마이크로초 (6 자리수 ) 이다. 14 DATETIME DATE 15 SMALLDATETIME DATE 16 CHAR CHAR 17 TEXT CLOB 18 VARCHAR VARCHAR 19 VARCHAR(MAX) CLOB 20 NVARCHAR NVARCHAR 21 NVARCHAR(MAX) NVARCHAR(10666) ALTIBASE HDB 에는 SQL Server NTEXT 타입과호환가능한데이터타입이없으므로최대크기의 VARCHAR 타입이사용된다. 실제데이터길이가최대 NVARCHAR 크기를초과하는경우, 데이터를마이그레이션하는동안데이터손실이발생할수도있다.
MIGRATION CENTER 데이터타입매핑 MS SQL Server to ALTIBASE HDB 인덱스 소스 대상 특이사항 22 BINARY BYTE 23 IMAGE BLOB 24 VARBINARY BLOB 25 ALLIDENTITY NUMERIC(38,0) 26 UNIQUEIDENTIFIER VARCHAR(40) ALTIBASE HDB 에는 SQL Server UNIQUEIDENTIFIER 타입과호환가능한데이터타입이없으므로, 데이터손실을방지하기위해 VARCHAR 타입이사용된다. 27 SYSNAME NVARCHAR (128)
MIGRATION CENTER 데이터타입매핑 MySQL to ALTIBASE HDB 인덱스 소스 대상 특이사항 1 TINYINT SMALLINT 2 SMALLINT INTEGER 3 MEDIUMINT INTEGER 4 INT(INTEGER) BIGINT 5 BIGINT NUMERIC(20,0) 6 DECIMAL (NUMERIC) VARCHAR(70) ALTIBASE HDB 에는 MySQL DECIMAL 타입과호환가능한데이터타입이없으므로, 데이터손실을막기위해 VARCHAR 타입으로맵핑된다. 7 FLOAT FLOAT 8 DOUBLE VARCHAR(310) ALTIBASE HDB 에는 MySQL DOUBLE 타입과호환가능한데이터타입이없으므로, 데이터손실을막기위해 VARCHAR 타입으로맵핑된다. 9 BIT BIT 10 DATETIME DATE 시각부분이 0 으로설정된다. 11 TIMESTAMP DATE TIMEZONE 제외
MIGRATION CENTER 데이터타입매핑 MySQL to ALTIBASE HDB 인덱스소스대상특이사항 12 CHAR CHAR 13 VARCHAR VARCHAR 14 15 CAHR with National Character VARCHAR with National Character NCHAR NVARCHAR 16 BINARY BYTE 17 VARBINARY BLOB 18 TINYBLOB BYTE 19 TINYTEXT VARCHAR(255) 20 BLOB BLOB 21 TEXT CLOB 22 MEDIUMBLOB BLOB
MIGRATION CENTER 데이터타입매핑 MySQL to ALTIBASE HDB 인덱스 소스 대상 특이사항 23 MIDIUMTEXT CLOB 24 LONGBLOB BLOB 25 LONGTEXT CLOB 26 ENUM 27 SET VARCHAR (10666) VARCHAR (10666) ALTIBASE HDB 에는 MySQL ENUM 타입과호환가능한데이터타입이없으므로, 데이터손실을막기위해 VARCHAR 타입으로맵핑된다. ALTIBASE HDB 에는 MySQL SET 타입과호환가능한데이터타입이없으므로, 데이터손실을막기위해 VARCHAR 타입으로맵핑된다.
실습교재 II
PERFORMANCE VIEW
PERFORMANCE VIEW Performance View 실습 isql 로접속한후해당 isql 의세션정보를확인하라 (process id, 접속 IP 정보 ) isql> SELECT client_pid, comm_name FROM v$session 2 WHERE id = SESSION_ID(); 임의의테이블과질의를수행한후어떠한정보가 v$statement 를통해조회가되는지확인하라 isql> SELECT isql> SELECT LPAD(query, 100, ' '), execute_time, execute_success 2 FROM v$statement 3 WHERE session_id = SESSION_ID(); 현재 ALTIBASE HDB 의각모듈별메모리사용량중상위 5 개를출력하라 isql> SELECT name, max_total_size FROM v$memstat 2 ORDER BY max_total_size DESC LIMIT 5;
PERFORMANCE VIEW Performance View 실습 다음의질의가 2 개의 isql 을실행해순차적으로처리된후 LOCK 정보를확인하라 Time 세션 A 세션 B t1 isql> autocommit off; isql> autocommit off; t2 isql> DROP TABLE t1 ; isql> CREATE TABLE t1 (a INTEGER); isql> INSERT INTO t1 VALUES (10); isql> COMMIT; t3 isql> UPDATE t1 SET a = a + 1; t4 isql> UPDATE t1 SET a = a + 1; (Lock Wait 상태유발 ) t5 isql> SELECT * FROM v$lock_wait; isql> SELECT query, tx_id FROM v$statement 2 WHERE tx_id= 조회된 ID 값 ; t6 isql> commit ;
BACKUP & RECOVERY
iloader
ILOADER iloader 실습 간단한데이터다운로드 Form 파일생성 Shell::/home/alti1> mkdir work Shell::/home/alti1> cd work Shell::/home/alti1/work> iloader -u sys -p manager -port 20301 -s 127.0.0.1 formout -T TB_TEST1 -f TB_TEST1.fmt 다운로드 Shell::/home/alti1/work> iloader -u sys -p manager -port 20301 -s 127.0.0.1 out -f TB_TEST1.fmt -d TB_TEST1.dat 결과확인 Shell::/home/alti1/work> vi TB_TEST1.fmt Shell::/home/alti1/work> vi TB_TEST1.dat
ILOADER iloader 실습 간단한데이터업로드 업로드 isql> SELECT COUNT(*) FROM tb_test1; isql> TRUNCATE TABLE tb_test1; Shell::/home/alti1/work> iloader -u sys -p manager -port 20301 -s 127.0.0.1 in -f TB_TEST1.fmt - d TB_TEST1.dat -log TB_TEST1.log 결과확인 Shell::/home/alti1/work> cat TB_TEST1.log
ILOADER iloader 실습 데이터업로드 ( 성능옵션사용 ) 슬라이드노트의실습실행후, 진행 Shell::/home/alti1/work> il formout -T t1 -f t1.fmt Shell::/home/alti1/work> il out -f t1.fmt -d t1.dat -log t1.log -bad t1.bad Shell::/home/alti1/work> is isql> TRUNCATE TABLE t1 ; Shell::/home/alti1/work> il in -f t1.fmt -d t1.dat 성능옵션미사용시시간측정 isql> TRUNCATE TABLE t1 ; Shell::/home/alti1/work> il in -f t1.fmt -d t1.dat -array 50 -parallel 4 성능옵션사용시시간측정
ILOADER iloader 실습 잘못된데이터파일에의한오류확인 이미받은 TB_TEST1.dat 파일에서쌍따옴표구분자하나를지우고저장 Shell::/home/alti1/work> vi TB_TEST1.dat 업로드수행 isql> SELECT COUNT(*) FROM tb_test1; isql> TRUNCATE TABLE tb_test1; Shell::/home/alti1/work> il in -f TB_TEST1.fmt -d TB_TEST1.dat -log TB_TEST1.log -bad TB_TEST1.bad 결과확인 Shell::/home/alti1/work> vi TB_TEST1.log Shell::/home/alti1/work> vi TB_TEST1.bad 지웠던 를추가하고저장 Shell::/home/alti1/work> il in -f TB_TEST1.fmt -d TB_TEST1.bad isql> SELECT COUNT(*) FROM tb_test1;
ILOADER iloader 실습 폼파일의편집실습 ( 조건절사용 ) TB_TEST1 에서 (C1 > 5000) 인조건의데이터만다운로드 Shell::/home/alti1/work> vi TB_TEST1.fmt 맨마지막에 DOWNLOAD CONDITION "WHERE c1 > 5000" 을추가 다운로드수행 isql> SELECT COUNT(*) FROM tb_test1 WHERE c1 > 5000; Shell::/home/alti1/work> iloader -u sys -p manager -port 20301 -s 127.0.0.1 out -f TB_TEST1.fmt -d TB_TEST1.dat 결과확인 Shell::/home/alti1/work> wc -l TB_TEST1.dat 5000 TB_TEST1.dat
ILOADER iloader 실습 폼파일의편집실습 (DATE 포맷의변경 ) DATE 포맷의변경 Shell::/home/alti1/work> vi TB_TEST1.fmt 맨마지막에 DATEFORM YYYY-MM-DD HH:MI:SS.SSSSSS 으로변경 다운로드수행 Shell::/home/alti1/work> il out -f TB_TEST1.fmt -d TB_TEST1.dat 결과확인 ( 사용자가변경한 DATE 형식으로다운로드되었는지확인 ) Shell::/home/alti1/work> vi TB_TEST1.dat
ILOADER iloader 실습 폼파일의편집실습 (Sequence 의사용 ) 실습테이블다운로드및폼파일편집 ( 슬라이드노트에서시퀀스생성부터실습 ) Shell::/home/alti1/work> il formout -T seqtable -f seqtable.fmt shell::/home/alti1/work> il out -f seqtable.fmt -d seqtable.dat Shell::/home/alti1/work> vi seqtable.fmt SEQUENCE seq1 C1 table seqtable { C1 integer; C2 VARCHAR(20); } 사용자추가 Shell::/home/alti1/work> il in -f seqtable.fmt -d seqtable.dat -mode truncate isql> SELECT * FROM seqtable;
ILOADER iloader 실습 폼파일의편집실습 ( 함수의사용을통한데이터변환 ) 실습테이블다운로드및폼파일편집 Shell::/home/alti1/work> vi seqtable.fmt SEQUENCE seq1 C1 기존에있던구문제거 table seqtable { C1 integer; C2 VARCHAR(20) "CONCAT (TRIM(?), '/TEST')" ; 추가 } Shell::/home/alti1/work> il in -f seqtable.fmt -d seqtable.dat -mode truncate isql> SELECT * FROM seqtable;
AEXPORT
AEXPORT aexport 실습 실행 모든 DB객체의생성스크립트를백업 Shell::/home/alti1> mkdir work1 Shell ::/home/alti1> cd work1 Shell ::/home/alti1/work1> aexport ( 실행후 user: sys, pw: manager 입력 ) 실행결과 Shell::/home/alti1/work1> ls ALL_CRT_PROC.sql SYS_CRT_REP.sql run_il_out.sh ALL_CRT_TBS.sql SYS_CRT_SYNONYM.sql run_is.sh ALL_CRT_VIEW.sql SYS_CRT_TBL.sql run_is_fk.sh SYS_CRT_DIRECTORY.sql SYS_CRT_USER.sql run_is_index.sh SYS_CRT_FK.sql SYS_PRIV_USER.sql run_is_repl.sh SYS_CRT_INDEX.sql run_il_in.sh
AEXPORT aexport 실습 실행 사용자 user1객체의생성스크립트를백업 Shell::/home/alti1> is -f schema_edu.sql Shell::/home/alti1> mkdir work2 Shell ::/home/alti1> cd work2 Shell ::/home/alti1/work2> aexport -s 127.0.0.1 -u user1 -p user1 실행결과 Shell::/home/alti1/work2> ls USER1_CRT_DIR.sql USER1_CRT_TBL.sql run_is.sh USER1_CRT_FK.sql USER1_CRT_TRIG.sql run_is_fk.sh USER1_CRT_INDEX.sql USER1_CRT_USER.sql run_is_index.sh USER1_CRT_LINK.sql USER1_CRT_VIEW_PROC.sql run_is_repl.sh USER1_CRT_SEQ.sql USER1_CRT_SYN.sql run_il_in.sh run_il_out.sh
AEXPORT aexport 실습 실행 User1 사용자의 employee 테이블과 t1_view 의생성스크립트를백업 isql> CONNECT user1/user1 isql> CREATE VIEW t1_view 2 AS 3 SELECT eno, ename, salary 4 FROM employee; Shell ::/home/alti1> cd work2 Shell ::/home/alti1/work2> aexport -s 127.0.0.1 -u user1 -p user1 -object user1.employee Shell ::/home/alti1/work2> aexport -s 127.0.0.1 -u user1 -p user1 -object user1.t1_view 실행결과 Shell::/home/alti1/work> ls user1_employee_crt.sql user1_t1_view_crt.sql
ALTIPASSWD
ALTIPASSWD altipasswd 실습 실행 DBA권한을가진 SYS계정의패스워드변경실습 isql> ALTER USER sys IDENTIFIED BY ppp1234; Alter success. shell::/home/alti1> altipasswd Previous Password : manager New Password : ppp1234 Retype New Password : ppp1234 shell::/home/alti1> vi $ALTIBASE_HOME/bin/server, is, il 스크립트를수정 SYS 계정의패스워드지정부분을수정
ALTIPROFILE
ALTIPROFILE altiprofile 실습 profile 의시작 isql> ALTER SYSTEM SET TIMED_STATISTICS = 1; isql> ALTER SYSTEM SET QUERY_PROF_FLAG = 1; DML 을자유롭게수행 isql> DELETE FROM tb_test1 WHERE c1<5100; isql> SELECT c1, c2 FROM tb_test1 WHERE c1 > 5100 LIMIT 10 ; profile 의종료 isql> ALTER SYSTEM SET QUERY_PROF_FLAG = 0 ;
ALTIPROFILE altiprofile 실습 profile 의결과생성 shell::/home/alti1> cd $ALTIBASE_HOME/trc shell::/home/alti1/altibase_home/trc> altiprofile alti-xxxxxxx-0.prof > prof.txt (*.prof 파일명은실행시점별로다름 ) shell::/home/alti1/altibase_home/trc> vi prof.txt ( 실습생이실행한쿼리들에대한분석결과를확인 )
DUMP
DUMPLA dumpla 실습 실행 dumpla 실습 Shell::/home/alti1> cd $ALTIBASE_HOME/logs Shell::/home/alti1/altibase_home/logs> dumpla loganchor0 > res.txt Shell::/home/alti1/altibase_home/logs> vi res.txt dumpla 를수행한결과파일에서 End LSN 정보를확인 dumpla 를수행한결과파일에서 Disk Redo LSN 정보를확인 dumpla 를수행한결과파일에서각데이터파일의정보들을확인
DUMPLF dumplf 실습 실행 마지막 LSN 정보를통해어떤로그파일을 dump 해볼지선정 Shell::/home/alti1/altibase_home/logs> dumpla loganchor0 > an.txt Shell::/home/alti1/altibase_home/logs> grep "End LSN" an.txt Shell::/home/alti1/altibase_home/logs> dumplf -f logfilexx > XX_before.txt isql> DROP TABLE t1; isql> CREATE TABLE t1(c1 integer); isql> INSERT INTO t1 VALUES(1); isql> INSERT INTO t1 VALUES(2); isql 상에서임의의 DDL, DML 을수행해본다. 위에서확인한동일로그파일을 dump 한후 DDL/DML 수행전 / 후의결과를비교 Shell::/home/alti1/altibase_home/logs> dumplf -f logfilexx > XX_after.txt
DUMPDDF dumpddf 실습 실행 system001.dbf 파일을대상으로선정 shell::/home/alti1> cd $ALTIBASE_HOME/dbs shell::/home/alti1/altibase_home/dbs> dumpddf -m -f system001.dbf shell::/home/alti1/altibase_home/dbs> dumpddf -m -f system001.dbf -p 27 > res.log
MIGRATION CENTER
Migration Center Migration Center 실습 실행 migcenter.bat 파일을더블클릭하여실행
Migration Center Migration Center 실습 데이터베이스등록 오라클 DB 정보등록후접속테스트
Migration Center Migration Center 실습 데이터베이스등록 ALTIBASE HDB 정보등록후접속테스트
Migration Center Migration Center 실습 프로젝트등록 등록한데이터베이스를기준으로신규프로젝트를등록
Migration Center Migration Center 실습 프로젝트등록 Migration Opttions 을지정후 Project - Connect 클릭
Migration Center Migration Center 실습 프로젝트 Build 신규등록한프로젝트를 Build 하고 Report 결과를확인
Migration Center Migration Center 실습 프로젝트 Reconcile Reconcile 메뉴에서마이그레이션대상을지정
Migration Center Migration Center 실습 프로젝트 Reconcile 마이그레이션대상테이블을지정후 NEXT 클릭
Migration Center Migration Center 실습 프로젝트 Reconcile 데이터타입 Mapping 정보확인후 Next 클릭
Migration Center Migration Center 실습 프로젝트 Reconcile 테이블스페이스 Mapping 정보확인후 Next 클릭
Migration Center Migration Center 실습 프로젝트 Reconcile 테이블, 테이블스페이스 Mapping 정보확인후 Next 클릭
Migration Center Migration Center 실습 프로젝트 Reconcile Thread, 테이블 Mapping 정보확인후 Report 클릭. 최종정보확인
Migration Center Migration Center 실습 프로젝트실행 프로젝트실행후결과확인