环境

我这里示例方案使用的ssh工具和CentOS的版本如下所示:

CentOS的版本:CentOS 7.9 2009

Oracle的版本:11.2.0.3.0、11.2.0.3.4

SSH工具:MobaXterm(最新版本即可)

我们使用的系统只要是CentOS7版本就可以,没有必要跟我使用同一个版本的系统。Oracle的版本,我标记的只是说我自己有测试安装过的,并不能说明此示例在其他版本就一定不能用。ssh工具的话,网上有很多的ssh工具,例如CRT、Xshell、FinalShell等,用自己喜欢的就好。

配置初始化参数

1、下载Oracle安装包

如果本地有11g的安装包,则直接上传到/usr/local/src目录下,本地没有11g的包的话,找朋友或者其他人(找我也行)要一下,然后上传到/usr/local/src目录中。

2、创建Oracle用户及组

登录到root用户下

[root@localhost ~]# su root

创建用户组oinstall

[root@localhost ~]# groupadd oinstall

创建用户组dba

[root@localhost ~]# groupadd dba

创建oracle用户并将其加入到组中

[root@localhost ~]# useradd -g oinstall -g dba -m oracle

查询用户组

[root@localhost ~]# groups oracle

设置oracle用户登录的密码

[root@localhost ~]# passwd oracle

查看oracle用户组权限

[root@localhost ~]# id oracle

3、创建Oracle存储目录

创建Oracle的安装目录以及数据存储目录。生产环境中,需要找一个磁盘空间比较大的目录。

创建数据库软件安装目录

[root@localhost ~]# mkdir -p /home/oracle

创建数据库产品清单目录

[root@localhost ~]# mkdir -p /home/oraInventory

创建数据库软件存储目录

[root@localhost ~]# mkdir -p /home/database

将目录的所有权修改为oinstall组下的oracle用户

[root@localhost home]# chown -R oracle:oinstall /home/oracle
[root@localhost home]# chown -R oracle:oinstall /home/oraInventory
[root@localhost home]# chown -R oracle:oinstall /home/database

4、修改OS系统标识

oracle默认是不支持CentOS系统的,我们需要将配置文件中的系统系统改为redhat才能够正常安装。

[root@localhost home]# vim /etc/redhat-release

将文件中的内容替换为redhat-7

redhat-7

5、安装依赖包

在外网环境(能够访问百度直接下载资源)中可以直接访问配置源中指定的链接下载,但是在内网环境(无法访问百度直接下载资源)中需要YUM源或者手动上传依赖包安装。 如果需要配置本地YUM源,可以参考:配置本地YUM源

[root@localhost home]# yum install binutils* compat* gcc* glibc* ksh* libaio* libgcc* libstdc* libXi* libXtst* make* sysstat* elfutils*

6、开放firewalld端口和禁用selinux

如果你的环境能够关闭防火墙也可以直接关闭防火墙,我这里开放1521的端口。

检查firewalld的状态

[root@localhost home]# systemctl status firewalld.service

默认情况下是有启动的(active (running)),如果状态不是active (running),则说明firewalld没有启动。

开放oracle使用的端口

[root@localhost home]# firewall-cmd --permanent --zone=public --add-port=1521/tcp

重启firewalld

[root@localhost home]# systemctl restart firewalld

禁用selinux。注意,这里的禁用是立即生效,但重启服务器会失效。

[root@localhost home]# setenforce 0

禁止开机启用selinux

[root@localhost home]# vim /etc/selinux/config

将SELINUX的值修改为disabled

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled                # 此处修改为disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

7、配置内核参数

[root@localhost home]# vim /etc/sysctl.conf

新增或修改以下内容,保存并退出

net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
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

说明:

  • fs.file-max 最大打开文件数
  • kernel.shmall 共享内存的总量,8G内存设置:2097152*4k/1024/1024
  • kernel.shmmax 最大共享内存的段大小,一般设置为服务器的80%内存总大小
  • net.ipv4.ip_local_port_range 可使用的ipv4端口范围

