首页 > 数据库 > Oracle >

CentOS7_86_64安装Oracle10gR2血泪史

2015-07-24

CentOS7_86_64安装Oracle10g R2血泪史 说明 本人是Linux菜鸟,在安装过程中,其实有些错误可以避免,但因为不了解走了一些弯路,不过自己学到了一些东西。这里整理了下遇到的各种问题和解决方式,是自己的一个

CentOS7_86_64安装Oracle10g R2血泪史

说明 本人是Linux菜鸟,在安装过程中,其实有些错误可以避免,但因为不了解走了一些弯路,不过自己学到了一些东西。这里整理了下遇到的各种问题和解决方式,是自己的一个总结,也希望对需要的人有帮助吧。另外说明下主要流程参考了一位博友的文章,我这里只是结合自己遇到的问题梳理下,博客原文CentOS 6.3(x86_32)下安装Oracle 10g R2。如果你的系统是CentOS6,建议直接参考原文,如果是7,则可以看一下下面的内容。仅供学习之用。

一、硬件要求

1. 内存要求&Swap

EMinimum: 1 GB of RAM

Recommended: 2 GB of RAM or more


Available RAM                Swap Space Required
Between 1G and 2G           1.5 times the size of the RAM
Between 2G and 16G          Equal to the size of the RAM
More than 16G               16GB

检查内存情况

#grep MemTotal /proc/meminfo
#grep SwapTotal /proc/meminfo

2.硬盘
由于CentOS安装后差不多有4~5G,再加上Oracle等等的安装,所以请准备至少10G的硬盘空间。

检查磁盘情况

# df -h

检查磁盘

二、软件

系统平台:CentOS 7.0(x86_64)
Oracle版本:Oracle 10g R2
10201_database_linux_x86_64.cpio
补丁:p6810189_10204
p6810189_10204_Linux-x86-64.zip
注:补丁如果不需要,不用升级也可以,我自己就没有升级。

三、系统安装注意

系统安装时一定要安装桌面模式,否则无法安装oracle,另外请勿开启SELinux,oracle官方不建议使用SELinux,CentOS的防火墙也请暂时关闭,减少安装时的困扰。但是笔者在之前安装CentOS7时,没有点选安全模块,所有系统的防火墙模块没有装,这直接导致后面测试远程连接时花费了我很长时间,详见后面的描述,这里装没装关系不大,装的话按照接下来的步骤关闭防火墙,没装的话可以先忽略。可以使用如下命令查看。

#service iptables status 

为防止Oracle安装过程中出现乱码,建议使用英文作为系统语言,进行Oracle的安装工作。

本文中所描述的系统命令,未经特殊标示,均为“#”代表root权限,“$”代表oracle权限。

四、安装Oracle前的系统准备工作

首先,请先以root账号登入作一些前置设定作业。

1.关闭防火墙、禁用SELinux

1) 重启后生效 (建议使用)

#systemctl enable iptables.service
#systemctl disable iptables.service 

2) 即时生效,重启后失效

#service iptables start 
#service iptables stop 

接下来修改SELINUX=disabled,然后重启。

# vi /etc/selinux/config

这里写图片描述

2.安装依赖包

Oracle10g R2官方文档要求的安装包:
这里写图片描述

查看Oracle相关包是否已经安装,输入如下图中的命令,注意不要输错或者漏输,检查相关的包有没有安装。
这里写图片描述

根据输出的信息,安装缺少的包。这里使用yum安装。具体的因系统内安装的包不同而不同,可能有些读者的已经有了。

# yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat

这里写图片描述<喎"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPjxjb2RlIGNsYXNzPQ=="hljs vala">最后还要安装libXp这个Library,这个一定要安装,否则安装Oracle时会出现java Exception。

# yum install libXp

这里写图片描述

3、创建Oracle用户与组

在这里只讨论单主机环境,不考虑RAC环境的配置。
执行以下指令以新增oracle安装时所需要的使用者与群组。

(1) 建立群组oinstall

# groupadd oinstall

(2) 建立群组dba

# groupadd dba

(3) 新增使用者oracle并将其加入oinstall和dba群组

# useradd -m -g oinstall -G dba oracle

(4) 测试oracle账号是否建立完成

# id oracle

(5) 建立oracle的新密码

# passwd oracle

这里写图片描述

4.将oracle使用者加入到sudo群组中

# vi /etc/sudoers

找到

root        ALL=(ALL)        ALL 

这行,并且在底下再加入

oracle        ALL=(ALL)        ALL

输入wq!(由于这是一份只读文档所以需要再加上!)并且按下Enter
这里写图片描述

5.配置系统内核参数

# vi /etc/sysctl.conf

添加以下内容:

