Linux下 Oracle数据库静默安装

本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 chaodev 即可关注。

文章目录

      • 一、系统环境
      • 二、安装前准备
        • 1、swap分区
        • 2、硬盘空间检查
        • 3、修改主机名称及hosts文件
        • 4、关闭selinux
        • 5、软件包依赖安装
        • 6、新建用户oracle
        • 7、创建数据库相关目录
        • 8、更改目录属主
        • 9、oracle用户加入sudo组
      • 三、配置系统环境
        • 1、修改/etc/sysctl.conf
        • 2、修改操作系统核心参数
        • 3、修改 /etc/pam.d/login
        • 4、修改/etc/profile
        • 5、切换为oracle用户登录
        • 6、配置oracle用户环境变量
      • 四、安装
        • 1、解压
        • 2、切换到oracle用户
        • 3、修改oracle数据库安装应答文件
        • 4、静默安装
        • 5、执行脚本
        • 6、创建数据文件存放目录
      • 五、监听配置及实例配置
        • 1、配置监听
        • 2、生成数据库实例
      • 六、防火墙配置
      • 七、问题及解决方法


一、系统环境

系统:Linux CentOS 7 64位

image.png

Oracle版本:Oracle 11g R2
官网下载地址:https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#11g,下载11g R2 64位版本,两个包都下载,如下:
Linux下 Oracle数据库静默安装_第1张图片


二、安装前准备

1、swap分区

查看 swap 分区空间大小,建议不少于2G,否则需增加 swap 分区

swapsize.png

添加 swap 分区,具体步骤如下

使用dd命令创建名为swapfile 的swap交换文件(文件名和目录任意):

dd if=/dev/zero of=/var/swapfile bs=1024 count=2097152

if:即输入文件 input file
of:即输出文件 output file
dev/zero是Linux的一种特殊字符设备(输入设备),可以用来创建一个指定长度用于初始化的空文件,如临时交换文件。
bs=1024 :单位数据块(block)同时读入/输出的块字节大小为1024 个字节即1KB,bs(即block size)。
count=2097152:数据块(block)数量,也就是 swap 分区的容量。2097152KB=2G。

回车后,会执行2g的读写操作

dd.png

执行完毕后,对交换文件格式化并转换为 swap 分区:

mkswap /var/swapfile

挂载并激活分区:

swapon /var/swapfile

swapon.png

这里提示建议我们使用0600权限,修改权限,如下

chmod -R 0600 /var/swapfile

现在查看swap分区,可以看到已经成功添加

image.png

现在如果系统重启后,分区挂载并不会生效,因此需要设置开机自动挂载该分区,修改 fstab 配置,如下

vim /etc/fstab

在 fstab 文件末尾追加如下内容并保存:

/var/swapfile swap swap defaults 0 0

Linux下 Oracle数据库静默安装_第2张图片


2、硬盘空间检查

查看硬盘空间,建议不要低于5G

df -h

Linux下 Oracle数据库静默安装_第3张图片


3、修改主机名称及hosts文件

3.1 修改主机名称

hostnamectl set-hostname kmvcmdm

image.png

查看主机名
image.png

3.2 修改hosts文件

vi /etc/hosts

内容为:ip 主机名

image.png


4、关闭selinux

输入命令 vi /etc/selinux/config,将 SELINUX 修改为 disabled

Linux下 Oracle数据库静默安装_第4张图片


5、软件包依赖安装

安装oracle之前需要安装许多软件包依赖,如果可用外网,使用如下命令安装

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

查看这些软件包版本,可使用如下命令,如有未安装的会有提示:

rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel

6、新建用户oracle

创建运行 oracle 数据库的系统用户和用户组

groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle

image.png

id oracle查看新建的oracle用户

image.png


7、创建数据库相关目录

创建数据库软件目录和数据文件存放目录,如下

# ORACLE_BASE
mkdir -p /data/oracle

# ORACLE_HOME
mkdir -p /data/oracle/product/112010/db_1

