* ORACLE
해당 파일이 있는 디렉토리에서 sqlplus 를 실행 후에
@filename
을 실행하면 된다.
* SYBASE
해당 파일이 있는 디렉토리에서 isql 을 실행 후에
1> :r filename
2> go
를 실행하면 된다.
* ORACLE
해당 파일이 있는 디렉토리에서 sqlplus 를 실행 후에
@filename
을 실행하면 된다.
* SYBASE
해당 파일이 있는 디렉토리에서 isql 을 실행 후에
1> :r filename
2> go
를 실행하면 된다.
SYBASE 사용법(요약)
SYBASE home directory는 /home/sybase로 가정하며, 이하 ‘HOME’이라 합니다.
1.User System Account등록
1)User Account생성(System의 User등록방법에 따라)
Login as root – System Booting후 Root와 Password 입력)
Ex) #vi /etc/passwd/
Format] username:password:UID:GID:comment:user home directory:shell type
Example]sybase::100:100:SYBASE USER:/home/sybase:/bin/csh
2)User Directory생성
#cd /home
#mkdir sybase
#chown sybase sybase
#exit
2.Sysytem Login
Login as sybase – System Booting후 User name과 Password입력
3.Server를 Start시킴
1)”HOME”에서 install directory로 변경(cd install)
Format]startserver -f RUN_SERVERNAME
※ RUN_SYBASE인 경우, startserver만 해줌, ServerName는 LAN상 unique해야 함
※ showserver – server가 start되어 있는지 install directory에서 확인.
4.Server로 Login
1)isql -Usa -P(default is null) – isql 사용
1>SQL Commend 입력
2>qo
3>quit /* isql exit */
5.Shutdown the Server
1)At isql – recommended
1>shutdown (with nowait)
2>go
/* with nowait option 은 진행중인 process의 정상종료없이 Server가 Down됨 */
2)At OS prompt
%kill -9 PID /* PID : dataserver process ID */
6.기존 DataBase(install후 생성)
1)System Database
(1)master – db를 관리하는 db(db정보, device정보, login, account등)
/* master db에 object를 생성하는 것은 피해야 한다. – master db full */
(2)model – User db를 생성하는 prototype(db를 생성할 때 model db 복제)
(3)tempdb – join, sorting, temprary table($table_name)등의 작업영역
(4)sybsystemrocs – Sybase 제공 System Procedures(SP_who, SP_hwwlpdb 등)
(5)sybsecurity – 시스템 전반적인 사용을 감시하는 db(user, db, table, SQL등)
(6)sybsyntec – 명령어를 저장하고 있는 db(DML,DDL,DCL 및 기타 명령어)
2)The pubs2 database 생성
%isql -Usa -P < $SYBASE/scripts/installpubs2
/* installpubs2는 pubs2 db를 생성하기 위한 script이며,
pubs2가 있을 경우에는 생성하지 말 것.(isql상에서 sp_helpdb로 확인)
3)The pubs2 database query set
%isql -Usa -P (sa로 login) – 이하 생략
1>select db_name() /* 사용중인 db 확인 */
2>go
1>user pubs2
2>go
1>select * from titles
2>go
1>vi
select * from titles
~
:wq query /* OS file로 query저장 */
1>:r query /* OS file로부터 isql로 query를 read */
2>go /* 또는 vi editor를 call하여 edit후 save하고 수행 */
4)Query를 OS File로 작성하여 결과를 OS File로 받아보기 위한 방법
%vi
user pubs2
go
select * from titles
go
:wq query
%isql -Usa -P <query> query.out /* vi query.out로 결과 확인 */
7.Devicee등록 및 Drop
이는 SQL Server가 Device를 인식하고 그 Device에 db를 생성할 수 있도록 Device initialize를 하여 Server에 Device를 등록해 주는 과정임.
1) Device위치 선정
%su root(root account로변환 및 passward입력)
# cd/user(/user directory에 deice 를 생성하고자 할 경우)
#mkdir test-dev
# chwon sybase test-dv(ownership변경 또는 sybase writable)
/*sybase로login하여”HOME”밑에 생성시 ownership변경 필요없음*/
# exit
2) isql로 server에 login
1> disk init
2> name=”data_dev”,(log_dev”,)
3> physname=”usr/test_dev/data_dev,””log_dev”,)
4> vdevno=1,(2,)
/* default : 1-9, 최대 255, 0은 master device로reserved */
/* device등록을 실패할 때에는 다른 vdevno를 부여하거나, 그 번호를 재사용시는
server restaret */
5> size = 5120(1024)
/* size는 page단위이며, 단위는 10MB 의 device임 */
/* size =512 *MB단위 size */
6> go
/* ()안은 log device에 대한 disk init 이며, 별도로 disk init 하여 등록 */
/* master device및 device는 raw partition으로도 지정가능 */
1> sp_helpdevice-disk init 후 device등록확인
2> go
1> sp_dropdevice data_dev(log_dev)
2> go
1> quit
/*device에 database가 존재할 경우 drop되지 않음- 먼저 db drop */
% rm data_dev(log_dev)
/*server내에서 drop한 다음 os에 해당 file을 지움 */
8. Database생성 및 Drop
Disk init를 하여 server에 등록된 Device 에 새로운 Database 생성
1> create database mydb on data_dev =5 log on log _dev
2> go
/*위 예제는 data_dev에 data를, og dev 에 log 를 담는 db 생성하는 예제
device등록시에는 page단위이지만, db생성시에는 MB단위임
남아있는 device 여분은 mydb 의 확장 및 타 db의 device로 사용
log size 는 update빈도에 따라 다르지만 log device를 별도로 지정하지 않으면
db생성 device에 log devie생성
database 생성시 deice 를 생략하면 master device(default device)에 생성
1> sp_helpdb /*mydb생성 확인 및 database list */
2> go
1> drop data mydb /* database drop */
2> go
9. database 에 대한 ownership변경
1> use mydb /* database open , 이하 생략 */
2> go
1> sp_changedbowner dully
2> go
/* 해당 db user 이면 ownership이 변경되지 않고, sp_dropuser 후 ownership 변경*/
10. Database 확장
Database의 용량을 확장할 경우에는 기존 등록된 device 및 disk init에 의해 새로 등록된 device에 database를 확장한다.
1> alter database mydb on data _dev = 3
2> go
11. Object-Nameing Convention
1) Objcet Name
(1) Table, default, Procedure등 모두 해당됨
(2) 대 소문을 구분하여, 최대 30characters
(3) Object name identify ? db, owber, table (puds2. Friend)-dbo일 경우 생략가능
2) Transact ? SQL
(1) 대 소문자 구분 없음(select or SELECT)
(2) 축약형가능(procedure:proc, execute: exec, transaction: tran 등)
3) 타 DB와 Join
1> select a.name, b.amount from friend a, pubs … charg b
2> where a.id = b.id
3> go
4) Object 종류 – Table, View, Index, Default, Rule, Procedure, Trigger등이 있음
* START UP
|
* SHUTDOWN
|
* CREATE DATABASE
|
* DROP DATABASE
|
—————————————————————————————————————————————————————————-
출처 : http://www.digipine.com/?mid=programming&listStyle=gallery&sort_index=readed_count&order_type=desc&document_srl=218
#!/bin/bash
#
# Run-level Startup script for the Oracle Instance and Listener
#
# chkconfig: 345 91 19
# description: Startup/Shutdown Oracle listener and instance
ORA_HOME="/u01/app/oracle/product/9.2.0.1.0"
ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNR -c $ORA_HOME/bin/dbstart
touch /var/lock/subsys/oracle
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNR -c $ORA_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 start|stop|restart|reload"
exit 1
esac
exit 0
SYBASE에서 원격 서버 접속 방법.
Linux(Ubuntu-10.04_Desktop) 버전 기준으로 작성하였다.
SYBASE-ase-15.5 버전을 설치하였다고 가정한다.
1. SYBASE 홈디렉토리로 이동한다.
$ cd $SYBASE
2. interface 파일을 수정한다.
$vi ./interface
3. interface 파일안에는 기본적으로 자신의 호스트에 대한 내용들이 적혀있는데 이곳에 새로이 만들 DB의 alias 와 내용들을 입력하면된다.
[master/query] [tcp/udp] [ether] [IP/host] [port] 의 순서로 수정을 하면 된다.
JONATHANLAPTOP
master tcp ether 192.168.100.1 5000
query tcp ether jonathan-laptop 5000
4. 접속 TEST
$ isql -U(username) -P(password) -S(aliasname)
jonathan@jonathan-laptop:/opt/sybase$ isql -Usa -P -SJONATHANLAPTOP
Msg 4017, Level 16, State 1:
Server ‘JONATHANLAPTOP’:
Neither language name in login record ‘korean’ nor language name in syslogins
‘<NULL>’ is an official language name on this ASE. Using server-wide default
‘us_english’ instead.
1>
SYBASE 에서 다음의 init 스크립트를 사용중 stop시 locale 에러가 나타나는 것을 확인했다.
jonathan@jonathan-laptop:/opt/sybase/ASE-15_0/install$ cat /etc/init.d/sybase
#!/bin/sh
#
# Startup script for Sybase ASE
#
# description: Sybase Adaptive Server Enterprise
# is a SQL database server.
# processname: dataserver
SYBASE=/opt/sybase
SERVER=JONATHANLAPTOP
LANG=ko_KR.euckr
export LANG
# Source environment variables.
. $SYBASE/SYBASE.sh
# Find the name of the script
NAME=`basename $0`
# For SELinux we need to use ‘runuser’ not ‘su’
if [ -x /sbin/runuser ]
then
SU=runuser
else
SU=su
fi
start() {
SYBASE_START=$”Starting ${NAME} service: “
$SU root -c “. $SYBASE/SYBASE.sh; $SYBASE/$SYBASE_ASE/install/startserver
-f $SYBASE/$SYBASE_ASE/install/RUN_${SERVER} > /dev/null”
ret=$?
if [ $ret -eq 0 ]
then
echo “$SYBASE_START Success.”
else
echo “$SYBASE_START Failed!”
exit 1
fi
}
stop() {
echo -n $”Stopping ${NAME} service: “
$SU root -c “. $SYBASE/SYBASE.sh; isql -S $SERVER -U sa -P ” <
$SYBASE/$SYBASE_ASE/upgrade/shutdown.sql > /dev/null”
ret=$?
if [ $ret -eq 0 ]
then
echo “Success.”
else
echo “Failed!”
exit 1
fi
}
restart() {
stop
start
}
case “$1” in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $”Usage: $0 {start|stop|restart}”
exit 1
esac
exit 0
에러메시지의 내용은 다음과 같다.
jonathan@jonathan-laptop:/opt/sybase/ASE-15_0/install$ sudo /etc/init.d/sybase stop
$Stopping sybase service:The context allocation routine failed when it tried to load localization files!!
One or more following problems may caused the failureYour sybase home directory is /opt/sybase. Check the environment variable SYBASE if it is not the one you want!
Using locale name “ko_KR.UTF-8” defined in environment variable LANG
Locale name “ko_KR.UTF-8” doesn’t exist in your /opt/sybase/locales/locales.dat file
Success.
제일 마지막 메시지에는 Success 라고 나와있지만 ps -ef|grep sybase 명령어로 확인해본 결과 대부분의 프로세스들이 그대로 돌고있는 것을 확인할 수 있었다.
무엇이 문제일까.
에러 메시지에서 해답을 찾았다. 내가 사용하는 “ko_KR.UTF-8” locale을 정의(찾을 수)없다는 메시지였다.
먼저 내가 사용하는 리눅스에서의 로케일을 변경하려고 했으나 생각되로 잘 되지 않았다. 왜냐하면 SYBASE에서 어떤 로케일들을 지원하는지 아직 몰랐기 때문이다.
SYBASE에서 지원하는 locale 하는 로케일은 다음의 파일에서 찾을 수 있다.
/opt/sybase/locales/locales.dat
방법은 두가지가 있다. SYBASE에서 지원하는 로케일에 맞추거나 위의 파일에 자신이 사용하는 로케일을 추가하거나.
필자는 로케일을 추가하는 방법을 선택하였다.
/opt/sybase/locales/locales.dat
파일을 열어 자신의 OS를 찾아 아래쪽에 양식에 맞게 추가하도록 하자.
[linux]
locale = ko_KR.UTF-8, korean, eucksc
locale = ko_KR.949, korean, cp949
locale = korean.euc, korean, eucksc
위쪽 굵게 표시한 부분이 필자가 추가한 부분이다.
이후, 아무런 에러 메시지 없이 정상적으로 종료가 되는 것을 확인할 수 있었다.
jonathan@jonathan-laptop:/opt/sybase/ASE-15_0/install$ sudo /etc/init.d/sybase stop
$Stopping sybase service: Success.
테스트 OS : UbuntuLinux_Desktop-10.04