3/03/2011

在 Mac OS X Leopard 10.5.6 上安装配置 Oracle 10.2.0.4

第一个步骤自然是下载 Oracle Database 10g Release 2 (10.2.0.4.0) for MAC OS X on Intel x86-64 ,然后解压缩。URL: http://www.oracle.com/technetwork/database/10204macsoft-x86-64-092720.html

之后就是为安装Oracle建立用户组和用户。一般需要建立一个安装用户组oinstall,一个DBA用户组dba,用户oracle,它们都应当具有admin组的权限。在官方文档和一些帖子里都是推荐用dscl增加用户,这需要root权限。更简单的方法就是在系统偏好设置——账户里添加。记得确保该用户的shell是/bin/bash
# dscl . -append /users/oracle shell /bin/bash

安装过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。

安装完成之后可以安装client.zip

安装后配置
(1)如果你的网络配置使用的是DHCP
修改\oracle\product\10.2.0\db_1\network\admin目录下的tnsnames.ora文件
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)

对应的listener.ora也要做相应的更改
可以直接 netca 来配置, netmgr运行不起来不知道为什么

如何指定'listener.ora'存放的目录?不要默认目录($ORACLE_HOME/network/admin)
方法: 在 '.profile' 中加入(例)
TNS_ADMIN=/f01/oracle11/app/oracle/product/8.0.6/network/admin
export TNS_ADMIN


sqlplus连接: sqlplus "/ AS SYSDBA"


[最后补充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

]