Quick Install Guide for 10g R2 on Mac OS X Leopard & Snow Leopard (Intel)

Quick Install Guide for Oracle 10g Release 2 on Mac OS X Leopard & Snow Leopard (Intel)

Posted by  Alex Gorbachev on Apr 13, 2009

I was very surprised that Oracle released Oracle Database for Mac OSX, especially, version 10g now that 11g has been out for almost 2 years. Well, I guess Oracle wanted to please Mac users expecting things just work and decided that good proved 10g is the way to go. On the other hand, we’ve been supporting 11g in production for quite a while and I must say it’s much better quality compare to 10g when it came out. I’m pretty sure there was a significant customer that influenced that decision — interesting who might that be?

Anyway, there is no quick install guide for OS X but only a standard Oracle® Database Installation Guide
10g Release 2 (10.2) for Apple Mac OS X (Intel)
. It’s fine but if you want to install Oracle on your MacBook and not for production use then you might take some shortcuts and follow a quick instructions so I gathered my notes while installing just released Oracle Database 10.2.0.4 on my MacBook and this is what you see now.

First things first — prerequisites

  • You must be on OS X 10.5.4 or higher. You are probably keeping your system up to date and is on the current release (10.5.6 as I’m writing this). Note that the guide requires OS X Server but for your playground, desktop OS X will work just fine. Update 14-Sep-09: this Guide has been updated for Snow Leopard 10.6.
  • You need to install Xcode 3.0 but if you are a Mac enthusiast, you will have it installed already. If not, you can find Xcode on your OS X Installation DVD or you can download it from from Apple Developer Connection but it’s quite large.
  • Disk space — about 5GB for software installation including temporary needs.
  • You can run with as low as 1GB of RAM but you do want to have at least 2GB to avoid your system crawling.

Creating OS oracle user

Oracle installation guides always instruct to have at least two groups — oinstall as a software owner and dba as an OSDBA group. I never saw an organization with the natural split of these responsibilities so I always prefer to create a single dba group and use it for both purposes.

I use 4200 as GUI and UID so checking if they are available(Updated on 19-Apr-09: Thanks Gleb!):

macbook:~ gorby$ dscl . -list /groups gid | grep 4200
macbook:~ gorby$ dscl . -list /users uid | grep 4200
macbook:~ gorby$

To create user oracle with default dba group, run the following script. I assume you run it as “admin” user so that you can sudo to root (you will need to enter your user password at the first time):
Updated 01-May-09: oracle->dba group membership line added. Thanks Johannes.

sudo dscl . -create /groups/dba
sudo dscl . -append /groups/dba gid 4200
sudo dscl . -append /groups/dba passwd "*"
sudo dscl . -create /users/oracle
sudo dscl . -append /users/oracle uid 4200
sudo dscl . -append /users/oracle gid 4200
sudo dscl . -append /users/oracle shell /bin/bash
sudo dscl . -append /users/oracle home /Users/oracle
sudo dscl . -append /users/oracle realname "Oracle software owner"
sudo dscl . -append /Groups/dba GroupMembership oracle
sudo mkdir /Users/oracle
sudo chown oracle:dba /Users/oracle
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add oracle
sudo passwd oracle

The last command will prompt for the new password and the command prior to the last will remove oracle user from login window — I find it annoying otherwise.

Kernel parameters

Next, you will need to set kernel parameters. Some of them are already good and some I would question changing on my MacBook just to have Oracle installed so I’d rather keep them. Use the following command to check current values (recommended values are after hash symbol as comment):

sysctl kern.sysv.semmsl # 87381
sysctl kern.sysv.semmns # 87381
sysctl kern.sysv.semmni # 87381
sysctl kern.sysv.semmnu # 87381
sysctl kern.sysv.semume # 10
sysctl kern.sysv.shmall # 2097152
sysctl kern.sysv.shmmax # max SGA you need.
sysctl kern.sysv.shmmni # 4096
sysctl kern.maxfiles # 65536
sysctl kern.maxfilesperproc # 65536
sysctl net.inet.ip.portrange.first # 1024
sysctl net.inet.ip.portrange.last # 65000
sysctl kern.corefile # core
sysctl kern.maxproc # 2068
sysctl kern.maxprocperuid # 2068