# INVENTORY_LOCATION
mkdir /data/oracle/inventory

# 恢复数据存放目录
mkdir /data/oracle/flash_recovery_area

8、更改目录属主

更改目录属主为 oracle 用户所有

chown -R oracle:oinstall /data/oracle
chmod -R 775 /data/oracle
chown -R oracle:oinstall /data/oracle/flash_recovery_area

9、oracle用户加入sudo组

将 oracle 用户加入到 sudo 组中,获得 sudo 权限,修改 /etc/sudoers 文件

vi /etc/sudoers

添加如下内容

oracle ALL=(ALL) ALL

Linux下 Oracle数据库静默安装_第5张图片


三、配置系统环境

1、修改/etc/sysctl.conf

输入命令: vi /etc/sysctl.conf ,将下列内容加入该文件

fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 1572864
kernel.shmmax = 6442450944
kernel.shmmni = 4096
kernel.sem = 5010 641280 5010 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

执行如下命令使 sysctl.conf 配置生效。

/sbin/sysctl -p

具体参数解释如下:

fs.file-max:系统中可以同时打开的文件数目。
fs.aio-max-nr:同时可以拥有的的异步IO请求数目。
kernel.shmall:一般为总内存的90%/4096,比如我的总内存90%是6G,也就是6442450944字节,那这里的值就是6442450944/4096=1572864
kernel.shmmax:总内存的90%,6G =6442450944 (shmmax(bytes) = shmmni(page size, default 4k) * shmall (page的个数))
kernel.shmmni:共享内存段的最大数量,默认4k,也就是4096。
net.ipv4.ip_local_port_range:表示应用程序可使用的IPv4端口范围。
net.core.rmem_default:套接字接收缓冲区大小的缺省值。
net.core.rmem_max:套接字接收缓冲区大小的最大值。
net.core.wmem_default:套接字发送缓冲区大小的缺省值。
net.core.wmem_max:套接字发送缓冲区大小的最大值。

kernel.sem = 5010 641280 5010 128,对应4个值分别为SEMMSL、SEMMNS、SEMOPM、SEMMNI,具体如下:

  • SEMMSL: 每个信号集的最大信号数量,数据库最大 PROCESS 实例参数的设置值再加上 10 。Oracle 建议不少于 100 。
  • SEMMNS:用于控制整个 Linux 系统中信号(而不是信号集)的最大数。Oracle 建议将 SEMMNS 设置为:系统中每个数据库的 PROCESSES 实例参数设置值的总和,加上最大 PROCESSES 值的两倍,最后根据系统中 Oracle 数据库的数量,每个加 10 。使用以下计算式来确定在 Linux 系统中可以分配的信号的最大数量。它将是以下两者中较小的一个值:SEMMNS 或 (SEMMSL * SEMMNI)。
  • SEMOPM: 用于控制每个 semop 系统调用可以执行的信号操作的数量。一个信号集能够拥有每个信号集中最大数量的SEMMSL 信号,因此建议设置 SEMOPM 等于SEMMSL 。Oracle 建议不少于 100 。
  • SEMMNI:用于控制整个 Linux 系统中信号集的最大数量。Oracle 建议不少于 100 。

示例如下:
SEMMSL:设置为5010。
SEMMNI:设置为128。
SEMMNS:设置为SEMMSLxSEMMNI(5010x128)=641280。
SEMOPM:与SEMMSL参数相同,设置为5010。


2、修改操作系统核心参数

输入命令:vi /etc/security/limits.conf,将下列内容加入该文件。

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
  • nofile 是最多能同时打开的文件数,nproc 是单个用户可用的最大进程数量。
  • soft 是软限制 ,用户可以超过这个设置的值,但一定不能超过 hard 的值,一般 soft 比 hard 小,hard 是硬限制。

示例如下:
oracle soft nproc 2047 //限制oracle用户的进程数,超过2047开始警告。
oracle hard nproc 16384 //系统限制不能超过16384个。
oracle soft nofile 1024 //限制最多能同时打开的文件数,软限制。
oracle hard nofile 65536 // 最多能同时打开的文件数,硬限制。


