环境
我这里示例方案使用的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
4、运行root.sh脚本
root执行脚本
[root@localhost ~]# /home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
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
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
结束
至此,静默安装Oracle 11G就安装完毕了,但此刻的数据库想真正跑在生产环境中,还需要优化和配置参数。