引言
在无外网的生产环境中部署Oracle 19c,如同在数字孤岛架设数据库桥梁。本文结合实战经验,详解离线安装全流程,并针对高频错误提供“急救包”,助你绕过90%的踩坑点。
一、离线安装Oracle 19c全流程
(附避坑要点标注)
1. 环境准备:孤岛生存法则
-
系统要求
# CentOS 7.6+,内核3.10+ cat /etc/redhat-release uname -r
-
避坑点:Oracle 19c不支持CentOS 8,需严格选择7.6~7.9版本。
-
依赖包离线包下载
使用联网机器下载所有依赖(保存至/tmp/oracle_deps
):
yum install --downloadonly --downloaddir=/tmp/oracle_deps \
binutils compat-libcap1 compat-libstdc++-33 gcc-c++ glibc glibc-devel ksh \
libaio libaio-devel libXext libXtst libX11 libXau libxcb libXi make sysstat
关键操作:将/tmp/oracle_deps
打包传输至目标服务器,通过createrepo
生成本地YUM源。
2. 系统配置:为Oracle铺路
-
用户与目录
groupadd -g 54321 oinstall groupadd -g 54322 dba useradd -u 54321 -g oinstall -G dba oracle mkdir -p /u01/app/oracle/product/19c/dbhome_1 chown -R oracle:oinstall /u01
内核参数调优
# /etc/sysctl.conf fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 1073741824 kernel.shmmax = 4398046511104 kernel.shmmni = 4096 semmsl=250 semmns=32000 semopm=100 semmni=128
避坑点:
shmmax
必须大于SGA大小,否则引发ORA-27102
错误。
3.静默安装:无图形界面部署
-
响应文件生成
从安装包解压db_install.rsp
模板:unzip LINUX.X64_193000_db_home.zip cp response/db_install.rsp /tmp/custom_db_install.rsp
关键配置项
oracle.install.option=INSTALL_DB_SWONLY UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oraInventory ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1 ORACLE_BASE=/u01/app/oracle oracle.install.db.InstallEdition=EE oracle.install.db.OSDBA_GROUP=dba oracle.install.db.OSOPER_GROUP=dba DECLINE_SECURITY_UPDATES=true
执行安装
./runInstaller -silent -responseFile /tmp/custom_db_install.rsp
避坑点:若出现
[INS-32055]
错误,需检查本地YUM源配置是否生效。
4. 数据库创建:命令行建库
dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname ORCL -sid ORCL \ -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -sysPassword Oracle123 \ -systemPassword Oracle123 \ -createAsContainerDatabase false \ -storageType FS
关键参数:
-characterSet
必须与业务需求一致,避免后期出现乱码问题。
二、高频致命错误与急救方案
错误1:ORA-27125: unable to create shared memory segment
-
症状:数据库启动失败,共享内存不足
-
根因:
/dev/shm
空间不足或内核参数未生效 -
修复:
mount -t tmpfs shmfs -o size=8g /dev/shm sysctl -p # 重新加载参数
错误2:ORA-12514: TNS:listener does not currently know of service requested
-
症状:客户端无法连接
-
根因:监听未注册实例或
listener.ora
配置错误 -
修复:
-- 检查监听状态 lsnrctl status -- 修改listener.ora SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL) (SID_NAME = ORCL) (ORACLE_HOME = /u01/app/oracle/product/19c/dbhome_1) ) )
错误3:ORA-01034: ORACLE not available
-
症状:实例未启动
-
根因:
ORACLE_SID
未设置或/etc/oratab
配置错误 -
修复:
echo "export ORACLE_SID=ORCL" >> ~oracle/.bash_profile sed -i 's/:N$/:Y/' /etc/oratab # 允许自动启动
错误4:ORA-00205: error in identifying control file
-
症状:控制文件路径错误
-
根因:
spfile
中控制文件路径与实际不匹配 -
修复:
STARTUP NOMOUNT; CREATE SPFILE FROM PFILE; ALTER SYSTEM SET control_files='/u01/app/oracle/oradata/ORCL/control01.ctl' SCOPE=SPFILE;
三、结语:离线部署的核心哲学
成功的关键在于**“预判问题,精准排雷”**:
-
依赖包离线化需完整,推荐使用
yum-utils
的downloadonly
插件; -
内核参数必须与硬件资源匹配,建议通过
HugePages
优化内存管理; -
静默安装响应文件需逐项验证,避免因格式错误导致安装中断。