01-Oracle 19c静默安装全流程

Oracle 19c 静默安装全流程------从零到可连接

服务器连不上显示器、没有X11、没有VNC------这是社保局机房的常态。这篇文章记录一套完整的Oracle 19c静默安装流程,从yum依赖到建库到监听配置,全命令行操作。

文章目录


一、为什么需要静默安装

社保局机房只有SSH------没有图形界面,没有显示器接口。Oracle的图形安装器(runInstaller)在这种环境下跑不起来。

静默安装就是通过响应文件告诉Oracle安装程序"所有配置都在这里,你自己装"------不需要任何GUI交互。


二、环境准备

bash 复制代码
# 关闭selinux和防火墙
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld

# 安装依赖包
yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ \
    glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ \
    libstdc++-devel libXext libXtst libX11 libXau libXi make \
    sysstat smartmontools net-tools nfs-utils unzip

创建Oracle用户和目录:

bash 复制代码
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
echo "oracle:你的密码" | chpasswd

mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
mkdir -p /u01/app/oraInventory
chown -R oracle:oinstall /u01
chmod -R 775 /u01

配置内核参数 /etc/sysctl.conf:

ini 复制代码
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500

配置用户限制 /etc/security/limits.conf:

ini 复制代码
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 19c

bash 复制代码
su - oracle

# 设置环境变量
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH

# 解压安装包
unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME

# 创建响应文件 db_install.rsp
cat > /tmp/db_install.rsp <<EOF
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=$ORACLE_HOME
ORACLE_BASE=$ORACLE_BASE
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oinstall
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
EOF

# 执行静默安装
cd $ORACLE_HOME
./runInstaller -silent -responseFile /tmp/db_install.rsp -ignorePrereq

# 安装完成后以root执行(安装程序会提示)
# /u01/app/oraInventory/orainstRoot.sh
# /u01/app/oracle/product/19.3.0/dbhome_1/root.sh

安装日志在 $ORACLE_HOME/cfgtoollogs 目录下。如果出错,看 installActions*.log。


四、静默建库

bash 复制代码
# 创建响应文件 dbca.rsp
cat > /tmp/dbca.rsp <<EOF
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
gdbName=orcl
sid=orcl
databaseConfigType=SI
createAsContainerDatabase=false
templateName=General_Purpose.dbc
sysPassword=你的SYS密码
systemPassword=你的SYSTEM密码
emConfiguration=DBEXPRESS
emExpressPort=5500
characterSet=AL32UTF8
nationalCharacterSet=AL16UTF16
memoryPercentage=40
databaseType=MULTIPURPOSE
automaticMemoryManagement=false
totalMemory=4096
EOF

# 静默建库
dbca -silent -createDatabase -responseFile /tmp/dbca.rsp

memoryPercentage=40 表示使用物理内存的40%,totalMemory=4096 表示如果内存不够则至少分配4GB。


五、配置监听

bash 复制代码
# 创建 listener.ora
cat > $ORACLE_HOME/network/admin/listener.ora <<EOF
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
EOF

# 启动监听
lsnrctl start

# 验证
lsnrctl status

注册数据库到监听:

sql 复制代码
sqlplus / as sysdba
ALTER SYSTEM REGISTER;
-- 或强制注册
ALTER SYSTEM SET LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=服务器IP)(PORT=1521))';

六、开机自启

bash 复制代码
# 创建启动脚本
cat > /etc/init.d/oracle <<'SCRIPT'
#!/bin/bash
# chkconfig: 345 99 10
ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
ORACLE_OWNER=oracle
case "$1" in
  start)
    su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start"
    su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
    ;;
  stop)
    su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
    su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop"
    ;;
esac
SCRIPT
chmod +x /etc/init.d/oracle
chkconfig --add oracle

# 修改oratab启用自启
sed -i 's/:N$/:Y/' /etc/oratab

七、常见坑

  1. 磁盘空间不足 ------/tmp 至少需要1GB,安装目录至少需要10GB
  2. hosts文件缺少本机名 ------导致监听无法注册,echo "127.0.0.1 $(hostname)" >> /etc/hosts
  3. 内存不足建库失败 ------减小 memoryPercentage 或增加 swap
  4. 静默安装报 PRVG-1901 ------网络配置略不过检查,加 -ignorePrereq 跳过

✅ 亮点:补上最常见但教程最少的"无图形界面安装",全命令行可复现,适合想自己搭一套环境做实验的人。扩展方向:Oracle RAC静默安装、DataGuard搭建、ASM磁盘管理。

相关推荐
这个DBA有点耶13 分钟前
从症状到根因:数据库监控指标的分层方法与静态/动态阈值策略
数据库·mysql·代码规范
SelectDB26 分钟前
时间旅行与快照能力速查:Doris 侧三条落地路径
大数据·数据库·数据分析
SelectDB34 分钟前
云数仓成本结构拆解速查:五层计费 vs Doris / 托管形态
大数据·数据库·数据分析
SelectDB35 分钟前
什么场景能承接与建议保留:Doris vs Snowflake 边界速查
大数据·数据库·数据分析
这个DBA有点耶3 小时前
DELETE没删多少数据,表却越来越大——InnoDB删除空洞与页合并失效的根因
数据库·mysql·代码规范
ly76896 小时前
PostgreSQL 备份恢复策略:pg_basebackup、WAL 归档与 PITR 在企业 Java 系统中的落地
java·数据库·postgresql·pitr·pg_basebackup·wal 归档
小羊没烦恼!7 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
注塑机数据采集联网7 小时前
如何解决注塑机数据采集联网对接MES系统数据WiFi传输数据不稳问题
大数据·数据库·物联网·数据挖掘·数据分析
黄俊懿7 小时前
【架构师从入门到进阶】第六章:服务集群优化——第八节:线程数公式
java·服务器·数据库·分布式·性能优化·架构·系统架构