From semaphores and shared memory setting, I only needed to change shmall and shmmni. maxfiles andmaxfilesperproc were set lower (12288 and 10240 respectively) but I would prefer to keep it this way – my test database won’t need so many open files descriptors unless something is wrong with it. IP port range by default is 49152-65535 and I would prefer to keep it this way to have as little impact on my environment as possible. I also don’t want the core files to be generated in oracle way as a filecore in a process’ current directory so I’ll leave thecorefile value at “/cores/core.%P”. Finally, I believe values for maxproc and maxprocperuid should be enough if I set 1024 and 512 respectively.

Unfortunately, 4 values I need to change can’t be modified at run-time so I have to configure them in /etc/sysctl.conf and reboot. For this, add the following to /etc/sysctl.conf (you probably will need to create a new file) and reboot:

kern.sysv.shmall=2097152
kern.sysv.shmmni=4096
kern.maxproc=1024
kern.maxprocperuid=512

Update 30-Apr-09: I obviously miscounted zeroes in shmmax and it’s set to 4MB and not 4GB. :) Interesting, it still works! This makes me think that shmall (max shared segment size in pages) overrides shmmax or the kernel chooses the highest setting.

After reboot here are my kernel parameters:

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: 4194304
kern.sysv.shmmni: 4096
kern.maxfiles: 12288
kern.maxfilesperproc: 10240
net.inet.ip.portrange.first: 49152
net.inet.ip.portrange.last: 65535
kern.corefile: /cores/core.%P
kern.maxproc: 1024
kern.maxprocperuid: 512

Creating ORACLE_BASE directory

I want to have my Oracle binaries installed on a non-system partition HD2 so I’m creating directory there:

sudo mkdir /Volumes/HD2/oracle
sudo chown oracle:dba /Volumes/HD2/oracle
sudo chmod 775 /Volumes/HD2/oracle

You can also use oracle’s home directory /Users/oracle if you just have one disk/partition.

Update 14-Sep-09: If you don’t have another hard disk or partition mounted, the DO NOT use path in /Volumes/… You can use oracle’s home directory instead —/Users/oracle.

User environment

Next I login as oracle user (su - oracle) and create bash profile ~/.bash_profile:

# Must match kern.maxprocperuid
ulimit -Hu 512
ulimit -Su 512
# Must match kern.maxfilesperproc
ulimit -Hn 10240
ulimit -Sn 10240

export ORACLE_BASE=/Volumes/HD2/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export DYLD_LIBRARY_PATH=$ORACLE_HOME/lib
export ORACLE_SID=mac10g
PATH=$PATH:/$ORACLE_HOME/bin

Starting X11 server

X11 server is not running by default but you can kick it off either from Applications -> Utilities -> X11 or from command line (by default DISPLAY variable is pointing to a socket file):

macbook:~ gorby$ echo $DISPLAY
/tmp/launch-ArvCjk/:0
macbook:~ gorby$ xclock
Warning: locale not supported by Xlib, locale set to C
^C
macbook:~ gorby$ netstat -an | grep 6000 | grep LISTEN
tcp4       0      0  *.6000                 *.*                    LISTEN
tcp6       0      0  *.6000                 *.*                    LISTEN

Update 14-Sep-09: If you don’t see X11 listening on this port (and by default it doesn’t listen on Snow Leopard 10.6) then enable it in X11 preferences “Allow connections from network clients” or use this command line sudo defaults write org.x.X11 nolisten_tcp 0 (Thanks Tomasz).

Installing the software

Become oracle user with su - oracle, export DISPLAYvariable and verify it works by running xclock:

macbook:~ oracle$ export DISPLAY=localhost:0
macbook:~ oracle$ xclock
^C
macbook:~ oracle$ 

Update 14-Sep-09: Above works only for OS X 10.5 Leopard. OS X 10.6 Snow Leopard has stricter security settings so you cannot simply su to oracle user and export DISPLAY — you actually have to login as oracle user (logout in GUI and login as oracle “Oracle software owner”) instead of “su – oracle”. Thanks to Raimond for this.

I assume you have already downloaded and unzippedOracle 10g Release 2 installation binaries. If not do it now and unzip in a temporary location.

