Language/Objective-C

MAC에 Oracle10g 설치하기

아르비스 2011. 7. 5. 10:58
Mac용 Oracle Download
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

위 싸이트에서 Mac OS용  설치파일 다운로드

 루트 로그인
$ sudo sh

oinstall, dba, oper 그룹의 gid 지정을 위한 기존 그룹의 gid 확인
# dscl . -list /groups gid name | more

oracle 계정의 uid 지정을 위한 기존 사용자 uid 확인
# dscl . -list /users gid name | more

oinstall 그룹 생성
# dscl . -create /groups/oinstall
# dscl . -append /groups/oinstall gid 1030
# dscl . -append /groups/oinstall passwd "*"

dba 그룹 생성
# dscl . -create /groups/dba
# dscl . -append /groups/dba gid 1031
# dscl . -append /groups/dba passwd "*"

oper 그룹 생성 (optional)
# dscl . -create /groups/oper
# dscl . -append /groups/oper gid 1032
# dscl . -append /groups/oper passwd "*"

oracle 계정 생성
# dscl . -create /users/oracle
# dscl . -append /users/oracle uid 1025
# dscl . -append /users/oracle gid 1030
# dscl . -append /users/oracle gid 1031
# dscl . -append /users/oracle shell /bin/bash
# dscl . -append /users/oracle home /Users/oracle
# dscl . -append /users/oracle realname "Oracle software owner"
만약 oracle 계정이 oinstall 그룹이 아니면
# dscl . -delete /users/oracle gid
# dscl . -append /users/oracle gid 1030

oracle 홈 디렉토리 생성
# mkdir /Users/oracle
# chown oracle:oinstall /Users/oracle

oracle 계정 비밀번호 설정
# passwd oracle

커널변수 확인 및 설정
ParameterValue확인
kern.sysv.semmsl 87381 # sysctl -a | grep sem
kern.sysv.semmns 87381
kern.sysv.semmni 87381
kern.sysv.semmnu 87381
kern.sysv.semume 10
kern.sysv.shmall 2097152
kern.sysv.shmmax 전체메모리의 1/2 # sysctl -a | grep shm
kern.sysv.shmmni 4096
kern.maxfiles 65536 # sysctl -a | grep maxfiles
kern.maxfilesperproc 65536
net.inet.ip.portrange.first 1024 # sysctl -a | grep net.inet.ip.portrange
net.inet.ip.portrange.last 65000
kern.corefile core # sysctl -a | grep corefile
kern.maxproc 2068 # sysctl -a | grep maxproc
kern.maxprocperuid 2068

# sysctl -w parameter_name=parameter_value 형식으로 변경하고

sysctl kern.sysv.semmsl      <- 이런 형식으로 확인해본다.


수정이 허가되지 않는 항목은
/etc/sysctl.conf 파일에 요구되는 값들을 저장하고 후에 재시작 하면 적용된다.

sudo vi /etc/synctl.conf

kern.sysv.semmsl=87381

kern.sysv.semmns=87381  

kern.sysv.semmni=87381  

kern.sysv.semmnu=87381  

kern.sysv.semume=10     

kern.sysv.shmall=2097152        

kern.sysv.shmmax=2197815296

kern.sysv.shmmni=4096   

kern.maxfiles=65536

kern.maxfilesperproc=65536      

net.inet.ip.portrange.first=1024

net.inet.ip.portrange.last=65000

kern.corefile=core

kern.maxproc=2068

kern.maxprocperuid=2068


파라미터 값은 요구되는 값보다 적은 것 만 수정 해도 된다.

재부팅 완료 후 반드시 Oracle 유저로 로그인을 한다. sudo하지 말고 직접 로그인해야 한다. 

Setting Shell Limits for the oracle User
# sysctl -a | grep maxproc
# sysctl -a | grep maxfiles
# vi /System/Library/StartupItems/IPServices
#kern.maxprocperuid 값과 동일해야 한다
ulimit -Hu 2068
ulimit -Su 2068
#kern.maxfilesperproc 값과 동일해야 한다
ulimit -Hn 65536
ulimit -Sn 65536

오라클 설치 폴더 생성 및 권한 설정
# mkdir -p /oracle/10.2
# chown oracle:oinstall /oracle/10.2
# chmod 775 /oracle/10.2
# mkdir /oracle/10.2/oradata
# chown oracle:oinstall /oracle/10.2/oradata
# chmod 775 /oracle/10.2/oradata
# mkdir /oracle/10.2/flash_recovery_area
# chown oracle:oinstall /oracle/10.2/flash_recovery_area
# chmod 775 /oracle/10.2/flash_recovery_area

