/ 中存储网

SUSE Linux安装Oracle 10g及问题解决

2015-09-23 00:00:00 来源:中存储网

总结了自己在RedHat5.5和SUSE Linux 10.1上装Oracle 10g的经验。

SUSE10安装了OraRun的时候,会自动建oracle用户,oinstall组和dba组,在etc/profile.d/目录下面生成oracle.sh脚本(设置ORACLE环境变量),在etc/sysconfig目录下生成名为“oracle”的文件(配置文件)。安装前用户需要先手动修改etc/passwd文件中oracle用户的默认shell,本人修改后为 oracle:x:103:108:Oracle user:/opt/oracle:/bin/bash ,然后root身份执行 “ passwd oracle”为其设置密码,再用oracle进入安装。

虽说Orarun号称Oracle安装的懒人包,不行的是第一次用倒惹来很多麻烦。觉得不如不用,毕竟最好是自己掌握安装的信息。主观以为Orarun会代替我们配置内核参数,但貌似不然,否则咱咋没见过有让我们选择内核参数的东西,难道Orarun用的内核参数都是统一的么。SUSE10下面没见/etc/sysctl.conf里面有内核共享内存方面的配置。但是肯定有一个地方决定这些内核参数的值。哪位大神能解答,希望留言赐教。暂时建议大家手动填写sysctl.conf中的内核参数,以便清晰自己系统当前内核参数是如何。

如果安装界面为乱码:修改环境变量 export LANG=CN 或者 export LANG=EN

问题1:dhcp问题

Checking Network Configuration requirements ...
Check complete. The overall result of this check is: Not executed <<<<

解决方案:

首先确定自己机器是配置的静态IP地址,不要dhcp自动获取。如果不是error而是“1 requirement to be verified ”,就选中上面的框retry一下,可以理解为这里是让用户核实。开始在这里纠结了很久,因为没有理解英文的意思其实。retry之后下一步并没有什么提示就说明正常。重要的是,其实不需要像网上的那样修改hosts文件什么的,反而会越改越错。只要确定配了静态IP就可以了,如果有配置主机和域名的地方,比如开始设置的主机名是ibm,域名是site,建议把域名改为localdomain,个人理解是这样就不需要找什么域名服务器解析site这个域名了。

问题2:版本问题,在操作系统版本检测的时候出现
解决方案:

1 以SUSE10安装Oracle10G为例,oracle不支持SUSE10,修改/etc/SuSe-release文件,改 VERSION=9

2 加参数"-ignoreSysPreReqs"。执行./runInstaller -ignoreSysPreReqs ,忽略预先对操作系统版本的检测。

问题3: "unable to attach to shared memory segment"

解决方案:

权限问题。把 $ORACLE_HOME/bin/目录加上suid权限 ,方法是 chmod u+s -R $ORACLE_HOME/bin/,权限6751oracle。

问题4:ORA-01031:insufficint privileges

解决方案:

问题出现在使用其他用户(非oracle用户)使用时,比如想用其他用户 conn / as sysdba。网上说用grant命令给用户加权限,不过本人用了一种简单粗暴的方法是直接把这个用户加入到dba组,命令:usermod -G dba 用户名 。-G可以设置用户所属组,多个组,-g是用户所属的基本组只有一个。

问题5:ORA-27102 out of memory

解决方法:

先检查本机的内核参数,共享内存大小的参数,cat查看/pro/sys/kernel/下面的文件内容,shmmax共享内存段大小 shmmni共享内存段最大数量 shmall系统一次可以使用的共享内存总量(以页为单位,不小于shmmax/单页大小)。增大系统允许的最大值或者减小oracle要求的内存大小。修改/etc/sysconfig/oracle里面的SHMMAX值。

在SUSE以外的系统安装Oracle,需要手动配置内核参数(虽然在Redhat5上安装的时候我并没有手动配置,因为看了下Redhat5的默认内核配置已经满足Oracle安装需求),内核参数配置文件 /etc/sysctl.conf。

Redhat下的内核配置如下,其他系统可以参考修改部分参数,修改后立即生效命令" sysctl -p ",(读取sysctl.conf文件)

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536

# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 4294967295

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 268435456