[Mac] MAC OS X에 오라클을 설치하자!!

시작

보통 맥 OS에 오라클 설치시는 가상머신 위에 리눅스 혹은 유닉스를 설치하고 그 위에!
오라클을 설치한다.

하지만 10g버젼이 정식으로 출시되었다.
리눅스 위에 깔다가 짜증나서,
그냥 마음먹고 다시 깔았다.

하지만 이것도 일이다. 중간에 과정 하나 잘못되면 모조리 다 엉망이 되어버린다.
결과적으로 난 2번 설치.
ㄱㄱ

준비해야 될 것.

현재 맥OS X의 버젼은 10.6.6 (내 맥북프로는 early 2010버젼).
참고한 아티클에 따르면, Tiger 버젼은 설치 안된단다. 꿈깨라고 하더라…….

여러가지 사정으로 인해 미리 준비해야 할 것은 다음과 같다.

  •  JDK 5.0 – 눈표범 OS X에는 JDK 6.0만 설치되어 있다.
  • 10.5.4 혹은 이상의 Mac OS X. No Tiger!
  • xCode 3.0
  • 그리고 맥 OS용 Oracle 계정과 유저그룹하나, 이건 밑에서 진행할 것임.

사용자 계정 설정

내가 유닉스나 리눅스 계열과 친숙하지 않아서, 왜? 왜 인지는 모르겠다..
하지만 따로 계정과 사용자 그룹을 생성해줘야 한다(고 한다)
다음 순서대로 수행하면 된다. 단, 여기의 모든 명령어는 루트권한이 필요하다.따라서 앞에 sudo를 붙여야 한다. 혹은, 그 전에 sudo -i 를 통해 루트로 권한을 바꿔도 된다.

[shell gutter=”false”]

sudo dscl . -create /groups/oinstall
sudo dscl . -append /groups/oinstall gid 600 #groupid 설정
sudo dscl . -append /groups/oinstall passwd "*" #group용 패스워드 설정 *를 원하는 것으로 변경
sudo dscl . -create /users/oracle
sudo dscl . -append /users/oracle uid 600
sudo dscl . -append /users/oracle gid 600
sudo dscl . -append /users/oracle shell /bin/bash #shell을 bash shell을 쓰겠다.
sudo dscl . -append /users/oracle home /Users/oracle #home 설정
sudo dscl . -append /users/oracle realname "Oracle software owner"
sudo mkdir /Users/oracle
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add oracle #로그인 창에서 oracle을 안보이게 해주는 명령. 난 안먹더라. ㅠㅡㅠ
sudo chown oracle:oinstall /Users/oracle
sudo passwd oracle

[/shell]

마지막 passwd 명령어는 oracle 계정의 암호를 설정해주는 명령어다.(혹시 한번했는데 로그인이 안된다면 다시 한번 passwd oracle을 해보기 바란다. 나는 안되서 두번하니깐 되더라.)

아마 그렇진 않겠지만 다음 명령어를 통해 gid나 uid로 사용되는 숫자가 이미 사용되는지 확인해 볼 수 있다(고 한다).

[shell gutter=”false”]

dscl . -list /groups gid | grep 4200
dscl . -list /users uid | grep 4200

[/shell]

커널 파라미터 설정

다음은 오라클에서 권장하는 커널 설정값이다.

[shell gutter=”false”]
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
[/shell]

하지만 꼭 다 이럴필요는 없다. 귀찮으면 이걸 다 갖다붙여도 되지만,
vi가 친숙하지 않은 그대들(과 나 포함)에게는 이걸 붙여넣는것조차도 힘겨운 일이다.
따라서 다음과 같은 명령어로 과연 내 맥북의 커널 설정이 이 권장값과 동일한지를 확인해보는게 정신건강에 좋다.

[shell gutter=”false”]

sysctl kern.sysv.semmsl #이런식으로 밑의 값들을 일.일.이 확인해본다.

[/shell]

그리고는 /etc/sysctl.conf 파일을 생성한다. 루트권한 필요.

[shell gutter=”false”]
sudo vi /etc/sysctl.conf
[/shell]

글자하나 안틀린지 확인해보고 이상없으면 리부팅 ㄱㄱ
리부팅 하고 아무 문제 없이 부팅완료되면 끝.

재부팅 완료 후 반드시 Oracle 유저로 로그인을 한다. sudo하지 말고 직접 로그인해야 한다. 눈표범부터 좀 더 강화되서 su 명령어로는 안된다고 한다. 물론 해보지는 않았고 참고한 블로그에서 그러라길래 그러는거다.

