当前位置: 首页 > news >正文

从图形界面到命令行:CentOS 7无GUI静默安装Oracle 12c全记录

从图形界面到命令行:CentOS 7无GUI静默安装Oracle 12c全记录

在云原生与自动化运维成为主流的今天,图形界面(GUI)早已不是服务器环境的标准配置。对于需要在CentOS 7上部署Oracle 12c的运维工程师而言,掌握静默安装技术不仅能够适应无GUI的服务器环境,更是实现自动化部署的关键一步。本文将彻底摒弃传统的Xmanager图形化安装方式,通过响应文件(Response File)技术,带你完成一次纯粹的命令行安装之旅。

这种安装方式特别适合以下场景:

  • 云服务器环境:AWS、Azure等云平台提供的精简版Linux镜像
  • 容器化部署:构建包含Oracle的Docker基础镜像
  • 自动化运维:与Ansible、Chef等配置管理工具集成
  • CI/CD流水线:实现数据库环境的快速部署与销毁

1. 环境准备与系统配置

1.1 最小化系统需求验证

在开始安装前,我们需要确认系统满足Oracle 12c的最低要求:

# 查看内存和交换空间 free -m # 输出示例: # total used free shared buff/cache available # Mem: 3934 256 3271 16 406 3421 # Swap: 4095 0 4095 # 检查磁盘空间 df -h /orc # 输出示例: # Filesystem Size Used Avail Use% Mounted on # /dev/sdb1 50G 15G 33G 31% /orc

关键参数要求

  • 物理内存:≥1GB(建议≥2GB)
  • 交换空间:内存1.5-2倍(当内存>8GB时,交换空间可等于内存大小)
  • 临时空间:≥1GB
  • Oracle软件空间:≥6.4GB
  • 数据库文件空间:≥1.7GB

1.2 基础环境配置

关闭不必要的系统服务并安装依赖包:

# 关闭防火墙和SELinux systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 安装必备软件包 yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc \ glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi \ libXtst make sysstat unixODBC unixODBC-devel

对于缺少的compat-libstdc++-33包,可手动安装:

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm --nodeps --force

2. 内核参数与用户配置

2.1 优化内核参数

编辑/etc/sysctl.conf,添加以下内容:

fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 1073741824 kernel.shmmax = 4398046511104 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 sysctl -a | grep -E 'shm|sem|file-max'

2.2 创建Oracle用户和目录

# 创建用户组和用户 groupadd oinstall groupadd dba groupadd oper useradd -g oinstall -G dba,oper oracle echo "oracle:yourpassword" | chpasswd # 创建安装目录并设置权限 mkdir -p /orc/app/oracle/product/12.2.0/dbhome_1 chown -R oracle:oinstall /orc/app chmod -R 775 /orc/app

配置Oracle用户环境变量(/home/oracle/.bash_profile):

umask 022 export ORACLE_BASE=/orc/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1 export ORACLE_SID=orcl export PATH=$PATH:$ORACLE_HOME/bin export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

3. 响应文件准备与定制

3.1 生成响应文件模板

从Oracle安装介质中提取模板:

su - oracle unzip linuxamd64_12102_database_1of2.zip unzip linuxamd64_12102_database_2of2.zip cd database/response cp db_install.rsp db_install_custom.rsp

3.2 关键参数配置

编辑db_install_custom.rsp文件,主要修改以下参数:

oracle.install.option=INSTALL_DB_SWONLY ORACLE_HOSTNAME=oracle-server UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/orc/app/oraInventory SELECTED_LANGUAGES=en,zh_CN ORACLE_HOME=/orc/app/oracle/product/12.2.0/dbhome_1 ORACLE_BASE=/orc/app/oracle oracle.install.db.InstallEdition=EE oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=oper oracle.install.db.BACKUPDBA_GROUP=dba oracle.install.db.DGDBA_GROUP=dba oracle.install.db.KMDBA_GROUP=dba SECURITY_UPDATES_VIA_MYORACLESUPPORT=false DECLINE_SECURITY_UPDATES=true

重要提示

对于生产环境,建议将SECURITY_UPDATES_VIA_MYORACLESUPPORT设置为true并配置Oracle支持账号,以获取安全更新

