SYBASE 기본 사용법(시작/종료, Login/Logout, DB생성/삭제/변경, Device등록/삭제,

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

Oracle

Sybase

%su – oracle
password:
%svrmgrl
SVRMGR>connect internal
SVRMGR>startup
SVRMGR>exit
%lsnrctl start

%su – sybase
password:
%cd install
%startserver -f RUN_SYBASE
%startserver -f RUN_SYS_BAKUP
※RUN_SYBASE, RUN_SYB_BACKUP는 Server name이므로 확인

* SHUTDOWN

 

Oracle

Sybase

%su – oracle
password:
%svrmgrl
SVRMGR>connect internal
SVRMGR>shutdown
SVRMGR>exit
%lsnrctl stop

%su – sybase
password:
%cd install
%isql -Usa -P
1>shutdown SYB_BACKUP
2>go
1>shutdown

 

* CREATE DATABASE


Oracle

Sybase

%sqlplus system/manager
SQL>create tablespace mpts/datafile ‘/data1/mpdb/mp.dbf’ size 100
default storage(
initial 64K
next 64K
pctincrease 0
minextents 2
);
Tablespace create.

SQL>create tablespace mptmpts/datafiile ‘/data1/mpdb/mp.dbf’ size 20M
deault storage(
initial 64K
next 64K
pctincrease 0
minextents 2
);
Tablespace create.

SQL>create user medpack
2 indetified by medpack000
3 default tablesapce mpts
4 temporary tablespace mptmpts
5 quota unlimited on mpts
6 quota unlimited on mptmpts;
User create.

SQL>grant connect, resource to medpack;
Grant Succeede.

※ 위 예제는 mpts, mptmpts라는 tablespace를 만들고 medpack이라는 User를 생성한다.
  mpts와 mptmpts의 비율은 8:2비율이 적당하고 User생성시 default tablespace와 temporary tablespace를 지정해 준다.
그런후에 connect와 resource라는 rule을 User에게 허용해 준다.

전체적인 순서는
1)2개의 Tablespace생성
2)User생성
3)User에게 rule허용
과 같다.

 

%isql -Usa -P
1>disk init
2>name = ‘mp_dev’,
3>physname = “/data1/mpdv/mp.dev”,
4>vdevno = 2,
5>size = 51200(page단위)
6>go

1>disk init
2>name = “mplog_dev”,
3>physname = “/data1/mpdb/mp.log.dev”,
4>vdevno = 3,
5>size = 10240
6>go

※100MB를 할당하려면 100 * 512 = 51200의 값을 사용한다.

1>create database mepackdb
2>on mp_dev = 100(Mega단위)
3>log on mplog_dev = 20
4>go

CREATE DATABASE: allocating 51200 pages…
CREATE DATABASE: allocating10240 pages…

1>sp_addlogin medpack, medpack000 medpackdb
2>go

Password correctly set.
Account unlocked.
New login created.
(return status = 0)

1>use medpackdb
2>go

1>sp_changedbowner medpack
2>go

Database owner changed.
(return status = 0)


위의 예제는 mp_dev, mplog_dev라는 2개의 device를 만들고 medpackdb를 만든다. 그런후에
medpack이라는 User를 만들어 medpackdb를 기본db로 설정한다. 그리고 나서 medpack의 소유권을
medpack으로 바꾸어 준다.

전체적인 순서는
1)2개의 device 생성
2)db생성
3)User생성
4)db의 소유권 변경
과 같다.

 

* DROP DATABASE

Oracle

Sybase

%sqlplus system/manager
SQL>drop user medpack cascade;

User dropped

SQL>drop tabelspace mpts
2 including contents
3 cascade contraints;

Tablespace dropped

SQL>exit

※그런후에 실제 data file를 삭제한다.

※위 예제는 medpack이라는 User와 그 User에게 할당된 tablespace를 삭제한다.
 전체적인 순서는
 1)먼저 User를 삭제(Drop)
 2)2개의 tablespace를 삭제(Drop)
 3)File System에 있는 File들을 삭제
와 같다.
 
※Oracle에서는 사실상 database는 하나만 존재한다. 각각의 User들은 tablespace를 할당받아 실제의 data를 저장한다.
따라서, User Space의 증가는 tablespace를 늘려주면 가능하다.
(Ref, alter tablesapce….)

%isql -Usa -P
1>drop database medpackdb
2>go

1>sp_dropdevice mp_dev
2>go

Device dropped.
(return status = 0)

※위 예제는 medpackdb이라는 이름의 database를 삭제하고 database가 사용하고 있던 device를 삭제한다. 그리고 나서 User를 삭제한다.
 전체적인 순서는
 1)database 삭제
 2)2개의 device삭제
 3)User삭제
 4)File System에 있는 File들을 삭제
와 같다

※Sybase에서는 device에서 일정한 양의 space를 할당받아 database를 만든다.
device를 만들 때 번호를 적당하게 지정해 주어야 하는데, sp_helpdevice라는 system procedure를 이용한다.

 

—————————————————————————————————————————————————————————-
출처 : http://www.digipine.com/?mid=programming&listStyle=gallery&sort_index=readed_count&order_type=desc&document_srl=218

우분투 한글폰트 설치 및 안티 앨리어싱 적용하기

새로운 폰트 적용하기

 우분투에서 새로운 한글 폰트를 적용/설치 하기 위해서는 아래의 디렉토리에 새로운 디렉토리를 생성하여 폰트를 넣으면 된다.

/usr/share/fonts/truetype

 그런 후 터미널에서 다음을 입력하면 된다.