其他参数有时间再去研究,这里暂时先写这几个重要的。如果你的服务器只运行单个实例(数据库),我这里给出一个大概的建议值参考:

内存为12G

  • kernel.shmall = 3145728
  • kernel.shmmax = 12884901887

内存为16G

  • kernel.shmall = 4194304
  • kernel.shmmax = 17179869183

内存为32G

  • kernel.shmall = 8388608
  • kernel.shmmax = 34359738367

内存为64G

  • kernel.shmall = 16777216
  • kernel.shmmax = 68719476735

立即生效

[root@localhost home]# sysctl -p

8、限制用户使用资源

[root@localhost home]# vim /etc/security/limits.conf

limits.conf文件中新增或修改以下内容

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

说明:

  • oracle soft nproc 单个用户可用进程数软限制
  • oracle hard nproc 单个用户可用进程数硬限制
  • oracle soft nofile 打开文件描述符软限制
  • oracle hard nofile 打开文件描述符硬限制

9、配置用户环境变量

[root@localhost home]# vim /home/oracle/.bash_profile

.bash_profile文件中新增或修改以下内容

export ORACLE_BASE=/home/oracle
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LANG=C
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

说明:

  • ORACLE_BASE 数据库基目录
  • ORACLE_HOME 数据库安装目录
  • ORACLE_SID 数据库SID
  • ORACLE_TERM 窗口模式安装
  • PATH 系统环境变量
  • LD_LIBRARY_PATH 链接库环境变量
  • LANG 避免乱码
  • NLS_LANG 设置客户端的字符集。

让配置生效

[root@localhost home]# source /home/oracle/.bash_profile

10、解压包并授权

进入压缩包存放目录中

[root@localhost home]# cd /usr/local/src

解压zip包

[root@localhost src]# unzip Linux-x86-64_1of7 -d /home/database
[root@localhost src]# unzip Linux-x86-64_2of7 -d /home/database

将database的拥有者修改为oinstall组下的oracle用户

[root@localhost src]# chown -R oracle:oinstall /home/database/database

静默安装Oracle

创建Oracle清单目录,Oracle会在安装后将一些信息写入到此目录中。

1、新增inventory文件

[root@localhost src]# vim /etc/oraInst.loc

新增inventory_loc和inst_group参数

inventory_loc=/home/oraInventory
inst_group=dba

参数介绍:

  • inventory_loc inventory文件的目录
  • inst_group

2、配置db_install.rsp文件

[oracle@localhost ~]# vim /home/database/database/response/db_install.rsp

编辑db_install.rsp响应文件

oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=localhost
UNIX_GROUP_NAME=dba
INVENTORY_LOCATION=/home/oraInventory
ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/home/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.isRACOneInstall=false
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.characterSet=
oracle.install.db.config.starterdb.memoryOption=false
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
oracle.installer.autoupdates.option=SKIP_UPDATES

参数介绍:

  • oracle.install.option 安装选项,通常选择仅安装数据库软件INSTALL_DB_SWONLY
  • ORACLE_HOSTNAME 主机名,根据你的实际主机名去填
  • UNIX_GROUP_NAME 系统用户组,配置成dba
  • INVENTORY_LOCATION INVENTORY的目录
  • ORACLE_HOME Oracle软件安装目录
  • ORACLE_BASE Oracle软件基目录
  • oracle.install.db.InstallEdition 数据库软件安装版本,EE表示企业版
  • oracle.install.db.DBA_GROUP dba组名
  • oracle.install.db.isRACOneInstall 是否为RAC节点,true表示RAC节点,false和空值均表示非RAC节点
  • oracle.install.db.config.starterdb.type 数据库类型,分为一般事务型或数据仓库型。不知道怎么分配选一般事务型
  • oracle.install.db.config.starterdb.characterSet 数据库字符集,留空即可,不在这一步配置
  • oracle.install.db.config.starterdb.memoryOption 内存管理类型,TRUE表示AMM管理,FALSE表示非AMM内存管理,建议设置为false
  • SECURITY_UPDATES_VIA_MYORACLESUPPORT 指定是否为MOS账号设置密码,true表示配置,false和控制均表示不配置
  • DECLINE_SECURITY_UPDATES 设置为true表示不接受安全更新
  • oracle.installer.autoupdates.option 是否自动更新,设置为SKIP_UPDATES跳过更新即可。