3、修改 /etc/pam.d/login

输入命令:vi /etc/pam.d/login,将下列内容加入该文件

session required /lib/security/pam_limits.so
session required pam_limits.so

4、修改/etc/profile

编辑 /etc/profile ,输入命令:vi /etc/profile,将下列内容加入该文件。

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

使用如下命令使环境变量生效

source /etc/profile

5、切换为oracle用户登录

su - oracle

6、配置oracle用户环境变量

编辑 bash_profile ,输入命令:vi .bash_profile,将下列内容加入该文件。

export ORACLE_BASE=/data/oracle
export ORACLE_HOME=/data/oracle/product/112010/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib

Linux下 Oracle数据库静默安装_第6张图片

输入如下命令,使环境变量生效

source .bash_profile

四、安装

1、解压

将安装包上传,我这里上传至 home/oracle 下,然后解压

unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip

2、切换到oracle用户

如果不是 oracle 用户请先切换至 oracle 用户

su - oracle

3、修改oracle数据库安装应答文件

解压后,在文件夹 database/response 中有 db_install.rspdbca.rspnetca.rsp 三个应答文件,分别是数据库安装文件、建立数据库实例文件和监听配置安装文件。

Linux下 Oracle数据库静默安装_第7张图片

修改 db_install.rsp 文件

vi db_install.rsp

修改以下内容:

oracle.install.option=INSTALL_DB_SWONLY //安装类型
ORACLE_HOSTNAME=kmvcmdm  //主机名称
UNIX_GROUP_NAME=oinstall  //安装组
INVENTORY_LOCATION=/data/oracle/inventory  //INVENTORY目录
SELECTED_LANGUAGES=en,zh_CN  //选择语言(英文和简体中文)
ORACLE_HOME=/data/oracle/product/112010/db_1  //oracle_home
ORACLE_BASE=/data/oracle  //oracle_base
oracle.install.db.InstallEdition=EE  //oracle版本
oracle.install.db.DBA_GROUP=dba  // dba用户组
oracle.install.db.OPER_GROUP=oinstall  //用户组
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE  //数据库类型(用途)
oracle.install.db.config.starterdb.globalDBName=orcl  // globalDBName
oracle.install.db.config.starterdb.SID=orcl  // SID
oracle.install.db.config.starterdb.memoryLimit=800 //自动管理内存的最小内存(M),最小是256MB
oracle.install.db.config.starterdb.password.ALL=123456 //设定所有数据库用户使用同一个密码
DECLINE_SECURITY_UPDATES=true  //设置安全更新,这个要选true,否则会无限提醒邮件地址有问题,终止安装。

注:oracle.install.db.config.starterdb.type 指定的是数据库用途,包括一般用途(GENERAL_PURPOSE)和数据仓库,这里根据实际情况选择。


4、静默安装

进入解压出的 database目录,然后执行如下命令进行静默安装。

./runInstaller -silent -responseFile /home/oracle/database/response/db_install.rsp -ignorePrereq

image.png

安装过程中,如果提示[WARNING]可忽略,此时安装程序仍在后台运行,如果出现[FATAL],则安装程序已经停止了。

安装成功后,有如下安装成功的提示,接下来还需要按照他的要求执行脚本。

Linux下 Oracle数据库静默安装_第8张图片

可以在安装目录找到本次安装会话的日志,例如:

/data/oracle/oraInventory/logs/installActions2015-06-08_04-00-25PM.log

5、执行脚本

首先切换到root用户

su root

然后执行即可

/data/oracle/inventory/orainstRoot.sh
/data/oracle/product/112010/db_1/root.sh

Linux下 Oracle数据库静默安装_第9张图片

根据提示查看执行日志,可以看到已经成功执行。

Linux下 Oracle数据库静默安装_第10张图片

至此,数据库已经安装成功,但是还没有结束,还需要配置监听以及实例。


6、创建数据文件存放目录