kernel.shmall = 4294967296 //表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改
kernel.shmmax = 68719476736 //定义了共享内存段的最大尺寸(以字节为单位)。缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G
kernel.shmmni = 4096 //用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改
kernel.sem = 250 32000 100 128 //表示设置的信号量
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=4194304 //默认的接收窗口大小
net.core.rmem_max=4194304 //接收窗口的最大大小
net.core.wmem_default=262144 //默认的发送窗口大小
net.core.wmem_max=262144 //发送窗口的最大大小
vm.hugetlb_shm_group=501 //这里501是oracle用户组dba的gid,原文这里没有配置,这里一定要配置,要不然后面每次重启后,启动oracle实例都会碰到一个错误,具体的在下文会说到。

会有一些与目前的参数重复的,就修改成文件上提供的。
这里写图片描述

编辑完之后,储存,然后执行:

# sysctl -p

启用刚刚所做的变更。
这里写图片描述

6、编辑/etc/security/limits.conf

# vi /etc/security/limits.conf

添加以下四行
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
这里写图片描述

7、编辑/etc/pam.d/login

# vi /etc/pam.d/login

添加以下两行
session required /lib64/security/pam_limits.so
session required pam_limits.so
这里写图片描述

8、修改/etc/profile

# vi /etc/profile

将以下代码新增到profile档案中。添加代码的时候,千万注意,在这里的语法中,if和[]之间,还有=两边,都是需要空格的,如果不加空格,之后执行到这里的代码的时候会报错。

if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi 

这里写图片描述

9、修改Linux发行版本信息

由于Oracle 10g发行的时候,CentOS 6/7没有发行,所以Oracle 10g并没有对CentOS 6/7确认支持,需要修改文件让Oracle 10g支持CentOS 6/7。
我们需要手工修改Linux的发行注记,让Oracle 10g支持CentOS 6/7。
编辑/etc/redhat-release文件

# vi /etc/redhat-release

将其中的内容CentOS Linux release 7.1 .1503(Core)修改为redhat 4。下图中为博原文图片,这里修改方式一样。
这里写图片描述

10、创建Oracle安装文件夹以及数据存放文件夹

#mkdir /opt/oracle
#mkdir /opt/oracle/102
#chown -R oracle:dba /opt/oracle

这里写图片描述

11、配置Linux主机
检查/etc/hosts文件中是否有localhost的记录(指向127.0.0.1即可),若没有的话,在后面配置Oracle监听的时候会出现一些问题,导致无法启动监听,在此手工添加此记录即可。
这里写图片描述

第一阶段到此完毕,接下来,完成这些设定之后,请先注销root账号,并且以oracle账号再次登入系统。

12、配置oracle用户环境变量

$ cd /home/oracle
$ vi .bash_profile

修改并加入以下內容

ORACLE_BASE=/opt/oracle                      //上面创建的Oracle安装文件夹
ORACLE_HOME=$ORACLE_BASE/102
ORACLE_SID=orcl
LD_LIBRARY_PATH=$ORACLE_HOME/lib
PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH PATH

这里写图片描述

保存后使用如下命令,使设置生效:

$ source /home/oracle/.bash_profile

五、安装Oracle,并进行相关设置

1.解压缩安装文件

将下载的10201_database_linux_x86_64.cpio放至即将安装oracle的文件夹/opt/oracle
回到终端模式并且进入到oracle文件夹:

$ cd /opt/oracle

解压缩10201_database_linux_x86_64.cpio

$ cpio -idmv < 10201_database_linux_x86_64.cpio

接着会看到一连串的解压缩动作。
这里写图片描述

解压缩完成会在同一个文件夹中看到database的文件夹,请进入到database文件夹中:

$ cd database

2.准备执行数据库安装

如果你的centos是中文环境,安装时会出现中文乱码,请下以下指令

$ export LANG=en_US

接着执行

$ ./runInstaller

这里写图片描述

到这里为止,可能会遇到如下几个错误:

(1)报异常,无法看到安装界面,请使用root帐户执行如下命令后再运行安装程序:

Can&rsquo;t connect to X11 window server using &lsquo;:0.0&rsquo;

(2)报java异常,大概是找不到libXp

Exception in …… /lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory

不同机器可能因之前做过不同的设置,这里遇到的异常顺序可能不一样,下面按照原文的顺序说明,读者按需查看。

对于第一个问题,切换到root下执行以下命令

# su root // 输入密码步骤省略

# export DISPLAY=:0.0 //注意=两边无空格,:两边也没有。
# xhost + 127.0.0.1 
$ ./runInstaller

上述代码是按照原文加上网上查阅的资料整理的,没有经过实际测试,因为我已经装好啦。我是按照另一种方式的,直接重启机器,然后用oracle用户登录,就可以了,因为之前自己一直用的admin账户登录,而且执行上面的代码忘了切换root,所以没能按照上面的解决方式解决,只好重启机器,用oracle账户登录。不过登录后执行安装前别忘了执行一下下面的指令,防止乱码。

$ export LANG=enUS 

对于第二个问题,解决方式比较简单。

首先报异常Exception in …… /lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory
这里写图片描述

