Installing Oracle11gR2 on Solaris10

实际上Oracle11gR2真的在安装上花了不少心思,虽然目前在除了Linux平台的其它操作系统上都还有这样那样的小问题,但是确实已经很方便了。

如果要在Solaris10中安装Oracle11gR2的单机数据库,只需要以下简单的步骤。

1. 保证/tmp文件系统大于1G
在Soalris10中默认/tmp使用的是swap空间,因此在安装操作系统的时候给swap足够大的空间,比如4G或者8G

2. 添加组和用户(只需要最简单的dba组)

# groupadd dba
# useradd -g dba -d /export/home/oracle -m oracle

3. 修改操作系统内核参数(只需要修改shmmax,这里修改为4G)

# projadd -U oracle -K \
  "project.max-shm-memory=(priv,4096MB,deny)" user.oracle

4. 使用磁盘c1t1d0和c1t2d0创建zfs文件系统(ZFS非常方便,自动mount,不再需要修改vfstab文件)

# zpool create orapool c1t1d0 c1t2d0
# zfs set mountpoint=/oracle orapool

5. runInstaller

6. 安装完毕以后再去设置oracle用户的.profile环境变量

How to modify SHMMAX on Various Solaris Platform

在Solaris平台上安装Oracle可以说是最简单的,几乎不需要打任何操作系统Patch,仅仅是需要设置一下操作系统内核参数,比如共享内存最大值等。

在Solaris8中,需要在/etc/system文件中添加如下行:

set shmsys:shminfo_shmmax=4294967296
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmseg=10
set shmsys:shminfo_shmmni=100
set semsys:seminfo_semmns=1000
set semsys:seminfo_semmni=100
set semsys:seminfo_semmsl=250

在Solaris9中,需要在/etc/system文件中添加如下行:

set shmsys:shminfo_shmmax=4294967296
set shmsys:shminfo_shmmni=100
set semsys:seminfo_semmns=1000
set semsys:seminfo_semmni=100
set semsys:seminfo_semmsl=250

在Solaris10中,不需要修改/etc/system,而是使用projmod命令。

$ su - root
# projmod -sK "project.max-shm-memory=(privileged,4G,deny)" group.dba
# cat /etc/project
# su - oracle
$ prctl -n project.max-shm-memory -i process $$

关于更详细的System V IPC参数信息,可以参看:System V IPC Configuration
关于更详细的如何管理Resource Controls,可以参看Administering Resource Controls

Issues about oracle bin file s bit not set

很早之前记录过一个问题 – oracle可执行文件s位导致的Cluster资源组无法正常启动的问题解决

今天在另外一个客户处又出现了同样的问题,解决方法一样,但是问题现象却不一样,着实折腾了很久。问题现象是,启动数据库没有任何报错,启动监听也没有任何问题,lsnrctl services命令显示一切正常,但是在远程客户端通过监听登陆数据库,第一次会报Oracle not available的错误,之后再次尝试会报TNS-12516错误, “TNS:listener could not find instance with matching protocol stack”,此时再次检查lsnrctl services,会发现监听的状态变为blocked。

同样是使用tar包安装的Oracle9i软件,同样是在Solaris 9中,似乎这是Solaris系统中tar命令的一个毛病。

最后执行chmod解决问题。

chmod u+s,g+s $ORACLE_HOME/bin/oracle