oracle 사용자로 로그인 한 후 환경변수 설정
$ echo $SHELL
$ vi .bash_profile
umask 022

ORACLE_SID=orcl
export ORACLE_SID

ORACLE_HOSTNAME=localhost
export ORACLE_HOSTNAME

ORACLE_BASE=/oracle/10.2
export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/oracle/product/10.2.0/db_1
export ORACLE_HOME

DYLD_LIBRARY_PATH=$ORACLE_HOME/lib
export DYLD_LIBRARY_PATH

DISPLAY=127.0.0.1:0.0
export DISPLAY

PATH=$PATH:$ORACLE_HOME/bin
export PATH

$ source .bash_profile

오라클 GUI 설치 (Java 32bit VM)
$ ./runInstaller -J-d32

소프트웨어만 설치 옵션선택

Java 32bit모드 기본설정
$ vi $ORACLE_HOME/jdk/bin/java
...java -d32 -Xbootclasspath...

netca 설정
$ $ORACLE_HOME/bin/netca

dbca 설정
$ $ORACLE_HOME/bin/dbca

메모리 설정
디비서버 전용이라면 70%이상으로
문자셑 설정
KOREAN_KOREA.AL32UTF8 (또는 KO16MSWIN949)

Message of finished
The iSQL*Plus URL is:
http://localhost:5560/isqlplus

The iSQL*Plus DBA URL is:
http://localhost:5560/isqlplus/dba

dbstart파일을 사용하기 위해 oratab파일 수정
# vi /etc/oratab
orcl:/oracle/oracle/product/10.2.0/db_1:N 을 orcl:/oracle/oracle/product/10.2.0/db_1:Y로 수정

oracle 시작/ 종료
oracle$ dbstart $ORACLE_HOME
Processing Database instance "orcl": log file /[ORACLE_HOME_PATH]/startup.log
oracle$ dbshut $ORACLE_HOME
Processing Database instance "orcl": log file /[ORACLE_HOME_PATH]/shutdown.log

launchd 등록
oracle$ vi /oracle/oracle/product/10.2.0/db_1/bin/dbstart-launchd.sh
#!/bin/sh
#
# Wrapper for running Oracle under launchd
# Required because launchd needs a non-daemonizing process

function shutdown()
{
$ORACLE_HOME/bin/dbshut $ORACLE_HOME
/bin/rm $ORACLE_PID
}

function wait_for_death()
{
while /bin/kill -0 $1 2> /dev/null ; do
sleep 120
done
}

export ORACLE_PID=$ORACLE_HOME/oracle-launchd.pid
$ORACLE_HOME/bin/dbstart $ORACLE_HOME
trap shutdown QUIT ABRT KILL ALRM TERM TSTP
sleep 120
wait_for_death `cat $ORACLE_PID`

root# vi /Library/LaunchDaemons/com.oracle.orcl.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnvironmentVariables</key>
<dict>
<key>ORACLE_HOME</key>
<string>/oracle/oracle/product/10.2.0/db_1</string>
</dict>
<key>Label</key>
<string>com.oracle.orcl</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/oracle/oracle/product/10.2.0/db_1/bin/dbstart-launchd.sh</string>
</array>
<key>QueueDirectories</key>
<array/>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/oracle/oracle/product/10.2.0/db_1/dbstart-launchd.stderr</string>
<key>StandardOutPath</key>
<string>/oracle/oracle/product/10.2.0/db_1/dbstart-launchd.stdout</string>
<key>UserName</key>
<string>oracle</string>
<key>WatchPaths</key>
<array/>
</dict>
</plist>

root# launchd load -w /Library/LaunchDaemons/com.oracle.orcl.plist

정적라이브러리 생성
$ $ORACLE_HOME/bin/genclntst

plan_table 생성
SQL>@$ORACLE_HOME/rdbms/admin/utlxplan.sql
invalid된 객체 컴파일
SQL>@?/rdbms/admin/utlrp.sql

oracle 사용자 계정을 로그인 화면에 출력되지 않기위해
# defaults write /Library/Preference/com.apple.loginwindow HiddenUsersList -array-add oracle

NLS PARAMETER 확인
select parameter, value from nls_instance_parameters;
select parameter, value from nls_session_parameters;
select parameter, value from nls_database_parameters;