SuSE 9.1 专业版是前一段时间发布的。SuSE公司是欧洲的一个重要的Linux厂商。Suse Linux一直以界面华丽而著称。其实,SuSE Linux的一个很引人注目的地方就是对Oracle的支持一向不错。
在SuSE以前的几个版本中,都针对Oracle有过专门的改进,安装起来也比较的方便,一般用户只需要安装一个RPM包即可搞定。不过目前的9.1版本是否支持Oracle 10g还没有官方声明。经过笔者测试,发现Oracle 10g在SuSE上可以运行的很好。
SuSE Linux 9.1 采用的是2.6( 2.6.4-52)的核心。这是笔者要对其测试的一个重要原因。这个版本KDE是3.2版本的,GUI足够华丽, 不过这个和我们今天的这个主题关系不大。对SuSE新特性感爱好的读者可以先去看一下这个Links: http://www.suse.com/us/private/prodUCts/suse_linux/prof/new_features.Html 。此外,SuSE集成了 LVM2。LVM对维护上带来了不少方便,从某种意义上说提高了系统可用性。2.6核心 + LVM2 + 10g--还真的蛮吸引人的。
安装之前,先去Suse的Oracle支持站点看看: http://www.suse.com/en/business/certifications/certified_software/oracle/documents.html 。虽然没有直接针对Oracle 10g 的资料,不过一些文档也是非常有参考价值的哦。还有http://otn.oracle.com 上的支持文档,也应该是必读之物。
一 预备工作
先检查操作系统软件包是不是已经安装齐备。也就是属于开发环境的那些东西,Gcc 、binutils 、make等等,假如没有安装的话,可以通过yast2工具来进行安装,仔细选好软件,按照提示依次插入各安装盘即可。
参考http://www.dbanotes.nethttp://oracle.chinaitlab.com/Install-Oracle10g-RHEL3.htm 这里的信息。(另外, 在该Link还可以找到其它的一些有用的Link)。
接下来我们创建用户和相关的组,调整用户的环境变量:
eXPort ORACLE_BASE=/u/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1
export ORACLE_SID=TEST
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
创建目录,检查核心参数。SuSE上我没有发现 sysctl.conf 文件。自己创建之。内容如下:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
然后sysctl -p 确定一下。在这里要注重的一点是在系统重新启动之后不能自动读取我们创建的文件。 可以考虑
#chkconfig boot.sysctl on
或者是利用SuSE 的Yast 工具来设置。
二 安装软件
安装之前要进行一下处理。因为runInstaller所需要的配置文件oraparame.ini 中没有提到SuSE ,所以,预检查的时候会报告错误。
我们采取调整该文件的办法.具体参考: http://www.dbanotes.nethttp://oracle.chinaitlab.com/10G-Beta-Install-Bug.htm
vi oraparam.ini
找到
[Certified Versions]
Linux=redhat-2.1,UnitedLinux-1.0,redhat-3
修改成
[Certified Versions]
Linux=redhat-2.1,UnitedLinux-1.0,redhat-3,SuSE-9.1
然后运行./runInstaller
假如不能出现X安装界面,注重DISPLAY环境变量的设置。以后一路是图形文件。不多说了。注重,在安装的时候不要创建数据库。
三 创建实例
运行dbca ,创建实例。不过,在这里一个比较令人头疼的问题。图形化创建实例总是报告: ORA-27125:unable to create shared memory segment. 检查核心参数,没有发现问题。后来经过网络上的交流得知:Linux 2.6内核有个特性:Huge TLB支持。该特性默认条件下是激活的。
相关解释:
By default only root has permission to allocate shared memory with this option (SHM_HUGETLB) and Oracle 10g defaults using it, so Oracle fails to allocate the SGA.This capability is supposed to be able to controlled with the setcaps program (CAP_IPC_LOCK), but I couldn't get it to work properly. The solution is either to set DISABLE_HUGETLBFS=1 before you start Oracle or to recompile the kernel without CONFIG_HUGETLB_PAGE and CONFIG_HUGETLBFS configuration parameters.
要解决该问题,在Oracle用户下执行 $export DISABLE_HUGETLBFS=1(初稿这里有误) 注(2004年9月19日):本文最初描述的有问题,一般来说执行如下的操作比较稳妥:
linux: # cd $ORACLE_HOME/bin
linux: # mv oracle oracle.bin
cat >oracle <<"EOF"
#!/bin/bash
export DISABLE_HUGETLBFS=1
exec $ORACLE_HOME/bin/oracle.bin $@
EOF
linux: # chmod +x oracle
这是因为类似dbca这样的Java应用不能把 DISABLE_HUGETLBFS=1传递给oracle执行程序。
具体信息可参考URL:http://www.gesinet.it/oracle/hugetlb.html还有下面的参考URL.
然后再次运行dbca 。假如碰到问题的话,最好是定制库,最后选择"生成脚本" (当然,可以自己写脚本建库,不过用图形工具方便一些) 。运行脚本创建实例。不出意外的话,这次应该没有问题了。
安装数据库只是学习Oracle 10g的一个序曲。别等待,开始探索10g 的众多特性吧!