I use DHCP for network configuration of my MacBook and it changes IP address as well as hostname dynamically so I’d rather install database for localhost as it never changes. There is a trick with Oracle Installer for exactly that purpose — just set ORACLE_HOSTNAME environment variable before running the Installer. Don’t do that if you want your Oracle database to be accessible by other computers on the network but then you probably want to have your network configured with static IP. You can always change it later by reconfiguring the listener.

export ORACLE_HOSTNAME=localhost

Update 01-Sep-09: Thanks to Chris Murphy for an updatere installation on OS X 10.6 Snow Leopard:
* Edit runInstaller and change/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2to/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0. Raimond Simanovskis proposes to just create a link which is probably a better solution — sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0 /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2.
* Use additional option — ./runInstaller -J-d32
Kudos Chris!

Update 1-Mar-10: Nicolas reported another way — install 1.4.2 JDK.

Now, run the installer from Disk1 directory:

macbook:~ oracle$ /Users/oracle/db/Disk1/runInstaller
Starting Oracle Universal Installer...

No pre-requisite checks found in oraparam.ini, no system pre-requisite checks will be executed.
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2009-04-13_08-24-33PM. Please wait ...macbook:~ oracle$

Select Advanced installation option on the first screen. On the next screen, specify location for Oracle inventory to be under ORACLE_BASE —/Volumes/HD2/oracle/oraInventory and inventory OS group dba. The rest of the screens leave with defaults unless you know what you need to tweak so keep clicking next… next… next… Specify desired ORACLE_SID for the new database and make Global Database Name the same (I use mac10g as you could see from my .bash_profile). Plus, you can also tick the box to create sample schemas on the same screen so you have some data to play with. Finally, set some tough passwords for internal Oracle users (we all know that it’s the best to use system/manager andsys/change_on_install as top secret) and you are ready to rock-n-roll.

The last part (installation and linking) is usually the most troublesome when installing Oracle software but in case of Mac OS X there are very few dependencies so it should work just fine unless you missed Xcode 3.0 install. Well, at least it did work fine for me. Binaries installation took just few minutes on my Macbook and Configuration Assistants were relatively quick as well. Oh, you will be prompted to accept network connections to application oracle and you should answer “Yes” — it’s only asked the first time and answer is valid until oracle binaries are changed. At the end, you will need to run couple scripts as root user — usual stuff.

Snow Leopard update 14-Sep-09: If you get Error in invoking target ‘all_no_orcl ipc_g ihsodbc32error during linking then edit file$ORACLE_HOME/rdbms/lib/ins_rdbms.mk (without exiting installer – just switch to the terminal) and comment out line with $(HSODBC_LINKLINE) — just place hash # in front. Then switch back to the error in the installer and click “Retry”. I picked it up from Raimonds Simanovskis’s post — thanks a bunch.

Raimond also suggests how to fix Java GUI tools (netca and dbca) so that they run on Snow Leopard. Quoting him — “modify $ORACLE_HOME/jdk/bin/java script. and change …java -Xbootclasspath… to …java -d32 -Xbootclasspath…“.

Completing network configuration

The installer doesn’t start the listener automatically so do that as oracle user if you need network connectivity usinglsnrctl start. Automatic instance registration won’t work because the PMON process it trying to register with a listener on the default port 1521 of the main host IP but we forced Oracle Installer to use localhost. Not a problem, just set local_listener parameter accordingly:

SQL> show parameter listener

NAME             TYPE        VALUE
---------------- ----------- -----------------
local_listener   string
remote_listener  string

SQL> alter system set local_listener='localhost';

System altered.

SQL> alter system register;

System altered.

I personally don’t want to start an Oracle database instance automatically on reboot of my MacBook so I use command-line prompt. Automatic shutdown on reboot — well, I can shutdown manually or just let it crash. I’m way too confident in Oracle crash recovery mechanism.

We are done!

macbook:~ oracle$ uname -a
Darwin macbook 9.6.0 Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00 PST 2008; root:xnu-1228.9.59~1/RELEASE_I386 i386
macbook:~ oracle$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.5.6
BuildVersion:   9G55
macbook:~ oracle$ sqlplus system@mac10g

SQL*Plus: Release 10.2.0.4.0 - Production on Mon Apr 13 21:04:56 2009

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Enter password: 

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> 

What’s next? Perhaps, get APEX working on Mac OS X?


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/630461/viewspace-631273/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/630461/viewspace-631273/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值