# sudo -s
(root 권한이 필요하다..)
# fc-cache -f – v

————————————————————————————————————————————————————

안티 앨리어싱 적용하기

 처음 우분투를 사용하면 유독 한글 폰트에(ex. 은진낙서체) 대해서 글자가 뭉개지는 것을 확인할 수 있다.
 이는 우분투에서 안티 앨리어싱 설정을 끄도록 설정이 되어있어서 그러는 것인데, 이를 다시 적용시키기 위해서는 다음의 작업이 필요하다.

 먼저 root 권한으로 다음의 파일을 열도록 하자.

# sudo vi /etc/fonts/conf.d/29-language-selector-ko-kr.conf

열린 파일의 내용중 아래의 내용을 찾아 해당 부분을 주석처리를 하자.
주석처리는 “<!–” 로 시작하여 “–>”로 끝이 난다.

<!– Turn off antialias and autohint for Korean fonts depending on pixelsize –>
<!–<match target=”font”>
        <test name=”lang” compare=”contains”>
                <string>ko</string>
        </test>
        <test name=”pixelsize” compare=”more”>
                <int>10</int>
        </test>
        <test name=”pixelsize” compare=”less”>
                <int>22</int>
        </test>
        <edit name=”antialias” mode=”assign”>
                <bool>false</bool>
        </edit>
        <edit name=”autohint” mode=”assign”>
                <bool>false</bool>
        </edit>
        <edit name=”hintstyle” mode=”assign”>
                <const>hintmedium</const>
        </edit>
</match>–>

하나 더 주석처리를 해야 한다.

<!– Turn off antialias and autohint for ttf-alee depending on pixelsize –>
<!–<match target=”font”>
        <test name=”family”>
                <string>Guseul</string>
        </test>
        <edit name=”autohint” mode=”assign”>
                <bool>true</bool>
        </edit>
</match>
<match target=”font”>
        <test name=”family”>
                <string>Guseul</string>
                <string>Guseul Mono</string>
        </test>
        <test name=”pixelsize” compare=”more”>
                <int>11</int>
        </test>
        <test name=”pixelsize” compare=”less”>
                <int>16</int>
        </test>
        <edit name=”antialias” mode=”assign”>
                <bool>false</bool>
        </edit>
        <edit name=”autohint” mode=”assign”>
                <bool>false</bool>
        </edit>
</match>–>

출처 : http://ihoney.pe.kr/635

Lec 6 | MIT 6.00 Introduction to Computer Science and Programming, Fall 2008

6: Bisection Methods, Newton/Raphson, Introduction to Lists

def squareRootBi(x, epsilon):
    “””Assumes x >= 0 and epsilon > 0
    Return y s.t. y * y is within epsilon of x”””
    assert x >= 0, ‘x must be non-negative, not’ + str(x)
    assert epsilon > 0, ‘epsilon must be positive, not’ + str(epsilon)
    low = 0
    high = max(x, 1)
    guess = (low + high) / 2.0
    ctr = 1
    while abs(guess ** 2 – x) > epsilon and ctr <= 100:
        #print ‘low:’, low, ‘high:’, high, ‘guess:’, guess
        if guess ** 2 < x:
            low = guess
        else:
            high = guess
        guess = (low + high) / 2.0
        ctr += 1
    assert ctr <= 100, ‘Iteration count exceeded’
    print ‘Bi method. Num. iteratins:’, ctr, ‘Estimate:’, guess
    return guess

def squareRootNR(x, epsilon):
    “””Assumes x >= 0 and epsilon > 0
    Return y s.t. y * y is within epsilon of x”””
    assert x >= 0, ‘x must be non-negative, not’ + str(x)
    assert epsilon > 0, ‘epsilon must be positive, not’ + str(epsilon)
    x = float(x)
    guess = x / 2.0
    guess = 0.001
    diff = guess ** 2 – x
    ctr = 1
    while abs(diff) > epsilon and ctr <= 100:
        #print ‘Error:’, diff, ‘guess:’, guess
        guess = guess – diff / (2.0 * guess)
        diff = guess ** 2 – x
        ctr += 1
    assert ctr <= 100, ‘Iteration count exceeded’
    print ‘NR method. Num. iterations:’, ctr, ‘Estimate:’, guess
    return guess

squareRootBi(9, 0.001)

squareRootBi(4, 0.001)

squareRootBi(2, 0.001)

squareRootBi(0.25, 0.001)

squareRootBi(4, 0.00001)
squareRootNR(4, 0.00001)

squareRootBi(123, 0.00001)
squareRootNR(123, 0.00001)

squareRootBi(123456789, 0.00001)
squareRootNR(123456789, 0.00001)

Techs = [‘MIT’, ‘Cal Tech’]
print Techs

Ivys = [‘Harvard’, ‘Yale’, ‘Brown’]
print Ivys
Univs = []
Univs.append(Techs)
print Univs
Univs.append(Ivys)
raw_input()
print Univs
raw_input()
for e in Univs:
    print e
    for c in e:
        print c
raw_input()
Univs = Techs + Ivys
print Univs
raw_input()
Ivys.remove(‘Harvard’)
print Univs
Ivys[1] = -1
print Ivys

L1 = [1, 2, 3]
L2 = L1
L1[0] = 4
print L2
def f(L):
    L[0] = 4
L1 = [1, 2, 3]
L2 = [1, 2, 3]
L3 = L1
print L1 == L2
f(L1)
print L1 == L2
print L1
print L2
print L3

L1 = [1, 2, 3]
L2 = L1[:]  # make a copy of L1

ORACLE – init script



#!/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