此博文主要介绍在CentOS环境中安装Oracle 11g. 系统环境为CentOS7.2。


安装前环境准备

安装所需要的软件包:

yum install binutils compat-libcap1 compat-libstdc++ gcc  gcc-c++  glibc glibc-devel \
 ksh libaio  libaio-devel libgcc libstdc++  libstdc++-devel  libXi  libXtst  make \
 sysstat unixODBC-devel -y
yum install binutils* compat-libcap1* compat-libstdc++* gcc  gcc-c++  glibc glibc-devel*  ksh libaio*  libaio-devel libgcc libstdc++*  libstdc++-devel  libXi*  libXtst  make  sysstat* unixODBC-devel -y


创建用户组和用户:

groupadd -g 502 dba
groupadd oinstall
groupadd -g 504 asmadmin
groupadd -g 506 asmdba
useradd -u 502 -g oinstall -G dba,asmdba oracle

设置用户密码:

passwd oracle

修改内核资源限制,在/etc/security/limits.conf添加如下内容:

* soft nofile 4096
* hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

在文件/etc/pam.d/login文件中增加一行,配置验证登录限制:

session    required     pam_limits.so

修改内核参数,在/etc/sysctl.conf文件中增加如下内容:

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_wmem = 4194304 4194304 4194304

设置使生效: 

sysctl -p

创建Oracle base目录:

mkdir -p /data/app/oracle
chown -R oracle:oinstall /data/app/oracle
chmod -R 775 /data/app/oracle

创建数据库文件目录和快速恢复区目录:

数据文件目录

mkdir /data/app/oracle/oradata
chown oracle:oinstall /data/app/oracle/oradata
chmod 775 /data/app/oracle/oradata/

快速恢复区文件目录

mkdir /data/app/oracle/recovery_area
chown oracle:oinstall /data/app/oracle/recovery_area/
chmod 775 /data/app/oracle/recovery_area


安装库软件

从官网下载Oracle11g,是两个zip压缩文件,下载后在同一个目录中解压这两个文件,会生成一个database的目录。这里使用图形安装的方式,需要在本地配置Xserver,Windows客户端具体配置方式参考此链接:http://tryingstuff.blog.51cto.com/4603492/1958772 

切换到oracle用户,添加环境变量:

export ORACLE_BASE=/data/app/oracle

配置X:

 export DISPLAY=192.168.20.171:0.0

xhost +

access control disabled, clients can connect from any host

执行如下命令进行安装:

# cd database/
# ./runInstaller

1b108ba35033391a95888c9c8ea8a980.jpg


这里可以选择先安装应用再创建数据库,也可以一次性创建数据库,这里先进行安装:


86efa04ab5b0a843ded1240dc07cbe73.jpg

选择单实例,和企业版本后,会根据我们添加的环境变量,找到对应的安装目录:


8b252ce8d8f3d5fb5da81b5b93c07957.jpg


如果安装中出现此错误,需要修改目录权限:

77a9ef5da59fd8214383e8dd7127fbee.jpg

chown  -R oracle:oinstall /data/app

修改权限即可。

如果安装的软件包不符合要求会出现如下提示,可以通过下载这些软件包,强制安装。

e91b5db5ea5e857b32e2a4d34fca9250.jpg


逐以安装缺失的软件包,可以在这里下载缺失的软件包:http://down.51cto.com/data/2339840  

如果要解决依赖关系可以使用如下命令强制安装:

rpm -ivh --nodeps --force  packagename.rpm

如果出现此错误,可以先忽略:

PRVF-7543 : OS Kernel parameter “semmni” does not have proper value on node “hostname” [Expected = “128” ; Found = “0”].  – Cause:  Kernel parameter value does not meet the requirement.  – Action:  Modify the kernel parameter value to meet the requirement.

一般在Link binaries这一步出现错误是,大多数情况是由于部分系统包没有安装成功,需要重新安装所需的包,可以使用如下脚本检测软件包是否装好:

#!/bin/sh 
count=0 
arr=( binutils-2* compat-libstdc++-33* elfutils-libelf-0.* elfutils-libelf-devel-0.* elfutils-libelf-devel-static-0.* gcc-4.* gcc-c++-4* glibc-2.* glibc-common-2.* glibc-devel-2.* glibc-headers-2* kernel-headers-* ksh-* libaio-0.* libaio-devel-0.* libgcc-4.* libgomp-4.* libstdc++-4.* libstdc++-devel-* make-* numactl-devel-* sysstat-* ) 
len=${#arr[@]} 
for((i=0;i<len;i++)); 
do 
        char=${arr[$i]} 
        rpm -qa | grep "^$char" 
        if [ $? != 0 ] ; then 
                error[$count]=${arr[$i]} 
                count=$(($count+1)) 
                echo "+++++++++++++++the ${arr[$i]}^is not installed++++++++++++++++++" 
        fi 
done 
if [ $count -lt "0" ];then 
        echo "You have $count patchs are not installed." 
        echo "the not installed patch is:" 
len1=${#error[@]} 
        for((ii=0;ii<len1;ii++)); 
        do 
                echo "${error[$ii]}^" 
        done 
        echo -e  "Are you sure to install the patch[yes or no]:\c" 
        read select 
        if [ $select == "yes" ]; then 
                for((is=0;is<len1;is++)); 
                do 
                        var=${error[$is]} 
                        rpm -ivh ./patch/$var.rpm 
                done 
        fi 
else 
        echo "++++++++++++++++++++++CHECK PASS!+++++++++++++++++++++++++++" 
fi 
count=0
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat unixODBC unixODBC-devel | grep "not installed"


继续点击下一步,直到安装完成.

安装完成后,按照提示使用root 执行系统给出的脚本:

baf6399160d79ea56b22cea20c97c054.jpg


添加oracle的环境变量:

在oracle用户下修改.bash_profile:

export ORACLE_BASE=/data/app/oracle
export ORACLE_HOME=/data/app/oracle/product/11.2.0/dbhome_1
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin

到此为止,Orace 数据库的软件安装工作就完成了。


启动监听

在oracle 用户下使用netca命令启动监听配置界面:

[oracle@temp-test ~]$ export DISPLAY=192.168.20.171:0.0
[oracle@temp-test ~]$ xhost +
access control disabled, clients can connect from any host
[oracle@temp-test ~]$ netca 
Oracle Net Services Configuration:

58e5cce48fa7cacf5da65403f59e393e.jpg


然后都是用默认配置,监听1521端口。

$ netstat -lntp|grep 1521
tcp6       0      0 :::1521      :::*       LISTEN      22939/tnslsnr

显示监听状态:

[oracle@temp-test ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 02-NOV-2017 18:27:02
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=temp-test)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                02-NOV-2017 18:20:27
Uptime                    0 days 0 hr. 6 min. 38 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /data/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /data/app/oracle/diag/tnslsnr/temp-test/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=temp-test)(PORT=1521)))
The listener supports no services
The command completed successfully


使用DBCA工具创建数据库

dbca是数据库自带的数据库配置助手,可以帮助我们方便的创建数据库,删除数据库,配置数据库。

执行dbca命令:

[oracle@temp-test ~]$ dbca

7c098eabdb0384deabf4b3c0a97db642.jpg

选择创建数据库,选择数据库类型:

1db73960b1a4f1172b470dd7be6f1ec3.jpg


设置数据库的名称和SID为 “orcl”, 设置所有数据库使用相同的密码,这里设置的密码要满足密码复杂度的要求:


9dd25350bc89102423c60106bd0141c8.jpg


 选择数据存放目录:

2759458a6dc2ddf22aa36b71e471a75f.jpg


选择闪回恢复区目录:

4bc8e60f97ddddced72909a60bbc6e77.jpg

选择sample Schemas, 系统会自动配置资源参数,也可以根据自己的需要动态调整,字符集设置为UTF-8:

31f64b1ab9791f2e8668217a961d0dd4.jpg


然后一路默认配置,直到安装完成:

21c9744ee49f3045c93fb1aca94f56c5.jpg

在最后的安装完成界面,数据库会显示详细的数据库信息:

261587e97e83c1a1c4314461fc0f63df.jpg


测试数据库的连接

在配置文件添加环境变量:

vim ~/.bash_profile
 
export ORACLE_SID=orcl
source ~/.bash_profile

登录数据库:

[oracle@temp-test ~]$ sqlplus sys/oracle as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Thu Nov 2 19:40:58 2017
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>

查看数据:

SQL> select name,created,log_mode,open_mode from v$database;
NAME  CREATED   LOG_MODE OPEN_MODE
--------- --------- ------------ --------------------
ORCL  02-NOV-17 NOARCHIVELOG READ WRITE