由于接下来监听配置中有一项需要指定数据文件存放目录,这里我们新建个目录用来存放数据文件,如下

mkdir /data/oracle/oradata

同样更改目录属主为oracle用户

chown -R oracle:oinstall /data/oracle/oradata

image.png


五、监听配置及实例配置

1、配置监听

(1)修改监听配置文件 netca.rsp,位置在解压出来的文件夹 database/response 下

vi netca.rsp

image.png

修改内容如下:

INSTALL_TYPE=""custom"" 安装的类型
LISTENER_NUMBER=1 监听器数量
LISTENER_NAMES={"LISTENER"} 监听器的名称列表
LISTENER_PROTOCOLS={"TCP;1521"} 监听器使用的通讯协议列表
LISTENER_START=""LISTENER"" 监听器启动的名称

Linux下 Oracle数据库静默安装_第11张图片

(2)切换回oracle用户

su - oracle

(3)执行如下命令

netca /silent /responseFile /home/oracle/database/response/netca.rsp

Linux下 Oracle数据库静默安装_第12张图片

执行成功后,在安装目录下(例:/data/oracle/product/112010/db_1/network/admin/)会生成 listener.ora 文件

image.png

Linux下 Oracle数据库静默安装_第13张图片

执行lsnrctl start开启监听(如已开启则先关闭再启动)

Linux下 Oracle数据库静默安装_第14张图片


2、生成数据库实例

(1)编辑文件 dbca.rsp,位置同样在解压出来的文件夹 database/response 下

vi dbca.rsp

image.png

修改内容如下:

RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"
GDBNAME = "orcl" //数据库的名字
SID = "orcl" //数据库实例名
TEMPLATENAME = "General_Purpose.dbc" //建库用的模板文件
DATAFILEDESTINATION =/data/oracle/oradata/ //数据文件存放目录
RECOVERYAREADESTINATION=/data/oracle/flash_recovery_area/ //恢复数据存放目录
CHARACTERSET = "AL32UTF8" //字符集

(2)执行dbca命令

dbca -silent -responseFile /home/oracle/database/response/dbca.rsp

然后会让你输入密码,成功执行后如下

Linux下 Oracle数据库静默安装_第15张图片

根据提示查看执行日志,可以看到已经有一个 orcl 的实例,如下

Linux下 Oracle数据库静默安装_第16张图片

监听状态查询

lsnrctl status

Linux下 Oracle数据库静默安装_第17张图片

六、防火墙配置

如果防火墙未打开则开启防火墙,启动 firewalld 服务

systemctl start firewalld

oracle 默认端口1521,需要开放,如下

#永久开放1521端口
firewall-cmd --add-port=1521/tcp --permanent --zone=public
#重启防火墙
firewall-cmd --reload

七、问题及解决方法

1、配置监听时执行命令,配置失败,如下

Linux下 Oracle数据库静默安装_第18张图片

查看日志

Linux下 Oracle数据库静默安装_第19张图片

应该是 hostname 的问题,因为一开始 /etc/hosts中我用了ip地址,那个ip ping不通,现在为了生成 listener.ora 文件,可以暂时将 /etc/hosts 中那个 hostname 的ip先改成127.0.0.1

image.png

改完后 hostname 就能 ping 通了

Linux下 Oracle数据库静默安装_第20张图片

再次执行就成功。

Linux下 Oracle数据库静默安装_第21张图片


2、客户端连接时报错 ORA-12541:TNS:no listener

解决方法:修改listener.ora

cd /data/oracle/product/112010/db_1/network/admin/
vi listener.ora

将127.0.0.1改成服务器 ip 地址

Linux下 Oracle数据库静默安装_第22张图片

然后重启监听即可

lsnrctl stop
lsnrctl start

Linux下 Oracle数据库静默安装_第23张图片



觉得有帮助点个赞吧!!!
原创不易,转载请注明出处。

微信扫一扫下方二维码即可关注我的公众号

你可能感兴趣的:(Linux,数据库,Oracle)