로그인을 했으면 터미널을 연다. 나는 터미널 열었을때 특별히 에러메시지가 없어야 한다.
그리고 할일은 .bash_profile 파일을 생성한다. 위에서 shell로 bash를 사용키로 했잖아. 셸용 프로필을 생성하는거다.

[shell gutter=”false”]
cd Users/oracle #당연히 home 설정을 제대로 했다면 이미 home일테지만.
vi .bash_profile
[/shell]

그리고 vi 화면이 제대로 나온다면 다음과 같이 내용을 기록한다.

[shell gutter=”false”]
export DISPLAY=:0.0
export ORACLE_BASE=$HOME #오라클 설치할 폴더, 복잡해지니깐 그냥 Home으로 했다.
umask 022
# kern.maxfilesperproc 와 동일해야 한다.
ulimit -Hn 65536
ulimit -Sn 65536

export ORACLE_HOME=/Users/oracle/oracle/product/10.2.0/db_1
export DYLD_LIBRARY_PATH=$ORACLE_HOME/lib
export ORACLE_SID=orcl #설치할 오라클의 sid.
PATH=$PATH:$ORACLE_HOME/bin

[/shell]

작성완료되면 저장하고 빠져나와서 실행한다.

[shell gutter=”false”]
. ~/.bash_profile

[/shell]

여기까지 문제 없었다면 오라클 설치 준비는 일단은 반 정도 끝났다.
설치 중간에 무수한 에러를 만나면 혈압이 끝도없이 오른다.
에러를 사전에 방지하기 위한 작업 몇개가 남았다.

잫바 SDK 설치

이제 설치를 위해 잫바 설정을 해야할 차례다.

[shell gutter=”false”]
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0
[/shell]

경로로 이동해서

[shell gutter=”false”]
ls -al
[/shell]

을 통해 살펴보면 1.5.0과 1.5 모두 현재 JDK 버젼(1.6)으로 링크되어 있는 것을 확인할 수 있을 것이다. 문제는 오라클의 어떤 라이브버리들은 1.5버젼이 필요하단다. 그래서 일단 다운을 받자.

너무 귀찮다. 이 링크로 가서 다운받고 설치를 unzip을 해서 설치를 한다.

http://tedwise.com/2009/09/25/using-java-1-5-and-java-1-4-on-snow-leopard/

1.5를 다운받아서 설치를 하고,
다음 명령어로 1.4.2를 1.5.0으로 링크를 한다.

[shell gutter=”false”]
sudo ln -s /위의경로/1.5.0 /앞과동일/1.4.2
[/shell]

-경로가 너무 길어서 화면에서 짤려서 부득이하게 한글로 대체했다. 위의 /System/Library/… 로 시작하는 경로를 입력해주면 된다.-

이 명령어로 논리링크를 만들어줘야 한다. 1.4.2는 1.5.0으로 연결한거다.
현재 내 맥북의 해당경로의 상태는 이러하다.

다른건 특별히 중요하지 않고 1.4.2가 1.5.0으로 -> 가 이어진 것에 주목하면 된다.
그리고 OSX의 Java 설정으로 가서 다음과 같이 SE 5.0이 가장 상위로 오게 한다.

일단 이걸로 준비 끝!

인슷홀!

일단 다운로드부터 받아야 안되겠다. 오라클 홈페이지 링크로 가서 다운로드 받도록 하자.
그리고는 unzip.

[shell language=”gutter=flase”]
mkdir Install
cd Install
unzip db.zip #물론 다운받은 파일을 이 폴더로 옮겨놔야겠다.
cd db/Disk1
[/shell]

드디어 대망의 인스톨.
오라클 인스톨러의 네이티브 라이브러리들은 32비트 모드에서 수행되어야 한다고 한다.
아시다시피 우리의 눈표범은 64비트 따라서 다음과 같은 옵션을 통해서 32비트로 오라클 인스톨러가 실행되게 만들어야 한다.

[shell gutter=”false”]
./runInstaller -J-d32
[/shell]

인스톨은 어렵지 않다. 데이터베이스 생성은 나중에 따로 할 것이므로, 체크를 해제한다.
netca도 나중에 처리할것임.

또한 인스톨 중간 Linking 부분에서 진행이 멈추고 다음과 같은 에러 메시지가 뜰것이다.

“Error in invoking target ‘all_no_orcl ipc_g ihsodbc32’ …”

이 에러를 해결하기 위해서는 다음과 같은 절차를 수행하면 된다. 오라클 설치를 중단시킬 필요없다. 터미널 창을 하나 더 띄워서 다음 절차를 수행하고 Retry를 누르면 된다. 괜히 창 닫지마라.

