· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
MaxDB

도화재 석문호흡 강빈(江彬)

v0.0.1, 2004년 4월 9일

옛 SAP DB, 현 MaxDB by MySQL AB의 설치와 사용법에 대해서 간략하게 소개한다.

1. MaxDB가 무엇이지?


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. MaxDB 설치


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. 환경 설정


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.2. /etc/services 설정

/etc/services 에 다음을 추가한다.

sql6		7210/tcp
sql30		7200/tcp
sapdbni72 	7269/tcp


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. MaxDB 구동


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.2. MaxDB 구동


$ x_server start

or

$ x_server


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를 넣고 로그인 한다. 화면에 쿼리 창이 나타난다.

3.3.3. Administration Tool


웹브라우져에 다음과 같이 넣는다.

http://192.168.0.110:9999/waadmin.wa
Username: admin
Password: init


Global Settings -> General Settings. 에서 암호를 바꾼다.

4. MaxDB 실제 사용


나중에... -_-a;



sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2004-12-04 20:27:54
Processing time 0.0136 sec