c
ALTIBASE HDB ADMINISTRATION I INTRODUCTION to ALTIBASE HDB ALTIBASE HDB CONCEPT 타 DBMS와의비교 INSTALLATION STARTUP & STOP isql
ALTIBASE HDB CONCEPT
DBMS 특징 메모리 DBMS 의특징 빠른데이터처리성능 데이터와인덱스를모두메모리에저장하여처리하므로빠른데이터처리가능 메모리인덱스는 RID가아닌 Physical한포인터로관리하기때문에액세스가빠름 디스크 I/O로인한성능저하가거의발생하지않음 OLTP성업무에사용하기적합 물리적메모리의크기만큼만데이터를적재할수있는제약사항이있음 DATABASE ENGINE MEMORY LAYER Memory Tablespace DISK STORAGE LAYER
DBMS 특징 디스크 DBMS 의특징 대용량데이터처리 메모리 DBMS에비해데이터의저장공간에대한제약이거의없음 History성데이터, DW 용으로사용하기적합 처리성능에제한 디스크I/O로인한성능저하발생 Buffer에데이터상주시켜도인덱스는디스크에생성됨 DATABASE ENGINE MEMORY LAYER DISK STORAGE LAYER Memory Buffer DISK Tablespace
Hybrid DBMS 도입배경 요구사항변화 비즈니스변화 IT 인프라변화 IT 환경분석 새로운비즈니스모델등장 고객중심의환경 정보흐름의가속화 글로벌경쟁시대 Memory 가격의지속적인하락 - 대용량 Memory 탑재서버출현 통신장비속도의지속적인발전 - M Byte G Byte 전송속도 - 트랜잭션의대용량화 Mobile Device 보급률확대 디지털화 유비쿼터스컴퓨팅환경 데이터홍수 요구사항변화 고성능데이터처리 대용량데이터처리
Hybrid DBMS 도입배경 Hybrid DBMS 를통한효율성증대 일반적 MMDBMS 의적용 ( 혼용구조 ) Hybrid DBMS 의적용 MMDBMS 데이터동기화필요 DBA APPLICATION Resource Hybrid DBMS 통합엔진 DBA APPLICATION Resource DRDBMS 유지보수 유지보수 관리에서운영, 구성적인모든비용과노력들이두개의 DBMS 를전부제어해야만함 메모리와디스크저장장치를하나의엔진에서완벽하게융합되어제공함으로효율성극대화 관리적비용 : DRDBMS + MMDBMS 비용추가 운영적비용 : DRDBMS + MMDBMS 비용추가 구성적비용 : DRDBMS + MMDBMS 비용추가 관리적비용 : Hybrid DBMS 만을관리 [ 비용 ½ 절감 ] 운영적비용 : Hybrid DBMS 만을관리 [ 비용 ½ 절감 ] 구성적비용 : Hybrid DBMS 만을관리 [ 비용 ½ 절감 ]
Hybrid DBMS Hybrid DBMS Concept 사용자는 Memory DBMS, Disk DBMS 의구분없이하나의 DBMS 만접근 ALTIBASE HDB MEMORY LAYER DISK STORAGE LAYER Memory Tablespace Memory Buffer DISK Tablespace
타 DBMS 와의비교
Architecture 비교 기능 O사 DB ALTIBASE HDB 비고 DBMS Process구조 Multi Process 구조 Multi Thread 구조 모델 Relational DBMS 구조 Relational DBMS 구조 아키텍처 Client-Server 구조 Client-Server 구조 데이터베이스클러스터링 (RAC) 이중화 (Replication) High Availability 방식 별개 Instance Storage 공유 별개 Instance Storage 별도 Replication 은테이블의데이터만복제됨 스키마공유 스키마별도 데이터공유 데이터복제 64bit 모드지원 지원됨 지원됨 Locking Mode Row-Level Locking Row-Level Locking MVCC를지원함 DB Recovery Datafile & Redo logfile 이용 Datafile & Redo logfile 이용 DeadLock Detection Auto Deadlock Detect & Recovery Auto Deadlock Detect & Recovery
Architecture 비교 기능 O 사 DB ALTIBASE HDB 비고 DB 정보파일 Control 파일 loganchor 파일 Online 로그파일 Redo log 파일 (Recycle) Redo log 파일 (Sequential) Archive 로그파일 %t_%s_%r.arc logfile0 ~ Undo TBS System TBS UNDO 사용자지정 SYSTEM, SYSAUX SYS_TBS_DISK_UNDO SYS_TBS_MEM_DIC, SYS_TBS_MEM_DATA, SYS_TBS_DISK_DATA Temp TBS TEMP 사용자지정 SYS_TBS_DISK_TEMP 사용자지정 Memory TBS 없음사용자지정 Volatile TBS 없음사용자지정 Disk TBS 사용자지정사용자지정
STORAGE 비교 O사 DB Storage 구조 ALTIBASE HDB Storage 구조기능 O사 DB ALTIBASE HDB 데이터베이스 (DB) 데이터베이스 (DB) Database Database 테이블스페이스 (Tablespace) 테이블스페이스 (Tablespace) Tablespace Segment Tablespace Segment 관리구조 데이터파일 (Datafile) 세그먼트 (Segment) Extent 데이터파일 (Datafile) 세그먼트 (Segment) Extent Block Page Extent Extent Block Page
일반기능비교 ALTIBASE HDB O 사 DB 비고 Table 지원됨지원됨 Multi Key-Index 지원됨 지원됨 Stored Procedure 지원됨 지원됨 Stored Function 지원됨 지원됨 Package 지원안됨 지원됨 Trigger 지원됨 지원됨 Before Update 지원안됨 View 지원됨 지원됨 M-View 지원안됨 Sequence 지원됨지원됨 Queue 지원됨지원됨 Monitoring View 지원됨지원됨 권한관리 지원됨 지원됨 Role 지원안됨 지원됨 Snapshot 지원안됨지원됨 DB Link 지원됨지원됨 ALTIBASE HDB-ALTIBASE HDB, ALTIBASE HDB-ORACLE 간 SELECT 기능만지원
일반기능비교 ALTIBASE HDB O사 DB 비고 Synonym 지원됨 지원됨 Table partitioning 지원됨 지원됨 Global Index 지원안됨 User Defined Type 지원됨 지원됨 Procedure 에서만지원됨 Cluster Object 지원안됨 지원됨 On-Line Backup 지원됨 지원됨 XML 지원 지원안됨 지원됨 DB공간자동확장 지원됨 지원됨 Incremental backup 은지원안됨
SQL 비교 ALTIBASE HDB O 사 DB 비고 SQL 표준 SQL (ANSI-SQL92 지원 ) 표준 SQL, 변형 SQL (ANSI-SQL92, ANSI- SQL1999 지원 ) Sub-query(In-Line View) 지원됨지원됨 ANSI-SQL1999 의객체지향기능은지원하지않음 Sub-query(Scalar) 지원됨 지원됨 Sub-query(=,IN,EXISTS) 지원됨 지원됨 Equi Join 지원됨 지원됨 Inner Join 지원됨 지원됨 Outer Join 지원됨지원됨 Self Join 지원됨지원됨 계층적질의 CONNECT BY ~ WITH 지원됨 지원됨 Array Processing 지원됨지원됨 Move 구문지원됨지원안됨 O 사 Style Outer Join(+) 지원 CONNECT_BY_ROOT, CONNECT_BY_ISCYCLE, CONNECT_BY_ISLEAF, SYS_CONNECT_BY_PATH 는지원하지않음
SQL 비교 ALTIBASE HDB O 사 DB 비고 Queue Enqueue/Dequeue Advanced Queue 사용구문 / 방법의차이 SELECT ~ FOR UPDATE 지원됨 지원됨 Join 사용은지원하지않음 SELECT DISTINCT ~ 지원됨 지원됨 UNION 지원됨지원됨 UNION ALL 지원됨 지원됨 INTERSECT 지원됨 지원됨 MINUS 지원됨지원됨 CERATE TABLE AS SELECT ~ 지원됨 지원됨 Literal/Bind SQL 지원됨 지원됨 VIEW를통한 DML 지원안됨 지원됨 Hint 기능 지원됨 지원됨 Cost Optimizer 지원됨 지원됨 Parallel Select 지원안됨 지원됨 Parallel Insert 지원됨 지원됨 Parallel Index Build 지원됨 지원됨
INSTALLATION
INSTALLATION ALTIBASE HDB 제품설치의순서 http://support.altibase.com 에서설치파일의버전확인및다운로드 설치전확인사항 사용자계정의리소스한계값설정확인 OS 커널파라미터의한계값설정확인 디스크구성의확인 ( 리두로그파일과데이터파일의분리 ) 제품설치파일실행 프로퍼티, 환경변수설정 라이센스정보입력 데이터베이스생성 구동
INSTALLATION 제품다운로드 http://support.altibase.com/ 웹사이트에서가능
INSTALLATION 설치파일의이해 altibase-server-6.1.1.0-aix-powerpc-64bit-release.run Server or Client Altibase Version Number OS CPU 32bit or 64bit OS Release or Patch 지원가능한 OS (32bit 제품군은지원하지않으며 Client Library 만지원 ) Solaris 2.8 이상 AIX 5.1 이상 HP 11.11 또는, IA64 11.23 이상 LINUX Kernel 2.6 이상 WINDOWS
INSTALLATION 설치전확인사항 사용자계정의리소스한계값설정확인 (OS 명령인 "ulimit" 으로확인및변경 ) File Size 프로세스가생성가능한파일의최대크기 Data segment size 프로세스가사용가능한논리적메모리의최대크기 (VSZ 측면 ) Max memory size 프로세스가사용가능한물리적메모리의최대크기 (RSS 측면 ) Open files (descriptor) 프로세스가동시에접근가능한파일및소켓의최대개수 Virtual memory 프로세스가사용가능한 Virtual Memory 의최대크기
INSTALLATION 사용자계정의리소스한계치예 Shell::/home/alti1> ulimit -a core file size (blocks, -c) 20482047 data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited max memory size (kbytes, -m) unlimited open files (-n) unlimited pipe size (512 bytes, -p) 8 cpu time (seconds, -t) unlimited max user processes (-u) 2047 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
INSTALLATION 커널파라미터의한계값설정확인 (OS 별로제공되는커널설정유틸리티로확인 ) Memory 공유메모리세그먼트의개수및최대크기와관련된설정 Semaphore IPC 접속을사용할경우세마포어설정 File-cache 운영체제의 File-cache 확보로인한메모리부족방지차원 기타리소스제한값에대한설정 디스크구성의상태확인 디스크 I/O 로인한성능저하를감소하기위한목적 최소한리두로그파일과데이터파일이분리된디스크를사용하도록설정을권장함
INSTALLATION 커널파라미터의설정방법 (root 권한으로가능 ) Solaris Solaris 2.8/2.9 는 /etc/system 파일에설정 Solaris 2.10 은 OS 가제공하는 /usr/sbin/projadd, /usr/sbin/projmod 유틸리티를사용 HP UX HP 11i 에서제공되는 /usr/sbin/sam 유틸리티를사용하여설정 HP 11.23 이상은 /usr/sbin/kctune 유틸리티를사용하여설정 AIX OS 가제공하는 /usr/bin/smit 유틸리티를사용하여설정 LINUX /proc/sys/kernel 경로에 sem, shmmax, shmmni, swapiness 등의파일에설정을한다.
INSTALLATION Solaris 분류커널항목권장수치 shmmax 2G+1byte 공유메모리 shmmin 500 shmseg 200 semmns 8192 semmni 5029 semmsl 2000 세마포어 semmap 5024 semmnu 1024 semopm 512 semume 512 semvmx 32767
INSTALLATION HP-UX (1) 공유메모리및세마포어설정은 Solaris 와동일하게설정 파일캐쉬 (HP 의권고안은 8G 이하에서 20%, 8G 이상에서 10% 를권고하고있음 ) 커널파라미터설명권장 dbc_min_pct dbc_max_pct 파일캐쉬의최소크기이며 11.31 부터는 filecache_min 으로명칭이변경됨 파일캐쉬의최대크기이며 11.31 부터는 filecache_max 로명칭이변경됨 5% 5~20%
INSTALLATION HP-UX (2) HP 에서는 ulimit 외에시스템차원에서리소스설정을해야할경우가있음 커널파라미터설명권장 maxdsiz 하나의 32bit 프로세스가사용가능한메모리의데이터세그먼트크기 2G maxdsiz_64bit max_thread_proc maxfiles 하나의 64bit 프로세스가사용가능한메모리의데이터세그먼트의크기 하나의프로세스가가질수있는쓰레드의최대개수 하나의프로세스가동시에 Open 할수있는파일의최대개수 ALTIBASE HDB 가사용할것으로예측하는메모리용량 600 이상 2048 이상 nproc 사용자당생성가능한프로세스의수 6142 maxusers nproc, nfile 등기본값의근간 124
INSTALLATION AIX 커널파라미터설정시유의사항공유메모리및세마포어설정은 Solaris 와동일하게설정 File-Cache 의설정 AIX 의경우 File-Cache 의설정정책에따라응용프로그램의 Heap 영역에서메모리를 Swap-out 시킨후 File-Cache 로사용하는경우가발생할수있다. (Steal 현상 ) AIX 5.2 부터는이러한 steal 현상을방지하기위해다음과같이적용이필요함 minperm = 5% lru_file_repage = 0 (AIX 5.2 ML4 이상에서만설정가능 ) strict_maxclient = 0 Posix AIO 의설정 AIX 가제공하는디스크처리성능개선항목으로활성화가필요함 AIX6.1 부터는기본적으로활성화됨 다음과같이설정 smit 에서 "Configure Defined Asunchronour I/O" 를 Defined Available 로변경 smit 에서 "STATE to be configured at system restarted" 를 Available 로변경 위의설정을하지않을경우 AIX 에서설치및구동이불가
INSTALLATION LINUX 커널파라미터설정시유의사항공유메모리및세마포어설정은 Solaris 와동일하게설정단, 리눅스커널 2.5 이상을사용하지않을경우 IPC 접속을사용하는세션이갑자기단절되는현상이발생할수있다. 부팅시자동설정 /etc/rc.d/rc.local 파일내에커널설정이부팅때마다자동으로설정되도록추가 echo 2147483648 > /proc/sys/kernel/shmmax echo 4096 > /proc/sys/kernel/shmmni echo 200 32000 512 5029 > /proc/sys/kernel/sem echo 30 > /proc/sys/vm/swappiness
INSTALLATION HP 환경변수의고려사항 HP 의멀티쓰레드프로세스를고려한환경변수의설정이필요 ### FOR HP ### export PTHREAD_FORCE_SCOPE_SYSTEM=ON export PERF_ENABLE=1 export PTHREAD_FAST_SHARED_OBJECTS=ON export PTHREAD_DISABLE_HANDOFF=ON export _M_ARENA_OPTS=8:32 ### FOR HP ### pthread 와관련된환경변수들은쓰레드경합에대한 OS 차원의설정을변경하는것으로일반적으로 HP 가권장하는설정이다. _M_ARENA_OPTS 의경우는성능및메모리사용량과 Trade-off 관계에있기때문에실제장비에서설정할때에는신중하게결정해야함 HP 는 libpthread 와관련된 OS 최신패치가반드시적용되는것이바람직함
INSTALLATION AIX 환경변수의고려사항 AIX 의멀티쓰레드프로세스를고려한환경변수의설정이필요 ### FOR AIX ### AIXTHREAD_MNRATIO=1:1; export AIXTHREAD_MNRATIO AIXTHREAD_SCOPE=S; export AIXTHREAD_SCOPE AIXTHREAD_MUTEX_DEBUG= OFF; export AIXTHREAD_MUTEX_DEBUG AIXTHREAD_RWLOCK_DEBUG=OFF; export AIXTHREAD_RWLOCK_DEBUG AIXTHREAD_COND_DEBUG = OFF; export AIXTHREAD_COND_DEBUG SPINLOOPTIME = 1000; export SPINLOOPTIME YIELDLOOPTIME = 50; export YIELDLOOPTIME MALLOCMULTIHEAP=1; export MALLOCMULTIHEAP ### FOR AIX ### SMP 시스템에서멀티쓰레드프로그램의성능저하방지를위해 AIX 가권장하는환경변수의설정을의미함
INSTALLATION ALTIBASE HDB Package Installer 실행 설치모드 Interactive Command-line Mode : DISPLAY 환경변수미셋팅시 GUI (Graphical User Interface) Mode : DISPLAY 환경변수셋팅시 DISPLAY 환경변수셋팅 %setenv DISPLAY <machine name>:0.0 C shell $ export DISPLAY <machine name>:0.0 Bourne, bash, korn shell Installer 실행 다운로드받은 package 파일을실행 ALTIBASE HDB Package Installer 실행시특별한옵션은없음
INSTALLATION ALTIBASE HDB Package Installer 시작 Installer 실행화면 (1) [alti1@localhost ~]$./altibase-server-6.1.1.0-linux-x86-64bit-release_edu.run ---------------------------------------------------------------------------- Welcome to the ALTIBASE HDB Server 6.1.1.0.10 setup wizard. ---------------------------------------------------------------------------- Installation Directory Please specify the installation directory for ALTIBASE HDB Server 6.1.1.0.10 Installation directory [/home/alti1/altibase-hdb-server-6.1.1]: /home/alti1/altibase_home Please select the installation type. Installation type [1] Patch: patch package install [2] Full installation: full package install Please choose an option [1] : 2
INSTALLATION ALTIBASE HDB Package Installer 시작 Installer 실행화면 (2) ---------------------------------------------------------------------------- Pre-Installation Requirements for ALTIBASE HDB It is first necessary to set your system environment to ensure that ALTIBASE HDB will run properly. Before installing ALTIBASE HDB, the kernel parameter values must be set using the root user account. The kernel parameter values may be modified after installation; however, they must be set prior to starting ALTIBASE HDB. Please refer to the installation manual and pre_install.sh script file. (pre_install.sh: '$Altibase_install_dir'/install/pre_install.sh) ================ LINUX ================ [ How to modify kernel parameter values ] echo 512 32000 512 512 > /proc/sys/kernel/sem echo 872415232 > /proc/sys/kernel/shmall
INSTALLATION ALTIBASE HDB Package Installer 시작 Installer 실행화면 (3) # shmall If it is desired to use ALTIBASE HDB in shared memory mode, the value of 'shmall' must be set. This value determines the maximum size of an Altibase database. Press [Enter] to continue : These values must be set in order for ALTIBASE HDB to operate properly. They must be set such that they are suitable for the system configuration. ===================================== Press [Enter] to continue :
INSTALLATION ALTIBASE HDB Package Installer 시작 Installer 실행화면 (4) ---------------------------------------------------------------------------- ALTIBASE HDB Property Settings Step 1: Basic Database Operation Properties Database name [mydb]: mydb ALTIBASE HDB connection port number (1024-65535) [20300]: 20301 Maximum size of memory database - MIN value: 16MB (K = kb, M = MB, G = GB) [2G]: 100M Buffer area size for caching disk-based database pages -MIN value: 1M (K = kb, M = MB, G = GB) [128M]: 128M Do you want to create a database after the installation process is complete? [1] YES [2] NO Please choose an option [1] : 1
INSTALLATION ALTIBASE HDB Package Installer 시작 Installer 실행화면 (5) ALTIBASE HDB Property Settings Step 2: Database Creation Properties Initial database size - 4MB-100MB (K = kb,m = MB,G = GB) [10M]: Database archive logging mode [1] No archivelog [2] Archivelog Please choose an option [1] : 1 Database character set [1] MS949 [2] US7ASCII [3] KO16KSC5601 [4] BIG5 [5] GB231280 [6] UTF-8 [7] SHIFT-JIS [8] EUC-JP Please choose an option [1] : 1
INSTALLATION ALTIBASE HDB Package Installer 시작 Installer 실행화면 (6) National character set [1] UTF-16 [2] UTF-8 Please choose an option [1] : 1 ---------------------------------------------------------------------------- ALTIBASE HDB Property Settings Step 3: Set Database Directories Default disk database directory [/home/alti1/altibase_home/dbs]: Memory database directory [/home/alti1/altibase_home/dbs]: Archive log directory [/home/alti1/altibase_home/arch_logs]: Transaction log directory [/home/alti1/altibase_home/logs]:
INSTALLATION ALTIBASE HDB Package Installer 시작 Installer 실행화면 (7) [Log Anchor file directories ] ALTIBASE HDB maintains three sets of log anchor files. These files contain important information about the database. By default, they are located in the "logs" folder. The location can be changed here or by modifying the contents of the ALTIBASE HDB properties file, which is named "altibase.properties". Directory 1. [/home/alti1/altibase_home/logs]: Directory 2. [/home/alti1/altibase_home/logs]: Directory 3. [/home/alti1/altibase_home/logs]: ----------------------------------------------------------------------------
INSTALLATION ALTIBASE HDB Package Installer 시작 Installer 실행화면 (8) Property Review Please check your property settings. To change these properties after installation is complete, please modify the following file: /home/alti1/altibase_home/conf/altibase.properties. 1. ALTIBASE HDB Property Settings: Step 1: Basic Database Operation Properties 1) Database name: [mydb] 2) ALTIBASE HDB connection port number (1024-65535): [20301] 3) Maximum size of memory database: [100M] 4) Buffer area size for caching disk-based database pages: [128M]
INSTALLATION ALTIBASE HDB Package Installer 시작 Installer 실행화면 (9) 2. ALTIBASE HDB Property Settings: Press [Enter] to continue : Step 2: Database Creation Properties 1) Initial database size [10M] 2) Database archive logging mode [noarchivelog] 3) Database character set [MS949] 4) National character set [UTF16]
INSTALLATION ALTIBASE HDB Package Installer 시작 Installer 실행화면 (10) 3. ALTIBASE HDB Property Settings: Step 3: Set Database Directories The database will not operate properly if any of these directories are removed. 1) Disk database directory: [/home/alti1/altibase_home/dbs] 2) Memory database directory: [/home/alti1/altibase_home/dbs] 3) Archive log directory: [/home/alti1/altibase_home/arch_logs] 4) Transaction log directory: [/home/alti1/altibase_home/logs] 5) Log Anchor file directories: Directory 1: [/home/alti1/altibase_home/logs] Directory 2: [/home/alti1/altibase_home/logs] Directory 3: [/home/alti1/altibase_home/logs]
INSTALLATION ALTIBASE HDB Package Installer 시작 Installer 실행화면 (11) ---------------------------------------------------------------------------- Setup is now ready to install ALTIBASE HDB Server 6.1.1.0.10. Do you want to continue? [Y/n]: y ---------------------------------------------------------------------------- Please wait until the setup wizard finishes installing ALTIBASE HDB Server 6.1.1.0.10. Installing 0% 50% 100% ######################################### ---------------------------------------------------------------------------- ALTIBASE HDB Quick Setting Guide [ Installation complete ] Please refer to the file listed below to verify the ALTIBASE HDB version. /home/alti1/altibase_home/apatch/patchinfo
INSTALLATION ALTIBASE HDB Package Installer 시작 Installer 실행화면 (12) Would you like to launch 'post_install.sh' now? - This will create the ALTIBASE HDB user environment file and the database. [Y/n]: y Result [Linux Env.] Target : /home/alti1/altibase_home/conf/altibase_user.env created ----------------------- Altibase environment setup file. added ----------------------- ALTIBASE_HOME added ----------------------- PATH added ----------------------- LD_LIBRARY_PATH added ----------------------- CLASSPATH export ----------------------- 'altibase_user.env' into '/home/alti1/.bash_profile'
INSTALLATION 환경변수설정항목 post_install.sh 가수행이되고나면해당경로 ($ALTIBASE_HOME/conf/altibase_user.env) 에환경변수가자동으로세팅 환경변수파일 $ALTIBASE_HOME/conf/altibase_user.env ALTIBASE_HOME ALTIBASE HDB 를설치한경로를의미한다. PATH ALTIBASE HDB 의실행파일및각종유틸리티를경로에상관없이접근할수있도록추가 LD_LIBRARY_PATH 동적라이브러리를통해개발할경우 ALTIBASE HDB 라이브러리경로를추가 CLASSPATH ALTIBASE HDB JDBC Driver 를사용할경우 ALTIBASE HDB JDBC 파일을경로에추가
INSTALLATION 환경변수설정내용확인 [alti1@localhost ~]$ cd $HOME [alti1@localhost ~]$ cat.bash_profile ( 사용자의 profile 에환경변수설정파일자동추가 ) #.bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then. ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH # ALTIBASE_ENV. /home/alti1/altibase/conf/altibase_user.env [alti1@localhost ~]$ vi $ALTIBASE_HOME/conf/altibase_user.env ALTIBASE_HOME=/home/alti1/altibase_home;export ALTIBASE_HOME PATH=${ALTIBASE_HOME}/bin:${PATH};export PATH LD_LIBRARY_PATH=${ALTIBASE_HOME}/lib:${LD_LIBRARY_PATH};export LD_LIBRARY_PATH CLASSPATH=${ALTIBASE_HOME}/lib/Altibase.jar:${CLASSPATH};export CLASSPATH
INSTALLATION 설치후버전및바이너리정상유무확인 $ALTIBASE_HOME/bin/altibase 를실행 [alti1@localhost ~]$./altibase v version 6.1.1.0.10 XEON_LINUX_redhat_Enterprise_ES4-64bit-6.1.1.0.10-release-GCC3.4.6 (xeonredhat-linux-gnu) Oct 30 2012 11:39:08, # 패키지생성일 binary db version 6.1.1, # DB 호환가능버전 meta version 5.11.1, cm protocol version 5.6.3, replication protocol version 6.1.1 # 메타호환가능버전 # 통신호환가능버전 # 이중화호환버전
INSTALLATION 프로퍼티의설정 $ALTIBASE_HOME/conf/altibase.properties 파일수정 DB의생성및 ALTIBASE HDB 구동을위한기본적인변경사항항목 항목 설명 DB_NAME MEM_DB_DIR DEFAULT_DISK_DB_DIR LOGANCHOR_DIR LOG_DIR ARCHIVE_DIR MEM_MAX_DB_SIZE ALTIBASE HDB 에서사용하는 DB 의고유명칭으로 DB 생성시점에입력되는값과동일해야함 메모리테이블스페이스데이터파일이저장되는기본경로 디스크테이블스페이스데이터파일이저장되는기본경로 로그앵커파일이저장되는기본경로 리두로그파일이저장되는기본경로 아카이브로그파일이저장되는기본경로 사용가능한메모리 DB 의최대크기
INSTALLATION 프로퍼티의설정 ( 계속 ) 항목 설명 PORT_NO IPC_CHANNEL_COUNT MAX_CLIENT AUTO_COMMIT REPLICATION_PORT_NO TIMED_STATISTICS ALTIBASE HDB Listen Port 번호 IPC 접속방식의최대세션의개수 동시에접속가능한세션의개수 Auto commit 모드의설정 이중화로운영할경우이중화쓰레드의통신 Port 번호 ALTIBASE HDB 에서수행되는질의의수행시간을 Performance View 에서조회가가능하도록설정
INSTALLATION 프로퍼티의설정시주의사항 DB 생성후임의로변경할수없는프로퍼티 ( 변경시 DB 구동불가 ) 항목 설명 LOG_FILE_SIZE EXPAND_CHUNK_PAGE_COUNT 문자셋 트랜잭션리두로그파일 1 개의물리적인크기 메모리 DB 의확장단위이며 (1=32K) 기본값은 128 개 프로퍼티항목은없으나 DB 생성시지정한이후에는변경이불가
INSTALLATION 문자셋 한글및다국어관련고려사항 언어 사용가능한문자셋 기본설정한글중국어일본어유니코드 US7ASCII (1byte) KO16KSC5601, MS949 (2byte) GB231280, BIG5 EUC-JP, SHIFT-JIS UTF8 (3byte) 문자셋결정시고려사항 ( 한글, 유니코드의사용여부 ) KO16KSC5601 은 2300 여자로제한된범위의문자만표현가능함 다국어혼용이예상되는경우 UTF8 을선택하는것이바람직함 ( 단, 저장공간증대고려 ) 서버생성시설정한문자셋과다른문자셋으로응용프로그램이접속하여한글등의표현범위이상의문자를입력 / 변경할경우에는 "?" 와같은데이터로저장됨을유의
STARTUP & SHUTDOWN
STARTUP STARTUP 과정 구동단계는총 4 단계로구분 각단계마다 "STARTUP" 이라는구문을이용하여다음단계로전이 PROCESS 단계 내부모듈의초기화및 isql 이접속가능하도록프로세스를구동 프로퍼티및라이센스파일의유무및정합성을체크 DB 작업도일체수행할수없음 ( 단, CREATE/DROP DATABASE 만수행가능 ) CONTROL 단계 DB 복구가가능한수준까지내부모듈을준비 복구수행및데이터베이스운영모드 (archive 모드 ) 를변경가능함 DB 복구에필요한메타및성능뷰를조회할수있음 META 단계 DB 구동을위해메모리 / 디스크데이터파일의정합성을체크 Restart recovery 를수행 내부주요쓰레드를활성화 SERVICE 단계 사용자가 DB 를사용할수있도록모든준비를완료
STARTUP 구동하기 Shell::/home/alti1> isql sysdba ----------------------------------------------------------------- Altibase Client Query utility. Release Version 6.1.1.0.10 Copyright 2000, ALTIBASE HDB Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------------------------- Write UserID : sys Write Password : manager ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1, PORT_NO = 20301 [ERR-910FB : Connected to idle instance] isql(sysdba)> STARTUP SERVICE; Connecting to the DB server... Connected..... [RP] Initialization : [PASS] --- STARTUP Process SUCCESS ---
STARTUP 구동이후프로세스확인 OS 에서제공하는 "ps" 명령을통해프로세스 ID 를확인가능 (alti1 사용자인경우 ) Shell::/home/alti1> ps -ef grep "altibase -p boot from" grep alti1 grep -v grep alti1 26804 1 0 13:05:09? 0:51 /home/alti1/altibase_home/bin/altibase -p boot from admin OS 명령어를이용한 CPU 및메모리의사용량 Shell::/home/alti1> export UNIX95=1 ( 일부 OS 에서아래 ps o 옵션이안될경우사용 ) Shell::/home/alti1> ps o pcpu,vsz p <altibase_process_id> %CPU VSZ 0.71 825652 (Kbyte 단위로표시됨 )
SHUTDOWN SHUTDOWN 과정 SHUTDOWN 과정은 STARTUP의역순으로진행 STARTUP과달리단계의전이는존재하지않음 "SHUTDOWN" 구문을통해진행가능 아래의 3가지옵션에따라다른동작을수행 NORMAL 옵션 접속한세션이정상종료될때까지대기후 STOP과정을진행 IMMEDIATE 옵션 접속한세션을강제종료시킨후 STOP과정을진행 강제종료되는세션의트랜잭션은모두롤백처리 ABORT 옵션 "kill -9" 와같이프로세스를강제로종료시킴 이경우정상종료와달리재구동시에 restart recovery라는자동복구과정이진행됨
SHUTDOWN 종료하기 Shell::/home/alti1> isql sysdba ----------------------------------------------------------------- Altibase Client Query utility. Release Version 6.1.1.0.10 Copyright 2000, ALTIBASE HDB Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------------------------- Write UserID : sys Write Password : manager ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1, PORT_NO = 20301 [ERR-910FB : Connected to idle instance] isql(sysdba)> SHUTDOWN IMMEDIATE; Ok..Shutdown Proceeding... TRANSITION TO PHASE : Shutdown Altibase [RP] Finalization : PASS shutdown immediate success.
SERVER SCRIPT server 스크립트 $ALTIBASE_HOME/bin/ 에위치 DB의구동, 종료, 및 DB생성등을쉽게할수있도록제공되는쉘스크립트 명령행인자구분 create start stop restart kill 설명 DB 를쉽게생성하는기능 ex) shell> server create MS949 UTF8 ALTIBASE HDB 를구동시키는기능 ex) shell> server start ALTIBASE HDB 를정상적인과정으로종료하는기능 ex) shell> server stop ALTIBASE HDB 를재구동하는기능 ex) shell> server restart ALTIBASE HDB 를강제로 kill 시키는기능 ex) shell> server kill
SERVER SCRIPT server 스크립트의 start 부분 #!/bin/sh ADMIN="${ALTIBASE_HOME}/bin/isql -u sys -p manager sysdba -noprompt" ISQL="${ALTIBASE_HOME}/bin/isql -s localhost -u sys -p manager -silent" if [ "$1" = "status" ]; then MODE=`echo $* cut -f 2-4 -d ' '` if [ "$MODE" = "status" ]; then MODE= fi fi case "$1" in # server 실행시첫번째인자값이 "start" 인경우 'start') # for WINDOWS natc if [ -f ${ALTIBASE_HOME}/bin/chkFileLock ]; then # 이미구동된상태인지체크 chkfilelock >> ${ALTIBASE_HOME}/flock.log fi ${ADMIN} << EOF # startup SQL구문을 isql을통해실행하는형태 startup quit EOF
SERVER SCRIPT server 스크립트의 stop 부분 #!/bin/sh ADMIN="${ALTIBASEHOME}/bin/isql -u sys -p manager sysdba -noprompt" ISQL="${ALTIBASE_HOME}/bin/isql -s localhost -u sys -p manager -silent".... case "$1" in # server 실행시첫번째인자값이 "stop" 인경우 'stop') ${ADMIN} << EOF > /dev/null ALTER SYSTEM SET CHECKPOINT_BULK_WRITE_PAGE_COUNT = 0; ALTER SYSTEM SET CHECKPOINT_BULK_WRITE_SLEEP_SEC = 0; ALTER SYSTEM SET CHECKPOINT_BULK_WRITE_SLEEP_USEC = 0; quit; EOF killcheckserver > ${ALTIBASE_HOME}/trc/killCheckServer.log 2>&1 ${ADMIN} << EOF shutdown immediate; # shutdown SQL 구문을 isql 을통해실행하는형태 quit; EOF
SERVER SCRIPT server 스크립트를이용하는구동 Shell::/home/alti1> server start ----------------------------------------------------------------- Altibase Client Query utility. Release Version 6.1.1.0.10 Copyright 2000, ALTIBASE HDB Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------------------------- ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1, PORT_NO = 20301 [ERR-910FB : Connected to idle instance] Connecting to the DB server... Connected..... [RP] Initialization : [PASS] --- STARTUP Process SUCCESS --- Command execute success.
SERVER SCRIPT server 스크립트를이용하여종료 Shell::/home/alti1> server stop ----------------------------------------------------------------- Altibase Client Query utility. Release Version 6.1.1.0.10 Copyright 2000, ALTIBASE HDB Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------------------------- ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1, PORT_NO = 20301 Ok..Shutdown Proceeding... TRANSITION TO PHASE : Shutdown Altibase [RP] Finalization : PASS shutdown immediate success.
isql
isql isql $ALTIBASE_HOME/bin 에위치 DB에접속하여질의수행및결과를조회하는유틸리티 DBA권한으로 DB 구동및종료, 백업및복구의수행 세션의강제종료를수행 Shell::/home/alti1> isql u sys p manager port 20301 nls_use MS949 s 127.0.0.1 ----------------------------------------------------------------- Altibase Client Query utility. Release Version 6.1.1.0.10 Copyright 2000, ALTIBASE HDB Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------------------------- ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20301 isql>
isql is 스크립트 $ALTIBASE_HOME/bin 에위치 isql의입력시옵션들을생략하고접속할수있도록제공하는스크립트 Shell::/home/alti1> cat $ALTIBASE_HOME/bin/is #!/bin/sh trap "" TSTP ${ALTIBASE_HOME}/bin/isql -s 127.0.0.1 -u sys -p manager $*
isql isql 실행시입력옵션 입력옵션 설명 -s ALTIBASE HDB 서버가위치한 IP 를지정 -u ALTIBASE HDB 사용자명을지정 -p DB 사용자의패스워드를지정 -port -nls_use ALTIBASE HDB Listen Port 번호를지정 ALTIBASE HDB 생성시입력한문자셋을지정 -o isql 에서실행한결과를저장할파일명을지정 -f isql 에서수행할질의및명령을저장한입력파일명을지정 -h 입력옵션에대한도움말을출력 -silent isql 배너를화면에출력하지않게할경우지정
isql isql 환경변수 환경변수 ALTIBASE_PORT_NO ALTIBASE_NLS_USE ISQL_CONNECTION ISQL_EDITOR ISQL_BUFFER_SIZE 설명 -port 옵션을대체 -nls_use 옵션을대체 ALTIBASE HDB 접속방식을지정 (TCP / UNIX / IPC) isql에서사용할기본편집기를설정 isql의질의버퍼에대한크기 (default = 65,536byte) isql 입력옵션의적용순위 순위 1 isql 실행시점에입력된값 설명 2 환경변수에설정된값 3 $ALTIBASE_HOME/conf/altibase.properties 파일에설정된값
isql glogin.sql isql 접속할때자동으로수행시키려는설정값을전역으로설정할경우사용 $ALTIBASE_HOME/conf/glogin.sql 로저장 login.sql glogin.sql 과동일하며 isql 을실행하는유저에게만적용하고자할경우사용 isql 을실행하는디렉토리에 login.sql 을저장 glogin.sql, login.sql 이동시에존재할경우 glogin.sql login.sql 순으로적용 isql 에서주석처리 Single Line 주석 : -- comment Multi Line 주석 : /* comment */ isql> -- test comment isql> SELECT /* comments */ sysdate FROM dual;
isql isql 실행후옵션 (1) 옵션 설명 desc @ 테이블구성정보를확인 지정된파일명을실행! OS 명령을수행하고자할경우 h 수행된질의의목록을확인 / 직전에수행한질의를재수행 ed autocommit spool [filename] show all show user 직전에수행한질의를편집하고자할경우현재세션의 autocommit 모드를변경할경우 spool 명령에입력된파일에현재수행결과를기록 isql의현재설정상태및사용자명을출력 isql에접속한사용자명을출력
isql isql 실행후옵션 (2) colsize 옵션 컬럼사이즈의길이를지정 설명 linesize pagesize heading timing vertical foreignkeys querylogging 하나의레코드의출력라인의길이를지정 지정된개수만큼레코드출력후컬럼타이틀을출력 출력결과에서컬럼타이틀을보이거나감추도록설정 실행한질의의수행시간을 1/100 초단위로출력 컬럼들을세로로출력한라인에 ( 컬럼명 : Value ) 형태로결과를출력 desc 명령으로테이블조회시참조키정보를출력 수행한변경질의를 $ALTIBASE_HOME/trc/isql_query.log 파일에수행한질의를시간순으로저장
isql isql 사용예 : 테이블목록의조회 isql> SELECT * FROM TAB; USER NAME TABLE NAME TYPE --------------------------------------------------------------------- SYSTEM_ STO_COLUMNS_ SYSTEM TABLE SYSTEM_ STO_DATUMS_ SYSTEM TABLE SYSTEM_ STO_ELLIPSOIDS_ SYSTEM TABLE SYSTEM_ STO_GEOCCS_ SYSTEM TABLE SYSTEM_ STO_GEOGCS_ SYSTEM TABLE. isql>
isql isql 사용예 : 테이블구성의조회 isql> DESC t1; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] ------------------------------------------------------------- NAME TYPE IS NULL ------------------------------------------------------------- A INTEGER FIXED NOT NULL [ INDEX ] ------------------------------------------------------------- NAME TYPE IS UNIQUE COLUMN ------------------------------------------------------------- SYS_IDX_ID_102 BTREE UNIQUE A ASC [ PRIMARY KEY ] ------------------------------------------------------------- A isql>
isql isql 사용예 : 메타테이블을이용한특정사용자의테이블명조회 isql> SELECT a.user_name, b.table_name 2 FROM system_.sys_users_ a, system_.sys_tables_ b 3 WHERE a.user_id = b.user_id 4 AND a.user_name = 'SYS' 5 AND b.table_type = 'T'; USER_NAME TABLE_NAME ------------------------------------------------------------------- SYS TB_TEST123 SYS TB_TEST1 SYS T1 SYS TT1 4 rows selected.
isql isql 사용예 : 성능뷰를통한세션의문자셋조회 isql> SELECT session_id, nls_characterset, nls_nchar_characterset 2 FROM v$nls_parameters; SESSION_ID NLS_CHARACTERSET NLS_NCHAR_CHARACTERSET --------------------------------------------------------------------- 15 MS949 UTF8 1 row selected.
isql isql 사용예 : DML 사용 isql> INSERT INTO t1 VALUES (10); 1 row inserted. isql> UPDATE t1 SET a=a+1; 9 rows updated. isql> DELETE FROM t1 WHERE a = 5; 1 row deleted. isql> SELECT COUNT(*) FROM t1; COUNT -------------------------------------- 8 1 row selected.
isql isql 사용예 : 현재 isql 의설정정보조회 isql> SHOW ALL User : SYS ColSize : 0 LobOffset : 0 LineSize : 80 LobSize : 80 PageSize : 5 TimeScale : Second Heading : Off Timing : Off Vertical : On ForeignKeys : Off PlanCommit : Off QueryLogging : On
isql isql 사용예 : 일반조회시와 VERTICAL 옵션의사용의차이 isql> SELECT * FROM t1 LIMIT 3; A -------------- 1 2 3 3 rows selected. isql> SET VERTICAL ON; isql> SELECT * FROM t1 LIMIT 3; A : 1 A : 2 A : 3 3 rows selected. isql>
isql isql 사용예 : 실행계획을조회할경우 isql> ALTER SESSION SET EXPLAIN PLAN = ON; Alter success. isql> SELECT * FROM t1 WHERE a = 2; A -------------- 2 1 row selected. ------------------------------------------------------------ PROJECT ( COLUMN_COUNT: 1, TUPLE_SIZE: 4 ) SCAN ( TABLE: T1, INDEX: SYS_IDX_ID_102, ACCESS: 1, SELF_ID: 2 ) ------------------------------------------------------------
isql isql 사용예 : 변수및프로시저호출 isql> VAR a INTEGER; isql> EXEC :a := 10; Execute success. isql> EXEC proc1 (:a); input data = 10 Execute success. ## 변수의선언 ## 변수에임의의값을할당 ## 사용자가생성한프로시저를호출 isql> PRINT VAR ## 현재변수의값들을출력 [ HOST VARIABLE ] ------------------------------------------------------- NAME TYPE VALUE ------------------------------------------------------- A INTEGER 10
isql isql 사용예 : 세션의강제종료 대상이되는세션의고유번호를확인해야함 Shell> is isql> ALTER DATABASE db_name SESSION CLOSE session_id; < 정상처리의결과 > isql> ALTER DATABASE mydb SESSION CLOSE 14; Alter success. < 존재하지않는세션을단절하려고할경우 > isql> ALTER DATABASE mydb SESSION CLOSE 14; [ERR-41080: Invalid Session ID 14]
ALTIBASE HDB ADMINISTRATION I ARCHITECTURES FEATURES ARCHITECTURE TABLESPACE MANAGEMENT TRANSACTION MANAGEMENT BUFFER MANAGEMENT
FEATURES
관계형데이터모델 관계형데이터베이스 관계형데이터모델 DB 데이터를이차원테이블에저장하고테이블들간관계를정의하는구조 데이터의독립성, 일관성, 무결성을보장 기본키와이를참조하는외래키로데이터간의관계를표현 ER(Entity Relationship) 모델로표현 SQL(Structured Query Language) 을이용하여 DBMS와통신
관계형데이터모델 관계형데이터모델에서사용되는객체 Primary key Attribute Entity Tuple 고객번호 고객이름 거주도시 가입일 1 홍길동 서울 11-JAN-2009 2 김철수 경기 23-SEP-2007 3 박영희 부산 01-JAN-2010 용어개념특징 Entity Attribute Tuple 테이블 열 (column) 행 (row) 각열 (Column) 은유일한값을가지며행의순서무의미 속성의이름은모두달라야함속성들간의순서는중요하지않음 연관된속성의모임파일구조의레코드와같은의미 Primary Key 유일한식별자테이블의모든행들을구별하기위해사용 Domain 속성값들의집합 여러개의속성에서공유속성의이름과는달라도무관
Features SQL(Structured Query Language) 데이터베이스에저장되는데이터를조작하고, 관리하며, 검색하기위한언어 ;( 세미콜론 ) 으로종료, 대소문자를구분하지않음 SQL 종류 데이터정의어 (Data Definition Language) 메타정보가변경되는 SQL 문, 객체를생성, 변경, 삭제하는 SQL 문 CREATE, ALTER, DROP, TRUNCATE, RENAME, GRANT, REVOKE 데이터조작어 (Data Manipulation Language) 데이터를질의하거나데이터를변경하는 SQL 문 AUTOCOMMIT 이 OFF 인경우명시적인 COMMIT, ROLLBACK 이필요 INSERT, DELETE, UPDATE, SELECT, MOVE, ENQUEUE, DEQUEUE, LOCK 데이터제어어 (Data Control Language) 시스템, 세션제어문 ALTER SYSTEM, ALTER SESSION 트랜잭션제어문 COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION
Features 서버클라이언트엔진구조클라이언트 - 서버프로토콜을선택 (TCP/IP, IPC, Unix Domain socket) 인터페이스 ANSI SQL 92 Full spec, ODBC 3.0, JDBC 2.0, C/C++, ADO.NET, C/C++ Precompiler 제공 다중버전동시성제어기법 (MVCC) 트랜잭션의동시성제어를위해다중버전동시성제어 (MVCC, Multi-Version Concurrency Control) 기법을사용 고립화수준트랜잭션고립화수준을 Read Commited(default), Repeatable Read, No Phantom Read(=Serializable) 지정 Fuzzy/Ping-Pong Checkpoint 제공 Checkpoint 수행중에발생한트랜잭션을처리할수있도록 Fuzzy Checkpoint 를제공하며 Checkpoint 시에도트랜잭션처리를빠르게하는 Ping-Pong Checkpoint 를제공
Features DeadLock 감지비정상적인트랜잭션감지를위해프로세스를따로두지않고 DeadLock 발생순간에에러를발생시켜신속히조치 Stored Procedure/Function 제공업무절차를하나의서버모듈로만든후, DBMS 에저장해두고, 모듈이름만호출하여업무프로세스를 DBMS 에수행할수있음 데이터베이스이중화 TCP 기반의네트워크를통해변경트랜잭션로그를전송하고원격서버에서이를반영하여데이터를복제를수행 데이터베이스공간 ALTIBASE HDB 는하나이상의테이블스페이스로구성되고, 테이블스페이스는메모리와디스크로나눔
ARCHITECTURE
ARCHITECTURE( 전체 ) SQL Plan Cache Memory Memory Data Buffer Pool Log Buffer Temporary Thread Dispatcher Service Session Manager Load Balancer Checkpoint Memory Ager Buffer Flusher Log Flusher Logfile Manager Archive Archive logfiles Properties file Storage Loganchor files Checkpoint image files Datafiles Redo logfiles Password file Trace files
ARCHITECTURE(Memory) Memory SQL Plan Cache Memory Data Buffer Pool Log Buffer Temporary Architecture(Memory) Memory Data ALTIBASE HDB 에서사용할수있는메모리데이터공간이며, 모든트랜잭션처리가메모리에서처리됨 Buffer Pool 디스크 I/O 를줄이고성능을높이기위해서디스크데이터중일부를메모리에적재하여사용하는공간 Log Buffer 장애발생시복구를위해변경트랜잭션처리시생성되는 redo log 를저장하는메모리공간 Cache 모든세션이공유하는영역이며 SQL Plan Cache, Stored Procedure Cache, Meta Cache 로구성
ARCHITECTURE(Storage) Storage Loganchor files Checkpoint image files Datafiles Redo logfiles Architecture(Storage) Checkpoint image files Memory 는휘발성매체이기때문에 Memory Data 를디스크에안정적으로백업하는물리적인파일 ( 장애발생시, 복구시간단축 ) Datafiles 디스크데이터를저장하는물리적인파일 Redo logfiles Log Buffer 에기록된변경정보가저장되는물리적인파일 Loganchor files DB 의구동정보, 데이터파일경로, 복구시점등에대한전반적인 DB 정보가기록되는파일
ARCHITECTURE(Storage) Storage Archive logfiles Properties File Password File Trace Files Architecture(Storage) Archive logfiles 로그파일의백업파일로서 DB 가 Archive 모드로운영중일때만생성됨 Properties File DB Property 가저장된파일, $ALTIBASE_HOME/conf/altibase.properties Password File DBA 유저인 SYS 유저에대한패스워드가암호화되어저장된파일 Trace Files DB 운영상태및발생하는에러, 장애상황등이기록되는파일
ARCHITECTURE(Thread) Thread Dispatcher Load Balancer Checkpoint Buffer Flusher Logfile Manager Archive Service Thread Session Manager Memory Ager Log Flusher Architecture(Thread) Dispatcher: 클라이언트의접속요청을감지하여 Service Thread 에게 Task 를넘겨줌 Service Thread: 클라이언트가요청한질의를처리하고, 완료된내용을전달함 Load Balancer: Service Thread 의부하를감지하여 Service Thread 를추가 / 삭제하고 Task 를분배하는역할 Session Manager: 세션들의 Timeout 상태를감지하고처리하는역할 Checkpoint: 메모리데이터를물리적인파일에기록하는역할 Memory Ager: 메모리테이블에변경작업후, 불필요한이미지를삭제하는역할 Buffer Flusher: Buffer Pool 에있는 Dirty 페이지를데이터파일에 Sync 하는역할 Logfile Manager: 현재사용중인로그파일외에미리여유로그파일을생성하는역할 Log Flusher: 로그버퍼에기록된변경정보를물리적인 Redo logfile 로기록하는역할 Archive: Archive 모드에서리두로그파일이스위칭될때마다 archiving 하는역할
내부프로세스 Main Module Query Processor Module Storage Manager Module Client UPDATE t1 SET c1=20 WHERE c1=10 Dispatcher Service Thread Checker Optimizer Memory Concurrency Index Disk Load Balancer Executor Table Memory Disk Recovery Checkpoint Log Flusher Memory Ager Buffer Flusher
디렉토리구성 $ALTIBASE_HOME admin 모니터링관련프로시저생성파일존재 arch_logs archive 로그파일의보관경로 ( 기본경로 ) audit bin conf dbs include install lib logs msg sample trc 이중화도중발생한불일치검사를위한유틸리티 (audit) 의예제파일 ALTIBASE HDB가제공하는실행파일들이존재 ALTIBASE HDB 설정파일 (altibase.properties) 과라이센스파일의경로 datafile들이존재하는경로 ( 기본경로 ) 응용프로그램작성할때필요한헤더파일의경로 Makefile을위한매크로설정파일경로응용프로그램작성할때필요한라이브러리파일의경로리두로그파일과로그앵커파일의경로 ( 기본경로 ) 오류메세지를수록한파일들을포함하는경로응용프로그램의샘플경로 ALTIBASE HDB 운영상태를기록한 Trace file들의경로
TABLESPACE MANAGEMENT
테이블스페이스개념 테이블스페이스 (Tablespace / TBS) 데이터베이스를구성하는최상위논리적인구조 테이블, 인덱스등의데이터베이스객체들이저장되는논리적인저장소 데이터베이스운영을위해기본적으로하나이상의테이블스페이스가필요
STORAGE 스토리지구조 하나의데이터베이스는한개이상의테이블스페이스로구성되며, 하나의테이블스페이스는다수의세그먼트또는, 다수의페이지로구성됨 ALTIBASE HDB Storage 구조 Database 메모리테이블스페이스 32K 크기의페이지들로구성 Tablespace Segment Extent Page Tablespace Page 디스크테이블스페이스 다수의세그먼트로구성 세그먼트는다수의익스텐트로구성 익스텐트는 8K 크기의페이지 64 개로구성됨 (512K) 디스크테이블스페이스 메모리테이블스페이스
테이블스페이스종류 ALTIBASE HDB 에서제공하는테이블스페이스 데이터속성에따른분류 메모리테이블스페이스 (Memory Tablespace) 디스크테이블스페이스 (Disk Tablespace) 생성시점에따른분류 시스템테이블스페이스 (System Tablespace) 사용자 시스템 일반사용자, SYS 테이블스페이스종류 SYSTEM DICTIONARY TABLESPACE SYSTEM UNDO TABLESPACE SYSTEM MEMORY DEFAULT TABLESPACE SYSTEM DISK DEFAULT TABLESPACE SYSTEM DISK TEMPORARY TABLESPACE 사용자테이블스페이스 (User Tablespace) 사용자의필요에따라선택적으로생성 임시 TBS, 데이터 TBS( 메모리 TBS, 휘발성 TBS, 디스크 TBS)
메모리테이블스페이스 메모리테이블스페이스 모든데이터가메모리공간에저장되는테이블스페이스를의미 ALTIBASE HDB 4까지는하나만존재 ALTIBASE HDB 5부터는사용자 / 업무별로확장하여추가할수있음 구조 ( 메모리 TBS + 체크포인트이미지파일 ) Memory Memory TBS Fuzzy / Ping-Pong Checkpoint Logfile# Logfile# Logfile# Logfile# Logfile# Disk Checkpoint Image-#-0 Checkpoint Image-#-1
메모리테이블스페이스 메모리테이블스페이스의공간할당 32K 페이지단위로테이블에공간할당 Page 의상태 객체 Free Used Tablespace Table 특정테이블에할당되지않은공간 1 Page 씩특정테이블에할당가능 테이블이할당받은공간중데이터가들어있지않은공간 해당테이블내에서재사용가능 테이블에할당한공간 테이블에서반납하기전까지다른테이블에서사용할수없음 테이블이할당받은공간중데이터가들어있는공간 데이터를삭제하지않으면재사용불가
메모리테이블스페이스 Page 의상태변화 Table 에 Delete 수행 Table 안에서 Page 상태가 Used Free 로전환 ( 해당 Table 내에서재사용가능 ) Tablespace 로 Page 를반환하지않음 Delete 수행후 Compaction 을수행하면해당 Page 를 Tablespace 에반하고 ( 다른테이블에서사용가능 ), Tablespace 의 Page 상태는 Used Free 로변경됨 Table 에 Truncate 수행 Table 에할당되었던 Page 를 Tablespace 에반환함 Table 에할당되었던 Tablespace 의 Page 상태는 Used Free 로전환 ( 다른 Table 에서할당받아사용가능 ) Table 에 Move 수행 Move 구문을통해서데이터를다른 Table 로이동시켜도 Delete 한것과동일하게해당 Table 안에서만재사용가능 Move 수행후, Compaction 을수행하면해당 Page 를 Tablespace 에반환함
메모리테이블스페이스의공간할당 공간할당구조 Memory Tablespace 1 2 3 1 2 3 4 5 6 7 8 T1 테이블생성 1 T1 테이블에데이터입력 1 T1 테이블에데이터입력 1 2 3
메모리테이블스페이스의공간할당 공간반납구조 Memory Tablespace 1 2 3 4 5 6 7 8 T1 T1 Delete 수행 T1 에 Compaction 수행 T1 에 truncate 수행 T2에 Insert 수행 1 2 1 2 1 2 5 6 3 3 4 3 4 7 8 4
휘발성테이블스페이스 휘발성테이블스페이스 데이터가메모리에만상주 디스크에체크포인트이미지파일을가지지않음 특징 디스크로깅 (logging) 을수행하지않고체크포인트대상에서제외 Disk I/0가없음 메모리테이블스페이스와비교하여상대적으로빠른갱신성능을보장 Memory Volatile TBS Checkpoint Logfile# Logfile# Logfile# Logfile# Logfile# Disk Memory TBS Image-#-0 Memory TBS Image-#-1
디스크테이블스페이스 디스크테이블스페이스모든데이터가디스크공간에저장되는테이블스페이스를의미 구조 Disk Tablespace 페이지 (Page) 테이블과인덱스의레코드를저장하는최소단위 [ 디스크페이지 : 기본 8KB ] 익스텐트 (Extent) 페이지를할당하는단위 데이터저장시 free 페이지가부족하면테이블스페이스로부터할당받음 기본값 : 64 개의페이지 (512KB) 로구성
디스크테이블스페이스 디스크테이블스페이스의공간할당 Table 에 512K Extent 단위로공간을할당 Page 의상태 객체 Free Used Tablespace Table 특정테이블에할당되지않은공간 Extent 단위로특정테이블에할당가능 테이블이할당받은공간중데이터가들어있지않은공간 해당테이블내에서재사용가능 테이블에할당한공간 테이블에서반납하기전까지다른테이블에서사용할수없음 테이블이할당받은공간중데이터가들어있는공간 데이터를삭제하지않으면재사용불가
디스크테이블스페이스의공간할당 Page 의상태변화 Table 에 Delete 수행 Table 안에서 Page 상태가 Used Free 로전환 ( 해당 Table 내에서재사용가능 ) Tablespace 로 Page 를반환하지않음 Table 에 Truncate 수행 Table 에할당되었던 Page 를 Tablespace 에반환함 Table 에할당되었던 Tablespace 의 Page 상태는 Used Free 로전환 ( 다른 Table 에서할당받아사용가능 ) Table 에 Move 수행 Move 구문을통해서데이터를다른 Table 로이동시켜도 Delete 한것과동일하게해당 Table 안에서만재사용가능 디스크테이블에는 Compaction 기능이없음
디스크테이블스페이스의공간할당 공간할당구조 Disk Tablespace T1 테이블생성 T1 데이터입력
디스크테이블스페이스의공간할당 공간반납구조 Disk Tablespace 데이터파일추가 T1 T2 데이터입력
디스크테이블스페이스 세그먼트의종류 종류테이블 (table) 세그먼트인덱스 (index) 세그먼트언두 (undo) 세그먼트 설명 데이터베이스안에데이터를저장하는가장기본적인수단이며테이블데이터는한개이상의테이블스페이스에속할수있다. 한개의특정인덱스의레코드는한개의세그먼트안에저장되며, 인덱스의목적은특정키를기준으로테이블의데이터를찾는것이다. 데이터베이스의변경을발생시키는트랜잭션에의해사용되며, 테이블혹은인덱스를변경하기전에, 변경전값을언두세그먼트에저장하여 rollback 시이전이미지로돌릴수있다. 논리적구조 테이블세그먼트테이블세그먼트인덱스세그먼트 인덱스세그먼트인덱스세그먼트테이블세그먼트 데이터파일 데이터파일
테이블스페이스확인 ALTIBASE HDB 테이블스페이스 ID 0~4까지는 database 생성시기본적으로생성되는테이블스페이스 그외의테이블스페이스는사용자정의에의해 ID 5이상을부여받음 ID 테이블스페이스종류저장공간테이블스페이스이름 0 SYSTEM DICTIONARY TABLESPACE 메모리 SYS_TBS_MEM_DIC 1 SYSTEM MEMORY DEFAULT TABLESPACE 메모리 SYS_TBS_MEM_DATA 2 SYSTEM DISK DEFAULT TABLESPACE 디스크 SYS_TBS_DISK_DATA 3 SYSTEM UNDO TABLESPACE 디스크 SYS_TBS_DISK_UNDO 4 SYSTEM DISK TEMPORARY TABLESPACE 디스크 SYS_TBS_DISK_TEMP 5이상 USER MEMORY DATA TABLESPACE 메모리 사용자지정 5이상 USER DISK DATA TABLESPACE 디스크 사용자지정 5이상 USER DISK TEMPORARY TABLESPACE 디스크 사용자지정 5이상 USER VOLATILE DATA TABLESPACE 메모리 사용자지정
테이블스페이스확인 테이블스페이스구분 V$TALBESPACES 의컬럼중 type 을조회하여테이블스페이스의타입을확인할수있음 TYPE 테이블스페이스종류저장공간 0 SYSTEM DICTIONARY TABLESPACE 메모리 1 SYSTEM MEMORY DEFAULT TABLESPACE 메모리 2 USER MEMORY DATA TABLESPACE 메모리 3 SYSTEM DISK DEFAULT TABLESPACE 디스크 4 USER DISK DATA TABLESPACE 디스크 5 SYSTEM DISK TEMPORARY TABLESPACE 디스크 6 USER DISK TEMPORARY TABLESPACE 디스크 7 SYSTEM UNDO TABLESPACE 디스크 8 USER VOLATILE DATA TABLESPACE 메모리
테이블스페이스확인 테이블스페이스관련 Performance View 이름 내용 V$TABLESPACES V$DATAFILES V$MEM_TABLESPACES V$VOL_TABLESPACES V$MEMTBL_INFO V$DISKTBL_INFO 전체테이블스페이스에대한정보 디스크테이블스페이스의데이터파일에대한정보데이터파일의사용량을확인하고싶을때사용 메모리테이블스페이스의사용량을확인하고싶을때사용 휘발성테이블스페이스의사용량을확인하고싶을때사용 어느메모리테이블이메모리를많이사용하는지확인하고싶을때사용 어느디스크테이블이디스크를많이사용하는지확인하고싶을때사용
메모리테이블스페이스생성 메모리테이블스페이스 데이터를메모리에저장하여, 모든트랜잭션처리를메모리상에서처리 체크포인트시에물리적인파일 (checkpoint image file) 에저장 DB 구동시에모든데이터를하드디스크에저장된물리적인파일로부터읽어서메모리로업로드하여사용 구문 ( 기본 ) 예제 CREATE MEMORY [DATA] TABLESPACE tablespace_name SIZE size (K M G) ; 초기사이즈가 512M 인메모리테이블스페이스를생성 isql> CREATE MEMORY TABLESPACE test_mem 2 SIZE 512M ; Create success. isql> CREATE MEMORY TABLESPACE test_mem 2 SIZE 510M ; [ERR-110EE : The initial size of the tablespace should be multiple of expand chunk size ( EXPAND_CHUNK_PAGE_COUNT * PAGE_SIZE(32K) = 4096K )] 메모리테이블스페이스는기본적으로 4M 단위로생성및확장가능함
메모리테이블스페이스생성 구문 ( 자동확장추가 ) 예제 CREATE MEMORY [DATA] TABLESPACE tablespace_name SIZE size (K M G) [AUTOEXTEND [ON [NEXT size] [MAXSIZE size] OFF) ] ; 초기사이즈가 512M 이고, 128M 단위로자동확장가능한최대크기가 2G 인메모리테이블스페이스를생성 isql> CREATE MEMORY TABLESPACE test_mem 2 SIZE 512M 3 AUTOEXTEND ON NEXT 128M MAXSIZE 2G; Create success. 초기사이즈가 512M 이고, 자동확장을하지않는메모리테이블스페이스를생성 isql> CREATE MEMORY TABLESPACE test_mem 2 SIZE 512M 3 AUTOEXTEND OFF; Create success.
메모리테이블스페이스생성 구문 ( 체크포인트경로추가 ) 예제 CREATE MEMORY [DATA] TABLESPACE tablespace_name SIZE size (K M G) [AUTOEXTEND [ON [NEXT size] [MAXSIZE size] OFF) ] [CHECKPOINT PATH 'path' [SPLIT EACH size]] ; 초기사이즈가 512M 이고, 최대 1G 까지 128M 단위로자동확장가능한메모리테이블스페이스를생성 ( 체크포인트이미지파일은다중화를위해 3 개의디렉토리에나누어저장 ) isql> CREATE MEMORY TABLESPACE test_mem 2 SIZE 512M 3 AUTOEXTEND ON NEXT 128M MAXSIZE 1G 4 CHECKPOINT PATH /dbs/path1, /dbs/path2, /dbs/path3 ; Create success. isql> CREATE MEMORY TABLESPACE test_mem 2 SIZE 512M 3 AUTOEXTEND ON NEXT 128M MAXSIZE 1G 4 CHECKPOINT PATH /dbs/path1, /dbs/path2, /dbs/path3 5 SPLIT EACH 256M ; Create success.
휘발성테이블스페이스생성 휘발성테이블스페이스 메모리테이블스페이스와동일한구조의테이블스페이스 체크포인트를하지않고, 리두로그를기록하지않음 구문 CREATE VOLATILE [DATA] TABLESPACE tablespace_name SIZE size (K M G) [AUTOEXTEND [ON [NEXT size][maxsize size] OFF) ] ; 예제 초기사이즈가 512M 이고, 최대 1G 까지 128M 단위로자동확장가능한휘발성테이블스페이스를생성 isql> CREATE VOLATILE DATA TABLESPACE test_mem 2 SIZE 512M 3 AUTOEXTEND ON NEXT 128M MAXSIZE 1G ; Create success.
디스크테이블스페이스생성 디스크테이블스페이스 모든데이터가디스크에저장되는테이블스페이스 물리적으로데이터파일로구성되고, 논리적으로세그먼트, 익스텐트, 페이지로구성 구문 ( 기본 ) CREATE [DISK] [DATA] TABLESPACE DATAFILE datafile_name ' ; tablespace_name 예제 기본경로에데이터파일 test01.dbf 를생성하는 test_disk 테이블스페이스를생성 isql> CREATE TABLESPACE test 2 DATAFILE 'test01.dbf'; Create success.
디스크테이블스페이스생성 구문 ( 자동확장추가 ) CREATE [DISK] [DATA] TABLESPACE tablespace_name DATAFILE datafile_name ' [SIZE size (K M G) ] [REUSE] [AUTOEXTEND [ON [NEXT size][maxsize size] OFF)]; 예제 데이터파일 test01.dbf, test02.dbf, test03.dbf 로구성된 100MB 의 test_disk 테이블스페이스를생성 ( 자동확장하지않음 ) isql> CREATE TABLESPACE test_disk 2 DATAFILE test01.dbf, test02.dbf, test03.dbf 3 SIZE 100M AUTOEXTEND OFF; Create success. 데이터파일 test01.dbf, test02.dbf, test03.dbf 로구성되고, 초기크기가 100MB, 2G 까지자동확장하는 test_disk 테이블스페이스를생성 isql> CREATE TABLESPACE test_disk 2 DATAFILE test01.dbf, test02.dbf, test03.dbf 3 SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 2G ; Create success.
임시테이블스페이스생성 임시테이블스페이스 디스크데이터에대한질의수행중생성되는임시결과를저장하기위한테이블스페이스 트랜잭션이종료하는시점에해당질의가남긴모든데이터들은사라짐 구문 CREATE TEMPORARY TABLESPACE tablespace_name TEMPFILE tempfile_name [SIZE size (K M G) ] [REUSE] [AUTOEXTEND [ON [NEXT size][maxsize size] OFF) ] ; 예제 tbs.temp 로구성된 test_temp 임시테이블스페이스를생성. 임시파일의크기는 10M 이고, 5M 크기로자동확장. isql> CREATE TEMPORARY TABLESPACE test_temp 2 TEMPFILE 'tbs.temp 3 SIZE 10M AUTOEXTENED ON NEXT 5M ; Create success.
디스크테이블스페이스변경 테이블스페이스변경 ALTER TABLESPACE 구문으로테이블스페이스에데이터파일추가 / 삭제, 데이터파일크기, 데이터파일이름등에대해서변경이가능 구문 ALTER TABLESPACE tablespace_name { [ ADD DROP ] [ DATAFILE TEMPFILE ] [ ALTER [ DATAFILE TEMPFILE ] file_name SIZE ] [ AUTOEXTEND [ON [NEXT size][maxsize size] OFF) ] [RENAME DATAFILE 기존데이터파일경로및이름 TO 새로운데이터파일경로및이름 ] }; 예제 test_disk 테이블스페이스에 64 MB 의데이터파일 test01.dbf 를추가 ( 공간이더필요할때는 500K 씩파일이자동확장 ) isql> ALTER TABLESPACE test_disk 2 ADD DATAFILE test01.dbf SIZE 64M 3 AUTOEXTEND ON NEXT 500K; Alter success.
메모리테이블스페이스변경 테이블스페이스변경 ALTER TABLESPACE 구문으로테이블스페이스에체크포인트경로추가 / 삭제 / 변경, 테이블스페이스크기등에대해서변경이가능 구문 ALTER TABLESPACE tablespace_name { [ ADD DROP ] [ CHECKPOINT PATH path ] [ RENAME CHECKPOINT PATH 기존디렉토리경로 TO 새로운디렉토리경로 ] [ ALTER AUTOEXTEND ( ON [NEXT size][maxsize size] OFF) ] }; 예제 Test_mem 테이블스페이스를 8M 단위로최대 1GB 까지자동확장으로변경 isql> ALTER TABLESPACE test_mem 2 ALTER AUTOEXTEND ON NEXT 8M MAXSIZE 1G; Alter success.
테이블스페이스변경 test_disk 디스크테이블스페이스가자동확장을하지않도록변경 isql> ALTER TABLESPACE test_disk 2 ALTER DATAFILE ' test01.dbf' 3 AUTOEXTEND OFF; Alter success. test_disk 디스크테이블스페이스가자동확장을하도록변경 isql> ALTER TABLESPACE test_disk 2 ALTER DATAFILE ' test01.dbf 3 AUTOEXTEND ON Alter success. test_disk 테이블스페이스의데이터파일 test01.dbf 를삭제하시오. isql> ALTER TABLESPACE test_disk 2 DROP DATAFILE test01.dbf ; Alter success.
테이블스페이스삭제 테이블스페이스삭제 데이터베이스에서테이블스페이스를제거함 시스템테이블스페이스는삭제할수없음 구문 DROP TABLESPACE tablespace_name [INCLUDING CONTENTS] [ AND DATAFILES CASCADE CONSTRAINTS] ; 예제 메모리테이블스페이스 test_mem 을삭제 isql> DROP TABLESPACE test_mem; Drop success. 디스크테이블스페이스 test_disk 의모든객체, 데이터파일들과함께테이블스페이스를삭제 isql> DROP TABLESPACE test_disk 2 INCLUDING CONTENTS AND DATAFILES; Drop success.
테이블스페이스상태 테이블스페이스상태 테이블스페이스는서비스상태에따라온라인 (online), 오프라인 (offline), 또는폐기 (discard) 상태로나뉨 구문 ALTER TABLESPACE tablespace_name [ONLINE / OFFLINE / DISCARD]; ONLINE 테이블스페이스에속한모든객체에사용자가접근할수있는일반적인상태 OFFLINE 테이블스페이스와관련된모든자원이해제된상태이며, 데이터베이스에서테이블스페이스를일시적으로사용할수없게설정된상태 DISCARD 특정테이블스페이스의데이터에오류가발생하여정상적인 DB 구동이불가능할시특정테이블스페이스를폐기할수있도록설정
TRANSACTION MANAGEMENT
TRANSACTION 트랜잭션의정의 트랜잭션이란하나이상의 SQL 문장들로이루어진논리적인작업단위 트랜잭션관리 사용자트랜잭션의동시성을제어하고데이터일관성을유지하도록하는데이터베이스의가장기본적인기능중하나 정상적인트랜잭션의무결성조건 원자성 (Atomicity) 일관성 (Consistency) 고립성 (Isolation) 영속성 (Durability)
SQL STATEMENT 스테이트먼트 스테이트먼트 (statement) 는트랜잭션내에서수행되는 SQL 문장하나하나를의미 스테이트먼트의종류 DML (Data Manipulation Language) 데이터베이스내에저장되는실제데이터들의삽입, 삭제, 변경및검색을수행하는문장 DDL (Data Definition Language) 데이터베이스의논리적구성요소인객체들 ( 테이블, 인덱스, 시퀀스, ) 의생성, 변경및삭제를수행하는문장 DCL (Data Control Language) 데이터베이스의상태나프로퍼티혹은물리적구성을변경시키는문장 일반적으로하나의 SQL 문장이하나의스테이트먼트로되지만, 저장프로시저나함수등이호출되면하나이상의하위스테이트먼트들이생성되어수행됨
TRANSACTION CONTROL 트랜잭션의커밋 (commit) 하나의트랜잭션안에서수행한모든 SQL 문장들의결과를데이터베이스에영구히반영하면서해당트랜잭션을종료하는연산 트랜잭션의롤백 (rollback) 트랜잭션의수행도중오류로더이상진행할수없을경우지금까지수행해왔던모든 SQL 문장들을취소하고자하는경우데이터베이스를트랜잭션수행이전상태로되돌리며트랜잭션을종료하는연산 명시적저장점 (savepoint) 하나의긴트랜잭션을여러개의부분으로나누어관리하는경우, 그시작부분에명시적저장점 (savepoint) 를선언사용가능
DURABILITY 트랜잭션의영속성 DBMS 가사용자에게트랜잭션커밋 (commit) 응답을했을경우, 데이터베이스객체에대한해당변경사항이디스크에반영 (flush) 되기전에시스템장애가발생하였더라도해당트랜잭션의커밋은보장되어야한다는속성 데이터베이스관리시스템은트랜잭션의 durability 를제공하기위해로그 (log) 기록을관리한다. 로그기록으로인한디스크 I/O 는트랜잭션처리의병목 (bottleneck) 으로작용하게되어트랜잭션처리성능저하의원인이될수있다. 완벽한트랜잭션 durability 과트랜잭션처리성능관계는안정성과성능이라는각기다른목표를가지는상충 (tradeoff) 관계에있다.
DURABILITY 트랜잭션의영속성과복구 Client UPDATE t1 SET c1=20 WHERE c1=10 Log Buffer Update 10 20 Commit log Memory TBS 20 10 Log Buffer Memory TBS 10 20 Commit Flush Commit Success Update 10 20 Commit log 10 Update 10 20 Commit log 10 Logfile 비정상종료발생 Datafile SERVER Restart Logfile Datafile Restart Recovery
DURABILITY LEVEL Durability Level 범위 Durability Level은 0~5 Level로구분 ALTIBASE HDB는 0과 1 Level을제외한 2에서 5 Level까지만지원 기본 Durability Level은 3 Level이다. Durability Level 설정방법 altibase.properties 파일에서관련프로퍼티의변경하여설정 COMMIT_WRITE_WAIT_MODE, LOG_BUFFER_TYPE 프로퍼티로설정 DB 구동시설정된 Durability Level로구동 DB 운영중에실시간으로변경불가능
DURABILITY LEVEL Durability Level 3 OS Kernel 영역의로그버퍼를사용하기때문에 ALTIBASE HDB 프로세스가비정상종료를하더라도트랜잭션이 commit 한로그는운영체제의의해로그파일에반영 ALTIBASE HDB 의기본 durability level( 성능지향설정방법 ) OS 의 crash 상황만아니라면트랜잭션 durability 를완벽하게지원 OS OS Kernel Log Buffer Client Update 10 20 Commit log ALTIBASE HDB Process Update 10 20 Commit log Logfile UPDATE t1 SET c1=20 WHERE c1=10 Commit Commit Success Memory TBS 10 10 20 Datafile
DURABILITY LEVEL Durability Level 5 로그를프로세스영역의로그버퍼에기록하고, 물리적인로그파일에기록하는것을보장하기때문에 ALTIBASE HDB 의장애시에도 durability 를보장함 모든로그가로그파일에반영됨을보장하기때문에어떠한시스템장애상황에서도완벽하게트랜잭션 durability 를보장하나 durability level 중성능이가장느림 OS ALTIBASE HDB Process Log Buffer Client Update 10 20 Commit log Update 10 20 Commit log UPDATE t1 SET c1=20 WHERE c1=10 Commit Commit Success Memory TBS 10 20 Logfile 10 Datafile
CONCURRENCY CONTROL 버전관점의동시성제어기법분류 동일레코드에수행되는 Read/Modify 연산에대한동시성제어기법 SVCC(Single Version Concurrency Control) 레코드에버전 (version 또는 image) 이한개만존재하는기법으로검색수행만으로도다른트랜잭션에게영향을미치게됨 MVCC(Multi Version Concurrency Control) 하나의레코드에대해변경이발생할경우그레코드의원래버전은그대로유지한채로새로운버전을만들어그새로운버전에대해변경을수행함으로써비록한트랜잭션이동일레코드에대해연산을수행하고있더라도그레코드를검색하는다른트랜잭션에게는영향을미치지않도록하는동시성제어기법
SVCC SVCC 변경연산시에해당레코드에 Lock 을획득해야하므로 Read/Modify 연산간에충돌이발생하므로복잡한트랜잭션환경에서성능저하가능성이높음 Client UPDATE t1 SET c1=20 WHERE c1=10 Commit Commit Success 10 20 1 Exclusive Mode Lock Client SELECT c1 FROM t1 Waiting. 결과출력
MVCC MVCC 변경연산시에 Lock 을획득하고새로운버전을생성하여변경하기때문에 Read/Modify 연산간에충돌이없고복잡한트랜잭션환경에서높은성능을보장 Client Exclusive Mode Lock UPDATE t1 SET c1=20 WHERE c1=10 Commit 10 1 Commit Success Client 10 1 20 SELECT c1 FROM t1 결과출력 (10) SELECT c1 FROM t1 결과출력 (20)
OUT-PLACE & IN-PLACE 메모리테이블 : Out-place 새로운레코드버전을데이터페이지의별도 RID 로저장하는 Out-place 구조로빠른성능을보장하나데이터페이지의사용효율성이저하될가능성이있으므로특정레코드의버전이프로퍼티에지정된사이즈보다커질경우에는 In-place Update 로전환되도록설계되어있음 Client 1 10 Memory Ager UPDATE t1 SET c1=20 WHERE c1=10 Commit 2 10 20 Commit Success Client Data Page SELECT c1 FROM t1 결과출력 (10) (20) Out-place (RID 변경 )
OUT-PLACE & IN-PLACE 디스크테이블 : In-place 기존의레코드에서변경되는컬럼들을 Undo 테이블스페이스에 Undo 로그레코드로기록하고변경이후값들을기존레코드의해당위치에복사하는 In-place 구조 Client UPDATE t1 SET c1=20 WHERE c1=10 Commit Commit Success 1 20 10 1 10 Client SELECT c1 FROM t1 Data Page Undo Area 결과출력 (10) (20) In-place (RID 유지 )
BUFFER MANAGEMENT
개요 Buffer 디스크 I/O 를줄이고성능향상을위해서디스크에있는페이지를임시로메모리에적재하여사용하는메모리의영역을의미 Buffer Replace 디스크의모든페이지를버퍼에적재할수없으므로새로운디스크의페이지를적재할때, 버퍼의일부페이지를새로운페이지로교체하는것 Victim Buffer Replace 를위해선정된버퍼프레임과해당 BCB 를아울러지칭함 데이터요청 4 10 5 9 Buffer 1 2 3 4 5 6 7 8 9 10 디스크
BUFFER 구성요소 Buffer 구성요소 Buffer Pool Prepare List BCB 버퍼프레임 #1 버퍼프레임 #2 BCB LRU List BCB 버퍼프레임 #n 버퍼프레임 #n+1 Flush List BCB Datafiles
BUFFER 구성요소 Buffer 구성요소 Buffer Pool 버퍼프레임 1 개의디스크 Page 가그대로메모리에맵핑되는 1 개의메모리공간. 디스크 Page 가 8K 이기때문에버퍼프레임의크기도 8K. 버퍼프레임은 3 가지상태로관리됨 버퍼프레임 #1 버퍼프레임 #n 버퍼프레임 #2 버퍼프레임 #n+1 Datafiles
BUFFER 구성요소 Buffer 구성요소 항목 Free Clean Dirty 설명최초상태이며, 버퍼프레임에페이지가적재되지않은상태버퍼프레임에 Page가적재된상태이며변경이발생하지않은상태버퍼프레임에적재된 Page에변경이발생한상태 상태변화 데이터적재데이터변경 Free Clean Dirty 디스크에반영 (Flush)
BUFFER 구성요소 Buffer 구성요소 Prepare List BCB BCB(Buffer Control Block) 1 개의버퍼프레임에대한정보를관리하는하나의구조체정보를의미. 버퍼프레임과 BCB 는 1:1 관계임. BCB 가관리하는항목은다음과같음 LRU List BCB BCB 항목 ID Frame PTR 설명 BCB의고유식별번호 Buffer Frame의주소값 Space ID 디스크 Page 가속한테이블스페이스 ID Flush List BCB Page ID State 디스크DB의 Page 식별번호버퍼프레임의상태정보 ListItem BCB 가어떤리스트에위치해있는지표시 ListNO 병렬화된리스트중 BCB 가위치한리스트번호
BUFFER 구성요소 Buffer 구성요소 Prepare List DB 구동시에 Free 상태의 BCB 가위치하고있는리스트 Victim 이필요하면가장먼저탐색함 Flush 가발생하면, Buffer Replace 를위해 Flush list 에서 Prepare List 로이동함 Prepare List BCB LRU List LRU 알고리즘으로 BCB 들을관리함 버퍼프레임에적재된순서대로 BCB 를관리하여오래된 BCB 들부터 Victim 으로선정하여 Replace 함 Flush List Dirty 상태의 BCB 들을관리하며, Buffer Flusher 에의해서디스크 Page 로 flush 됨 Flush 가되면, BCB 의상태는 Clean 으로변경되고 Replace 를위해 Prepare List 로이동됨 Checkpoint List 3 개의리스트에위치한 Dirty 상태의 BCB 들을관리하는리스트 3 개의리스트와독립적으로 BCB 들을관리함 Buffer Flush 와는별개의동작으로 Dirty BCB 들을데이터파일에저장함 LRU List Flush List Checkpoint List BCB BCB BCB
BUFFER 구성요소 Buffer 구성요소 Client SELECT * FROM t1 WHERE c1=30 결과출력 (30) BCB#1 BCB#2 BCB#3 BCB#4 10 30 40 50 10 20 30 40 50 60 데이터파일
BUFFER 구성요소 Buffer 구성요소 Checkpoint List List Node List Node Client BCB#3 Flush Flush List SELECT UPDATE * t1 FROM SET c1=2 c1=4 t1 WHERE c1=10 c1=20 c1=50 c1=40 BCB#1 BCB#2 BCB#3 LRU List 결과출력 (10) (40) (50) BCB#1 BCB#3 Prepare List 10 50 20 2 30 40 4 10 20 2 30 40 50 60 데이터파일
ALTIBASE HDB ADMINISTRATION I REPLICATION OVERVIEW ALTIBASE REPLICATION REPLICATION SYSTEM DESIGN CONFLICT RESOLUTION REPLICATION OPTIMIZATION REPLICATION TROUBLESHOOTING REPLICATION MONITORING REPLICATION PROPERTY REPLICATIO MANAGER
OVERVIEW
High Availabilility 무정지서비스시스템 Downtime 을최소화, 시스템가용성을 100% 로유지 Planed Downtime - 정기점검, 시스템 upgrade/patch Switch-Over 수행 : 정상적인서비스주체변경 Unplanned Downtime - 시스템일부의 failure Fail-Over 수행 : 긴급서비스주체변경 고가용성 (High Availability / HA) 무정지시스템또는무정지시스템구성요소의가용성 five 9 (99.999%) S/W, H/W 차원의다양한실현기법이존재 DBMS 의 HA 노드간데이터베이스를동기화함으로실현 병렬데이터베이스아키텍처에따라기법이다름
Shared Nothing vs. Shared Disk 구분 Shared Nothing Architecture Shared Disk Architecture 공유자원 공유자원이없음 Disk 데이터동기화방안 Network를통한복제 Disk를공유 성능 * 공유자원이없으므로빠른성능 공유자원에대한복잡한처리 (2PC/3PC) 로성능저하 시스템구축비용 * 저비용 ( 로컬디스크, Network) 고비용 ( 공유스토리지설비 ) 거리적용 * 데이터정합성 * 일반적인 TCP 기반의 Network 를사용하여도원거리적용에큰무리가없음 Network 복제특성상노드간데이터불일치현상을억제하기위한별도의고려가필요 Disk 공유를위한고비용의전용망이요구되므로실질적으로는거리제한이존재 Disk 를공유하므로노드간데이터정합성이보장 치명적인 Failure 요소 Network Failure 시관련노드데이터동기화불가 Disk Failure 시시스템전체서비스불가능 적합시스템완벽한데이터정합성보다는빠른성능요구성능보다는완벽한데이터정합성요구 관련대표 DBMS 기술이중화 (replication) 관련 DBMS 벤더 ALTIBASE HDB, DB2, MS-SQL, ORACLE, SYBASE RAC (Real Application Cluster) ORACLE 성능, 시스템구축비용, 거리적용 과 데이터정합성 측면에서의 trade-off
Replication 이중화의정의 하나의 DB 의변경된내용을 Network 를통하여다른여러 DB 들에복제하는기술 이중화의목적 고가용성 (High Availability) 확보 부하분산 (Load-Balancing) 을통한성능개선및확장성 (scalability) 향상 물리적인장애, 재해시데이터손실최소화 AP 1 AP n AP 1 AP m AP m+1 AP n Fail-Over SERVER main SERVER sub SERVER main SERVER sub DB replication DB DB replication DB [ 그림 1. 2-way 이중화시스템에서의고가용성확보 ] [ 그림 2. 2-way 이중화시스템에서의확장성향상 ]
ALTIBASE REPLICATION
ALTIBASE Replication Features 주요특징 TCP/IP Network 기반이기종 OS간이중화지원모듈화리두로그기반테이블단위관리 lazy, eager 복제방식지원고속복제병렬쓰레드지원최대 32-way 이중화지원 Point-To-Point 방식의복제 상세설명 Network 설비만되어있다면이중화가가능하므로이중화를위한별도비용없음 Network 성능에따라장거리복제가능 (Giga Bit LAN 필수 ) OS bit, CPU endian 관계없이이중화가능 이중화를모듈화, DBMS 와유기적으로결합된형태이므로이중화성능향상이중화를위한별도의 ALTIBASE HDB 패키지불필요사용자에목적에따라 ALTIBASE HDB 를가변적으로사용가능 리두로그를실시간전송하는레코드단위이중화 이중화를수행할레코드를테이블단위로관리운영중이중화할테이블을실시간으로추가, 삭제가능 복제방식으로 lazy, eager 모두지원 lazy 복제방식의경우마스터트랜잭션에수행속도에영향을주지않으면서마스터트랜잭션의 95% 이상에달하는빠른속도로복제가능 (Giga bit LAN 환경의 UNIX 시스템에서의성능테스트측정치 ) Eager 모드사용시, 송신쓰레드를지정한개수만큼병렬로사용하여이중화성능향상 하나의 ALTIBASE HDB 는최대 32 개의 ALTIBASE HDB 와이중화가능업무에따라부하분산및다양한시스템구성이가능 이중화노드간 1:1 로만복제, 다른이중화노드로전이되지않음
ALTIBASE Replication Features 주요특징 Network 장애감지자동회복다중 IP 지원 SQL 인터페이스의명령어 상세설명 물리적인 Network 손상을감지하기위한별도쓰레드운영 마지막으로이중화를수행하던시점을기록및유지이중화장애시이중화재수행만으로도자동회복가능 하나의이중화대상서버에대해두개이상의물리적인 IP 주소를부여, 장애시자동으로전환함으로써이중화자체의가용성증대 이중화사용을위한모든명령어를 SQL 인터페이스화하여편의성증대 Network 4 개 Conflict Resolution 제공 Conflict Resolution 을위한 3 개의 Scheme 과 1 개의유틸리티제공 부가기능 이중화를이용한테이블단위복제기능이중화장애시장애노드의리두로그파일에접근하여직접이중화를수행하는오프라인이중화기능
ALTIBASE HDB Replication Methods ALTIBASE HDB 이중화기법 1. 응용프로그램처리 응용프로그램작성및데이터정합성보장곤란 2. SQL 전송 QP 부하가중및이중화충돌감지곤란 3. SQL 에대한실행계획전송 전송량증가로인한통신부하가중 4. 리두로그전송후 SQL 로변환 SQL 변환비용및 QP 부하가중 5. 리두로그를 SM 에서직접실행이가능한논리적구조로치환하여전송 치환비용은발생하나이중화성능이빠름 6. 리두로그전송후회복방법으로반영 속도는빠르나, Active-Active 불가
ALTIBASE HDB Replication Architecture Xlog SM 에서직접실행 (execution) 이가능한가능한논리적인구조 리두로그에서이중화수행에필요한부분만추출한플랫폼중립의이중화로그 기본적으로하나의레코드에대응하는리두로그는하나의 Xlog 로치환되어실시간전송 레코드가클경우에는여러개로분할하여치환 이중화송 / 수신쓰레드 이중화송신쓰레드 (sender) 리두로그를 Xlog 로치환후이중화대상서버로전송 이중화수신쓰레드 (receiver) 전송받은 Xlog 를 SM 에통하여실행 XSN (Xlog Sequence Number) sender 가 receiver 에게최종전송한리두로그의위치 이중화가중지되었다가다시시작할때이중화시작위치가됨
ALTIBASE HDB Replication Architecture SQL 구문관점에서의상세이중화과정 3개의레코드를변경하는하나의 UPDATE 구문수행 관련리두로그가최소 3개의 Xlog로치환되어전송 치환될때마다 Xlog 단위로실시간전송 Xlog 에대응하는레코드변경연산실행이총 3 회발생 UPDATE rep_tbl SET c2 = X WHERE c1 >= 1 AND c1 <= 3; TX redo log Local Server sender Xlog receiver Remote Server 1 2 3 execution #001 execution #002 execution #003
Replication Object 이중화객체 이중화수행을위한객체로지역서버와원격서버에모두존재해야만이중화가가능 동일한이름으로대응되는이중화객체간 1:1 로만이중화수행, 전이되지않음 IP, 이중화포트 (port) 번호로식별 하나의데이터베이스에최대 32 개생성가능 객체별로다중 IP 지원 객체별로 lazy, eager 복제방식지정가능 객체별로이중화대상테이블의컬럼및상세조건과기타정보유지 DB#1 192.133.1.1 DB#2 192.133.1.2 REP_OBJECT_XY REP_OBJECT_XY IP: 192.133.1.2 REP_PORT: 30300 TABLE: X, Y TABLE X P K TABLE Y P K DB#1 TO DB#2 DB#2 TO DB#1 IP: 192.133.1.1 REP_PORT: 30300 TABLE: X, Y TABLE X P K TABLE Y P K TABLE TABLE TABLE TABLE P K P K
Replication Object 이중화대상테이블의요건 PK 필수 이중화를수행할컬럼은이름과스펙이완벽히일치 레코드중복제될컬럼을이름으로식별 컬럼개수및순서는지역서버와원격서버가각각다르더라도무방 지역서버의테이블에는존재하고원격서버에는없는컬럼은 NULL 로채워짐 컬럼이름은동일한데스펙이다르면이중화구동 (START) 시점에에러발생 데이터타입, 길이, 제약조건등 FK 불가 이중화에대한오해 시퀀스도이중화가가능한가? 테이블의레코드에대한이중화로시퀀스와같은비테이블객체에대한이중화는불가
Replication Object 이중화객체생성구문 CREATE [LAZY EAGER] REPLICATION replication_name [AS MASTER AS SLAVE] [OPTIONS options [options ] ] WITH { remote_host_ip, remote_replication_port_no } FROM user_name.table_name TO user_name.table_name [, FROM user_name.table_name TO user_name.table_name ] ; LAZY, EAGER : 이중화복제방식, 생략시 lazy 로지정 MASTER, SLAVE : Conflict Resolution 을위한서버의역할지정, 생략시미지정으로설정 option : 오프라인이중화같은이중화객체에대한부가기능 replication_name : 이중화객체명, 이중화를수행하려는서버간이름이동일해야함 remote_host_ip : 원격서버의 IP 주소 remote_replication_port_no : 원격서버의이중화수신포트번호 * FROM - TO : 이중화대상테이블을지역서버, 원격서버순으로명시
Replication Object 이중화대상서버 IP 추가 / 삭제 / 설정구문 ( 다중 IP 설정 ) ALTER REPLICATION replication_name {ADD DROP SET} HOST remote_host_ip, remote_replication_port_no ; 이중화대상테이블추가 / 삭제구문 ALTER REPLICATION replication_name {ADD DROP} TABLE FROM user_name.table_name TO user_name.table_name ; 이중화객체삭제구문 DROP REPLICATION replication_name ;
Replication Control 이중화제어 START - 마지막이중화수행시점을기점으로이중화를시작 ( 일반구동 ) QUICKSTART - 미전송리두로그를포기, 현재를기점으로이중화를시작 ( 긴급구동 ) STOP - 현재를기점으로이중화를중지 START QUICKSTART Replication Gap 전송완료된리두로그 미전송한리두로그 START STOP 관련구문 ALTER REPLICATION replication_name {START QUICKSTART STOP} ;
Session Control 세션의이중화제어 수행시점부터해당세션에서발생하는트랜잭션에대한이중화여부를지정 트랜잭션특성에따라이중화여부를동적으로선택가능 관련구문 ALTER SESSION SET REPLICATION = {NONE DEFAULT} ; NONE - 이중화하지않음 DEFAULT - 이중화객체에설정된복제방식으로변경 ALTER SESSION SET REPLICATION = {TRUE FALSE} ; FALSE - 이중화하지않음 TRUE - 이중화객체에설정된복제방식으로변경
Replication Setting Step 이중화대상 ALTIBASE HDB 선정 캐릭터세트가동일해야함 내셔널캐릭터세트가동일해야함 (5.3.3 higher) 이중화와관련된 ALTIBASE HDB 내부요소의버전이동일해야함 ALTIBASE HDB major 버전이같다면대부분동일하나반드시확인이필요 Replication Protocol 버전 Meta 버전 # altibase -v version 6.1.1.0.5 XEON_LINUX_redhat_Enterprise_ES4-64bit-6.1.1.0.5-release-GCC3.4.6 (xeon-redhatlinux-gnu) Aug 7 2012 15:45:18, binary db version 6.1.1, meta version 5.10.1, cm protocol version 5.6.3, replication protocol version 6.1.1
Table Clone 테이블복제 이중화객체를이용한테이블복제기능 지역서버테이블의모든레코드를원격서버의테이블로 INSERT하는방식 이중화가중지 (STOP) 된상태에서만수행가능 복제완료후자동으로이중화를시작 (START) 특정테이블복구, 장애노드복구, 신규노드추가시사용 간략수행절차 복제대상테이블 TRUNCATE 또는재생성 이중화객체에대상테이블을추가또는이중화객체재생성 지역서버에서테이블복제구문수행 REP_OBJ TABLE TABLE X TABLE: X TABLE X TABLE P K INSERT P K
Table Clone 관련구문 ALTER REPLICATION replication_name SYNC [ONLY] [PARALLEL parallel_factor ] [TABLE user_name.table_name,, user_name.table_name ]; SYNC: 이중화를위한 ALTIBASE HDB 간요구사항확인 ONLY: 명시할경우테이블복제만수행, 자동으로이중화를시작 (START) 하지않음 parallel_factor : 테이블복제를수행할쓰레드의개수 ( 기본값 1, 최대 CPU*2) TABLE: 테이블복제를수행할테이블을명시, 생략시해당이중화객체의모든테이블이대상
Table Clone 유의사항 Active-Active 구성에서는시스템서비스중에수행하지않아야함 테이블복제가완료되기전까지는해당이중화객체의다른테이블들이이중화되지않음 Active-Standby 구성이라면사용가능하나일시적인부하발생고려 대응되는원격서버테이블의모든레코드를삭제후수행해야함 동일한 PK 의레코드가이미존재시삽입충돌이발생하여복제실패 동일한 PK 에대한 INSERT 연산으로인한 DBMS 부하발생 이중화 trace 로그파일에다량의삽입충돌에러발생 원격서버테이블의레코드삭제시에는 TRUNCATE 수행을권장 사용자실수방지차원 DELETE 로원격서버테이블의레코드삭제하여지역서버의레코드도삭제
Offline Replication 오프라인이중화옵션추가 / 변경구문 지역서버장애시원격서버에서가상 sender 를생성하여직접이중화를수행하는기능 미처전송하지못한리두로그를반영한후자동으로종료 장애로인한 fail-over 시, 사전절차로활용하여데이터정합성보장가능 기본적으로원격서버에서지역서버의리두로그파일에접근이가능해야함 FTP 를활용하는방법도가능하나사용자조작최소화를고려하여 NFS, SAN 구성권장 이중화객체의옵션으로지정후수행하는방식 Trouble virtual sender receiver Local Server Remote Server Shared Disk Local Server s redo logfile Remote Server s redo logfile
Offline Replication 오프라인이중화옵션추가 / 변경구문 ALTER REPLICATION replication_name SET OFFLINE ENABLE WITH log_dir_1, log_dir_2,, log_dir_n ; log_dir_n : 오프라인이중화를수행할로그파일의경로 오프라인이중화수행구문 ALTER REPLICATION replication_name START WITH OFFLINE; 오프라인이중화옵션삭제구문 ALTER REPLICATION replication_name SET OFFLINE DISABLE;
DDL Operation 이중화객체에대한 DDL 수행 이중화와관련된모든구문은 SYS 사용자로만수행가능 이중화객체변경 (ALTER) 에대한모든구문은이중화가중지 (STOP) 된상태에서만가능 이중화대상테이블은 DDL 수행이불가 이중화대상테이블여부와무관하게수행가능한 DDL 일부제외 프로퍼티를통하여추가적인 DDL 허용가능 이중화대상테이블여부와무관하게수행가능한 DDL ALTER INDEX REBUILD PARTITION GRANT OBJECT REVOKE OBJECT CREATE TRIGGER DROP TRIGGER
DDL Operation 프로퍼티를통하여허용가능한 DDL ALTER TABLE table_name {ADD DROP} COLUMN ALTER TABLE table_name ALTER COLUMN column_name {SET DROP} DEFAULT ALTER TABLE table_name TRUNCATE PARTITION TRUNCATE TABLE {CREATE DROP} INDEX 수행절차 REPLICATION_DDL_ENABLE 을 1 로설정후, 허용가능 DDL 수행 유의사항 세션의이중화속성이 NONE 일경우는수행되지않음 사용자가명시적으로세션의이중화속성을 NONE 으로변경한경우는 DEFAULT 로변경필요 DDL 수행은이중화되지않으므로관련된서버에서모두동일하게수행해주어야함 ALTER TABLE ~ MODIFY COLUMN 은수행할수없음
DDL Operation Job Example 특정이중화대상테이블에새로운컬럼을추가하는절차 작업요건 예정된작업시간동안해당테이블에변경연산이발생하지않아야함 SELECT 연산은변경연산과무관하므로조회서비스는가능 Server A 테이블 rep_tbl 에변경연산관련서비스종료여부확인 isql> connect sys/manager; isql> ALTER REPLICATION rep_obj_01 STOP; isql> ALTER REPLICATION rep_obj_01 DROP TABLE FROM user01.rep_tbl TO user01.rep_tbl; ------DDL job start--------------------------- isql> connect user01/user01; isql> ALTER TABLE rep_tbl ADD COLUMN (new_col CHAR(9)); ------DDL job end----------------------------- isql> connect sys/manager; isql> ALTER REPLICATION rep_obj_01 ADD TABLE FROM user01.rep_tbl TO user01.rep_tbl; isql> ALTER REPLICATION rep_obj_01 START; 서비스정상화 Server B 테이블 rep_tbl 에변경연산관련서비스종료여부확인 isql> connect sys/manager; isql> ALTER REPLICATION rep_obj_01 STOP; isql> ALTER REPLICATION rep_obj_01 DROP TABLE FROM user01.rep_tbl TO user01.rep_tbl; ------DDL job start--------------------------- isql> connect user01/user01; isql> ALTER TABLE rep_tbl ADD COLUMN (new_col CHAR(9)); ------DDL job end----------------------------- isql> connect sys/manager; isql> ALTER REPLICATION rep_obj_01 ADD TABLE FROM user01.rep_tbl TO user01.rep_tbl; isql> ALTER REPLICATION rep_obj_01 START; 서비스정상화
Fail-Over Fail-Over 란? DBMS 가탑재된장비에서장애발생, 네트워크경로에서장애발생, DBMS 가비정상종료되어장애가발생했을경우이를극복하는것을의미 정상상황 장애상황 DB 1 에연결 ConnAttr 에콜백등록 DB 1 에연결 ConnAttr 에콜백등록 SELECT SELECT INSERT INSERT DELETE 연결해제 DB 2 에연결 DB 2 의정합성확인 DELETE 연결해제
Fail-Over 장애를인식하는시점에따른 Fail-Over 의분류 CTF(Connection Time Fail-Over) DBMS 접속시점에장애를인식하여장애가발생한 DBMS 대신다른가용노드의 DBMS 로접속하고서비스를진행 STF(Service Time Fail-Over) DBMS 접속에성공하여서비스하는도중에장애가발생했을때다른가용노드의 DBMS 에다시접속하여세션의프로퍼티를복구한후사용자응용프로그램의업무로직을계속수행하도록하는것을의미
Fail-Over 속성 속성 AlternativeServer ConnectionRetryCount 상세설명 장애발생시접속하게될가용서버를나타내며기존의 IP Address 부분에다음과같은형식으로추가한다. (IP Address1:port1, IP Address2:port2,.) 가용서버실패시, 접속시도반복횟수 ConnectionRetryDelay 가용서버접속실패시, 다시접속을시도하기전에대기하는시간 ( 초단위 ) LoadBalance SessionFailOver ON 으로설정하면최초접속시도시에기본서버와가용서버를포함하여랜덤으로선택한다. OFF 로설정하면최초접속시도시에기본서버에접속하고, 접속에실패하면 AlternativeSever 로기술한서버에접속한다. Fail-Over 할때의종류를결정한다. ON : STF, OFF: CTF
Fail-Over Configuration JDBC Connection url 부분에 Fail-Over 관련속성을지정해준다. jdbc:altibase://192.168.3.52:20300/mydb? AlternateServers=(192.168.3.54:20300,192.168.3.53:20300) &ConnectionRetryCount=3&ConnectionRetryDelay=3 &LoadBalance=off&SessionFailOver=on ODBC, APRE 연결스트링부분에 Fail-Over 관련속성을지정해준다. DSN=192.168.3.52;UID=sys;PWD=manager;PORT_NO=20300; AlternateServers=(192.168.3.54:20300,192.168.3.53:20300); ConnectionRetryCount=3;ConnectionRetryDelay=3;LoadBalance=off; SessionFailOver=on
REPLICATION SYSTEM DESIGN
Replication Architecture 복제방식구현 lazy - 이중화를모듈화하여마스터트랜잭션에영향을주지않는고속복제로구현 eager - 2PC(2 Phase commit) 와유사한형식으로구현 구성방식구현 Active-Active 모두 Sender 를구동 Active-Standby Fail-over 를고려한시스템 : Active-Active 와동일하게모두 sender 를구동 백업만을위한시스템 : Active 만 sender 를구동
lazy vs. eager 이중화노드간동기화시점에따른이중화복제방식 lazy: 비동기식. 마스터트랜잭션과이중화트랜잭션이별개로수행이중화지연은발생하나트랜잭션처리성능이빠름 eager: 동기식. 마스터트랜잭션과이중화트랜잭션이하나로수행이중화지연은발생하지않으나트랜잭션처리성능이느림 t' t t Active Active time time Standby Standby 주요특징 delay(gap) [ 그림 1. lazy ] [ 그림 2. eager ] 이중화지연 (Replication Delay or Gap) 발생과트랜잭션처리성능측면에서의 trade-off
Replication Architecture INSERT UPDATE DELETE MOVE process redo log 1 2 redo logfile #n 3 Query Processor Storage Manager sender 4 5 6 Xlog Query Processor Storage Manager receiver 7 redo logfile #n redo log thread module file page Network XSN XSN redo logfile #1 meta data meta data redo logfile #1 Local Server Remote Server Lazy Eager 마스터트랜잭션 = 1 + 2 이중화트랜잭션 = 3 + 4 + 5 + 6 + 7 트랜잭션 = 1 + 2 + 3 + 4 + 5 + 6 + 7 이중화트랜잭션 (7) 까지이상없이반영되었을때마스터트랜잭션 (2) 을확정
Replication Architecture 이중화갭 (Replication Gap) 이중화지연정도를성능뷰 v$repgap 에서수치로제공 리두로그일련번호인 SN(Sequence Number) 과 XSN을통한계산 이중화갭 = [ 지역서버의최신 SN] - [ 지역서버의최신 XSN] XSN SN Replication Gap 전송완료된리두로그 미전송한리두로그 time
Active-Active vs. Active-Standby 이중화갭 (Replication Gap) 변경연산주체에따른이중화노드구성방식 Active-Active 모든이중화노드에서변경연산이가능하나변경연산간충돌가능성있음 Active-Standby 특정이중화노드에서만변경연산이가능하나변경연산간충돌가능성없음 Active Active Active Standby Active Active Standby Standby [ 그림 1. Active-Active ] [ 그림 2. Active-Standby ] 주요특징 변경연산의부하분산과변경연산간충돌가능성측면에서의 trade-off 구성방식에따라응용프로그램고려사항발생 Active-Active - lock 발생에대한고려 Active-Standby - 노드역할에따른응용프로그램유지
Replication System Setting 이중화시스템설정방법 Active-Active, Active-Standby(fail-over) 한개의서버당 [ 전체서버개수 - 1] 개의이중화객체를생성 모든서버에서 sender 가구동 Active-Standby(backup) Active 서버는 [ 전체서버개수 - 1] 개의이중화객체를생성 Standby 서버는 Active 에대응되는 1 개의이중화객체만생성 Active 서버에서만 sender 가구동 Active Active Active Standby Active Active Standby Standby [ 그림 1. Active-Active, Active-Standby(fail-over) ] [ 그림 2. Active-Standby(backup) ]
Replication System Matrix 구성방식과복제방식에따른고려사항 구분 Active-Active Active-Standby lazy eager lazy eager 이중화성능빠름느림빠름느림 이중화지연 * 발생발생하지않음발생발생하지않음 변경연산의부하분산모든 DML 가능 (INSERT,UPATE,DELETE,SELECT) 불가능 (SELECT 만가능 ) 응용프로그램 lock 경합고려이중화역할에따라최소두벌유지 이중화충돌 * 발생발생하지않음 데이터불일치발생가능발생하지않음발생가능발생하지않음 이중화도입절차 시스템요건에부합하는구성방식과복제방식선택 빠른성능이장점인 lazy 복제방식을채택하는것이일반적 가장이상적인것은 Active-Active & lazy 조합에이중화충돌을회피한시스템설계 구성방식과복제방식에따라발생가능한문제에대한대응방안수립 Network 장애 * 의경우는 eager 복제방식이라할지라도장애복구방안을수립해야함
Replication Gap 이중화지연 송신이중화서버와수신이중화서버간의비동기화정도를의미 동일시점에이중화서버간데이터가다름 순간적인대량트랜잭션발생시두드러짐 Active-Active 구성시이중화충돌과같은또다른고려사항을발생시킴 발생원인 Lazy 복제방식 대응방안 트랜잭션처리성능보다데이터정합성이중요하다면 eager 복제방식을채택 Network 최적화수행으로완화 (Chapter.5) Network 대역폭을고려한트랜잭션튜닝으로완화 (Chapter.5)
Replication Conflict 이중화충돌 이중화서버간상이한변경연산 (I/U/D) 의충돌로인한수신이중화서버의반영에모호함 충분한고려를하지않으면이중화서버간데이터불일치가심각해짐 발생원인 lazy 복제방식 ( 이중화지연 ) 과 Active-Active 구성방식 ( 변경연산간충돌 ) 을함께적용 Active-Standby 라할지라도 fail-over 시에는발생가능 대응방안 트랜잭션처리성능보다데이터정합성이중요하다면 eager 복제방식을채택 최적의방안은이중화충돌을회피한시스템설계 노드별로서로다른레코드를변경하게끔시스템을설계 이중화충돌해결 (Conflict Resolution) 적용으로완화 (Chapter.4) lazy 복제방식특성상완벽한자동화로해결불가
Replication System Design 변경연산전용서버지정방식 서버 1 은변경연산전용, 서버 2 는조회연산전용으로설계 INSERT UPDATE Active 1 replication Active 2 SELECT DELETE 주요특징 조회연산의부하분산만가능하므로응용이제한적
Replication System Design PK 를노드개수만큼분할하는방식 서버 1 은짝수전용, 서버 2 는홀수전용으로설계 INSERT UPDATE DELETE SELECT Active 1 TABLE P K ODD EVEN replication Active 2 TABLE P K ODD EVEN INSERT UPDATE DELETE SELECT 주요특징 변경연산의부하분산이가능하나응용프로그램구현에주의필요
Replication System Design 업무에따라테이블을분할하는방식 서버 1 은 A 업무테이블변경연산전용, 서버 2 는 B 업무테이블변경연산전용으로설계 INSERT Active 1 Active 2 INSERT UPDATE DELETE SELECT TABLE A P K TABLE B P K replication TABLE A P K TABLE B P K UPDATE DELETE SELECT 주요특징 변경연산의부하분산이가능하나복합업무를처리하는경우에대한고려필요
Replication System Design Example L4 를활용하여변경연산전용서버를지정하는시스템구성예제 L4 에서응용프로램을 IP 로식별하여대응되는업무서버로연결 APP Active Standby Business A APP Business B APP Active Standby APP Business C APP APP L4 Active Standby Business D APP Active Standby APP Business E APP Active Standby APP Business F Active Standby
CONFLICT RESOLUTION
Replication Conflict 이중화충돌유형 삽입충돌 - 동일한 PK에대한 INSERT 연산 변경충돌 (1) - 동일한 PK에대한 UPDATE 연산 변경충돌 (2) - 존재하지않는 PK에대한 UPDATE 연산 삭제충돌 - 존재하지않는 PK에대한 DELETE 연산
Replication Conflict Scenario 삽입충돌, 변경충돌 (2), 삭제출동발생시나리오 time node A node B T1 Insert(PK1) & commit Insert(PK1) & commit T2 send log(t1) send log(t1) T3 receive log(node A s T2) *INSERT CONFLICT T4 delete(pk1) & commit T5 send log(t4) T6 receive log(node A s T5) *SUCCESS T7 receive log(node B s T2) *SUCCESS T8 select(pk 1) - 1 rows select(pk 1) - no rows T9 update(pk1) & commit T10 send log(t9) T11 receive log(node A s T10) *UPDATE CONFLICT(2) T12 delete(pk1) & commit T13 send log(t12) T14 receive log(node A s T13) *DELETE CONFLICT
Replication Conflict Scenario 변경충돌 (1) 발생시나리오 변경충돌에대한감지를하지않을경우에발생할수있는시나리오 동일한 PK 에대한서로다른노드의변경연산결과가성공, 별도의감지가필요 time node A node B T1 T2 update(pk1, A ) & commit send log(t1) T3 T4 update(pk1, B ) & commit send log(t3) T5 receive log(node B s T4) *SUCCESS T6 receive log(node A s T2) *SUCCESS T7 select(pk1) - B *UPDATE CONFLICT(1) select(pk1) - A *UPDATE CONFLICT(1)
Conflict Resolution ALTIBASE HDB 에서제공하는이중화충돌해결 DBMS Level User-oriented scheme Timestamps-based scheme Master-Slave scheme Utility Level Audit 이중화충돌유형에따른처리 충돌유형관련연산발생상황처리 삽입충돌 INSERT 동일한 PK 에대한 INSERT 연산 변경충돌 UPDATE 동일한 PK에대한 UPDATE 연산존재하지않는 PK에대한 UPDATE 연산 삭제충돌 DELETE 존재하지않는 PK 에대한 DELETE 연산 수신측에설정된이중화충돌해결정책에따름 * 이중화충돌리포트만수행
User-oriented scheme User-oriented scheme 기본적으로설정되어있는이중화충돌해결정책 이중화충돌발생시해당레코드와관련된연산을무시 사용자가확인후조치할수있도록이중화 trace 로그파일에리포트만수행 $ALTIBASE_HOME/trc/altibase_rp.log 이중화충돌유형에따른감지와처리 충돌유형발생상황충돌감지처리 삽입충돌동일한 PK 에대한 INSERT 연산 PK 존재여부로감지 변경충돌 동일한 PK 에대한 UPDATE 연산 존재하지않는 PK 에대한 UPDATE 연산 value-based 기법으로감지 PK 존재여부로감지 관련연산을모두무시, 감지에대한리포트만수행 삭제충돌존재하지않는 PK 에대한 DELETE 연산 PK 존재여부로감지
User-oriented scheme Value-based 기법 삽입 / 변경충돌을감지하기위한기법 변경전의값과현재값을비교하여일치하지않을경우변경충돌로판별 UPDATE 연산에대한 Xlog 는관련된컬럼의변경전의값과변경후의값으로구성 Xlog TABLE Xlog PK BEFORE AFTER PK CURRENT PK BEFORE AFTER 14 A B 14 A 14 X B conflict [ 그림 1. 정상적인연산으로판별하는경우 ] [ 그림 2. 이중화충돌연산으로판별하는경우 ] TABLE PK CURRENT 14 A 충돌감지와처리 프로퍼티설정으로충돌에대한감지와처리를선택 구분발생상황처리 삽입 충돌 변경충돌 동일한 PK에대한 INSERT 연산동일한 PK에대한 UPDATE 연산 REPLICATION_INSERT_REPLACE 값이 0 이면, 이중화충돌리포트 REPLICATION_INSERT_REPLACE 값이 1 이면, 이중화충돌을무시하고반영 REPLICATION_UPDATE_REPLACE 값이 0 이면, 이중화충돌리포트 REPLICATION_UPDATE_REPLACE 값이 1 이면, 이중화충돌을무시하고반영
User-oriented scheme 유의사항 LOB 컬럼은동일한 PK 변경에대한충돌을감지하지않음 LOB 데이터타입의특성 리두로그자체에변경전의값이없어감지가불가능
Master-Slave scheme Master-Slave Scheme 이중화객체생성시 Master, Slave 지정으로적용가능한이중화충돌해결정책 항상 Master 를기준으로처리 상세처리방식 구분 발생상황 Master 처리 Slave 삽입충돌동일한 PK 에대한 INSERT 연산이중화충돌리포트기존레코드를삭제하고 INSERT 연산반영 변경충돌동일한 PK 에대한 UPDATE 연산이중화충돌리포트 UPDATE 연산반영 유의사항 하나의 Master 이중화객체는반드시대응되는 Slave 객체가있어야만이중화가능 Master-Master (X), Slave-Slave (X), Master or Slave-NONE (X)
Timestamps-based scheme Timestamps-based scheme 프로퍼티로설정가능한이중화충돌해결정책 REPLICATION_TIMESTAMP_RESOLUTION 을 1 로설정 ( 기본값은 0) TIMESTAMP 컬럼을활용한우선순위판별 시간으로순서화되므로상대적으로신뢰성있는충돌해결이가능 Xlog TABLE Xlog TABLE TS PK BEFORE AFTER TS PK CURRENT TS PK BEFORE AFTER TS PK CURRENT T5 14 X B T3 14 A T7 14 A B conflict T9 14 A [ 그림 1. 정상적인연산으로판별하는경우 ] [ 그림 2. 이중화충돌연산으로판별하는경우 ] 상세처리방식 구분발생상황처리 삽입충돌 변경충돌 동일한 PK 에대한 INSERT 연산 동일한 PK 에대한 UPDATE 연산 TIMESTAMP 가같거나크면, 기존레코드를삭제하고 INSERT 연산반영. 그렇지않으면, 이중화충돌리포트 TIMESTAMP 가같거나크면, UPDATE 연산반영. 그렇지않으면, 이중화충돌리포트
Timestamps-based scheme 유의사항 이중화서버간시간이일치해야함 TIMESTAMP 컬럼필수 프로퍼티를설정하였다하더라도TIMESTAMP 컬럼이없는테이블은적용되지않음 TIMESTAMP 컬럼은사용자가직접추가하여야함 참고사항 TIMESTAMP 컬럼으로인한레코드당 8byte 의추가저장공간이발생 TIMESTAMP 컬럼이추가적으로전송되므로이중화를위한통신비용이증가
Conflict Resolution Flow 이중화충돌해결 scheme 혼용시의처리흐름 1. Timestamps-based scheme 가우선적으로적용 단, TIMESTAMP 컬럼이없다면처리하지않음 2. Master-Slave scheme 적용 3. User-oriented scheme 적용 동일한 PK 에대한변경충돌감지여부 replication NO Timestamps-based 가설정되어있는가? YES NO Master-slave 가설정된이중화객체인가? NO TIMESTAMP 컬럼이존재하는가? YES YES User-Oriented scheme Master-Slave scheme Timestamps-based scheme
AUDIT AUDIT 두개의 DB 를테이블단위로비교, 데이터동기화관련기능을수행하는유틸리티 이중화충돌로인한데이터불일치를사용자판단에의해일괄적으로해결하게함이목적 기본적으로마스터 (MASTER) DB 를기준으로슬래이브 (SLAVE) DB 를일치시키는정책을채택 대상 DB 가변경중에는정상적으로수행되지않을수있으므로주의가필요 데이터불일치기준 MOSX MOSO MXSO DB 1 DB 2 Audit Audit Config Audit Report
AUDIT Audit 의종류 Master DB 와 Slave DB 간의데이터불일치가발생하는세가지경우 Master Slave KEY VALUE KEY VALUE 1 APPLE 2 ORANGE 3 PEAR MOSX 1 APPLE 2 ORANGE KEY VALUE KEY VALUE 1 APPLE 2 ORANGE 3 PEAR MOSO 1 APPLE 2 ORANGE 3 GRAPE KEY VALUE KEY VALUE 1 APPLE 2 ORANGE MXSO 1 APPLE 2 ORANGE 3 PEAR
AUDIT 데이터동기화정책 Audit 이후 Master DB 와 Slave DB 간의데이터불일치가발생하는세가지경우에따라다음의데이터동기화정책을사용 SI (Slave Database Insert) MOSX 불일치를해소하는정책으로, Master DB 의레코드를 Slave DB 에삽입 (Insert) 한다. Master Slave KEY VALUE KEY VALUE 1 APPLE 2 ORANGE 3 PEAR MOSX 1 APPLE 2 ORANGE KEY VALUE KEY VALUE 1 APPLE 2 ORANGE 3 PEAR SI : Slave 저장 1 APPLE 2 ORANGE 3 PEAR
AUDIT SU (Slave Database Update) MOSO 불일치를해소하는정책으로, Master DB 의레코드내용으로 Slave DB 를변경 (Update) 한다. Master Slave KEY VALUE KEY VALUE 1 APPLE 2 ORANGE 3 PEAR MOSO 1 APPLE 2 ORANGE 3 GRAPE KEY VALUE KEY VALUE 1 APPLE 2 ORANGE 3 PEAR SU : Slave 변경 1 APPLE 2 ORANGE 3 PEAR
AUDIT MI (Master Database Insert) MXSO 불일치를해소하는정책으로, Slave DB 의레코드를 Master DB 에삽입 (Insert) 한다. Master KEY VALUE 1 APPLE 2 ORANGE MXSO Slave KEY VALUE 1 APPLE 2 ORANGE 3 PEAR KEY VALUE 1 APPLE 2 ORANGE 3 PEAR MI : 마스터저장 KEY VALUE 1 APPLE 2 ORANGE 3 PEAR
AUDIT SD (Slave Database Delete) MXSO 불일치를해소하는정책으로, Slave DB 의레코드를삭제 (Delete) 한다. Master KEY VALUE 1 APPLE 2 ORANGE MXSO Slave KEY VALUE 1 APPLE 2 ORANGE 3 PEAR KEY VALUE 1 APPLE 2 ORANGE SD : Slave 삭제 KEY VALUE 1 APPLE 2 ORANGE
AUDIT AUDIT 의구성 Audit 실행시서로다른두개의데이터베이스간에구성될 Audit 정책을기술한설정파일이필요 Audit 설정파일 : Audit 을실행하기위한옵션을지정하는설정파일로이파일은 Connection 정보, Audit 기능설정, 일치정책등의내용을포함하고있으며 $ALTIBASE_HOME/audit/sample.cfg 샘플파일을참조하여작성 비교 (DIFF) 기능 : Master DB 와 Slave DB 의불일치데이터를식별하여결과파일로생성 일치 (SYNC) 기능 : 두데이터베이스간의불일치를해소하고, 불일치데이터에대한정보를결과파일로생성
AUDIT 비교 (DIFF) 기능 Master DB 와 Slave DB 간의이중화작업에서발생한불일치데이터를식별하여실행결과파일로생성 # 비교작업을위한감사환경파일설정시작 # Master DB 접속정보설정 DB_MASTER= altibase://sys:manager@dsn=host1;port_no=10111;nls_use=ms949 # Slave DB 접속정보설정 DB_SLAVE= altibase://sys:manager@dsn=host2;port_no=20111;nls_use=ms949 # Audit 작업종류기술 ( 비교작업이므로 DIFF 설정 ) OPERATION = DIFF # 스레드수를지정 ( 무제한 ) MAX_THREAD = -1
AUDIT # 불일치감사정책설정 (diff 의경우설정의미없음 ) # DELETE_IN_SLAVE = ON # INSERT_TO_SLAVE = ON # INSERT_TO_MASTER = OFF # UPDATE_TO_SLAVE = ON # AUTODETECT_UNIQ_INX = ON # 실행결과파일이생성될위치지정 LOG_DIR =./ LOG_FILE = sample.log # Audit 대상테이블매칭설정 # 마스터테이블 [ EMP] 과슬레이브테이블 EMPLOYEE 와비교 [EMP] TABLE = EMPLOYEE SCHEMA = SYS # 마스터테이블 [DEPT] 와슬레이브테이블 DEPARTMENT 와비교 [DEPT] TABLE = DEPARTMENT SCHEMA = SYS # 감사환경파일설정끝
AUDIT Audit 명령실행 $ audit f sample.cfg 실행결과로실행로그파일 (sample.log) 과각각의테이블에대한 master 테이블 - 사용자명.slave 테이블.log 파일이생성 Sample.log 파일내용 INFO[ MNG ] Tread # 0 init is OK! INFO[ MNG ] Tread # 0 start is OK! [TAB_1->TAB_2] Fetch Rec In Master: 3 Fetch Rec In Slave : 2 MOSX = DF, Count : 1 MXSO = DF, Count : 0 MOSO = DF, Count : 1 SCAN TPS: 20547.95 Time: 0.00 sec 실행한환경파일의내용을출력하고, 각 TABLES 그룹의테이블에대한비교 (DIFF) 작업의요약정보를출력한다
AUDIT 마스터테이블 - 사용자명. 슬래이브테이블.log 내용 (1) MOSX 일경우 $ cat EMP-SYS.EMPLOYEE.log MOSX[19,15]->ENO(19):PK->{19} MOSX[20,15]->ENO(20):PK->{20} (2) MOSO 일경우 $ cat EMP-SYS.EMPLOYEE.log MOSO[10,10]->ENAME('JJLEE ','YHBAE '):PK->{10} MOSO[11,11]->ENAME( MJYOO ','MSKIM '):PK->{11} (3) MXSO 일경우 $ cat EMP-SYS.EMPLOYEE.log MXSO[8,8]->ENO(8):PK->{8} MXSO[8,9]->ENO(9):PK->{9}
AUDIT 일치 (SYNC) 기능 Master DB와 Slave DB간의불일치데이터를식별하여 Audit 환경파일의일치정책에따라불일치를해소하는기능 # 비교작업을위한 Audit 환경파일설정시작 # Master DB 접속정보설정 DB_MASTER= altibase://sys:manager@dsn=host1;port_no=10111;nls_use=ms949 # Slave DB 접속정보설정 DB_SLAVE= altibase://sys:manager@dsn=host2;port_no=20111;nls_use=ms949 # Audit 작업종류기술 ( 일치작업이므로 SYNC 설정 ) OPERATION = SYNC # 스레드수를지정 ( 무제한 ) MAX_THREAD = -1
AUDIT # 불일치 Audit 정책설정 DELETE_IN_SLAVE = ON INSERT_TO_SLAVE = ON INSERT_TO_MASTER = OFF UPDATE_TO_SLAVE = ON AUTODETECT_UNIQ_INX = ON # 실행결과파일이생성될위치지정 LOG_DIR =./ LOG_FILE = sample.log # Audit 대상테이블매칭설정 # 마스터테이블 [ EMP] 과슬레이브테이블 EMPLOYEE 와비교 [EMP] TABLE = EMPLOYEE SCHEMA = SYS # 마스터테이블 [DEPT] 과슬레이브테이블 DEPARTMENT 와비교 [DEPT] TABLE = DEPARTMENT SCHEMA = SYS # 감사환경파일설정끝
AUDIT Audit 명령실행 $ audit f sample.cfg 실행결과파일내용은다음과같으며만일실패한레코드가있다면, 해당레코드는로그파일에원인과레코드내용이출력 Sample.log 파일내용 INFO[ MNG ] Tread # 0 init is OK! INFO[ MNG ] Tread # 0 start is OK! [EMP->EMPLOYEE] Fetch Rec In Master: 3 Fetch Rec In Slave : 2 MOSX = -, SI MXSO = -, SD MOSO = -, SU
AUDIT ------------------------------------------------------------ Operation Type MASTER SLAVE ------------------------------------------------------------ INSERT Try 0 1 Fail 0 0 UPDATE Try X 1 Fail X 0 DELETE Try X 0 Fail X 0 ------------------------------------------------------------ UPDATE Try 0 2 Fail 0 0 OOP TPS: 13698.63 SCAN TPS: 20547.95 Time: 0.00 sec
AUDIT 이중화환경에서의일치 (SYNC) 작업절차 Application 서비스중지 AUDIT SYNC 중변경트랜잭션발생시데이터가불일치될수있음 이중화갭확인 이중화로그원격서버에모두반영되었는지 (rep_gap=0) 확인 isql> SELECT rep_gap FROM v$repgap; 이중화중지 isql> ALTER REPLICATION replication_name STOP; AUDIT 수행 REPLICATION QUICKSTART AUDIT 으로반영된트랜잭션로그가이중화로전송되는것을방지 isql> ALTER REPLICATION replication_name QUICKSTART;
AUDIT Audit 사용시유의사항 PK 가없을경우 Log 파일에아래에러발생 FATAL[ TASK ] Process failure! [SCANER]: [ERR-910D8 : No Primary Key Column exist (T1:T1)] SD 와 MI 정책충돌시아래에러발생 Invalid Property Value SD and MI Incompatible was defined. 데이터타입이다를경우데이터값이같더라도다르게인식 char(10) vs. varchar(10)
REPLICATION OPTIMIZATION
Overview ALTIBASE 이중화최적화를위한공통고려사항 응용프로그램고려요소 제한사항 권고되는 logic 이중화갭최소화및 TPS 향상을위한필수고려요소 Network 최적화 트랜잭션튜닝 Active-Active 구성방식에서의고려사항 부분실패와부분롤백 이중화에서의 lock 체계 이중화 lock timeout 이중화데드락 이중화 sender 튜닝
Application Restriction PK 에대한 UPDATE 연산불가능 PK 변경시이중화충돌이발생가능하므로에러로처리됨
Application Logic INSERT 결과가중복에러일때 UPDATE 를수행하는 logic 의변경권장 일반적으로흔히사용되지만 DBMS 에부하를주는잘못된 logic 대부분의 DBMS 는무조건 INSERT 연산을수행후결과를반환하는구조 리두로그복제기법의 ALTIBASE 이중화에서는또다른문제가발생 실패한 INSERT 연산에대한 INSERT, 롤백연산도이중화되어불필요한연산부하증가 이중화 trace 로그파일에다량의삽입충돌에러메시지가발생 무시해도되는다량의삽입충돌에러로인해주요한에러에대한식별이어려워짐 UPDATE 결과가없을때 INSERT 하는 logic 으로변경권장 DBMS 에부하를주는잘못된 logic INSERT INTO TABLE If (SQLCODE == SQL_DUP_ERROR) { UPDATE TABLE } 권장되는 logic UPDATE TABLE If (SQLCODE == SQL_NO_DATA) { INSERT INTO TABLE }
Network Optimization H/W TCP/IP Network 기반의복제이므로 H/W 성능과직결 서비스라인과분리된대역폭 1 Giga Bit 이상의이중화전용라인구성권장 이중화객체수만큼의전용 LAN Card 권장 Network 장애를대비하여이중화관련 Network H/W 는 2 배수구성권장 기타 Network 관련설비최적화 S/W OS 플랫폼에따른 S/W 적인 Network 관련설정최적화 이중화객체설계 이중화객체간트랜잭션순서가관계없다면이중화객체를분리하는것을권장 이중화송신쓰레드를객체수만큼생성함으로속도향상기대가능 메모리 DB 관련이중화객체와디스크 DB 관련이중화객체의분리는필수 디스크 DB 의느린수행속도로인해메모리 DB 의이중화수행속도까지느려지는현상방지
Transaction Tuning Network 대역폭을초과하는트랜잭션의튜닝 기본적으로벌크 (bulk) 성 UPDATE/DELETE 연산은자제 업무요건상발생시완화방안 LIMIT 절을활용한분할수행 양쪽서버에서이중화세션제어옵션을 NONE으로설정후동일한연산을수행 테이블전체를주기적으로삭제하는경우 DELETE 보다는 TRUNCATE 를활용 프로퍼티설정후양쪽서버에서 TRUNCATE 구문수행 UPDATE 연산의최소화 업무상불필요한 UPDATE 연산의최소화만으로도 Network 대역폭사용량감소가능 UPDATE 연산에대한 Xlog 는이중화출동감지를위해관련된컬럼의변경전의값과변경후의값으로구성되므로가장큼
Partial Fail & Partial Rollback 부분실패 원격서버에서이중화를반영할때트랜잭션의일부인특정레코드의반영실패 특정레코드반영실패로인해전체트랜잭션이실패하는상황발생 REP_TBL UPDATE rep_tbl SET c2 = X WHERE c1 >= 300 AND c1 <= 400; Xlog receiver execution #001 execution #002 300 301 NEW NEW execution #099 fail 399 OLD execution #100 400 NEW Remote Server [ 100 건의레코드를변경하는하나의구문이이중화연산중 1 건의반영실패발생하는상황 ] 반영실패요인 이중화충돌, 이중화 lock timeout 초과
Partial Fail & Partial Rollback 부분실패발생시복제방식에따른처리 구분 lazy eager 지역서버 - commit 시에러발생 원격서버 해당레코드와관련된구문과에러로그를남김해당레코드와관련된연산에대한부분롤백수행 해당레코드와관련된구문과에러로그를남김 처리결과해당레코드는지역서버만반영 관련트랜잭션전체가지역서버와원격서버모두반영되지않음 부분롤백 원격서버에서이중화를반영할때반영실패가발생한레코드만롤백을수행하는기법 특정레코드반영실패로인해전체트랜잭션이반영실패하는상황을방지하는것이목적 부분롤백이수행된레코드는원격서버와지역서버간의불일치상태로남게됨
Lock System in Replication 이중화에서의 lock 체계 변경연산에한하여단일서버를사용하는것과유사한레코드단위 lock 체계를가짐 단, Network 특성상더늦게발생한변경연산 (5) 이먼저 lock 을획득할가능성존재 동일한레코드에대한변경연산시두가지형태로 lock 이발생 이중화변경연산이먼저 lock 을획득한경우 (1~3) 마스터변경연산이먼저 lock 을획득한경우 (4~6) TX UPDATE (2) 3 5 WAIT REP_TBL 1 2 45 DATA DATA DATA 2 6 WAIT REP_TBL 1 2 45 DATA DATA DATA TX 1 4 UPDATE (2) UPDATE (45) UPDATE (45) Local Server Remote Server [ lock 획득시점에따른이중화서버간 lock 획득흐름 ]
Lock System in Replication 장시간지속시 lock 형태에따른현상 이중화변경연산이먼저 lock 을획득한경우 수신서버의 lock 대기가지속되나 DBMS 차원에서정상적인흐름 동기화측면에서는크게문제되지않음 마스터변경연산이먼저 lock 을획득한경우 receiver가 lock 획득을위해대기하므로이중화수행이중지됨 lazy - 이중화갭증가로인한데이터불일치현상심화 eager - 이중화대상테이블에대한변경연산후 commit을수행한세션은대기상태 대응방안 이중화변경연산을위한대기시간의한계를설정 대기시간초과시해당레코드에대한변경연산을포기하는정책적용
Replication Lock Timeout 이중화 lock timeout 이중화를수행할때 receiver가 lock을획득하기위한최대대기시간 lock으로인해이중화수행전체에영향을미치는것을방지함이목적 이중화수신측의프로퍼티를통해적용 REPLICATION_LOCK_TIMEOUT, 기본값은 5 sec 고려사항 시스템에따른적정한이중화 lock timeout 수치설정 지나치게클경우, 이중화수행자체가장시간중지될수있음 지나치게작을경우, 잦은이중화 lock timeout 발생으로데이터불일치가심각해질수있음 이중화대상서버의 DML 수행시점 이중화 lock timeout 이발생하여일부레코드가반영되지않을수있으므로주의
Replication Deadlock 이중화데드락 마스터변경연산과이중화변경연산이서로엉켜무한대기상태 DBMS에서감지가불가능한 Network 데드락 변경연산트랜잭션의최대시간을제한하는프로퍼티를통하여제한가능 UTRANS_TIMEOUT 최선의대안은변경연산간의경합을고려한시스템도입 TX REP_TBL REP_TBL TX UPDATE (2) 1 1 2 DATA DATA 2 1 2 DATA DATA WAIT 3 UPDATE (45) 6 WAIT 45 DATA 4 45 DATA 5 UPDATE (2) UPDATE (45) Local Server Remote Server
Replication sender Tuning 이중화 sender 의리두로그접근순서 이중화전용리두로그버퍼 리두로그버퍼 리두로그파일 INSERT UPDATE DELETE service thread Pool service sender 의성능저하시프로퍼티를통한튜닝요소 이중화전용리두로그버퍼의크기증가 REPLICATION_LOG_BUFFER_SIZE 최대 4G 까지설정가능, 기본값은 30M 리두로그파일을직접접근하지않기위해설정 미리읽을리두로그파일의개수증가 REPLICATION_PREFETCH_LOGFILE_COUNT 최대 1024 까지설정가능, 기본값은 0 로그파일을미리읽어두므로속도향상 2 차적인튜닝대상 redo logfile #n 3 2 service redo log buffer redo Local Server logfile #1 service sender service replication redo log buffer 1 Xlog
REPLICATION TROUBLESHOOTING
Replication Trouble 이중화갭증가 시스템에서수용하는이중화지연정도를초과하여데이터불일치심화가예상되는장애 이중화불가 이중화자체를수행할수없는장애 넓은의미에서이중화갭의무한증가 Network 장애외에도다양한경우의수가존재 리두로그파일시스템 full 리두로그파일관련파일시스템의 full 로인한장애
Replication Trouble Symptom by Time 이중화장애발생양상 지역서버에서이중화장애발생시시간의흐름에따른장애발생양상 이중화갭증가 or 이중화불가 지역서버와원격서버간의동기화불일치정도가심해짐 리두로그관련 파일시스템 full 이중화되지않은리두로그와관련된리두로그파일이누적됨 지역서버의리두로그파일관련파일시스템의 full TIME 서비스불가 파일시스템 full 로인하여리두로그파일생성이불가 리두로그파일생성이불가로인해트랜잭션처리불가 변경트랜잭션처리불가로인한지역서버의서비스불가
Major Causes of Replication Trouble 이중화갭증가의원인 이중화불가 이중화불가의경우가아닌데도이중화갭이증가하는일반적인원인 Network 대역폭을초과하는순간적인대량변경연산트랜잭션발생 이중화대상서버의성능저하로인한이중화반영지연 이중화불가의원인 Network 장애 일시적 / 주기적인 Network 결함 Network 단절 송신불가 수신불가
Major Causes of Replication Trouble 리두로그파일시스템 full 의원인 이중화되지않은리두로그와관련된리두로그파일의누적 이중화객체생성후이중화를한번이라도시작하면변경연산이실행될때마다 XSN 을찍어 Sender 를중지하더라도변경트랜잭션이실행되면로그파일이쌓이며 Log Directory Full 로이어질수있음 그런이유로관련리두로그파일은관리대상이됨 START,SYNC,SYNC ONLY, QUICKSTART 프로퍼티에의해설정된이중화되지않은로그파일에대한정책 REPLICATION_MAX_LOGFILE 이중화되지않은리두로그파일개수가지정된개수를초과하면삭제 기본값은삭제하지않겠다는 0( 무한대 ) 으로설정되어있음 1 이상의값으로설정시파일시스템 full 보다는이중화를포기 긴급조치가가능하지만동기화가불가능해지므로복구가필요해짐 이중화객체삭제 이중화 QUICKSTART
Replication Troubleshooting 이중화장애복구 속성상이중화갭증가와이중화불가모두동일한장애복구방안적용이가능 이중화장애복구절차수립시고려사항 장애로확정하는이중화갭수치설정 리두로그파일시스템상태를확인하는절차 파일시스템 full 발생예상시관련이중화서버와의동기화포기및복구절차 이중화객체삭제또는이중화 QUICKSTART Active-Active 환경에서의위험성 특정서버의이중화장애로인해관련된모든서버의리두로그파일시스템 full 을초래가능 기타고려사항 충분한리두로그파일시스템확보 리두로그파일시스템의크기가클수록장애대응에유연해짐
Replication Troubleshooting Flow 이중화장애복구흐름 Trouble Node Failure / emergency 원인분석 Fail-Over 이중화객체삭제또는 QUICK START 원인분석이되었는가? YES 조치및이중화구동 NO NO 관련서버의리두로그관련파일시스템의 full 이예상되는가? YES 원인분석및조치 이중화서버간의동기화를위한복구작업수행 이중화갭해소확인 Switch-Over 서비스정상화
REPLICATION MONITORING
Overview DBMS 모니터링분류 분류내부모니터링외부모니터링 trace 로그모니터링 설명메타테이블및성능뷰에대한질의를통하여 DBMS 내부요소를모니터링 OS 명령어를통하여 OS차원에서 DBMS 관련된외부요소를모니터링 DBMS에서발생하는각종로그를모니터링 모니터링방법 관련명령어를수행하는쉘스크립트작성하여주기적으로수행 유틸리티활용 ALTIMON Replication Manager 별도의응용프로그램작성
Replication Monitoring 이중화관련주요내부모니터링요소 이중화갭 sender receiver 이중화관련주요외부모니터링요소 network 리두로그파일시스템 ALTIBASE HDB구동상태 OS 구동상태 이중화관련주요 trace 로그요소 이중화 trace 로그파일
Replication Monitoring 추가적인내부모니터링요소 이중화와직접적인관련이있는요소는아니나영향을미치므로모니터링필요 벌크 (BULK) 성 UPDATE/DELETE 쿼리수행 성능뷰 v$statement, v$session 등을활용 장시간수행되는변경연산트랜잭션 성능뷰 v$transaction, v$statement, v$session 등을활용
Replication Meta Table 이중화관련메타테이블 이중화객체생성만으로도관련정보를조회가능 메타테이블 설명 SYS_REPLICATIONS_ SYS_REPL_HOSTS_ SYS_REPL_ITEMS_ SYS_REPL_OFFLINE_DIR_ SYS_REPL_OLD_COLUMNS_ SYS_REPL_OLD_INDEX_COLUMNS_ SYS_REPL_OLD_INDICES_ SYS_REPL_OLD_ITEMS_ SYS_REPL_RECOVERY_INFOS_ 이중화객체정보이중화객체별이중화대상 IP 정보이중화객체별이중화대상테이블정보오프라인이중화옵션정보 (5.3.3 higher) sender가현재사용중인이중화대상칼럼정보 sender가현재사용중인이중화대상인덱스칼럼정보 sender가현재사용중인이중화대상인덱스정보 sender가현재사용중인이중화대상테이블정보이중화복구를위한로그정보메타테이블
Replication Meta Table SYS_REPLICATIONS Column Name 설명 REPLICATION_NAME IS_STARTED XSN ITEM_COUNT CONFLICT_RESOLUTION REPL_MODE 이중화이름이중화시작여부송신자가 Xlog 전송을재개할재시작 SN 이중화대상테이블개수이중화충돌해결방법기본이중화모드 SYS_REPL_HOSTS Column Name HOST_NO REPLICATION_NAME HOST_IP PORT_NO 호스트식별자이중화이름원격서버 IP 주소원격서버이중화포트번호 설명
Replication Meta Table SYS_REPL_ITEMS_ Column Name 설명 _ REPLICATION_NAME TABLE_OID LOCAL_USER_NAME LOCAL_TABLE_NAME REMOTE_USER_NAME REMOTE_TABLE_NAME 이중화이름테이블객체식별자지역서버의대상테이블소유자이름지역서버의대상테이블이름원격서버의대상테이블소유자이름원격서버의대상테이블이름
Replication Performance View 이중화관련성능뷰 이중화를운영하여 sender 및 receiver 가활성화되었을때만조회가능 v$repgap 에서제공하는이중화갭수치는 sender 가구동중인상태에서만조회가능
Replication Performance View 이중화관련성능뷰 이중화를운영하여 sender 및 receiver 가활성화되었을때만조회가 v$repgap 에서제공하는이중화갭수치는 sender 가구동중인상태에서만조회가능 성능뷰 설명 v$repgap v$repsender v$repsender_transtbl v$repreceiver v$repreceiver_column v$repreceiver_transtbl v$repsync v$repoffline_status v$repexec v$replogbuffer 이중화갭정보 sender 정보 sender의트랜잭션테이블정보 receiver 정보 receiver의이중화대상칼럼정보 receiver의트랜잭션테이블정보테이블복제를수행중인테이블의정보오프라인이중화의수행상태정보 (5.3.3 higher) 이중화관리자정보이중화전용로그버퍼의정보
Replication Meta Table v$repgap Column Name 설명 REP_NAME REP_LAST_SN REP_SN REP_GAP READ_FILE_NO 이중화객체의이름마지막로그레코드의일련번호현재전송중인로그레코드의일련번호 REP_LAST_SN과 REP_SN의차이현재읽고있는로그파일번호 v$repsender _ Column Name REP_NAME XSN COMMIT_XSN STATUS SENDER_IP PEER_IP REPL_MODE 설명 이중화객체의이름현재송신중인로그레코드의 SN Commit 로그레코드의 SN 현재상태송신자 IP 주소원격서버의 IP 주소사용자가지정한이중화모드
Replication Meta Table v$repreceiver Column Name 설명 REP_NAME MY_IP PEER_IP APPLY_XSN 이중화객체의이름지역서버의 IP 주소원격서버의 IP 주소처리중인 XSN _
Replication Monitoring Example (1) 지역서버 isql> SELECT rep_name, rep_sn, rep_last_sn, rep_gap, read_file_no, start_flag FROM v$repgap; REP_NAME REP_SN REP_LAST_SN REP_GAP READ_FILE_NO START_FLAG ----------------------------------------------------------------------------------------- REP1 60602217 61617892 1015675 529 0 1 row selected. isql> SELECT rep_name, xsn, status, repl_mode FROM v$repsender; REP_NAME XSN STATUS REPL_MODE ----------------------------------------------------------- REP1 60602217 1 LAZY 1 row selected. isql> SELECT replication_name, xsn, is_started FROM SYSTEM_.SYS_REPLICATIONS_; REPLICATION_NAME XSN IS_STARTED -------------------------------------------- REP1 60600750 1 1 row selected. isql> exit $ $ ls $ALTIBASE_HOME/logs loganchor0 logfile529 logfile532 logfile535 logfile538 logfile541 logfile544 loganchor1 logfile530 logfile533 logfile536 logfile539 logfile542 logfile545 loganchor2 logfile531 logfile534 logfile537 logfile540 logfile543
Replication Monitoring Example (1) 원격서버 isql> SELECT rep_name, apply_xsn FROM v$repreceiver; REP_NAME APPLY_XSN ---------------------------- REP1 60600750
Replication Monitoring Example (2) 대표적인이중화장애상황에대응되는모니터링적용예제 모든모니터링요소는이중화갭모니터링만으로도간접적으로감지가가능 원인상황모니터링요소대상 대량변경연산대량 (BULK) 의 UPDATE/DELETE 수행대량변경연산트랜잭션지역서버 Network 장애 일시적 / 주기적인 Network 결함 Network 단절 Network 지역서버, 원격서버 송신불가지역서버의이중화가중지 (STOP) 된상태 Sender 지역서버 원격서버의 ALTIBASE HDB 구동중지 ALTIBASE HDB server 원격서버의 OS failure OS 수신불가 원격서버의리두로그파일관련파일시스템의 full (1) 장시간수행되는원격서버의변경트랜잭션으로인한대량의리두로그파일생성과같은 ALTIBASE HDB 내부요인 장시간수행되는변경연산트랜잭션 원격서버 원격서버의리두로그파일관련파일시스템의 full (2) 사용자가임의로다른작업을위해해당파일시스템의공간을사용중인경우와같은 ALTIBASE HDB 외부요인 리두로그파일시스템
REPLICATION PROPERTY
Replication Property 필수설정프로퍼티 REPLICATION_PORT_NO (0 : disable) 기타고려프로퍼티 UTRANS_TIMEOUT (3600 sec) REPLICATION_LOCK_TIMEOUT (5 sec) REPLICATION_MAX_LOGFILE (0 : NONE) REPLICATION_DDL_ENABLE (0 : disable) Conflict Resolution 관련프로퍼티 REPLICATION_UPDATE_REPLACE (0 : disable) REPLICATION_INSERT_REPLACE(0 : disable) REPLICATION_TIMESTAMP_RESOLUTION (0 : disable)
Replication Property 이중화운영관련프로퍼티 구분프로퍼티설명기본값 eager REPLICATION_SERVICE_WAIT_MAX_LIMIT REPLICATION_EAGER_PARALLEL_FACTOR Durability REPLICATION_SYNC_LOG 복제방식이 eager 일때만적용되는프로퍼티로이중화갭이지정한수치를초과하는동안은 lazy 로동작한다. EAGER 모드로이중화수행시여러개의송신쓰레드가병렬로작업을하게된다. 그러나, 이프로퍼티를사용하여송신쓰레드개수를늘릴경우, 송신쓰레드가보내는트랜잭션의순서가보장되지않는다는점을주의해야한다. sender 는리두로그의 disk 저장여부와관계없이리두로그버퍼의리두로그를실시간으로이중화므로시스템 failure 시데이터불일치가발생할수있다. 이값을 1 로, REPLICATION_LOG_BUFFER_SIZE 를 0 으로설정하면 sender 는 disk 에저장이완료된리두로그에대해서만이중화수행할수있다. 하지만, 이로인해 sender 의성능이감소하게됨을유의해야한다. 50000 이중화갭 CPU 개수와 512 중작은값 0 (disable)
Replication Property sender 관련프로퍼티 구분설명기본값 REPLICATION_SENDER_AUTO_START REPLICATION_SENDER_SLEEP_TIMEOUT 이전에사용자가명시적으로이중화를종료하지않은경우는 ALTIBASE HDB 구동시이중화를자동으로 START 한다. 0 (manual) 으로설정하면자동으로 START 하지않는다. 이중화대상서버와의접속이상시 sender 의접속시도주기로지정된시간만큼 sleep 하면서반복적으로접속을시도한다. 1 (auto) 60 초 REPLICATION_SENDER_SLEEP_TIME sender 가더이상읽을로그가없을때, sleep 하는시간 10 초 REPLICATION_KEEP_ALIVE_CNT REPLICATION_SENDER_SLEEP_TIME 의해 sleep 하는횟수가이값에도달하면이상없다는의미의 KEEP_ALIVE 를전송한다. 60 회 REPLICATION_LOG_BUFFER_SIZE sender 가읽을이중화전용리두로그버퍼의크기 30 MB REPLICATION_PREFETCH_LOGFILE_COUNT REPLICATION_POOL_ELEMENT_COUNT REPLICATION_POOL_ELEMENT_SIZE sender 가리두로그를읽는시간을줄이기위해미리읽을리두로그파일의개수 sender 가리두로그를분석하여컬럼값을복사할때사용하는메모리의개수 sender 가리두로그를분석하여컬럼값을복사할때사용하는메모리의크기 0 개 10 개 256 B
Replication Property 기타프로퍼티 대구분구분설명기본값 receiver REPLICATION_ACK_XLOG_COUNT receiver 가반영한 Xlog 에대한응답을 sender 에게보내는주기 100 Xlog sender, receiver REPLICATION_RECEIVE_TIMEOUT sender, receiver 가응답을기다리는최대시간으로이시간을초과하면수행하던이중화관련연산을롤백후재연결을시도한다. REPLICATION_LOCK_TIMEOUT 보다커야의미가있다. 300 초 REPLICATION_HBT_DETECT_TIME HBT 의연결검사주기 3 초 HBT REPLICATION_HBT_DETECT_HIGHWATER_MARK HBT 연결검사시응답을하지않는경우몇회이후에 Network 장애로판단할것인지를지정한다. 10 회 테이블복제 REPLICATION_SYNC_LOCK_TIMEOUT REPLICATION_SYNC_TUPLE_COUNT 테이블복제시지역서버의테이블에 lock 을획득하기위한최대시간으로송신측에서설정한다. 병렬로테이블복제시 sender 가한번에읽어서처리할수있는레코드의최대개수 30 초 30000 rows
REPLICATION MANAGER
Replication Manager Replication Manager ALTIBASE HDB 이중화관리를위한 GUI 툴로다수의서버에기동되고있는 Replication 객체를편리하게모니터링이가능 주요특징 ALTIBASE HDB 4.3.9 이상에서사용가능 이중화객체상태와관계확인 마우스클릭한번으로이중화객체관리 이중화모니터링및상태분석이직관적으로가능
Replication Manager 시스템요구사항 하드웨어요구사항 CPU : 800Mhz 펜티엄 III 이상 메인메모리 : 512MB 이상 디스크 : 50MB 이상의여유공간 (JRE를위한별도저장공간필요 ) 화면해상도 : 1024 x 768 화소이상 패키지종류 패키지이름 컴퓨터운영체제 하드웨어 자바실행환경 윈도우시스템 ReplicationManagerwin32. win32.x86.zip (JRE 포함 ) Windows XP, Vista, 7 x86 32-bit Java 6 or higher Win32 ReplicationManagerlinux.gtk.x86.zip (JRE 포함 ) Linux x86 32-bit Java 6 or higher GTK
Replication Manager 설치및제거 다운로드 알티베이스고객지원서비스포털 (http://support.altibase.com) 에서다운로드 Zip 파일과같은압축된형식으로제공 설치 Replication Manager 설치파일의압축을해제하고디렉토리를원하는위치로이동 ALTIBASE HDB 버전에알맞은 JDBC 드라이버필요 삭제 Replication Manager 설치디렉토리삭제 Replication Manager 시작과종료 시작 프로그램이설치된폴더에서, 윈도우의경우 "Replication Manager.exe" 실행파일을더블클릭하고, 리눅스의경우 "Replication Manager" 응용프로그램을실행 종료 상위메뉴에서 "File" 을선택한다음 "Exit" 를선택하거나, 오른쪽상단에있는 X 를클릭
Replication Manager 데이터베이스연결추가 도구모음에서 "New DB Connection" 아이콘을클릭하거나, "DBConnections" 창에서 "DB Connections" 아이콘에오른쪽클릭한다음표시되는콘텍스트메뉴에서 "New DB Connection" 항목을클릭
Replication Manager 데이터베이스연결하기 새로추가된데이터베이스에오른쪽클릭한다음 "Connect" 항목을선택. 시스템환경에따라시간이좀걸릴수도있음.
Replication Manager 데이터베이스연결정보편집 데이터베이스연결정보를편집하고자할때데이터베이스에오른쪽클릭하여콘텍스트메뉴를연후 Edit 항목을선택한다.
Replication Manager 사용자인터페이스 Replication Manager GUI 는 DB Connections, Replication Pairs, Properties, MAP 4 개의창으로구성 DB Connections Replication Pairs Map Properties
Replication Manager DB Connections 프로그램의시작위치이며, 데이터베이스와이중화객체간의관계를트리구조로보여주는데이터베이스중심의뷰이다
Replication Manager Replication Pairs 이중화개체를한쌍으로표현하여보여주는논리적인뷰이다. 두개씩짝지어같은이름을갖고서로상호작용하는이중화객체그룹을 " 이중화쌍 " 이라고부른다.
Replication Manager Properties 현재선택된객체의속성을보여준다. ( 예. 데이터베이스연결또는이중화객체 ) Replication Object 정보 SENDER 정보 RECEIVER 정보
Replication Manager Map 데이터베이스들과이중화객체들, 그리고서로간의관계에대한물리적구성과상태를그래프로형상화한다.
Replication Manager Replication Object 생성 DB Connections 데이터베이스에오른쪽클릭한다음 Create Replication Object 메뉴를클릭한후정보를입력
Replication Manager Replication Object 생성확인 각메뉴창에서새로생성한 Replication Object 를확인
Replication Manager Replication Object 이중화시작 Replication Object 명에오른쪽클릭하여이중화시작
Replication Manager Show DDL Replication Object 와관련 Object (Table, Index 등 ) 의스키마생성정보를보여줌
Replication Manager Compare DDL Replication Object 와상대서버의 Object 간의스키마생성정보를비교
Replication Manager Monitor Replication Object 에대한모니터링정보