4. 执行静默安装

4.1 运行安装程序

cd /home/oracle/database ./runInstaller -silent -responseFile /home/oracle/database/response/db_install_custom.rsp -ignorePrereq

安装过程会输出日志到/orc/app/oraInventory/logs/installActions*.log。可以使用以下命令跟踪进度:

tail -f /orc/app/oraInventory/logs/installActions*.log

4.2 执行root脚本

安装完成后,需要以root身份执行两个配置脚本:

/orc/app/oraInventory/orainstRoot.sh /orc/app/oracle/product/12.2.0/dbhome_1/root.sh

5. 数据库创建与验证

5.1 静默创建数据库

准备数据库创建响应文件dbca.rsp

[GENERAL] RESPONSEFILE_VERSION = "12.2.0" OPERATION_TYPE = "createDatabase" [CREATEDATABASE] GDBNAME = "orcl" SID = "orcl" TEMPLATENAME = "General_Purpose.dbc" SYSPASSWORD = "yourSysPassword" SYSTEMPASSWORD = "yourSystemPassword" CHARACTERSET = "AL32UTF8" NATIONALCHARACTERSET= "UTF8" DATAFILEDESTINATION= /orc/app/oracle/oradata RECOVERYAREADESTINATION=/orc/app/oracle/fast_recovery_area STORAGETYPE=FS AUTOMATICMEMORYMANAGEMENT = "TRUE" TOTALMEMORY = "2048"

执行数据库创建:

dbca -silent -responseFile /home/oracle/database/response/dbca.rsp

5.2 安装后验证

检查数据库状态:

sqlplus / as sysdba <<EOF SELECT name, open_mode FROM v\$database; SELECT * FROM v\$version; EOF

验证监听状态:

lsnrctl status

6. 自动化运维集成

6.1 使用Shell脚本全自动安装

将上述步骤整合为一个安装脚本install_oracle12c.sh

#!/bin/bash # Oracle 12c静默安装脚本 # 使用方法:./install_oracle12c.sh <响应文件路径> <Oracle密码> RESPONSE_FILE=$1 ORACLE_PWD=$2 # 预检查函数 precheck() { # 验证内存和磁盘空间 MEM=$(free -m | awk '/Mem:/ {print $2}') SWAP=$(free -m | awk '/Swap:/ {print $2}') DISK=$(df -m /orc | awk 'NR==2 {print $4}') [ $MEM -lt 2048 ] && echo "警告:内存不足2GB,可能影响性能" [ $SWAP -lt $MEM ] && echo "错误:交换空间应不小于内存" && exit 1 [ $DISK -lt 10240 ] && echo "错误:/orc分区至少需要10GB空间" && exit 1 } # 主安装函数 install_oracle() { su - oracle -c "cd /home/oracle/database && \ ./runInstaller -silent -responseFile $RESPONSE_FILE -ignorePrereq" # 等待安装完成 while [ ! -f /orc/app/oraInventory/logs/installActions*.log ]; do sleep 10 done tail -f /orc/app/oraInventory/logs/installActions*.log | while read LINE; do echo "$LINE" [[ "$LINE" == *"Successfully Setup Software"* ]] && pkill -P $$ tail done } precheck install_oracle

6.2 与Docker集成

创建Dockerfile构建包含Oracle的镜像:

FROM centos:7 # 复制安装包和响应文件 COPY linuxamd64_12102_database_*.zip /tmp/ COPY db_install_custom.rsp /tmp/ COPY install_oracle12c.sh /tmp/ # 执行安装 RUN yum install -y unzip && \ unzip /tmp/linuxamd64_12102_database_1of2.zip -d /tmp/ && \ unzip /tmp/linuxamd64_12102_database_2of2.zip -d /tmp/ && \ chmod +x /tmp/install_oracle12c.sh && \ /tmp/install_oracle12c.sh /tmp/db_install_custom.rsp Oracle123 && \ rm -rf /tmp/*.zip /tmp/database EXPOSE 1521 CMD ["/orc/app/oracle/product/12.2.0/dbhome_1/bin/tnslsnr", "LISTENER"]

7. 故障排查与优化

7.1 常见问题解决

问题1:安装过程中出现空间不足错误

