우선 설치가 편한 RPM으로 설치를 해보도록 하자
http://www.sapdb.org/7.4/sap_db_downloads.htm 에 접속을 하면 7.4beta용 RPM을 다운 받을 수 있다
우선 있는데로 다 받아보자. (각 용도는 나중에 알기로하고...)
ROOT계정에서 sapdb 그룹과 유저를 생성시켜준다
groupadd sapdb
useradd sapdb
이제 차례차례 RPM만 설치하면 된다
우선 Version과 관계없이 동작하는 sapdb-ind-7.4.3.7beta-1.i386.rpm 을 설치한다
rpm -ivh sapdb-ind-7.4.3.7beta-1.i386.rpm
위 RPM은 각 버젼과 상관없이 동작되어질 프로그램 및 terminfo 관련 파일등등을 설치해준다 (맞는지는 모르겠습니다. 그냥 추측만)
그 후 실제 서버 프로그램을 설치한다
rpm -ivh sapdb-srv74-7.4.3.7beta-1.i386.rpm
위 RPM은 각 버젼별 의존적인(?) 프로그램을 설치해준다. (실제 프로그램 설치)
일단 위의 설치가 끝나면 우선적으로는 서버는 동작시킬수 있다
우선 서버 구동에 필요한 것은
sapdb-ind-7.4.3.7beta-1.i386.rpm
sapdb-srv74-7.4.3.7beta-1.i386.rpm
등이다.
RPM 설치도중 이미 서버는 구동이 되어 있다. (이 서버프로그램은 말 그대로 서버이지 이것만으로는 DB에 접근할수는 없다)
서버 구동 및 정지는
/opt/sapdb/indep_prog/pgm/vserver
파일이 담당한다
/opt/sapdb/indep_prog/pgm/vserver stop
/opt/sapdb/indep_prog/pgm/vserver start
으로 서버 정지후 다시 구동시켜 보자
또한 /opt/sapdb/indep_prog/bin/x_server도 똑같은 역할을 한다 (둘의 차이점은 아직 모름)
잘 동작하는가? :-)
일단 서버 구동은 되도록 되어있다
이제 DB를 생성시켜 보도록 하자
DBM GUI등을 이용할 수도 있겠지만 우리는 콘솔상에서 생성을 시켜보도록 하자
/opt/sapdb/indep_prog/bin/dbmcli 프로그램이 DB를 생성하고 삭제하며 각종 파라메터도 조정하고 QUERY도 날려볼 수 있는 녀석이다
우선 편리함을 위해서 위의 디렉토리를 PATH에 추가시켜 주자 (/etc/bashrc/ 혹은 사용자의 .bashrc 등에 추가시켜주면 좋겠죠)
export PATH=$PATH:/opt/sapdb/indep_prog/bin
dbmcli --help를 쳐보면 일단 기본적인 접속법만이 나온다
[root@hancom misc]# dbmcli --help
usage: dbmcli [<options>] [[-c] <DBMServer-Command>]
<options>:
-u username,passwd (DBM user)
-U [userkey] (default DBMUSR)
-uUTL [username,passwd] (UTILITY session)
-uSQL [username,passwd] (SQL session)
-uSRV (Service session)
-V (show version of server)
-d dbname (set dbname)
-R dbroot (set dbroot)
-n node (name of servernode)
-i inputfile (Default stdin)
-ic inputfile (Default stdin)
-o outputfile (Default stdout)
-t protocolfile (writes subsequent protocol)
-s (local mode, don't use with -n)
<DBMServer-Command>:
Everything after the options will be sent to DBMServer.
For more information about the DBMServer-Commands use
the DBMServer-Command help.
요것으로는 많이 부족하지 않은가
일단 dbmcli -u dbm,dbm 로 실행을 한번 해보자 (dbm, dba 등의 유저는 미리 등록되어 있다)
[root@hancom misc]# dbmcli -u dbm,dbm
Error! Connection failed to node (local) for database (no dbname): ERR_SYSLOGON: logon to system failed
위와 같은 에러가 날 것이다 말그대로 DATABASE에 접속할 수 없다는 말이다
dbmcli 의 옵션으로
db_create
db_drop
db_online (db_start)
db_offline
등을 줘서 DB를 생성시키고 구동시키고 정지시키고 삭제시킬 수 있다
그러나 db_create이후에도 인자값등 조절할 것이 많으니 쉬운일이 아니다
그럼 어찌할 것인가
나같은 사람들 위해 프로그램에서 demo_db를 생성할 수 있는 스크립트를 제공한다
cd /opt/sapdb/depend74/misc
로 이동해 보자
그곳의 create_demo_db.sh 가 보이는가?
그 스크립트가 demo DB를 생성해주는 스크립트이다
이제 실행해보자
[root@hancom misc]# ./create_demo_db.sh
dont start script as root
말 그대로 root 로는 안된다 sapdb가 되어보자
su sapdb -
이제 다시 실행시켜보자
[sapdb@hancom misc]$ ./create_demo_db.sh
create database TST...
create TST failed: Error! Missing name of installation root!
위와 비스므리한 에러가 날 것이다
문제는 Independent 프로그램들의 PATH와 dependent 프로그램들의 PATH를 인식하지 못해서이다
아래와 같이 다시 실행해보자
[sapdb@hancom misc]$ DEP=/opt/sapdb/depend74/ IND=/opt/sapdb/indep_prog ./create_demo_db.sh
ERR 11641 XSERVER XSERVER is already running!
create database TST...
set parameters for TST...
start TST...
initialize TST...
load system tables...
create database demo user...
set backup parameters...
위와 같은 메세지가 나오면서 생성이 잘 될 것이다 :-)
[sapdb@hancom misc]$ ls ~
Desktop TST
해보면 위의 TST 라는 디렉토리가 보일 것이다
그 디렉토리 안에 DB에 필요한 스페이스(?) 등이 들어있다
create_demo_db.sh 를 조금만 살펴보면 dbmcli의 사용법 및 DB 생성 방법 그리고 파라메터값 설정이라든지 스페이스(?)의 추가 방법 등을 알 수 있을 것이다
그럼 이제 dbmcli로 직접 QUERY를 날려서 테이블을 하나 만들어보자
[sapdb@hancom misc]$ dbmcli -u dba,dba -d TST
dbmcli on TST>
우선 위와같이 해서 DB에 접속을 해보자
이곳에서 help를 쳐보면 아주 많은 명령어 들을 볼 수 있다.
각각의 사용법은 메뉴얼을 참조하기로 하고
우선 우리는 테이블을 만들어보기로 하자
sql 명령을 주기 위해서는 우선 sql_connect 명령으로 세션을 하나 생성해야 한다
dbmcli on TST>sql_connect test,test
OK
---
위와 같이 명령을 주고 OK라는 메세지가 나오면 제대로 된 것이다
test라는 사용자는 create_demo_db.sh 중간에 사용자로 추가시켜 둔 것이다
자 그럼 이제 실제 query를 줘보도록 하자
dbmcli on TST>sql_execute create table test_tb (t_id int, t_name varchar(40))
OK
---
OK 메세지가 나오면 제대로 생성이 된 것이다
dbmcli on TST>sql_execute select * from test_tb
ERR
-24988,ERR_SQL: sql error
100,Row not found
---
위와 같이 바로 쿼리를 줬을때 에러가 나온다.
그러나 잘 살펴보면 에러가 아니가 입력되어진 데이터가 하나도 없어서 Row not found가 나온것이다
그럼 데이터를 하나 넣어보자
dbmcli on TST>sql_execute insert into test_tb values (1, '테스트')
OK
---
자 그럼 다시 select 문을 줘보자
dbmcli on TST>sql_execute select * from test_tb
OK
END
1;'테스트'
---
데이터가 잘 나온다
이제 세션을 끊도록 하자
dbmcli on TST>sql_release
OK
---
그리고 종료한다
dbmcli on TST>quit
---
쉽지 않은가?
그럼 이제 잘 쓰기만 하면 된다 :-)
|