MaxDB
도화재 석문호흡 강빈(江彬)
v0.0.1, 2004년 4월 9일
1.1. MaxDB 소개 ¶database.sarang.net 에서 인용
혹시 Adabas D 라는 DBMS 에 대해서 알고 있는 분이 계신지 잘 모르겠다. 이 것은 상당히 초창기에 Linux 용 DBMS 를 내어 놓은 회사로서 DBMS 매니아와 오래된 리눅스 유저들에게는 어느 정도 기억되고 있는 DBMS 입니다. 이것을 R/3 ERP 로 유명한 SAP-AG 사에서 사들여서 새로 개발하여 GPL 로 발표한 것이 SAP DB 입니다. 그러니 SAP DB 로 발표된지 불과 3년 정도만에 이만한 완성도를 보이고 있는 것입니다. 일방적으로 SAP 사에서 개발 한 것이라면 이정도의 개발 속도를 보일수가 없는 것입니다. 여기서 제공하는 Tool 들은 상당한 정도의 완성도를 보이며, 다른 여타 상용 DBMS 에 뒤지지 않는 것입니다. (이렇게 말하니 좀 이상하군요. 원래 상용 DBMS 인데 이것이 GPL 로 발표된 것 뿐인데 말이죠.) 현재 SAP DB 는 주로 유럽쪽 매니아들 사이에서 많이 사용되고 있으며, 일반적인 리눅스 쪽 open source 사용자들에게는 잘 사용되고 있지 않은 실정입니다. 개인적으로 생각할때 이정도의 완성도를 지니고 있으면서, 라이센스 피를 물지 않아도 된다는 장점을 생각하면 충분히 사용할만한 가치가 있는 DBMS 라고 생각할 수 있으며, 앞으로 많은 발전의 여지가 있다고 판단됩니다. www.mysql.com 에서 인용
MaxDB by MySQL is a re-branded and enhanced version of SAP DB, SAP AG's open source database. MaxDB is a heavy-duty, SAP-certified open source database that offers high availability, scalability and a comprehensive feature set. MaxDB complements the MySQL database server, targetted for large mySAP ERP environments and other applications that require maximum enterprise-level database functionality. Today, about 5,000 customer installations are using MaxDB technology globally, including Intel, DaimlerChrysler, Braun, Bayer, Colgate, Yamaha, Deutsche Post (the German Post Office) and Toyota South Africa. MaxDB is available without a license fee under the GNU General Public License (GPL). Commercial non GPL licenses are available for users who prefer not to be restricted by the terms of the GPL. Main Benefits: Round-the-clock operation Easy administration No reorganization required Unlimited number of users Unlimited database size Supports all SAP solutions 1.2. History ¶2000년 8월, SAP AG, SAP DB를 GPL로 릴리즈, SAP DB Release 7.2 2003년 5월, SAP AG와 MySQL AB cross licensing partnership. 2003년 8월, 'MaxDB™'로 브랜드 바꿈. 2003년 12월, MySQL에 의해 MaxDB™ 릴리즈. 왜 SAP는 SAP DB를 오픈소스로 릴리즈 했는가?
변해가는 시대의 흐름속에 데이터베이스가 technology infrastructure에 기본적인 기술이 됨에 따라 데이터베이스는 독점적이거나, 복잡할 필요가 없게 되었다고 예상하였다. 따라서, SAP는 데이터베이스 기술이 혁신적으로 인정받은 오픈소스 개발방식으로 이루어져야 한다고 판단, SAP DB를 오픈소스화 하였다. 2.1. 다운로드 ¶참고로 설치 환경은 Debian/GNU Linux Woody 3.0r2에서 진행하였다.
[Standard installation, Linux (x86) 7.5.00.08] maxdb-all-linux-32bit-i386-7_5_0_8.tgz 이렇게 하나의 파일만 받으면 된다, MS-Windows 사용자는 DBM GUI, SQL Studio를 받아서 설치하면 편리하다.
2.2. Standard 설치 ¶root로 로그인하여, 아무곳에나 maxdb-all-linux-32bit-i386-7_5_0_8.tgz 화일을 풀어 놓는다.
$ tar xvzf maxdb-all-linux-32bit-i386-7_5_0_8.tgz $ cd maxdb-all-linux-32bit-i386-7_5_0_8 $ ./SDBINST Installation of MaxDB Software ******************************* starting installation Su, Apr 04, 2004 at 09:14:58 operating system: Linux I386 2.4.24 2-686 GLIBC 2.2.5 callers working directory: /root/maxdb-all-linux-32bit-i386-7_5_0_8 installer directory: /root/maxdb-all-linux-32bit-i386-7_5_0_8 archive directory: /root/maxdb-all-linux-32bit-i386-7_5_0_8 existing profiles: 0: Server 1: Runtime For SAP AS 2: DB Analyzer 3: C Precompiler 4: Webtools 5: ODBC 6: JDBC 7: Script Interface 8: Loader 9: XML Indexing Engine 10: all 11: none please enter profile id: 10 번을 선택하자.
2.2.1. preparing phase of package Base ¶이제 BASE 패키지를 설치하는 단계다.
starting preparing phase of package Base 7.5.00.08 32 bit --------------------------------------------------------- no updatable installation of package "Base" found MaxDB (SAP DB)를 구동을 위한 그룹명을 설정한다. - 그냥 엔터
please enter group name for database programs [sdba]: unknown group - create "sdba" on local machine? (y/n) y MaxDB (SAP DB)를 구동을 위한 유저명을 설정한다. - 그냥 엔터
please enter owner name for database programs [sdb]: unknown user - create "sdb" on local machine? (y/n) y 자 이제 설치할 디렉터리를 설정하자.
please enter independent data path [/var/opt/sdb/data]: /var/lib/sdb/data directory "/var/lib/sdb/data" does not exist, create? (y/n) y 독립적인 데이터 공간을 지정한다. 여기서는 /var/lib/sdb/data 로 하였다.
please enter independent program path [/opt/sdb/programs]: /var/lib/sdb/programs directory "/var/lib/sdb/program" does not exist, create? (y/n) y 독립적인 프로그램들의 위치를 지정한다. 여기서는 /var/lib/sdb/programs 로 하였다.
2.2.2. preparing phase of package Server Utilities ¶입력하고 나면 다음처럼 BASE 유틸리티가 설치된다.
starting preparing phase of package Server Utilities 7.5.00.08 32 bit --------------------------------------------------------------------- checking interferences to other packages... ok collecting data finished: independent program path: /var/lib/sdb/program owner: sdb group: sdba start extraction test run of "/root/maxdb-all-linux-32bit-i386-7_5_0_8/SDBUTL.TGZ" package Server Utilities successfully checked 2.2.3. preparing phase of package Database Kernel ¶이제는 데이터베이스의 커널을 설치하는 단계다.
starting preparing phase of package Database Kernel 7.5.00.08 32 bit -------------------------------------------------------------------- no updatable installation of package "Database Kernel" found please enter dependent path [/opt/sdb/7500]: /var/lib/sdb/kernel_7500 directory "/var/lib/sdb/kernel_7500" does not exist, create? (y/n) y 여기서는 /var/lib/sdb/kernel_7500 으로 지정하였다. y를 누르면 설치가 진행이 된다.
2.2.4. 설치 종료 ¶installation of MaxDB Software finished successfully Su, Apr 04, 2004 at 10:12:18 이제 우리는 각각 3가지의 PATH로 MaxDB 위치를 지정하였다.
<independent_program_path> : /var/lib/sdb/programs <independent_data_path> : /var/lib/sdb/data <dependent_path> : /var/lib/sdb/kernel_7500 이 위치들을 잘 염두해 두자.
2.3.1. MaxDB 기본 설정 File ¶위의 설치가 모두 무사히 끝나면 다음과 같은 설정화일들이 생긴다. 나중에 MaxDB를 제거할 때, 이 화일들을 꼭 같이 지워야 한다. (그래야 재설치 할 수 있음.)
$ more /etc/opt/sdb [Globals] IndepData=/var/lib/sdb/data IndepPrograms=/var/lib/sdb/programs SdbOwner=sdb SdbGroup=sdba $ ls -laR /usr/spool/sql /usr/spool/sql: 합계 12 drwxrwxr-x 3 sdb sdba 4096 4월 4 10:11 . drwxrwxr-x 3 sdb sdba 4096 4월 4 10:11 .. lrwxrwxrwx 1 sdb sdba 25 4월 4 10:11 dbspeed -> /var/lib/sdb/data/dbspeed lrwxrwxrwx 1 sdb sdba 22 4월 4 10:11 diag -> /var/lib/sdb/data/diag lrwxrwxrwx 1 sdb sdba 22 4월 4 10:11 fifo -> /var/lib/sdb/data/fifo drwxrwxrwx 2 sdb sdba 4096 4월 4 10:12 ini lrwxrwxrwx 1 sdb sdba 21 4월 4 10:11 ipc -> /var/lib/sdb/data/ipc lrwxrwxrwx 1 sdb sdba 21 4월 4 10:11 pid -> /var/lib/sdb/data/pid lrwxrwxrwx 1 sdb sdba 22 4월 4 10:11 pipe -> /var/lib/sdb/data/pipe lrwxrwxrwx 1 sdb sdba 22 4월 4 10:11 ppid -> /var/lib/sdb/data/ppid /usr/spool/sql/ini: 합계 24 drwxrwxrwx 2 sdb sdba 4096 4월 4 10:12 . drwxrwxr-x 3 sdb sdba 4096 4월 4 10:11 .. -rw-rw-rw- 1 sdb sdba 127 4월 4 10:12 SAP_DBTech.ini -r--r--r-- 1 sdb sdba 4285 1월 10 04:25 WebAgent75.ini -r--r--r-- 1 sdb sdba 369 1월 10 04:25 sapdbxie.ini 2.3.3. PATH 설정 ¶/etc/profile 나, .profile에 <independent_program_path>/bin을 PATH를 추가하자. 그리고, 관련 lib를 위해 LD_LIBRARY_PATH를 지정하자.
PATH=$PATH:/var/lib/sdb/programs/bin export PATH export LD_LIBRARY_PATH=/var/lib/sdb/programs/web/lib:/var/lib/sdb/programs/lib:$LD_LIBRARY_PATH 3.1. MaxDB 데이터베이스 만들기 ¶다음은 /var/lib/sdb/kernel_7500/misc/create_demo_db.sh 를 수정한 것이다. create_maxdb_db.sh 라고 저장하여 실행해 본다.
#!/bin/sh # # create_maxdb_db.sh # # 사용자가 원하는 셋팅을 물어보면서 데이터베이스를 생성한다. # /var/lib/sdb/kernel_7500/misc/create_demo_db.sh 를 참고하여 만들었음. # # # Helper function: converts an amount to amount of pages. # Usage: BLA=`topages $BLA BLA` # $BLA contains an integer followed by # g - for giga # m - for mega # k - for kilo or # p - for pages (default when no suffix is given) # Emits an errormessage to stderr when a parse error occurs. Also returns # 1 on error (must be checked by caller) function topages() { _val=$1 _var=$2 _scr=`echo ${_val} | sed \ -e 's/^\([0-9]*\)g$/\1 * 128 * 1024/' \ -e 's/^\([0-9]*\)m$/\1 * 128/' \ -e 's/^\([0-9]*\)k$/\1 \/ 8/' \ -e 's/^\([0-9]*\)p$/\1/' \ -e 's/^\([0-9]*\)$/\1/' \ ` _o=`cat <<EOF |bc 2>&1 $_scr EOF` _test=`echo $_o | grep error` if [ "$_test" != "" ]; then echo "ERROR: Could not convert amount in $_var \"$_val\" to pages." >&2 echo "ERROR: Must be an integer with a suffix of g, m, k or p." >&2 return 1 else echo $_o return 0 fi } echo "" echo "" echo "[[ (KR) MaxDB 7.5.0.x 의 DB를 생성하기 위한 . " echo "[[ (KR) 스크립트 입니다. .................... " echo "[[ .......................................... " echo "[[ MaxDB 7.5.0.x Create Database Script ..... " echo "[[ .......................................... " echo "" # 현재 계정의 ID를 반환 id=`id | sed s/\(.*// | sed s/uid=//` # root가 아니라면, 실행 권한 검사 if [ $id -gt 0 ]; then admgrp=`cat /etc/opt/sdb | grep SdbGroup | sed s/^SdbGroup=// 2> /dev/null` if [ "$admgrp" = "" ]; then echo "cannot get SAP DB admin group" 1>&2 echo "(KR) MaxDB(SAP DB)의 어디민 그룹을 찾을 수 없습니다." 1>&2 exit 1 fi user=`id | sed s/uid=[0-9]*\(// | sed s/\).*$//` pgrp=`id | sed s/.*gid=[0-9]*\(// | sed s/\).*$//` is_member=0 for _group in `groups`; do if [ "$_group" = "$admgrp" ]; then is_member=1 fi done if [ "$is_member" = "0" ]; then echo "user \"$user\" cannot create a database" 1>&2 echo "user isn\'t member of SAP DB admin group \"$admgrp\"" 1>&2 echo "(KR) 당신 : \"$user\" 는 데이터 베이스를 생성할 수 없습니다." 1>&2 echo "(KR) 당신은 MaxDB(SAP DB)의 어드민 그룹 \"$admgrp\" 에 소속되지 않았습니다." 1>&2 exit 1 fi fi INDEP_PROGRAMS_PATH=`cat /etc/opt/sdb | grep IndepPrograms | sed s/^IndepPrograms=// 2> /dev/null` INDEP_DATA_PATH=`cat /etc/opt/sdb | grep IndepData | sed s/^IndepData=// 2> /dev/null` PATH=$INDEP_PROGRAMS_PATH/bin:$PATH export PATH # MaxDB 커널 위치 입력 받음 # Get Kernel directory echo "[[ (KR) MaxDB의 커널이 설치된 디렉터리는 어디입니까? " echo "" echo -n "-==> Where The MaxDB Kernel Directory is [/var/lib/sdb/kernel_7500] : " read INSTROOT if [ "$INSTROOT" = "" ]; then INSTROOT=/var/lib/sdb/kernel_7500 fi echo "......." echo "(KR) 커널 디렉터리를 다음과 같이 설정합니다." echo "Set Kernel Directory : $INSTROOT" echo "" # get name of the database # 데이터 베이스 이름을 입력 받는다. (8자 이하) while : do echo "[[ (KR) 데이터베이스 이름을 입력하여 주십시오. " echo "[[ (KR) 영자&숫자로 8자까지 가능하며, 대소문자는 구분하지 않습니다." echo "" echo -n "-==> Input Database Name (<= 8 character) : " read DATABASE_NAME if [ ${#DATABASE_NAME} -gt 9 ]; then echo "(KR) 오류! 데이터베이스 이름은 8자까지만 가능합니다." echo "ERROR! The DATABASE Name must be less than or equal to 8 character !!" echo "" continue elif [ "$DATABASE_NAME" = "" ]; then echo "(KR) 오류! 데이터베이스 이름을 입력하며 주십시오." echo "ERROR! The DATABASE Name need !" echo "" continue else break fi done echo "......." echo "(KR) 데이터베이스 이름을 $DATABASE_NAME 으로 설정합니다." echo "Set DATABASE NAME : $DATABASE_NAME" echo "" # get Database Manager operator (DBM operator) # 데이터베이스 메니저 오퍼레이터의 ID를 입력 받는다. (18자 이하, 유니코드는 8자 이하) while : do echo "[[ (KR) 데이터베이스 메니저 오퍼레이터(DBM operator) ID를 입력하여 주십시오." echo "[[ (KR) DBM operator는 데이터베이스를 관리하는 사람을 뜻합니다." echo "[[ (KR) DBM operator는 데이터베이스 유저가 아닙니다. query tool이나 Loader에" echo "[[ (KR) 접근하지 못하며, 데이터베이스의 백업/복구/모니터링 등만 할수 있습니다." echo "" echo -n "-==> Input Database Manager operator (DBM operator) ID (<= 18 char) : " read DBM if [ ${#DBM} -gt 18 ]; then echo "(KR) 오류! DBM operator ID는 18자 까지만 가능합니다." echo "ERROR! The DBM ID must be less than or equal to 18 character !!" echo "" continue elif [ "$DBM" = "" ]; then echo "(KR) 오류! DBM operator의 ID를 입력하여 주십시오." echo "ERROR! The DBM operator ID need !" echo "" continue else break fi done echo "......." echo "(KR) DBM operator ID를 $DBM 으로 셋팅합니다." echo "Set DBM operator ID : $DBM" echo "" # get Database Manager operator (DBM operator) PASSWORD # DBM operator 암호입력 stty -echo while : do echo "[[ (KR) DBM operator의 암호를 입력하여 주십시오." echo "" echo -n "-==> Input Database Manager operator (DBM operator) PASSWORD : " read DBMPW echo "" echo "(KR) DBM operator의 암호를 다시 확인 입력하여 주십시오." echo -n "Input Database Manager operator (DBM operator) PASSWORD again: " read DBMPW_RE echo "" if [ "$DBMPW" != "$DBMPW_RE" ] ; then echo "(KR) 오류! 확인 입력한 암호가 일치하지 않습니다.!" echo "ERROR! Not Match each PASSWORD ! " echo "" continue else break fi done stty echo echo "" # get The database system administrator (SYSDBA user) # The database system administrator (SYSDBA user) ID를 입력 받는다. (18자 이하, 유니코드는 8자 이하) while : do echo "[[ (KR) The database system administrator (SYSDBA user) ID를 입력" echo "[[ (KR) SYSDBA user는 데이터베이스에 query tools에 접근할 수 있는" echo "[[ (KR) 사용자를 말합니다. 최초의 사용자이며, 다른 사용자를 관리," echo "[[ (KR) 테이블 관리, 권한 부여를 할수 있습니다." echo "[[ (KR) SYSDBA user 와 DBM operator는 같은 ID를 사용할 수 없습니다." echo "" echo -n "-==> Input The SYSDBA user ID (<= 18 char) : " read DBA if [ ${#DBA} -gt 18 ]; then echo "(KR) 오류! The SYSDBA user ID는 18자 까지만 가능합니다." echo "ERROR! The SYSDBA user ID must be less than or equal to 18 character !!" echo "" continue elif [ "$DBA" = "" ]; then echo "(KR) 오류! The SYSDBA user 의 ID를 입력하여 주십시오." echo "ERROR! The SYSDBA user ID need !" echo "" continue elif [ "$DBM" = "$DBA" ]; then echo "" echo "(KR) 오류! " echo "(KR) The SYSDBA user ID : $DBA 와" echo "(KR) The DBM operator ID : $DBM 의" echo "(KR) ID는 달라야 합니다." echo "" echo "ERROR! The SYSDBA user ID and DBM operator ID MUST NOT SAME" echo "" continue else break fi done echo "......." echo "(KR) SYSDBA user ID 를 $DBA 로 셋팅합니다." echo "Set The SYSDBA user ID : $DBA" echo "" # get The database system administrator (SYSDBA user) PASSWORD # The database system administrator (SYSDBA user) 암호입력 stty -echo while : do echo "[[ (KR) The SYSDBA user 의 암호를 입력하여 주십시오." echo "" echo -n "-==> Input The SYSDBA user PASSWORD : " read DBAPW echo "" echo "(KR) The SYSDBA user 의 암호를 다시 확인 입력하여 주십시오." echo -n "Input The SYSDBA user PASSWORD again: " read DBAPW_RE echo "" if [ "$DBAPW" != "$DBAPW_RE" ] ; then echo "(KR) 오류! 확인 입력한 암호가 일치하지 않습니다.!" echo "ERROR! Not Match each PASSWORD ! " echo "" continue else break fi done stty echo echo "" # get DATASIZE while : do echo "[[ (KR) 데이터베이스 볼륨의 크기를 지정하여 주십시오." echo "[[ (KR) 최소한 16 MByte는 되어야 하며, 추후 다시 셋팅할 수 있습니다." echo "[[ (KR) 기본단위는 PAGE. 예) 16 MByte => 16m , 20 GByte => 20g " echo "" echo -n "-==> Input DATASIZE [ m)ega, g)iga, p)ages . default:Pages > 16m ] : " read DATASIZE if [ "$DATASIZE" = "" ]; then echo "(KR) 오류! 데이터베이스 볼륨 크기를 입력하여 주십시오." echo "ERROR! The DATASIZE need !" echo "" continue else break fi done DATAPAGES=`topages $DATASIZE DATAPAGES` echo "Set DATASIZE = $DATASIZE, DATAPAGES = $DATAPAGES pages" echo "" # get LOGSIZE while : do echo "[[ (KR) 데이터베이스 로그의 크기를 지정하여 주십시오." echo "[[ (KR) 기본 단위는 PAGE " echo "" echo -n "-==> Input LOGSIZE [ m)ega, g)iga, p)ages . default:Pages ] : " read LOGSIZE if [ "$LOGSIZE" = "" ]; then echo "(KR) 오류! 데이터베이스 LOG 크기를 입력하여 주십시오." echo "ERROR! The LOGSIZE need !" echo "" continue else break fi done LOGPAGES=`topages $LOGSIZE LOGPAGES` echo "Set LOGSIZE = $LOGSIZE, LOGPAGES = $LOGPAGES pages" echo "" # get catalog cache memory size for all user tasks echo "[[ (KR) DB의 카탈로그 캐쉬 메모리의 사이즈를 지정합니다. " echo "" echo -n "-==> catalog cache memory size for all user tasks [ k)ilo, m)ega, g)iga, p)ages . default: 300 Pages ] : " read CATCACHESUPPLY if [ "$CATCACHESUPPLY" = "" ]; then CATCACHESUPPLY=300p fi CATCACHESUPPLY=`topages $CATCACHESUPPLY CATCACHESUPPLY` echo "Set CAT_CACHE_SUPPLY = $CATCACHESUPPLY pages" echo "" # Size of the I/O buffer cache in pages echo "[[ (KR) I/O 버퍼 캐쉬 크기를 지정합니다." echo "" echo -n "-==> Size of the I/O buffer cache [ k)ilo, m)ega, g)iga, p)ages . default: 3000 Pages ] : " read CACHESIZE if [ "$CACHESIZE" = "" ]; then CACHESIZE=3000p fi CACHESIZE=`topages $CACHESIZE CACHESIZE` echo "Set CACHE_SIZE = $CACHESIZE pages" echo "" # maximum number of users allowed to connect echo "[[ (KR) 데이터베이스에 접속할 수 있는 최대 사용자수를 지정합니다." echo "" echo -n "-==> maximum number of users allowed to connect [ default : 5 ] : " read MAXUSERTASKS if [ "$MAXUSERTASKS" = "" ]; then MAXUSERTASKS=5 fi echo "Set MAXUSERTASKS = $MAXUSERTASKS user(s)" echo "" # run the instances as a unicode instance (YES or NO) echo "[[ (KR) 비 영어권에서 사용시 반드시 UNICODE로 지정해야 합니다." echo "[[ (KR) MaxDB 내부적으로는 UTF-16/UCS-2 format 을 사용합니다." echo "" echo -n "-==> run the instances as a unicode instance [ YES or NO , default : YES ] : " read UNICODE if [ "$UNICODE" = "" ]; then UNICODE=YES fi if [ "$UNICODE" = "YES" ]; then DEFAULTCODE=UNICODE else DEFAULTCODE=ASCII fi echo "Set UNICODE = $UNICODE, DEFAULT_CODE = $DEFAULTCODE " echo "" # start remote communication server echo "" echo "..................." echo "Start X_SERVER ...." echo "..................." echo "" x_server start >/dev/null 2>&1 # create new demo database echo "create database $DATABASE_NAME..." _o=`dbmcli -s -R $INSTROOT db_create $DATABASE_NAME $DBM,$DBMPW 2>&1` _test=`echo $_o | grep OK` if [ "$_test" = "" ]; then echo "create $DATABASE_NAME failed: $_o" 1>&2 exit 1 fi # setup database parameters echo "set parameters for $DATABASE_NAME..." _o=`cat <<EOF | dbmcli -d $DATABASE_NAME -u $DBM,$DBMPW 2>&1 param_rmfile param_startsession param_init OLTP param_put CAT_CACHE_SUPPLY $CATCACHESUPPLY param_put CACHE_SIZE $CACHESIZE param_put MAXUSERTASKS $MAXUSERTASKS param_put _UNICODE $UNICODE param_put DEFAULT_CODE $DEFAULTCODE param_put MAXDATAVOLUMES 5 param_checkall param_commitsession param_addvolume 1 DATA DISK_DATA_0001 F $DATAPAGES param_addvolume 1 LOG DISK_LOG_001 F $LOGPAGES quit EOF` _test=`echo $_o | grep ERR` if [ "$_test" != "" ]; then echo "set parameters failed: $_o" 1>&2 exit 1 fi # startup database echo "start $DATABASE_NAME..." _o=`dbmcli -d $DATABASE_NAME -u $DBM,$DBMPW db_start 2>&1` _test=`echo $_o | grep OK` if [ "$_test" = "" ]; then echo "start $DATABASE_NAME failed: $_o" 1>&2 exit 1 fi # initialize database files echo "initialize $DATABASE_NAME..." _o=`cat <<EOF | dbmcli -d $DATABASE_NAME -u $DBM,$DBMPW 2>&1 util_connect $DBM,$DBMPW db_activate $DBA,$DBAPW quit EOF` _test=`echo $_o | grep ERR` if [ "$_test" != "" ]; then echo "initializing $DATABASE_NAME failed: $_o" 1>&2 exit 1 fi # load database system tables echo "load system tables..." _o=`dbmcli -d $DATABASE_NAME -u $DBM,$DBMPW load_systab -u $DBA,$DBAPW -ud domain 2>&1` _test=`echo $_o | grep OK` if [ "$_test" = "" ]; then echo "load system tables failed: $_o" 1>&2 exit 1 fi echo "set backup parameters..." _o=`cat <<EOF | dbmcli -d $DATABASE_NAME -u $DBM,$DBMPW 2>&1 medium_put data datasave FILE DATA 0 8 YES medium_put auto autosave FILE AUTO util_connect $DBM,$DBMPW backup_save data autosave_on quit EOF` _test=`echo $_o | grep ERR` if [ "$_test" != "" ]; then echo "set backup parameters failed: $_o" 1>&2 exit 1 fi echo "" echo "(KR) $DATABASE_NAME 가 성공적으로 생성되었습니다." echo "$DATABASE_NAME Creation COMPLETED ." echo "" exit 0 3.3. Database Manager GUI in WEB ¶웹 브라우져에서 DB를 관리하자. Database Manager GUI 를 MaxDB 자체 웹서버를 이용해 띄우자.
$ cd /var/lib/sdb/programs/web/pgm $ ./wahttp & 3.3.1. WEB DBM ¶웹브라우져에 다음과 같이 넣는다.
http://localhost:9999/webdbm 화면이 나타나면, 데이터베이스를 선택한 후에 DBM operator의 ID와 PW를 넣고 로그인 한다. 그러면, 화면에 데이터베이스의 상태들이 나타난다.
3.3.2. WEB SQL Studio ¶웹브라우져에 다음과 같이 넣는다.
http://localhost:9999/websql 화면이 나타나면, 데이터베이스를 선택한 후에 SYSDBA user ID와 PW를 넣고 로그인 한다. 화면에 쿼리 창이 나타난다.
|
You will be aided greatly by a person whom you thought to be unimportant. |