# 检查各分区空间 df -h # 清理旧日志 rm -rf /tmp/OraInstall*

问题2:监听启动失败

# 检查监听日志 tail -n 100 $ORACLE_HOME/network/log/listener.log # 重新配置监听 netca -silent -responseFile $ORACLE_HOME/assistants/netca/netca.rsp

7.2 性能优化建议

修改$ORACLE_HOME/dbs/initORCL.ora

# 内存配置 memory_target=2G sga_target=1500M pga_aggregate_target=500M # 进程参数 processes=500 sessions=555 transactions=610

应用配置:

sqlplus / as sysdba <<EOF ALTER SYSTEM SET memory_target=2G SCOPE=SPFILE; ALTER SYSTEM SET sga_target=1500M SCOPE=SPFILE; ALTER SYSTEM SET pga_aggregate_target=500M SCOPE=SPFILE; SHUTDOWN IMMEDIATE; STARTUP; EOF

在实际项目中,我们发现通过响应文件安装Oracle 12c比图形界面安装节省至少40%的时间,特别是在批量部署时优势更加明显。将安装过程脚本化后,可以在30分钟内完成从裸机到可用数据库环境的部署,大大提高了运维效率。

http://www.zskr.cn/news/1486552.html

相关文章:

  • 徐州市中级经济师工商管理/人力资源管理:适配人群、岗位匹配与备考全攻略 - 众智商学院课程中心
  • 小红书投流不踩坑!新手开户、投放、服务商挑选全解答 - 资讯焦点
  • 从代码注释到精美手册:手把手教你用Doxygen + Markdown打造项目文档网站
  • d2s-editor终极指南:5个常见暗黑2存档问题的一站式解决方案
  • Space Thumbnails:让Windows资源管理器也能预览3D模型的终极解决方案
  • 武汉好运发搬家:江汉专业的空调拆装推荐几家 - LYL仔仔
  • 2026 石家庄靠谱装企实力榜单 全案整装旧房改造优质品牌汇总 - 资讯焦点
  • 2026年南宁四害消杀第一梯队公司/专业/靠谱/资质硬 - 优质品牌推荐商
  • 2026年绵阳电子制造SCMP报名班期怎么问?众智商学院www.zzpxedu.com费用资料 - 众智商学院官方
  • 成都外观设计服务:全产业链一体化创新方案 - 资讯焦点
  • 繁易HMI快速上手工程包:含60吨纯水系统完整界面与配置
  • 【RT-DETR实战】164、工业缺陷检测综合项目:数据集处理与基线建立
  • 上海庚毅家具靠谱吗值得推荐吗 - 资讯焦点
  • 别再用字符串切片了!用Python的re.findall()从网页源码里精准提取标题(附requests库实战)
  • 淘宝京东618最后一波!京东淘宝618最优下单流程(不踩坑、优惠拉满)iPhone17终极购买攻略! - 资讯焦点
  • 弗兰德河南官方维修中心:解决进口传动设备维修困局的本地化方案 - 资讯焦点
  • 信息疫情与社会经济因素的关联分析与应对策略
  • 从DINK32到e500调试器移植:PowerPC Book E架构底层开发实践
  • 保姆级教程:在ESXi 6.7上从零搭建Ubuntu模板机,为批量克隆打好基础
  • 连续介质力学与格点规范理论:从基础到数值实现
  • 八大网盘全速下载终极指南:告别限速,一键获取直链地址
  • MPC500平台Dhrystone基准测试:原理、移植与性能深度剖析
  • 人间三月樱如雪,一沟春色醉江南 - 资讯焦点
  • AI Agent与RPA融合:自动化办公的下一代解决方案
  • 如何3步快速配置Chaldea:FGO玩家的终极助手指南
  • 软件工程导论期末自救指南:避开这10个高频易错点,轻松多拿20分
  • Mythos Preview:AI驱动的零日漏洞自动发现与利用范式
  • 如何用VRCT打破VRChat语言障碍:免费智能翻译与语音转文字终极指南
  • 大语言模型如何实现‘大脑内搜索’:知识定位与动态检索技术解析
  • 从一篇大学英语课文看技术人的“知识诅咒”:为什么我们害怕被AI取代,却对基础技能视而不见?