[shell gutter=”false”]
cd ~/oracle/product/10.2.0/db_1/rdbms/lib
vi ins_rdbms.mk
[/shell]

이 파일에서 HSODBC_LINKLINE 부분을 찾아서 주석처리를 해야한다. 수동으로 찾으면 한참 내려가야 하므로, vi enter /HSODBC_LINKLINE 로 검색해서 다음과 같이 주석처리한다.

[shell gutter=”false”]
# $(HSODBC_LINKLINE)
[/shell]

인스톨을 별 문제 없이 수행하고 나면 아마 root.sh를 수행하라고 나올테다. 루트권한 가진 유저로 su 해서 수행한다.

[shell gutter=”false”]
su – username #내 경우엔 mcdasa
sudo /Users/oracle/oracle/product/10.2.0/db_1/root.sh
[/shell]

일단 인스톨 완료.

데이터베이스 생성하기

앞서서 오라클 인스톨러가 32비트 모드로 실행되어야 한다고 했다. 지금 실행할 dbca 유틸도 마찬가지다. 이 다음에 수행할 netca도 마찬가지. 32비트 모드로 실행되어야 하므로 다음 옵션을 추가해서 32비트 모드로 실행되게 하자.

[shell gutter=”false”]
cd $ORACLE_HOME/jdk/bin/java
vi java
[/shell]

java 스크립트에 잘 살펴보면 …java -Xbootclasspath… 부분이 있는데 이곳에 …java -d32 -Xbootclasspath.... 처럼 -d32 옵션을 가운데 추가한다.

이후는 rayapps에서 하라고 해서 수행한건 데, 대충 해석해보면 현재 (스노우 레오파드하에서 컴파일된) 오라클 실행 바이너리가 코어 덤프를 남긴다…는건데 이 문제를 해결하려면 레오파드에서 컴파일된 실행바이너리로 덮어줘야 한단다. 뭔소리여. 그냥 시키는데로 했다. 별 문제는 없었다만 자세한 이유는 모르겠다.

다음과 같은 절차로 실행하면 된다.

[shell gutter=”flase”]
cd $ORACLE_HOME/bin
curl -O http://rayapps.com/downloads/oracle_se.zip
unzip oracle_se.zip
chmod ug+s oracle
rm oracle_se.zip
[/shell]

단! 만약 엔터프라이즈버젼을 인스톨했다면 oracle_se.zip를 oracle_ee.zip로 바꿔야 된다.

자, 이제 준비는 거의 끝난 것 같다. netca와 dbca를 차례대로 수행하자.

[shell gutter=”false”]
netca
[/shell]

netca가 성공적으로 실행되었다면 이제 데이터베이스를 생성할 차례다.
만약 netca를 실행하는데 나처럼 이런 에러를 만난다면?

UnsatisfiedLinkError exception loading native library: njni10
Exception in thread “main” java.lang.UnsatisfiedLinkError: jniGetOracleHome
at oracle.net.common.NetGetEnv.jniGetOracleHome(Native Method)
at oracle.net.common.NetGetEnv.getOracleHome(Unknown Source)
at oracle.net.common.NetProperties.(Unknown Source)
at oracle.net.common.NetProperties.getInstance(Unknown Source)
at oracle.net.ca.CmdlineArgs.(Unknown Source)
at oracle.net.ca.InitialSetup.(Unknown Source)
at oracle.net.ca.NetCA.main(Unknown Source)

다음 절차로 해결할 수 있다.

[shell gutter=”false”]
cd $ORACLE_HOME/bin
ln -s $ORACLE_HOME/lib/libnjni10.dylib $ORACLE_HOME/lib/libnjni10
ln -s $ORACLE_HOME/lib/libclntsh.dylib $ORACLE_HOME/lib/libclntsh.dylib.10.
[/shell]
[shell gutter=”false”]
dbca
[/shell]

옵션은 이렇게 했다.

  • 범용 데이터베이스
  • sid명은 orcl(앞서서 설정한 sid값과 동일하게 설정)
  • SYS, SYSTEM 암호 설정
  • 샘플스키마 생성
  • KOREAN_KOREA.AL32UTF8 로 캐릭터 셋 설정

가장 하단에 캐릭터셋을 그냥 AL32UTF8로 하니 모든 한글이 ????로 나왔다. 매우 난감;;;;

여기까지 문제가 없었다면 sqlplus를 실행해서 sys계정으로 접속해준다.
반드시 netca가 아무문제없이 수행되서 오라클리스너가 실행상태여야 한다.
그리고 우리의 친구 scott/tiger 계정을 해제한다.