3、使用db_install.rsp文件安装Oracle软件

[oracle@localhost ~]$ cd /home/database/database

静默安装Oracle数据库软件

[oracle@localhost database]$ ./runInstaller -silent -responseFile /home/database/database/response/db_install.rsp -ignorePrereq

CentOS 7 静默安装Oracle 11G_非图型界面安装

4、运行root.sh脚本

root执行脚本

[root@localhost ~]# /home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh

CentOS 7 静默安装Oracle 11G_数据库_02

CentOS 7 静默安装Oracle 11G_oracle_03

5、配置netca.rsp

[oracle@localhost database]$ vim /home/database/database/response/netca.rsp

编辑netca.rsp响应文件

LISTENER_NUMBER=1
LISTENER_NAMES={"LISTENER"}
LISTENER_PROTOCOLS={"TCP;1521"}

参数介绍:

  • LISTENER_NUMBER 监听器的数量
  • LISTENER_NAMES 监听器名
  • LISTENER_PROTOCOLS 监听器的协议及端口

6、使用netca.rsp安装Oracle监听

[oracle@localhost database]$ netca -silent -responseFile /home/database/database/response/netca.rsp

CentOS 7 静默安装Oracle 11G_oracle_04

7、配置dbca.rsp

[oracle@localhost database]$ vim /home/database/database/response/dbca.rsp

编辑dbca.rsp响应文件

[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"

[CREATEDATABASE]
GDBNAME = "orcl"
SID = "orcl"
TEMPLATENAME = "General_Purpose.dbc"
SYSPASSWORD = "orcl"
SYSTEMPASSWORD = "orcl"
SYSMANPASSWORD = "orcl"
DBSNMPPASSWORD = "orcl"
DATAFILEDESTINATION =/home/oracle/oradata
RECOVERYAREADESTINATION =/home/oracle/flash_recovery_area
CHARACTERSET = "ZHS16GBK"
TOTALMEMORY = "800"

说明:

  • [GENERAL] 表示下面的参数为整个文件的通用参数
  • RESPONSEFILE_VERSION 版本,不需要修改这里
  • OPERATION_TYPE 选择使用此文件的操作类型,这里选择创建数据库(createDatabase)
  • [CREATEDATABASE] 表示下面的参数为创建数据库使用的参数
  • GDBNAME 全局数据库名
  • SID SID
  • TEMPLATENAME 建库使用的模板
  • SYSPASSWORD SYS的密码
  • SYSTEMPASSWORD SYSTEM的密码
  • SYSMANPASSWORD SYSMAN的密码
  • DBSNMPPASSWORD DBSNMP的密码
  • DATAFILEDESTINATION 数据文件的目录,默认值是$ORACLE_BASE/oradata
  • RECOVERYAREADESTINATION 闪回区的默认目录,默认值是$ORACLE_BASE/flash_recovery_area
  • CHARACTERSET 数据库字符集
  • TOTALMEMORY 自动内存管理的总内存大小,一般可以先设置800,1600,后续再调整SGA和PGA的大小

8、安装数据库(实例)

静默安装实例

[oracle@localhost database]$ dbca -silent -responseFile /home/database/database/response/dbca.rsp

CentOS 7 静默安装Oracle 11G_非图型界面安装_05

结束

至此,静默安装Oracle 11G就安装完毕了,但此刻的数据库想真正跑在生产环境中,还需要优化和配置参数。