MAC OS X安装Oracle 10.2.0.4简要[更新至OS X 10.6]
今天突发奇想在苹果上安装个Oracle数据库,到OTN主页一查,居然Oracle 10.2.0.4 for MAC还刚刚发布不及,立刻下载按照文档动手。结果还是发现不少问题,简单记录一下吧。
第一个步骤自然是下载db.zip,然后解压缩。
之后就是为安装Oracle建立用户组和用户。一般需要建立一个安装用户组oinstall,一个DBA用户组dba,用户oracle,它们都应当具有admin组的权限。在官方文档和一些帖子里都是推荐用dscl增加用户,这需要root权限。更简单的方法就是在系统偏好设置——账户里添加,可以看看下面的图,分别是增加群组和对用户进行设置。

安装过Linux平台Oracle的可能知道Oracle对组件和Java环境有一些要求。Leopard上就简单很多,只需要安装DVD里自带的Xcode(当然也可以下载最新版本),并将Java 1.4.2环境放到Java应用程序第一优先顺序就可以了。[MAC OS X 10.6以后没有了1.4.2,后续需要修改一些内容,将在方括号中提示]
下面就是准备系统内核参数了。这里建议大家还是开启root用户。在应用程序——实用工具——目录实用工具——编辑中启用。命令行su到root用户,然后建立/etc/sysctl.conf:
kern.sysv.shmmax=1073741824
kern.sysv.shmall=2097152
kern.maxfiles=65536
kern.maxfilesperproc=65536
kern.maxproc=2068
kern.maxprocperuid=2068
net.inet.ip.portrange.first=1024
重新启动系统就生效了。其他参数在Leopard(10.5.6)下不用更改。具体还可以参考安装文档(在下载的db.zip里就有)。特别提醒一点,如果真的完全按照安装文档上进行修改,有可能会出现这个错误:
TNS-01114: LSNRCTL could not perform local OS authentication with the listener
TNS-01115: OS error 22 creating shared memory segment of 127 bytes with key xxxxxxx
这个问题困扰了我很久,最后进行广泛搜索,受到一个Linux安装求助贴的启发,将kern.sysv.shmmin重新修改为1,就恢复了(文档上要求修改为4096)。
继续看文档,又会发现IPServices是找不到的,不管了,改/etc/rc.common咯,在最后增加:
ulimit -Hu 2068
ulimit -Su 2068
ulimit -Hn 65536
ulimit -Sn 65536
现在把db.zip解压的文件夹放到oracle用户下,并chown给oracle,su – oracle。给自己建立一个.bash_profile吧,可以参照下面内容设定环境参数:
ORACLE_BASE=/Users/oracle/oracle
ORACLE_SID=macora
ORACLE_HOME=/Users/oracle/oracle/product/10.2.0
PATH=/usr/local/bin:/Users/oracle/oracle/product/10.2.0/bin:$PATH
export ORACLE_BASE
export ORACLE_SID
export ORACLE_HOME
export PATH
DYLD_LIBRARY_PATH=$ORACLE_HOME/lib
export DYLD_LIBRARY_PATH
DISPLAY=127.0.0.1:0
export DISPLAY
ulimit -Hn 65536
ulimit -Sn 65536
export NLS_LANG="AMERICAN_AMERICA.UTF8"
如果最后不设置DISPLAY,就会在启动runInstaller的时候报错,提示无法创建窗口。如果不设置DYLD_LIBRARY_PATH就会在创建数据库中提示没有监听器等错误。这些参数需要重启shell环境生效,比如重新su – oracle。
到这里基本就完成了准备工作,命令行进入目录,运行./runInstaller[10.6以后,请手工修改runInstaller,将其中的/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2改为/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0。另一种解决思路是
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0 /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2
./runInstaller -J-d32
]。后面就和其他平台安装一样了,安装到最后,需要开一个窗口以root权限运行$ORACLE_HOME/root.sh。
[继续补充10.6一些问题:
如果链接时遇到调用目标 ‘all_no_orcl ipc_g ihsodbc32' 错误,那么不要退出安装程序,直接打开终端,修改文件$ORACLE_HOME/rdbms/lib/ins_rdbms.mk,用#号注释掉$(HSODBC_LINKLINE)开头的行,然后返回安装程序,点击 “Retry”。
Java GUI工具(NETCA和DBCA)运行时也可能出错。那么修改 $ORACLE_HOME/jdk/bin/java脚本,将"java -Xbootclasspath…"改成"java -d32 -Xbootclasspath…"
安装时还可能提示ORA-3113错误,此问题Raimonds Simanovskis通过提供补丁文件解决了。
cd $ORACLE_HOME/bin
curl -O http://rayapps.com/downloads/oracle_ee.zip
unzip oracle_se.zip
chmod ug+s oracle
rm oracle_se.zip
]
最后再提供一些安装帮助:
在 Mac OS X 上安装 Oracle 数据库 10g 和 PHP by Matt Rohrer:http://www.oracle.com/technology/global/cn/pub/articles/rohrer_macosx_10g.html
how to install oracle 10.2.0.4 on mac os x by Ronald Rood: http://ronr.blogspot.com/2009/04/how-to-install-oracle-10204-on-intel.html
另一个英文版安装指南,on MAC Intel,推荐:http://blog.rayapps.com/2009/04/12/how-to-install-oracle-database-10g-on-mac-os-x-intel/
最后提供两个版本上的快速安装指南 by Raimonds Simanovskis[本文关于10.6的修改就是来源于此,当然,感谢留言的网友Alan,促使我更新此文档,并提供了最新进展]:http://www.pythian.com/news/1937/quick-install-guide-for-oracle-10g-release-2-on-mac-os-x-leopard-intel/
10.6上:http://blog.rayapps.com/2009/09/14/how-to-install-oracle-database-10g-on-mac-os-x-snow-leopard/
老大也在线啊。呵呵
我把我的错误贴出来,帮我看看啊,谢谢!!
mbpro:Disk1 oracle$ netmgr
UnsatisfiedLinkError exception loading native library: njni10
Exception in thread “main” java.lang.UnsatisfiedLinkError: oracle.net.common.NetGetEnv.jniGetOracleHome()Ljava/lang/String;
at oracle.net.common.NetGetEnv.jniGetOracleHome(Native Method)
at oracle.net.common.NetGetEnv.getOracleHome(Unknown Source)
at oracle.net.mgr.container.NetUtils.getImageDirectory(Unknown Source)
at oracle.net.mgr.container.NetApplication.init(Unknown Source)
at oracle.sysman.emSDK.client.appContainer.WebApplication.launch(WebApplication.java:3446)
at oracle.sysman.emSDK.client.appContainer.WebApplication.main(WebApplication.java:3327)
mbpro:Disk1 oracle$ emctl
/Users/oracle/oracle/product/10.2.0/db_1/bin/emctl: line 236: OS: command not found
/Users/oracle/oracle/product/10.2.0/db_1/bin/emctl: line 242: OS: command not found
/Users/oracle/oracle/product/10.2.0/db_1/bin/emctl: line 248: OS: command not found
/Users/oracle/oracle/product/10.2.0/db_1/bin/emctl: line 256: OS: command not found
EM Configuration issue. /Users/oracle/oracle/product/10.2.0/db_1/10.28.25.102_orcl not found.
@fei
晕倒,又是Java问题。你先手工改吧,这个我也整过。我估计还是Java环境问题,毕竟不是SUN原生环境啊。
这是我的java版本信息
mbpro:Disk1 oracle$ java -version
java version “1.6.0_22″
Java(TM) SE Runtime Environment (build 1.6.0_22-b04-307-10M3261)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03-307, mixed mode)
mbpro:Disk1 oracle$
现在是我要进Enterprise Manager对数据库进行管理和迁移,进不了EM。就弄不了啊。我Oracle新学的,呵呵
@ern
Java环境都需要设置些什么呢?oracle用户只设置了数据库的环境变量,java环境变量没有设置
mbpro:Disk1 oracle$ echo $JAVA_HOME
mbpro:Disk1 oracle$
和这个有什么关系吗?
等会儿我把oracle用户的java环境设置好,再安装一下
求助啊!
以下是我安装的详细过程:(也试着重装了好几次,还是报一样的错误,请高手帮忙解决)
总是出现这样的错误:
Exception in thread “main” java.lang.NoClassDefFoundError:
Caused by: java.lang.ClassNotFoundException:
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)
以下是我的安装步骤:
1. 安装xcode(用DVD自带的)
2. 设置java顺序,在“java偏好设置中修改”,按照默认的。此步没有作修改,按照默认的64位java se 1.6.0。在命令终端敲:java -version能看到版本信息(应该代表java没什么问题吧)
3. 创建组和用户。运用楼主的方法创建了一个用户oracle(有管理员权限)和一个组dba。oracle用户属于dba组。没有创建安装组,直接用oracle用户安装也可以的吧。
4. 在命令终端sudo –s到root用户,创建/etc/sysctl.conf,内容如下:
kern.sysv.shmmax=1073741824
kern.sysv.shmall=2097152
kern.maxfiles=65536
kern.maxfilesperproc=65536
kern.maxproc=2068
kern.maxprocperuid=2068
net.inet.ip.portrange.first=1024
5.重启系统
6.修改/etc/rc.common,在最后面添加
ulimit -Hu 2068
ulimit -Su 2068
ulimit -Hn 65536
ulimit -Sn 65536
7. 把db.zip拷贝到oracle用户目录/Users/oracle下,并用unzip命令解压。(解压后是属于oracle用户和dba组的)
8. 在oracle用户目录/Users/oracle下面创建.bash_profile,内容如下:
ORACLE_BASE=/Users/oracle/oracle
ORACLE_SID=macora
ORACLE_HOME=/Users/oracle/oracle/product/10.2.0
PATH=/usr/local/bin:/Users/oracle/oracle/product/10.2.0/bin:$PATH
export ORACLE_BASE
export ORACLE_SID
export ORACLE_HOME
export PATH
DYLD_LIBRARY_PATH=$ORACLE_HOME/lib
export DYLD_LIBRARY_PATH
DISPLAY=127.0.0.1:0
export DISPLAY
ulimit -Hn 65536
ulimit -Sn 65536
export NLS_LANG=”AMERICAN_AMERICA.UTF8″
9. 由于我的是mac 10.6.3的系统。所以按照楼主方法修改文件runInstaller,将/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2改为/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0
10. 为防止有些变量没有生效,重启电脑。
11. 登陆到oracle用户,在解压目录下用命令:./ runInstaller –J –d32。
出现如下错误:
Exception in thread “main” java.lang.NoClassDefFoundError:
Caused by: java.lang.ClassNotFoundException:
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)
@jack
是这样啊:
./runInstaller -J-d32
注意大小写、全角半角
请问下都是半角吗?J是大写,d是小写
-J-d32是连在一起的吗?中间没有空格吧。
刚才直接粘贴楼主的命令,好像也不行。
@ern
谢谢啊!
确实是我的命令敲得有问题。
我在runInstaller脚本里面找到了-J-d,改了改,粘到命令窗口就行了。
弄了好久了。
@ern
安装到最后出现oui-25031的错误,和#33楼的错误一样。我在$ORACLE_HOME/lib下面看到libnini10.xxxx的文件,但没有libnjni10.so文件。怎么才能通过编译方法产生这个文件啊?
已经解决了。
改了脚本就好了。
你好,现在在学oracle,看到您的文章就想照着您的方法来。刚买的新的macbook pro所以直接看的是您的文章最后贴的那个10.6的教程,但是有一步进行不下去了。就是在oracle用户下vi .bash_profile 之后敲入
export DISPLAY=:0.0
export ORACLE_BASE=$HOME
umask 022
ulimit -Hn 65536
ulimit -Sn 65536
之后无法保存,说.bash_profile 无法打开和写 错误212。我猜测是oracle用户没有这个权限,所以请问在root下怎么给oracle这个用户修改bash_profile的权限。我刚刚接触mac os基本的命令不太熟。所以请教一下,谢谢。。。不甚感激,打扰了。。。期待回复。。。
@tidus
su – oracle这个指令执行了没有?
我的就是runInstaller打不开,打开了程序页面还没出来就自动关闭了,有没有邮箱或者QQ之类的可以在线探讨的?拜托了.我的QQ114139904
@真心求教
./runInstaller -J-d32
这敲对了么?注意有点有减号哦
@ern
现在俺装好了.问题来了.
oracle$ sqlplus
-bash: sqlplus: command not found
这怎么办.
@真心求教
环境参数设置了么?特别是:
PATH=/usr/local/bin:/Users/oracle/oracle/product/10.2.0/bin:$PATH
@ern
环境变量是oracle用户文件夹下的.bash_profile吗?顺便问下.这个是放在oracle用户文件夹下的么?
@真心求教
是,可以改oracle用户Home下的.bash_profile里
怎么改?就把PATH=/usr/local/bin:/Users/oracle/oracle/product/10.2.0/bin:$PATH加进去还是怎么?我快疯了
@ern
我又砍了一遍.明明是加上了,但是还是这个样子.咋办@ern
@真心求教
重启一下试试
或者输入env
结果贴上来看看
更要命的是我刚才cd进了bin文件夹下直接运行sqlplus都是这个.但是我进bin文件夹下看也有sqlplus这个文件啊.完全搞不懂了@ern
TERM=xterm-color
SHELL=/bin/bash
NLS_LANG=AMERICAN_AMERICA.UTF8
USER=oracle
ORACLE_SID=macora
ORACLE_BASE=/Users/oracle/oracle
PATH=/usr/local/bin:/Users/oracle/oracle/product/10.2.0/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
PWD=/Users/oracle
SHLVL=1
HOME=/Users/oracle
DYLD_LIBRARY_PATH=/Users/oracle/oracle/product/10.2.0/lib
DISPLAY=127.0.0.1:0
ORACLE_HOME=/Users/oracle/oracle/product/10.2.0
_=/usr/bin/env
这是env的结果
@真心求教
这么诡异?
那你chmod +x sqlplus试试
或者运行./sqlplus
@真心求教
好像没啥问题
./sqlplus看看吧
@ern
~ oracle$ ./sqlplus
-bash: ./sqlplus: No such file or directory
@真心求教
在bin目录里啊,试试?
@ern
试过了。我重新卸载删除用户重新装,结果装都装不上了。还有我用命令创建的oinstall 的groups但是在偏好设置 用户里看不到。而且直接在偏好设置里再创建oinstall 的groups提示我已经存在。怎么用命令给它删除掉?我linux不是很熟
@ern
还有。我在一个地方好像看到过这么一个条件要求Apple Mac OS X Server 10.5.4以上,我不知道我的系统是不是server的。这个怎么看?是不是需要这个?但是我的mysql可以正常使用。
今天又重新安装了一次,现在sqlplus可以执行了,执行sqlplus /nolog可以出现SQL>
但是执行sqlplus /as sysdba出现
ERROR:
ORA-01031: insufficient privileges
然后提示输入用户名和密码,我输入了scott和tiger之后出现
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Mac OS X Error: 2: No such file or directory
弄一次oracle怎么这么麻烦.
(监听器通过lsnrctl start启动了)
@真心求教
官方是这个要求啊,所以才这么麻烦。你的系统正常都不是Server版。
@真心求教
sqlplus /nolog
connect sys/oracle as sysdba
startup
SQL> connect sys/oracle as sysdba
ERROR:
ORA-01031: insufficient privileges
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file ‘/Users/oracle/oracle/product/10.2.0/dbs/initmacora.ora’
@真心求教
你设的sys密码是什么啊,是不是”oracle”啊
还有.我用终端dscl . -create /groups/oinstal创建的oinstall用户组,但是在偏好设置-用户里看不到.我在偏好设置里新建一个用户组叫oinstall提示我说已经有用户是用这个名字,请问有没有办法把这个用户组删掉,通过终端?我不会…重装系统的心都有了.@ern
我想把那个oracle用户和这个oinstall用户组都删掉之后在偏好设置里手动创建用户和用户组再装一遍试试.快崩溃了.
sudo dscl . delete /groups/oinstall
已经通过这个删除了.按你的装一遍再看看.有问题再请教.麻烦了
到这里基本就完成了准备工作,命令行进入目录,运行./runInstaller[10.6以后,请手工修改runInstaller,将其中的/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2改为/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0。
我的这个文件夹里有1.3 1.3.1 1.4 1.4.2 1.5 1.5.0 1.6 1.6.0 还用改吗?前面不是说需要把1.4.2放第一顺序,那怎么还给改成1.5.0?我这个是需要怎么弄?把1.4.2以及以前的都删了?
@真心求教
你不管吧,继续往后做就是了。
感谢sharing
但是,我下玩db.zip时,进行解压缩的时候 竟然有提示错误
无法将“db.zip”解压缩至“apple”。
(错误1-操作不被允许。)
这是什么情况,望解答。 感激不尽
我的邮箱 bigbigboy10086@gmail.com
这估计是你下载的包坏了,重新下载吧
Initializing Java Virtual Machine from /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/bin/java. Please wait…
jimmyyangmatoMacBook-Pro:Disk1 oracle$ Exception in thread “main” java.lang.NoClassDefFoundError:
Caused by: java.lang.ClassNotFoundException:
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
我也没成功,卡在jdk这里了,最新版的10.6.6 上,jdk环境从1.3到1.6.0全都有,我改成1.6.0也还是这样,貌似是缺某个类,哎,放弃了,最终在mac机上安装vmware,然后把windows安装在虚拟机里,然后再安装oracle,呵呵
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/OraInstall2011-04-13_10-33-30AM. Please wait …
DISPLAY not set. Please set the DISPLAY and try again.
Depending on the Unix Shell, you can use one of the following commands as examples to set the DISPLAY environment variable:
- For csh: % setenv DISPLAY 192.168.1.128:0.0
- For sh, ksh and bash: $ DISPLAY=192.168.1.128:0.0; export DISPLAY
Use the following command to see what shell is being used:
echo $SHELL
Use the following command to view the current DISPLAY environment variable setting:
echo $DISPLAY
- Make sure that client users are authorized to connect to the X Server.
To enable client users to access the X Server, open an xterm, dtterm or xconsole as the user that started the session and type the following command:
% xhost +
To test that the DISPLAY environment variable is set correctly, run a X11 based program that comes with the native operating system such as ‘xclock’:
%
If you are not able to run xclock successfully, please refer to your PC-X Server or OS vendor for further assistance.
Typical path for xclock: /usr/X11R6/bin/xclock
大哥帮帮忙看看,最近才学的java和数据库
新买了mac,不会装oracle,按照你的文章修改了下,你帮忙看看
@天堂
什么问题?没有窗口弹出么?提示里的这个
$DISPLAY=192.168.1.128:0.0; export DISPLAY
执行了么
@ern
我是在终端里面敲的,运行run的时候 就报这些错,并没有跳出其他窗口,“提示里的这个
$DISPLAY=192.168.1.128:0.0; export DISPLAY
执行了么” 怎么执行?具体执行哪个? 还有大哥 方便给一个联系方式 QQ或者什么的吗?因为最新学习需要,希望进一步交流!