以下内容来源于萧北风寒博客:http://www.qisnow.com/?p=164
首先下载oracle数据库安装文件,下载地址
开始安装,看安装文档:
折腾了一天才把oracle for mac装上,其中问题颇多啊,目前oracle访问等都正常了,只是em是不能用的
看了oralce的release note 发现
Oracle Enterprise Manager Database Control是支持的,因此就不管em了,只是没有了web管理界面
安装步骤如下:
执行
sudo -s
进入root用户
在文档中有些检查项,如内存,和磁盘空间等(我的电脑是MacBookPro MC375,应该是不用检查的,肯定是满足)
Requirement | Minimum Value |
---|
Physical memory (RAM) | 512 MB |
Swap space | 1 GB or twice the size of RAM On systems with 2 GB or more of RAM, the swap space can be between one and two times the size of RAM |
Disk space in /tmp | 400 MB |
Disk space for software files | 2 GB This value includes 1 GB of disk space required to install the Oracle Database 10g Products from the Companion CD (optional, but recommended). |
Disk space for database files | 1.2 GB |
物理内存:
/usr/sbin/system_profiler SPHardwareDataType | grep Memory
Memory: 4 GB
检查磁盘空间(另外还有/tmp等空间检查,因为mac磁盘挂接到[/]上的,其他空间不用检查)
df -h /
Filesystem Size Used Avail Capacity Mounted on
/dev/disk0s2 298Gi 227Gi 70Gi 77% /
软件要求:(要求是服务器版本,但是普通桌面版安装没有任何问题,放心)
查看Mac版本:
sw_vers
ProductName: Mac OS X
ProductVersion: 10.6.7
BuildVersion: 10J869
查看gcc版本(
这个很重要,初装都是没有的,必须安装XCODE开发工具)
#gcc -v
Using built-in specs.
Target: i686-apple-darwin10
Configured with: /var/tmp/gcc/gcc-5659~1/src/configure –disable-checking –enable-werror –prefix=/usr –mandir=/share/man –enable-languages=c,objc,c++,obj-c++ –program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ –with-slibdir=/usr/lib –build=i686-apple-darwin10 –program-prefix=i686-apple-darwin10- –host=x86_64-apple-darwin10 –target=i686-apple-darwin10 –with-gxx-include-dir=/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Apple Inc. build 5659)
检查xcode情况
#system_profiler SPApplicationsDataType
|
grep Xcode
Xcode:
Get Info String: Xcode version 3.2.2
Location: /Developer/Applications/Xcode.app
About Xcode:
Get Info String: About Xcode
Location: /Developer/About Xcode.app
如果没有XCODE控件和GCC请到
https://developer.apple.com/xcode/ 下载xcode4后直接双击安装就可以使用
,XCODE4支持10.6.6以上系统
必须要建个oracle用的组和用户(要求建2个组,分离职责,不过没有必要,建一个dba的组就可以了):
参考:
The following local UNIX groups and user must exist on the system:
-
The oinstall group (the Oracle Inventory group)
-
The dba group (the OSDBA group)
-
The oracle user (the Oracle software owner)
先查看现有组和用户
dscl . -list /groups gid
dscl . -list /users uid
选没用过的id作为组和用户id
创建组和用户并指定目录,修改密码,赋权限等:
建组:
dscl . -create /groups/dba
dscl . -append /groups/dba gid 5400
dscl . -append /groups/dba passwd “*”
建用户:
dscl . -create /users/oracle
dscl . -append /users/oracle uid 5300
dscl . -append /users/oracle gid 5400
dscl . -append /users/oracle shell /bin/bash
dscl . -append /users/oracle home /Users/oracle
dscl . -append /users/oracle realname “Oracle software owner”
dscl . -append /Groups/dba GroupMembership oracle
mkdir /Users/oracle
chown oracle:dba /Users/oracle
defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add oracle
passwd oracle
检查内核参数:(如果原来的参数比这个要大,就不用修改)
检查方式:sysctl 参数名
设置参数值:sysctl -w kern.maxproc=2068
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.(参考设置:2147483648)
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
可以通过设置值,为了避免麻烦,直接全部些人文件 sysctl.conf
vi /etc/sysctl.conf
格式:
kern.sysv.semmsl=87381
kern.sysv.semmns=87381
……
重启系统,检查参数
设置oracle安装目录,建立/oracle并把其所有权给oracle用户
mkdir /oracle
chown oracle:dba /oracle
chmod 775 /oracle
由于给oracle指定的是bash这个shell,在其目录下建立一个.bash_profile
su – oracle
查看当前shell
echo $SHELL
用oracle用户去建,下次oracle用户登录就会执行其中的命令,设置些环境变量
修改ulimit,文档上说得IPServices没有找到,就添加到profile一样的效果
# Must match kern.maxfilesperproc
ulimit -Hn 65536
ulimit -Sn 65536
umask 022
export DISPLAY=:0.0
export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export DYLD_LIBRARY_PATH=$ORACLE_HOME/lib
export ORACLE_SID=orcl
export ORACLE_HOSTNAME=qisnow.local
export NLS_LANG=”SIMPLIFIED CHINESE_CHINA.UTF8″
PATH=$PATH:/$ORACLE_HOME/bin
注意ORACLE_HOSTNAME是主机名,这个需要在/etc/hosts中配置,和hostname看到的一样,要能ping通
开始安装
安装需要有x11的环境,因此在上面设置了DISPLAY的值(没有x11安装程序启动不了)
设置DISPLAY环境变量, 运行图形程序(如xclock)时会收到如下错误:
Error: Can’t open display: :0.0
这是因为X11服务器默认情况下不允许别的用户的图形程序的图形显示在当前屏幕上. 如果需要别的用户的图形显示在当前屏幕上, 则应以当前登陆的用户, 也就是切换身份前的用户执行如下命令
xhost +
解决方案来自:
在10.6以后,直接用su – oracle的方式使用xclock命令打不开x11界面了,需要注销当前用户,从图形登录界面登录oracle用户,使用终端安装
下载并解压好文件(放到/oracle下):
cd /oracle/db/Disk1
据说从MACOX 10.6以后直接用./runInstaller不行了,会报错,经测试真会报错,需要带上下面的参数
./runInstaller -J-d32
——必须在32位环境安装
需要启动一个自己的xwindow,不然会报错
Exception in thread “main” java.lang.InternalError: Can’t connect to window server – not enough permissions.
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1823)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1720)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1045)
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.NativeLibLoader.loadLibraries(NativeLibLoader.java:38)
at sun.awt.DebugHelper.(DebugHelper.java:29)
at java.awt.Component.(Component.java:567)
现在可以调出oracle的安装界面了
在makefile的时候会有个错误
需要修改文件
vi /oracle/product/10.2.0/db_1/rdbms/lib/ins_rdbms.mk
注释掉$(HSODBC_LINKLINE)
如:#$(HSODBC_LINKLINE)
然后点重试
后面还有错误(
OUI- 25031错误,这个错误也是因为启动netca和dbca图形界面出不来,需要设置java在32位下运行
):
已通过 Configuration Assistant “Oracle Net Configuration Assistant” 生成输出:
Command = /oracle/product/10.2.0/db_1/bin/netca /orahome /oracle/product/10.2.0/db_1 /orahnam OraDb10g_home1 /instype typical /inscomp client,oraclenet,javavm,server,ano /insprtcl tcp /cfg local /authadp NO_VALUE /nodeinfo NO_VALUE /responseFile /oracle/product/10.2.0/db_1/network/install/netca_typ.rsp
UnsatisfiedLinkError exception loading native library: njni10
修改这个java文件
vi $ORACLE_HOME/jdk/bin/java
加一个参数:变成java -d32 后面的其他参数不变,这样以后的netca和dbca等都会按照32位运行(这样netca已经能正常创建了)
安装过程中,还需要Raimonds Simanovskis提供的补丁文件,不然dbca创建数据库可能不成功,如下:
cd $ORACLE_HOME/bin
curl -O http://rayapps.com/downloads/oracle_ee.zip
unzip oracle_ee.zip
chmod ug+s oracle
rm oracle_ee.zip
注意:安装企业版使用oracle_ee.zip
安装标准版使用oracle_se.zip
然后返回安装程序,点击“重试”。
最后提示要用root权限执行两个脚本,这就与在linux下安装一样了
======按照上面的步骤,替换后再执行那个网络配置和数据库配置的话,最后提示只执行root.sh一个
sudo /oracle/oraInventory/orainstRoot.sh
sudo /oracle/product/10.2.0/db_1/root.sh
最后你会看到提示:安装成功!
注意了,如果安装过程中配置数据库的时候有错误,可以先不管,后面可以使用dbca命令删掉错误的重新建一个数据库
配置好数据库以后,可以到目录/oracle/product/10.2.0/db_1/network/admin看看listener.ora和tnsnames.ora是否都是按照本机的实际情况配置的,如果不是做适当修改:
listener.ora(红色的没有用,可以删掉):
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = qisnow.local)(PORT = 1521))
)
)
=====================
tnsnames.ora:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = qisnow.local)(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)
)
)
安装成功了以后运行命令:
启动监听:
lsnrctl start
查看状态
lsnrctl status
LSNRCTL for MacOS X Server: Version 10.2.0.4.0 – Production on 23-3月 -2011 21:39:45
Copyright (c) 1991, 2007, Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
LISTENER 的 STATUS
————————
别名 LISTENER
版本 TNSLSNR for MacOS X Server: Version 10.2.0.4.0 – Production
启动日期 23-3月 -2011 21:18:23
正常运行时间 0 天 0 小时 21 分 22 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 /oracle/product/10.2.0/db_1/network/admin/listener.ora
监听程序日志文件 /oracle/product/10.2.0/db_1/network/log/listener.log
监听端点概要…
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=qisnow.local)(PORT=1521)))
服务摘要..
服务 “PLSExtProc” 包含 1 个例程。
例程 “PLSExtProc”, 状态 UNKNOWN, 包含此服务的 1 个处理程序…
服务 “orcl” 包含 1 个例程。
例程 “orcl”, 状态 READY, 包含此服务的 1 个处理程序…
服务 “orclXDB” 包含 1 个例程。
例程 “orcl”, 状态 READY, 包含此服务的 1 个处理程序…
服务 “orcl_XPT” 包含 1 个例程。
例程 “orcl”, 状态 READY, 包含此服务的 1 个处理程序…
命令执行成功
上面有个状态是unknown的,不过不影响使用
可以登录sqlplus了:
sqlplus sys/passw0rd as sysdba
qisnow:admin oracle$ sqlplus sys/passw0rd as sysdba
SQL*Plus: Release 10.2.0.4.0 – Production on 星期三 3月 23 22:27:12 2011
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。
SQL> select sysdate from dual;
SYSDATE
————
23-3月 -11
关闭数据库:
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
停止监听:
qisnow:admin oracle$ lsnrctl stop
LSNRCTL for MacOS X Server: Version 10.2.0.4.0 – Production on 23-3月 -2011 21:47:24
Copyright (c) 1991, 2007, Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
命令执行成功
安装完成之后isqlplus已经启动了,可以通过http://qisnow.local:5560/isqlplus访问
启停命令:
isqlplusctl start
isqlplusctl stop
至此安装完成,使用PL/SQL远端链接数据库报错如下:
ERROR:
ORA-27101 Shared memory realm does not exist
ORA-01034 ORACLE not available
基本解释:
Error: ORA-27101
Text: shared memory realm does not exist
-------------------------------------------
Cause: Unable to locate shared memory realm
Action: Verify that the realm is accessible
解决方法:
原因:
ORACLE_HOME或者ORACLE_SID设置不正确。
在以前的版本中,如果ORACLE_SID不正确,一般都只提示ORA-01034。Oracle 8.1.7 给出一个额外的信息:ORA-27101。
->如果是Unix,在Shell里把ORACLE_SID设置正确即可(注意大小写敏感的问题)。
此外,检查ORACLE_HOME环境变量。如何检查参考如下的命令
% echo $ORACLE_SID
% ps -ef |grep smon
->如果是Windows,一般都是因为系统中有多个实例造成的。
可以在命令行下 C:\>set ORACLE_SID=DEMO
把这里的DEMO换为你相应的实例名。
如果还不行的话,检查注册表中的ORACLE_HOME。
此外,在Windows环境下有的时候连接不上远程的数据库,会报告如此的错误。
解决办法是把sqlnet.ora文件中的(查看客户端)
SQLNET.AUTHENTICATION_SERVICES = (NTS) NTS换为NONE。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16381228/viewspace-716310/,如需转载,请注明出处,否则将追究法律责任。