昨天去一客户那里安装11g数据库,把整个安装过程和遇到的一些问题做个记录,分享一下。由于该客户无法用自己的机器远程连接到服务器,也不允许通过U盘、移动硬盘等拷贝任何文件,因此一些记录内容无法做到很详尽,只能凭记忆大致写出。
主机:SUN Netra T4-1 M4000 CPU:8 core 2.85GHz 内存:32G 系统:Solaris 10
一、检查硬件要求

--查看内存
# /usr/sbin/prtconf | grep "Memory size" Memory size:32768 Megabytes
# /usr/sbin/swap -l swapfile dev swaplo blocks free /dev/dsk/c0t0d0s1 32,9 16 8405360 8405360 --一个block是512k,因此这里是4G
--查看系统体系架构 # /bin/isainfo -kv 64-bit sparcv9 kernel modules
注意,如果了solaris x86的介质,是无法安装在sparc主机上的,并且sparc介质只能装在真实机上,无法模拟
--查看磁盘可用空间 # df -k /tmp 需要至少超过1G,目前30G
# df -k 安装Oracle企业版需要4.68G的空间,目前197G
二、检查软件要求
--查看Solaris内核版本 # uname -r 5.10
$ cat /etc/release Solaris 10 5/09 s10s_u7wos_08 SPARC
--需要安装的包的list SUNWarc SUNWbtool SUNWhea SUNWlibC SUNWlibm SUNWlibms SUNWsprot SUNWtoo SUNWi1of SUNWi1cs (ISO8859-1) SUNWi15cs (ISO8859-15) SUNWxwfnt SUNWcsl
--检查包 # pkginfo -i SUNWarc SUNWbtool SUNWhea SUNWlibC SUNWlibm SUNWlibms SUNWsprot SUNWtoo SUNWi1of SUNWi1cs SUNWi15cs SUNWxwfnt SUNWcsl
如果检查发现有未装上的,挂载安装盘进行安装,用pkgadd命令
--安装包 pkgadd -d /path SUNWarc SUNWbtool SUNWhea SUNWlibC SUNWlibm SUNWlibms SUNWsprot SUNWtoo SUNWi1of SUNWi1cs SUNWi15cs SUNWxwfnt SUNWcsl
/path为光盘挂载的路径
三、创建用户、用户组
Oracle软件安装需要以下几组用户: The Oracle Inventory group (typically, oinstall) The OSDBA group (typically, dba) The Oracle software owner (typically, oracle) The OSOPER group (Optional. Typically, oper) -- oper组为可选的
--查看oinstall组信息 # more /var/opt/oracle/oraInst.loc inventory_loc=/oracle/oraInventory inst_group=oinstall
--查看dba组信息 # grep dba /etc/group dba::100:wcadmin,oracle
--添加组 # /usr/sbin/groupadd oinstall # /usr/sbin/groupadd dba
--查看oracle用户的权限组 # id -a oracle uid=103(oracle) gid=102(oinstall) groups=100(dba)

注意,不带-a参数看不到最后一项内容,如 # id oracle
uid=103(oracle) gid=102(oinstall)

--添加oracle用户到oinstall与dba组 # /usr/sbin/useradd -g oinstall -G dba oracle

--添加密码文件 # passwd -r files oracle 需要输入密码并确认
四、配置OS内核参数
--修改/etc/system
set noexec_user_stack=1 set semsys:seminfo_semmni=100 set semsys:seminfo_semmns=1024 set semsys:seminfo_semmsl=256 set semsys:seminfo_semvmx=32767 set shmsys:shminfo_shmmax=4294967296 --实际值需大于SGA的值 set shmsys:shminfo_shmmni=100
注意solaris 10上默认没有安装vim,可以使用vi或gedit,修改各参数值以达到安装所需的最低要求 /etc/system实际已经存在的值要比上面多,只修改罗列出的即可
--查看project id # su - oracle
$ id -p uid=103(oracle) gid=102(oinstall) projid=3(default)
这里与官方文档里面的值由出入,是default而不是group.dba,不过不影响顺利安装
--查看project # cat /etc/project
system:0:::: user.root:1:::: noproject:2:::: default:3:::: group.staff:10:::: group.dba:100:Oracle default --如果没有最后一行内容,需手动添加
五、创建相关路径并赋予oracle读写权限
# mkdir -p /oracle # chown -R oracle:oinstall /oracle
# chmod -R 775 /oracle
六、配置环境变量
--查看shell类型 $ echo $SHELL
/bin/sh
--修改环境变量 solaris的环境变量文件是./.profile,注意与Linux的bash shell中的.bash_profile不同 如oracle用户的环境变量为/home/oracle/.profile # su - oracle $ TMP=/tmp $ TMPDIR=/tmp $ export TMP TMPDIR $ ORACLE_SID=orcl
$ ORACLE_BASE=/oracle $ export ORACLE_SID ORACLE BASE $ DISPLAY=192.168.1.181:0.0 --注意这里的ip地址为有图形界面的主机,不是db服务器 $ export DISPLAY $ umask 022
--确保未设置ORACLE_HOME和TNS_ADMIN环境变量(Oracle建议) $ unset ORACLE_HOME
$ unset TNS_ADMIN
--设置完以上变量以后,可以用env命令查看一下 $ env | more
注意,这只是在当前session有效,并没有写入到.profile文件中 如果是通过编辑.profile文件进行修改的,最后用. ./.profile使变更生效,注意,source命令在solaris上不可用
七、拷贝安装介质
# /usr/sbin/mount -r -F hsfs /dev/dsk/c0t0d0s1 /dvd

八、安装软件
# /mount_point/database/runInstaller --如果提示无法找到命令,可以加./后运行 注意,oracle用户必须有挂载目录的读权限,否则运行失败
主要就是以上一些步骤,其实配置起来,我个人觉得要比Linux还要简单,只是可能很多人第一次在solaris上装oracle数据库还不太习惯,万事都有第一回嘛,试着搞一下,就有经验了
在安装数据库时碰到的问题: 1. swap不足 由于物理内存为32G,但目前swap只给了4G,swap -l命令可以查看当前配置的swap大小。 通过添加swap文件并固化,重新运行runInstaller解决
2. 缺少OS相关patch:124861-15 这个包主要是用于 XML Developer’s Kit (XDK),SunOS 5.10 Compiler Common patch for Sun C C++ (optional),注意这里说明是可选的,所以可以选择ignore
解决swap不足后并忽略缺少patch的报错后,顺利安装完数据库软件,接着就是dbca,与在其他平台上的步骤一致,就不详细说明了
附录:solaris解决swap不足的方法:
一、增加Swap
1. 成为超级用户 $su - root
2. 创建swap文件 #mkfile nn[klblm] /path/filename 如:#mkfile 100m swapfile
3. 激活swap文件 #/usr/sbin/swap -a /path/filename
swap文件必须以绝对路径来指定,filename指的是上一步创建的文件
4. 固化swap,在/etc/vfstab文件中记录文件的名字和Swap类型,如: /path/filename - - swap - no -
5. 效验Swap文件是否加上 /usr/sbin/swap -l

二、删除swap
1. 成为超级用户 $su - root
2. 使用swap -d 命令收回swap空间#/usr/sbin/swap -d /path/filename
3. 编辑/etc/vfstab文件,去掉此swap(交换)文件的实体
4. 从文件中回收此文件#rm swap filename
5. 当然,如果此swap(交换)空间不是一个文件,而是一个分区,则需创建一个新的文件系统,再挂接到原来的文件系统上。