Linux安装Oracle11gR2

CentOS7.6 Oracle11.2.0.4

Posted by wangtiegang on October 13, 2019

最近两天在Linux上折腾安装Oracle数据库,本来保险起见应该叫dba来安装的,但是最后这个事情落到了我头上,只能拿着一个相近的文档边安装边学习了,此文详细记录安装过程。

安装信息

  • 操作系统:CentOS 7.6
  • Oracle版本:11g 11.2.0.4

操作系统环境准备

/etc/sysctl.conf设置(root)

修改系统内核参数,在/etc/sysctl.conf中添加以下内容

1
2
3
4
5
6
7
8
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 256 32000 100 142
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 = 1048586

安装依赖包(root)

1
yum install -y gcc libaio glibc.i686 compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf-devel glibc-devel glibc-headers gcc-c++ libaio-devel libaio-devel.i686 libgcc.i686 libstdc++ libstdc++.i686 unixODBC unixODBC.i686 unixODBC-devel unixODBC-devel.i686 ksh

用户组和用户创建(root)

1
2
3
4
groupadd oinstall
groupadd dba 
useradd -g oinstall -g dba -m oracle
passwd oracle

设置/etc/security/limits.conf(root)

在文件尾追加如下内容,修改限制,增加oracle性能

1
2
3
4
5
6
@dba hard nofile 65536
@dba soft nofile 65536
@dba hard nproc 16384
@dba soft nproc 16384
@dba hard stack 16384
@dba soft stack 10240

配置/etc/hosts(root)

设置host是为了安装oracle使用别名,方便以后切换ip

1
10.xxx.xx.78 erpuatapp.xx.xxx.com erpuatapp

在/home/oracle下创建11g.env(oracle)

在11g.env中配置一些环境变量信息,然后加入oracle的.bash_profile文件,这样在登陆oracle用户时就会自动应用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Vi 11g.env

# 文件添加如下内容
# oracle
ORACLE_BASE=/data/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_HOME
ORACLE_SID=FINTEST
export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/X11R6/lib:/usr/openwin/lib:$ORACLE_HOME/lib:/usr/dt/lib:$ORACLE_HOME/ctx/lib
export LD_LIBRARY_PATH
NLS_LANG="American_America.AL32UTF8"
export NLS_LANG
NLS_DATE_FORMAT="DD-MON-RR"
export NLS_DATE_FORMAT
NLS_NUMERIC_CHARACTERS=".,"
export NLS_NUMERIC_CHARACTERS
NLS_SORT="binary"
export NLS_SORT
export PATH=$ORACLE_HOME/OPatch:$PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin

编辑 .bash_profile文件,在末尾加入

1
. $HOME/11g.env

设置oraInst.loc(root)

创建文件/etc/oraInst.loc,加入内容

1
2
inventory_loc=/data/oracle/oraInventory
inst_group=dba

以oracle用户创建inventory目录

1
2
mkdir -p /data/oracle/oraInventory
chmod 777  /data/oracle /oraInventory

上传安装文件

安装介质 p13390677_112040_Linux-x86-64_1of7.zip p13390677_112040_Linux-x86-64_2of7.zip

OPatch更新包 p6880880_112000_Linux-x86-64.zip

补丁包 p24006111_112040_Linux-x86-64.zip

配置vnc服务

安装数据库的方式有多种,图形化安装,静默安装,克隆安装。如果有图形化界面辅助就会简单很多,因此需要开启服务器vnc服务。

在这一步浪费了非常多的时间,本来安装vnc服务非常简单,但是这台服务器的 /usr 等系统目录只有2G大小,随便安装一些包就只剩200M空间了,在yum安装vnc的时候默认目录空间不足,无法安装。于是我只能指定安装目录,安装完成之后,将指定目录的/bin,/lib等目录配置到系统,启动vnc的时候出现了各种错误,一时无法解决,最后求助于dba,dba一开始建议重装系统,因为系统盘划分的太不合理了,但是服务器上已经有其他服务了,所以没有采用,最后采用了另外一种方法。

  • 找一台安装了vnc的服务器A,使用vnc连接
  • ssh到服务器B上,执行 export DISPLAY=ip:1.0,ip为A服务器,1.0为A服务器开启的vnc桌面编号,将图形化界面传送到A服务器
  • 在A服务器的命令窗口中执行 xhost + 给其他机器授权
  • 然后在B服务器执行安装命令,图形界面就可以传到A的vnc了

