2008년 2월 25일 월요일

ubuntu8.04 oracle 10g

ubuntu 8.04 server에 oracle 10g를 설치하는 자료이다.

모든 작업은 admin권한으로 작업한다.

기본 필요한 패키지 설치
# apt-get install gcc binutils libaio1 lesstif2 lesstif2-dev make rpm libc6 libstdc++5 build-essential

원격 설치 관련

# apt-get install xlibs xbase-clients xterm

Redhat system 처럼 보이게 하는 작업

# ln -s /usr/bin/awk /bin/awk
# ln -s /usr/bin/rpm /bin/rpm
# ln -s /usr/bin/basename /bin/basename
# ln -s /etc /etc/rc.d  
# ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so 
# for i in 0 1 2 3 4 5 6 S ; do ln -s /etc/rc$i.d /etc/rc.d/rc$i.d ; done

oracle 계정 생성
# groupadd oinstall
# groupadd dba
# groupadd nobody
# useradd -g oinstall -G dba -p passwd -d /u01/oracle oracle
# useradd -g nobody nobody

create directory and set permissions
# mkdir -p /u01/oracle
# mkdir -p /u02/oradata
# chown -R oracle:oinstall /u01 /u02
kernel parameter /etc/sysctl.conf에 추가
# fs.file-max = 65535
# kernel.shmall = 2097152
# kernel.shmmax = 2147483648
# kernel.shmmni = 4096
# kernel.sem = 250 32000 100 128
# net.ipv4.ip_local_port_range = 1024 65535
# net.core.rmem_default = 1048576
# net.core.rmem_max = 1048576
# net.core.wmem_default = 262144
# net.core.wmem_max = 262144
/etc/security/limits.conf 추가
* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
/etc/pam.d/login, /etc/pam.d/su 추가
session required /lib/security/pam_limits.so
변경 사항 적용
# sysctl -p
/etc/profile 추가
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10gr2
export ORACLE_SID=SID
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export SHLIB_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jlib:/usr/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME/jdbc/lib
export CLASSPATH=$ORACLE_HOME/lib/classgen.jar:$ORACLE_HOME/jdbc/lib:
oracle 계정으로 실행
$ ./runInstaller -ignoreSysPrereqs
위와 같이 했을때 아무 문제없이 설치되었다. :)

2008년 2월 1일 금요일

oracle perl

cpan에서 oracle 관련된 module source를 다운로드 받는다.

# perl -MCPAN -e shell

~~~ 처음 접속하니깐 어쩌구 저쩌구 많이 나온다.

cpan> get DBD::Oracle
cpan> quit

DBD::Oracle 관련된 소스가 ~/.cpan/build/DBD-Oracle-1.20/ 밑에 주르륵 생겼다.

perl Makefile.PL
make; make install

ex)

#!/usr/bin/perl

use strict;
use warnings;
use DBI;

my $dbh = DBI->connect("dbi:Oracle:host=host;sid=sid_value", $userid, $passwd);

my $sth = $dbh->prepare("SELECT * FROM tab") or die "Impossible de preparer la requette: " . $dbh->errstr;

$sth->execute() or die "Impossible d'exécuter la requette: " . $sth->errstr;

while ( my @data = $sth->fetchrow_array()) {
  print "$data[0]\t$data[1]\n";
}

if ($sth->rows == 0) {
  print "Table vide\n";
}

$sth->finish;
$dbh->disconnect;

정상적으로 table 정보를 출력하면 된다.