解决:

# yum -y install libXp.i686

分析:看报错信息”/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory”,libXp需要安装i386的包,而不能安装X64的包。上面认为64位的linux需要安装64位的libXp包,所以导致这个问题。

再次执行

$ ./runInstaller

遇到错误:Exception in …… /lib/i386/libawt.so: libXt.so.6: cannot open shared object file: No such file or directory
这里写图片描述

解决:

# yum -y install libXt.i686

再次执行

$ ./runInstaller

遇到错误:Exception in …… /lib/i386/libawt.so: libXtst.so.6: cannot open shared object file: No such file or directory
这里写图片描述

解决:

# yum -y install libXtst.i686

再次执行

$ ./runInstaller

开始执行安装程序。
这里写图片描述

由于相关的前置作业已经在之前做好了,在这个步骤只需要将UNIX DBA Group选择为dba以及输入SYS, SYSTEM等账号共享的database Password即可。
:笔者在走到这个步骤时,其实安装界面里面的Oracle Home Location包括之后的一些路径都和图中不太一样,不过没关系,为了保证之后的路径一直,方便学习,这里可以手动修改为和图中一样的路径,前提是你前面也建立了路径/opt/oracle/102。后面的一些设置也类似。

然后选择Next即可。

这里写图片描述

同样的,将路径设置为图中路径,将群组选择为dba群组,按Next

在这个步骤中,请点选Checking Network Configuration requirements为User Verified,接着按下Next
这里写图片描述

最后出现Install Summary画面,此时只要按下Install按钮,系统即开始安装。

这里写图片描述

安装过程…
这里写图片描述

安装进度大约到65%时会有错误提示:

Error in invoking target &lsquo;collector&rsquo; of makefile
&lsquo;/opt/oracle/102/sysman/lib/ins_emdb.mk&rsquo;.

这里写图片描述

同时oraInventory/logs/目录下的安装日志文件里面会有如下类似错误提示:
这里写图片描述

这是oracle安装程序的一个bug,可以忽略此错误继续安装,对系统没什么影响。

在Configuration Assistants 时会出现错误提示:

OUI-25031:Some of the configuration assistants failed.

这里写图片描述

分析:主机名映射错误

解决:修改/etc/hosts文件,增加IP地址与主机名的映射如下:
这里写图片描述

接着可能会遇到错误提示(未遇到可以忽略,也可以看一下不遇到的原因):

ORA-27125:unable to create shared memory segment

这里写图片描述

为什么这里说可能,因为这个错误的解决方式就是(下面两个小步骤先不要执行,读一下后面的说明先):
(1) 确定安装oracle所使用的用户组

# id oracle

可以看到oracle组dba id 为501。

(2)修改内核参数

echo "501" >/proc/sys/vm/hugetlb_shm_group

就可以了。
这里写图片描述

说明:这个过程我们可能并不会再遇到,因为之前在安装准备工作时,我们已经将该步骤执行过了。

之所以在前面就将该参数配置好,

vm.hugetlb_shm_group=501 //这里501是oracle用户组dba的gid,原文这里没有配置,这里一定要配置,要不然后面每次重启后,启动oracle实例都会碰到一个错误,具体的在下文会说到。

是因为原文这里提供的解决方式,在每次重启之后,又得执行一次,否则失效,还会遇到这个问题,包括后面安装好之后,启动数据库实例,也会遇到这个问题。但是在前面在内核参数里添加之后,便一劳永逸了。
大家这里可以执行以下下面的命令看下,如果前面设置了,这里应该是dba的用户组id而不是0。

echo /proc/sys/vm/hugetlb_shm_group

跳过这个梗。

安装到数据库设置助理,可以在这边选取password management作密码的修改,如不需要修改,只需要按下ok按钮即可。

这里写图片描述

安装完成前,出现以下的设置脚本:

这里写图片描述

开启一个新的终端,su到root。

将要求执行的两段script依序执行。

/opt/oracle/oraInventory/orainstRoot.sh
/opt/oracle/102/root.sh

这里写图片描述

执行画面如上图。
执行完后,回到安装窗口按下OK完成所有的oracle安装。安装完成会出现以下画面。
这里写图片描述

此时,您可以以上述网址,作为测试,登入账号可以为sys或system
http://CentOS-Oracle:5560/isqlplus
http://CentOS-Oracle:5560/isqlplus/dba
http://CentOS-Oracle:1158/em

这里写图片描述

以上画面都成功代表oracle已经正常安装了。

原博文到这里还没有结束,后面又对oracle进行了升级,如果有需要的可以去原文参考,因为我没测试,这里就不搬过来了,传送门:

如果后面我也升级了,再来整理下centos7下的与原文的出入的地方。同时后面还会写一篇关于设置开机自启动的文章,也因为centos7和6的不同的原因饶了一些弯路,有需要的到时候可以去看看。

相关文章
最新文章
热点推荐