Oracle安装

解压p13390677_112040_Linux-x86-64_1of7.zip,p13390677_112040_Linux-x86-64_2of7.zip

1
2
cd /home/oracle_soft/database
./runInstaller

从A的vnc界面操作

选择不接收更新 oinstall-1 oinstall-2 oinstall-3 oinstall-4 oinstall-5 oinstall-6 oinstall-7

目录为oracle安装路径,跟11g.env中一致 oinstall-8

选择安装组为dba组,OSOPER为空 oinstall-9 oinstall-10

忽略检查警告 oinstall-11 oinstall-12 oinstall-13 oinstall-14

安装过程中会有一个报错,先去服务器上修改配置,再点击retry

1
Exception String: Error in invoking target 'agent nmhs' of makefile '/data/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk'

oinstall-15

编辑/data/oracle/product/11.2.0/dbhome_1/sysman/lib/ ins_emagent.mk 文件,在$(MK_EMAGENT_NMECTL)后面增加 –lnnz11,然后retry,问题解决,继续安装。

oinstall-16

此处需要使用root用户去执行提示中的脚本文件 oinstall-17

默认[/usr/local/bin]不变,直接回车,然后按提示选择y或n直到完成 oinstall-18

此时数据库安装完成 oinstall-19

安装官方补丁

11g安装补丁前需要先更新opatch版本

备份OPatch目录

mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch.pre6880880

将新的OPatch版本解压到安装目录

unzip -d $ORACLE_HOME p6880880_112000_Linux-x86-64.zip

验证版本是否更新 oinstall-20

解压补丁包

unzip p24006111_112040_Linux-x86-64.zip

cd 24006111/

打补丁前检查是否存在补丁冲突:

1
2
export PATH=$PATH:$ORACLE_HOME/OPatch
opatch prereq CheckConflictAgainstOHWithDetail -ph ./

oinstall-21

应用补丁

opatch apply

如果报错

1
2
Missing command :fuser
Prerequisite check "CheckSystemCommandAvailable" failed.

oinstall-22

则需要使用root安装psmisc依赖,安装完成重新执行opatch apply

yum install -y psmisc

创建数据库

1
2
cd $ORACLE_HOME/bin
./dbca

oinstall-23 oinstall-24 oinstall-25

输入数据库名和SID

oinstall-26

oinstall-27 oinstall-28

设置密码

oinstall-29 oinstall-30

选择数据文件存储目录 oinstall-31 oinstall-32

oinstall-33 oinstall-34 oinstall-35

这个大小可以根据服务器内存大小合理设置,一般加起来不超过总内存70%

oinstall-36 oinstall-37

oinstall-38 oinstall-39 oinstall-40

将控制文件放在同一路径下:

oinstall-41

修改所有的redo log的File Size为200M

oinstall-42 oinstall-43 oinstall-44 oinstall-45 oinstall-46

至此数据库创建完成。

数据库监听设置

创建listener和配置TNS

1
2
cd $ORACLE_HOME/bin
./ netca

oinstall-47

oinstall-48 oinstall-49 oinstall-50 oinstall-51 oinstall-52 oinstall-53 oinstall-54 oinstall-55 oinstall-56 oinstall-57

此处配置hosts中的名称

oinstall-58 oinstall-59 oinstall-60 oinstall-61 oinstall-62 oinstall-63

设置local_listener

1
2
3
4
sqlplus /nolog
conn / as sysdba
Alter system set local_listener=FINTEST scope=both;
alter system register;

重启数据库

1
2
3
4
5
6
7
8
9
10
11
#停止:
lsnrctl stop FINTEST
sqlplus /nolog
conn / as sysdba
shutdown immediate

#启动
lsnrctl start FINTEST
sqlplus /nolog
conn / as sysdba
startup

使用plsql连接数据库,测试报错

1
2
ORA-12514: TNS:listener does not currently know of service requested in connect
Descriptor

网上查询之后,修改文件/data/oracle/product/11.2.0/dbhome_1/network/admin/ listener.ora,增加SID_LIST_FINTEST

oinstall-64

然后重启监听问题解决,通常先启动监听,再启动数据库,这个SID_LIST_FINTEST是会动态注册的,但是不知道为什么没有注册成功,所以直接修改文件静态注册。

至此数据库安装,创建数据库全部完成。