CentOS 7 命令行安装Oracle 19c

准备工作

检查缺失的依赖包

rpm --query --queryformat "%{NAME}-%{VERSION}.%{RELEASE} (%{ARCH})\n" bc binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat elfutils-libelf elfutils-libelf-devel fontconfig-devel libxcb smartmontools libX11 libXau libXtst libXrender libXrender-devel

安装依赖包

yum install -y compat-libcap1 compat-libstdc++-33 gcc-c++ glibc-devel ksh libaio-devel libstdc++-devel elfutils-libelf-devel fontconfig-devel libXrender-devel

新建用户和用户组

groupadd oinstall
groupadd dba
groupadd oper
useradd -g oinstall -G dba,oper oracle
echo "oracle" | passwd --stdin oracle (设置用户oracle的密码为oracle)

设置环境变量
切换到oracle用户
su - oracle
编辑.bash_profile
vim ~/.bash_profile
添加以下内容

ORACLE_SID=orcl
export ORACLE_SID  
ORACLE_UNQNAME=orcl
export ORACLE_UNQNAME
ORACLE_HOME=/data/LINUX.X64_193000_db_home
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export ORACLE_HOME

使环境变量生效
source ~/.bash_profile

禁用防火墙和SELinux

systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
cat /etc/sysconfig/selinux
vim /etc/sysconfig/selinux
SELINUX=enforcing 改成 SELINUX=disabled

系统优化
修改/etc/sysctl.conf,增加以下内容

fs.aio-max-nr = 1048576  
fs.file-max = 6815744  
kernel.shmall = 6081740
kernel.shmmax = 24910810316
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

然后sysctl -p

shmall 是全部允许使用的共享内存大小,
shmmax 是单个段允许使用的大小。
这两个可以设置为内存的 80%。
例如 10G 内存,
shmmax 10*1024*1024*1024*0.8 = 8589934592
shmall 的大小为 85899345920/4096(getconf PAGESIZE可得到) = 20971520

修改/etc/security/limits.conf

oracle hard nofile 65536
oracle soft stack 10240

开始安装

给Oracle目录分配权限

chown -R oracle:oinstall /data

配置应答文件

oracle.install.option=INSTALL_DB_SWONLY        安装类型
UNIX_GROUP_NAME=oinstall            指定Oracle Inventory目录的所有者,通常是oinstall或者dba
INVENTORY_LOCATION=/data/oraInventory        指定产品清单Oracle Inventory目录的路径,Windows下可以省略
ORACLE_HOME=/data/LINUX.X64_193000_db_home    设置ORALCE_HOME的路径
ORACLE_BASE=/data/oracle
oracle.install.db.InstallEdition=EE        选择Oracle安装数据库软件的版本(企业版,标准版)
oracle.install.db.OSDBA_GROUP=dba        指定拥有OSDBA权限的用户组,通常是dba
oracle.install.db.OSOPER_GROUP=oper        指定拥有OSOPER权限的用户组,通常是oper
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
oracle.install.db.rootconfig.executeRootScript=false

静默安装

cd $ORACLE_HOME
./runInstaller -silent -responseFile /data/LINUX.X64_193000_db_home/db_install.rsp

安装日志(可以新开一个窗口使用tail -f查看)

You can find the log of this install session at:
 /tmp/InstallActions2024-05-14_02-37-45PM/installActions2024-05-14_02-37-45PM.log

使用root权限执行脚本完成安装

As a root user, execute the following script(s):
    1. /data/oraInventory/orainstRoot.sh
    2. /data/LINUX.X64_193000_db_home/root.sh

备注:静默安装文件路径

软件:$ORACLE_HOME/install/response/db_install.rsp
监听:$ORACLE_HOME/assistants/netca/etca.rsp
建库:$ORACLE_HOME/assistants/dbca/dbca.rsp

创建监听

netca /silent /responseFile /data/LINUX.X64_193000_db_home/assistants/netca/netca.rsp

查看监听
lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 14-MAY-2024 15:02:14

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=BIP-PRD-DB)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                14-MAY-2024 15:00:56
Uptime                    0 days 0 hr. 1 min. 17 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /data/LINUX.X64_193000_db_home/network/admin/listener.ora
Listener Log File         /data/oracle/diag/tnslsnr/BIP-PRD-DB/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=BIP-PRD-DB)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

如果监听启动报错
检查以下文件的hostname是否正确,修改正确后重启系统

/data/LINUX.X64_193000_db_home/network/admin/listener.ora

修改正确后重启系统

服务验证

lsnrctl status        查看监听状态
lsnrctl stop        停止监听
lsnrctl start        启动监听

SQLPLUS验证
sqlplus / as sysdba

启动服务

手动启动

#启动监听#
lsnrctl start
sqlplus /nolog
connect /as sysdba
#启动数据实例#
startup

开机自启
修改/etc/oratab,最后的N改为Y(如果没有内容从下面粘贴)
orcl:/data/LINUX.X64_193000_db_home:N

创建启动脚本/usr/bin/oracle.sh,内容如下

#! /bin/bash
# script For oracle19c.service
/data/LINUX.X64_193000_db_home/bin/lsnrctl start
/data/LINUX.X64_193000_db_home/bin/dbstart /data/LINUX.X64_193000_db_home

设置可执行权限
chmod +x /usr/bin/oracle.sh

创建自启脚本/etc/systemd/system/oracle19c.service,内容如下

[Unit]
Description=Oracle19c
After=syslog.target network.target

[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
Type=oneshot
RemainAfterExit=yes
User=oracle
Environment="ORACLE_HOME=/data/LINUX.X64_193000_db_home"
ExecStart=/usr/bin/oracle.sh

[Install]
WantedBy=multi-user.target

设置自启
systemctl enable oracle19c

手动启动

#启动监听#
lsnrctl start
sqlplus /nolog
connect /as sysdba
#启动数据实例#
startup

参考:https://www.cnblogs.com/elfin/p/16776072.html