[sql gutter=”false”]
alter user scott account unlock identified by tiger;
[/sql]

오라클 리스너 localhost 설정

참고 블로그에서는 로컬 개발용으로만 사용할 것이기 때문에 ip가 박힌 listner.ora 파일의 ip를 모두 localhost로 변경해주는 거랬다. 그냥 하라길래 했어요…;;; 오라클 계정으로 로그인했다.

[shell gutter=”false”]
vi $ORACLE_HOME/network/admin/listener.ora
[/shell]

파일을 내용을 다음과 같이 변경한다.

[shell gutter=”false”]
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /Users/oracle/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = /Users/oracle/oracle/product/10.2.0/db_1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
[/shell]

ip가 박혀있던걸 localhost로 변경하는거다.
동일한 폴더의 tnsname.ora도 마찬가지로 변경한다.

[shell gutter=”false”]

ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
[/shell]

아, 기억 더듬어가면 쓰느라 힘들었다. 여기까지 하면 별 문제 없어야 하지만 혹시 모르니 이상이 있으묜 반드시 댓글로 알려주시기 바란다.
혹은 mcdasa@gmail.com로 메일 보내주셔도 된다.

글 쓰느라 고생 좀 했으니 잘 보셨으면 댓글 좀 굽신굽신~~
오래된 포스트라서 댓글 확인이 용이하지가 아니합니다.
질문등은 mcdasa@gmail.com 으로 보내주세요. 물론, 100% 해결책을 드릴수는 없습니다…….

참고한 블로그 :

  • http://www.pythian.com/news/1937/quick-install-guide-for-oracle-10g-release-2-on-mac-os-x-leopard-intel/
  • http://blog.rayapps.com/2009/09/14/how-to-install-oracle-database-10g-on-mac-os-x-snow-leopard/
  • http://tedwise.com/2009/09/25/using-java-1-5-and-java-1-4-on-snow-leopard/
  • http://www.felipecruz.com/blog_njni10-oracle-10g-on-macos-x.php
  • http://blog.naver.com/annsungsu?Redirect=Log&logNo=80064085729

7 thoughts on “[Mac] MAC OS X에 오라클을 설치하자!!

  1. 안녕하세요. 맥쓰는 사람들 카페 글 보고 왔습니다. 상세하게 정리해주신 덕분에 아무것도 모르는 상태에서 하나하나 보며 따라하고 있습니다만, runInstaller 명령을 실행하면 자꾸 인벤토리 액세스 권한이 부족하다고 뜹니다.

    보니 oracle 계정 내에 있는 디렉토리로 들어가져야 하는데 계속 다른 계정으로 설치경로가 뜹니다. 다시말해서 /Users/oracle/oraInventory로 설치경로가 떠야하는데 다른 계정인 Users/anes/oraInventory로 경로가 뜹니다. 이 경로를 바꾸려고 며칠째 노트북을 붙잡고 있는데 해결이 안되네요. 혹시 해결방법 아시면 조언 부탁드립니다. ㅠ.ㅠ

  2. 님의 블로그를 메인으로 하고 예상치 못한 부분이 나올때마다 네이버랑 구글을 검색하면서 작업했습니다. 그 결과 무사히 설치 완료!! 일주일 동안 오라클 설치하려고 애먹었는데… 기분 너무 좋네요^0^
    덕분에 잘 설치 했습니다. 고맙습니다.

  3. 서혜영님 // 도움이 되셨다니 다행입니다. oraInventory 문제는 어찌 된건지 모르겠네요. 혹시나 제 설명글에서 잘못된 점이 있다면 지적 부탁드립니다~~

  4. 안녕하세요 ^^ 서치로 님의 글을 읽고 많은 도움이 되었습니다.
    글 내용중에
    “재부팅 완료 후 반드시 Oracle 유저로 로그인을 한다. sudo하지 말고 직접 로그인해야 한다. 눈표범부터 좀 더 강화되서 su 명령어로는 안된다고 한다. 물론 해보지는 않았고 참고한 블로그에서 그러라길래 그러는거다”
    이 부분이요..제가…맥은 첨 접해서… 직접 로그인은 어떻게 해야하는지…
    알려주시면 감사하겠습니다.

  5. 이세훈 // 직접 로그인 하라는 말은 상단의 사과아이콘 클릭하시면 [유저명] 로그아웃 버튼이 보이실 겁니다.

    해당버튼을 클릭하고 아까 생성한 oracle유저로 – 이미 로그인창에 기타 유저가 생성되 있을거에요. – 로그인하시면 됩니다!

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.