文章目录
基于CentOS 7.7下安装Oracle Database 19c
环境
版本与环境:
- OS: CentOS 7.7.1908
- Oracle Database: 19.3.0.0 -64bit
- 网络:政务内网
- IP:100.100.100.123
说明:
- 官方安装手册:
https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/index.html
安装前准备
修改主机名,安装前准备
# sed -i "s/HOSTNAME=localhost.localdomain/HOSTNAME=oracledb.01/" /etc/sysconfig/network
# hostnamectl set-hostname oracledb.01
配置本机IP地址(如果是分配好内网IP的云机器,则不需要修改)
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
HWADDR=00:0c:29:57:c0:02
NETMASK=255.255.0.0
IPADDR=100.100.100.123
GATEWAY=255.255.0.0
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
添加主机名与IP对应记录
# vim /etc/hosts
100.100.100.123 oracledb.01
关闭Selinux
# sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
# setenforce 0
配置YUM源
略
调整内存配置
调整Swap内存
查看物理内存
# grep MemTotal /proc/meminfo
MemTotal: 16777216 kB
查看Swap内存
# grep SwapTotal /proc/meminfo
SwapTotal: 0 kB
创建一个交换文件
# dd if=/dev/zero of=/swapfile bs=1M count=16384
16384+0 records in
16384+0 records out
17179869184 bytes (17 GB) copied, 23.5326 s, 730 MB/s
使用 mkswap 命令来设置交换文件
# mkswap /swapfile
mkswap: /swapfile: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 16777212 KiB
no label, UUID=8d714f07-14ca-41f3-a742-bb0810552268
启用交换分区:
# swapon /swapfile
查看当前的swap是否生效
# swapon -s
Filename Type Size Used Priority
/swapfile file 16777212 0 -1
为了使新的Swap区在下次开启的时候自动启动,追加以下代码:
# vi /etc/fstab
/home/swapfile swap swap defaults 0 0
调整共享内存
查看共享内存的大小是否正确
df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
tmpfs 5.0G 0G 5G 0% /dev/shm
重新挂载共享内存
mount -o remount,size8g /dev/shm
写入配置文件
vi /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=8G 0 0
安装必要的组件包
yum安装Oracle 19c依赖包和必要的系统组件
# yum install -y bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat net-tools unzip
其中,compat-libstdc+±33包在centOS7镜像中已经移除,需要单独下载安装,我们下载好上传到/tmp目录下
# rpm -ivh /tmp/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
检验必要包是否安装成功
# rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat net-tools unzip
bc-1.06.95-13.el7 (x86_64)
binutils-2.27-43.base.el7_8.1 (x86_64)
compat-libcap1-1.10-7.el7 (x86_64)
compat-libstdc++-33-3.2.3-72.el7 (x86_64)
compat-libstdc++-33-3.2.3-72.el7 (i686)
elfutils-libelf-0.176-4.el7 (x86_64)
elfutils-libelf-devel-0.176-4.el7 (x86_64)
fontconfig-devel-2.13.0-4.3.el7 (x86_64)
glibc-2.17-307.el7.1 (x86_64)
glibc-2.17-307.el7.1 (i686)
glibc-devel-2.17-307.el7.1 (x86_64)
glibc-devel-2.17-307.el7.1 (i686)
ksh-20120801-142.el7 (x86_64)
libaio-0.3.109-13.el7 (x86_64)
libaio-0.3.109-13.el7 (i686)
libaio-devel-0.3.109-13.el7 (x86_64)
libaio-devel-0.3.109-13.el7 (i686)
libX11-1.6.7-2.el7 (x86_64)
libX11-1.6.7-2.el7 (i686)
libXau-1.0.8-2.1.el7 (x86_64)
libXau-1.0.8-2.1.el7 (i686)
libXi-1.7.9-1.el7 (x86_64)
libXi-1.7.9-1.el7 (i686)
libXtst-1.2.3-1.el7 (x86_64)
libXtst-1.2.3-1.el7 (i686)
libXrender-0.9.10-1.el7 (x86_64)
libXrender-devel-0.9.10-1.el7 (x86_64)
libgcc-4.8.5-39.el7 (x86_64)
libgcc-4.8.5-39.el7 (i686)
libstdc++-4.8.5-39.el7 (x86_64)
libstdc++-4.8.5-39.el7 (i686)
libstdc++-devel-4.8.5-39.el7 (x86_64)
libstdc++-devel-4.8.5-39.el7 (i686)
libxcb-1.13-1.el7 (x86_64)
libxcb-1.13-1.el7 (i686)
make-3.82-24.el7 (x86_64)
smartmontools-7.0-2.el7 (x86_64)
sysstat-10.1.5-19.el7 (x86_64)
net-tools-2.0-0.25.20131004git.el7 (x86_64)
unzip-6.0-21.el7 (x86_64)
创建用户和组
创建组
# /usr/sbin/groupadd -g 54321 oinstall
# /usr/sbin/groupadd -g 54322 dba
# /usr/sbin/groupadd -g 54324 backupdba
# /usr/sbin/groupadd -g 54325 dgdba
# /usr/sbin/groupadd -g 54326 kmdba
# /usr/sbin/groupadd -g 54327 asmdba
# /usr/sbin/groupadd -g 54328 asmoper
# /usr/sbin/groupadd -g 54330 racdba
oper组非必要,我们这里不创建
# groupadd -g 54323 oper
创建用户
# /usr/sbin/useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba oracle
grid用户非必要,我们这里不创建
# /usr/sbin/useradd -u 54331 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba grid
设置用户密码
# echo "oracle"|passwd --stdin oracle
修改系统相关配置
调整内核参数
# vim /etc/sysctl.d/97-oracle-database-sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 4194304
kernel.shmmax = 17179869183
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
修改后使之生效
# /sbin/sysctl -p
# /sbin/sysctl --system
其中,kernel.shmmax和kernel.shmall根据实际情况调整
- kernel.shmmax:单位b,最小536870912(512 M),建议不小于内存一半,最大值为内存值-1;
- kernel.shmall:取值计算:内存(单位KB)/4KB。
因为我们单机只安装Oracle,所以取最大值,计算方式如下:
查询内存大小
# grep MemTotal /proc/meminfo
MemTotal: 16777216 kB
计算:
kernel.shmmax = 16777216 kB * 1024 -1 = 17179869183
kernel.shmall = 16777216 kB / 4 kB = 4194304
另,其他内存大小最大值参考:
内存 | kernel.shmmax | kernel.shmall |
---|---|---|
4G(32位) | 4294967295 | 2097152 |
8G | 8589934591 | 2097152 |
16G | 17179869183 | 4194304 |
32G | 34359738367 | 8388608 |
64G | 68719476735 | 16777216 |
128G | 137438953471 | 33554432 |
修改用户限制
调整Oracle用户
# cat >> /etc/security/limits.conf <<EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 3145728
oracle soft memlock 3145728
EOF
如果创建了grid用户,则也需调整
# cat >> /etc/security/limits.conf <<EOF
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
grid hard memlock 3145728
grid soft memlock 3145728
EOF
配置PAM验证
# cat >> /etc/pam.d/login <<EOF
session required /lib64/security/pam_limits.so
session required pam_limits.so
EOF
修改环境变量
修改Oracle用户的环境变量
# cat >> /home/oracle/.bash_profile <<EOF
umask 022
export ORACLE_HOSTNAME=oracledb.01
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=orcl19c
export LANG="zh_CN.UTF-8"
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export PATH=$PATH:$ORACLE_HOME/bin
EOF
如果创建了grid用户,则相应的也要修改其环境变量。
开始安装
解压数据库软件
创建Oracle目录,授权,cd到Oracle安装包路径下,解压Oracle到ORACLE_HOME。
注意,从18c开始,安装包必须解压到ORACLE_HOME路径下进行安装!
# mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
# chown -R oracle:oinstall /u01/app/
# chmod -R 775 /u01/app/
# su - oracle
$ unzip - q LINUX.X64_193000_db_home.zip -d $ORACLE_HOME
修改响应文件db_install.rsp
响应文件,我们统一复制到/home/oracle/etc/下面,然后授权
# su - oracle
$ cp $ORACLE_HOME/install/response/db_install.rsp /home/oracle/etc/
$ chmod 600 /home/oracle/etc/db_install.rsp
编辑响应文件
可以把需要修改的内容直接追加到文件末尾
# cat >> /home/oracle/etc/db_install.rsp <<EOF
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oinstall
oracle.install.db.OSBACKUPDBA_GROUP=backupdba
oracle.install.db.OSDGDBA_GROUP=dgdba
oracle.install.db.OSKMDBA_GROUP=kmdba
oracle.install.db.OSRACDBA_GROUP=racdba
oracle.install.db.rootconfig.executeRootScript=true
oracle.install.db.rootconfig.configMethod=ROOT
# 如果oracle.install.option配置为INSTALL_DB_AND_CONFIG,则需配置以下参数:
# oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
# oracle.install.db.config.starterdb.globalDBName=orcl19c
# oracle.install.db.config.starterdb.SID=orcl19c
# oracle.install.db.config.starterdb.memoryLimit=6144
# oracle.install.db.config.starterdb.password.ALL=oracle
EOF
执行安装
开始静默安装Oracle数据库软件
# su - oracle
$ $ORACLE_HOME/runInstaller -silent -ignorePrereq -responseFile /home/oracle/etc/db_install.rsp
注意,安装其间会提示输入root用户密码以执行脚本。
启动监听
Oracle用户下启动监听
# su - oracle
$ lsnrctl start
创建数据库
修改响应文件dbca.rsp
复制到/home/oracle/etc/目录下,授权。
# su - oracle
$ cp $ORACLE_HOME/assistants/dbca/dbca.rsp /home/oracle/etc/
$ chmod 600 /home/oracle/etc/dbca.rsp
编辑响应文件
可以把需要修改的内容直接追加到文件末尾
# cat >> /home/oracle/etc/dbca.rsp <<EOF
gdbName=orcl19c
sid=orcl19c
templateName=General_Purpose.dbc
characterSet=AL32UTF8
sysPassword=oracle
systemPassword=oracle
dbsnmpPassword=oracle
totalMemory=6144
databaseType=OLTP
EOF
执行建库
开始静默创建数据库
# su - oracle
$ dbca -silent -createDatabase -responseFile /home/oracle/etc/dbca.rsp
至此,Oracle数据库安装部署完成。