Linux生产环境Oracle 19c部署实战:从系统准备到运维避坑

Oracle 19cLinux生产环境 本内容遵循CC 4.0 BY-SA版权协议
AngstEssenSeele AngstEssenSeele 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要

这套FGMT02的生产环境Oracle 19c部署项目,我前前后后带人做过好几轮。每次接手之前都会有人问:网上安装教程那么多,照着点下一步不就行了吗?真到生产环境一试,缺依赖、内核参数不对、监听起不来、归档日志撑爆磁盘,各种坑一个不少。这次我把跑生产环境Linux+Oracle19c安装配置的完整过程、踩过的坑和可以直接抄的配置整理出来,适合正准备在Linux服务器上部署Oracle 19c,或者做数据库课程设计、项目实战的同学和运维兄弟参考。

1. 这个项目到底在解决什么问题

1.1 生产环境部署和“能跑起来”完全是两码事

网上搜“oracle19c安装教程”,十篇里有八篇是图形界面一路Next,装完能看到sqlplus就收工。但生产环境的要求完全不是这样。生产环境要回答的是:这套数据库能稳定跑多久?数据丢了能不能恢复?服务器重启之后Oracle能不能自动起来?磁盘满了会不会业务直接断掉?运维同事半夜接警能不能快速定位问题?

这些都不是“能不能装出来”的问题,而是“装完之后系统有没有长稳运行的能力”。所以这次部署我在一开始就把目标定成:数据库软件安装、实例创建、监听配置、归档备份、开机自启、业务验收全链路跑通,而不是安装完就算结束。

1.2 环境选型:哪种Linux、哪个版本、什么硬件

Oracle 19c本质上是12.2.0.3版本,属于长期支持版本,官方支持Linux 7.x和8.x系列。我这次用RHEL/CentOS 7.9举例,这个系统在存量机房覆盖率极高。另外像Kylin V10这类常见发行版,跑19c单机也验证过,步骤和RHEL系基本一致,主要注意依赖包名称和内核参数微调。

硬件规划上,Oracle官方的最低内存2GB看看就好,生产环境建议16GB起步,我这边实际项目用的是64GB内存、16核、数据盘独立挂载到/u01。磁盘建议数据目录和系统盘分开,/tmp低于2GB会直接导致安装失败,这些都在检查清单里。

项目 推荐配置 说明
操作系统 RHEL / CentOS / Oracle Linux 7.9 内核3.10,兼容性最稳
CPU 至少4核 安装和编译过程明显更快
内存 建议16GB以上 SGA和PGA分配空间更从容
/u01磁盘 按未来两年数据量规划 生产至少预留200GB以上
/tmp 至少2GB 安装解压时临时文件多
IP与主机名 静态IP + /etc/hosts 监听和实例启动都依赖主机名解析

1.3 整体部署路径梳理

完整的部署我习惯拆成以下几步,每一步都有明确的验收点,这样出问题的时候能快速定位在第几步:

  1. 操作系统基础检查与依赖包安装;
  2. 内核参数、资源限制、Oracle用户环境准备;
  3. 安装数据库软件(ORACLE_HOME);
  4. 监听器配置;
  5. 用DBCA创建实例,确定容器数据库还是非容器数据库;
  6. 优化初始化参数,开启归档模式;
  7. 配置开机自启、RMAN备份任务;
  8. 建业务表空间和用户,验证增删改查和应用连接。

这八步走完,才算一个能交付的生产环境。下面每一步都放实操命令和踩坑记录。

2. 动手前必须做完的系统准备

2.1 操作系统核心检查与常用命令

很多安装失败都是系统基础状态不合格导致的。拿到一台新机器,我习惯先跑一组linux常用命令做体检:

BASH
cat /etc/redhat-release
uname -r
free -m
df -h / /tmp /u01
nproc
lscpu
swapon --show

重点看四样东西:操作系统版本和内核,内存总量,/tmp和/u01剩余空间,swap是否配置。Oracle 19c在安装前有个预检查,虽然允许忽略部分警告,但交互式图形安装卡在某个界面半天不动,十次有八次是/tmp不够或者swap过小。

还有一点容易被忽略:主机名必须能通过/etc/hosts解析到本级IP。很多生产环境Linux的主机名在装系统后随手改过,结果监听器启动正常,远端连接却报无监听,排查到最后发现是域名解析对不上。安装前就把下面两行加进/etc/hosts:

TEXT
192.168.10.20 db-server

2.2 依赖包安装与常见缺包坑

Oracle 19c在Linux 7下需要一批依赖包,缺一个安装界面就报一个错。最省心的是在一开始一次性装齐:

BASH
yum -y install 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 unixODBC unixODBC-devel unzip

如果装了oracle-database-preinstall-19c这个rpm包,它会把大部分依赖帮你解析掉,但CentOS源里没有,需要自己从Oracle Linux的yum源引入。实际项目中我嫌麻烦,直接手动装依赖,碰到缺哪个再装哪个也一样。

这里最大的坑是compat-libstdc++-33,默认最小化安装基本没有。还有glibc-devel和libaio-devel,缺少它们经常导致安装到编译组件时报gcc错误,但报错信息里并不会直接告诉你缺这两个包。所以依赖包我建议一次性装全,别等到安装日志里报错再去查。

2.3 用户、组和目录规划

Oracle不允许直接用root安装运行,所以要建专用用户。我习惯的规划是:

BASH
groupadd oinstall
groupadd dba
groupadd oper
useradd -u 1100 -g oinstall -G dba,oper oracle
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01/app
chmod -R 775 /u01/app
passwd oracle

目录结构上,/u01/app/oracle是ORACLE_BASE,数据库软件安装路径ORACLE_HOME规划为/u01/app/oracle/product/19.3.0/dbhome_1。这样布局的好处是基础目录和应用目录分离,后续打补丁、升级或者换版本,不会动到底层数据文件。

接着给oracle用户配环境变量,写入.bash_profile:

BASH
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export ORACLE_SID=ORCL
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

ORACLE_SID这里先定好,生产实例名建议用业务缩写,不要用花里胡哨的字符。ORACLE_SID和后续DBCA建库时的SID必须一致,这是新手最容易犯的低级错误。

2.4 内核参数与资源限制

生产环境安装Oracle 19c,内核参数不能默认到底。需要写入/et

最低 0.47元/天 开通会员,解锁全文
left
成为会员后, 你将解锁
right
benefits 下载资源随意下
benefits 优质VIP博文免费学
benefits 优质文库回答免费看
benefits 付费资源9折优惠

相关推荐

基于Python+Open CV的手势识别算法设计

伴随着人工智能时代的到来,人机交互的领域也逐渐成为研究的一大方向;其中,手势识别是人机交互领域的一项关键技术,自此手势识别也迎来了一波高潮,近几年无论是在消费领域、电子领域、数码领域、家电领域甚至汽车领域上,都能或多或少的见到手势识别的身影。 手势识别在设计智能高效的人机界面方面具有至关重要的作用, 目前手势识别已应用到手语识别、智能监控、到虚拟现实等各个领域,手势识别的原理都是利用各种传感器(例如红外、摄像头等)对手部的形态进行捕捉并进行建模,形成一个模型信息的序列帧,而后将这些信息序列转换为机器能够识别的相对应指令(例如打开、切换菜单、移动等)来完成控制。 采用Python的集成开发环境Pycharm进行本次课程设计,在Pycharm中进行需要库(模块)的下载,调取电脑摄像头,按帧读取摄像头采集到的头像,形态学处理,图像旋转(由于摄像头采集到的图像是镜像,需要用cv2.flip将摄像头采集到的图像进行处理),选取图片中固定位置作为手势输入,用红线画出手势识别框,基于hsv的肤色检测,进行高斯滤波,找出轮廓,求出图像中手势的凹凸点,手指间角度求取。

努力学习前端的小陈

ROS-CV-ImageConverter:将ROS图像转换为OpenCV(cv :: Mat)类型的图像

ROS-CV图像转换器 依存关系 cv_bridge(ROS软件包)

Willis Wang

计算机视觉图像处理-CV2与图像插值算法

用最近邻插值与双线性插值原理完成图像缩放 最近邻插值,是指将目标图像中的点,对应到源图像中后,找到最相邻的整数点,作为插值后的输。缺点:使用最近邻插值算法处理图像放大时,在图象中可能出现明显的块状效应 双线性插值,在两个方向上做三次线性插值。使用双线性插值算法处理图像放大时,在图象中可能出现马赛克 代码 import cv2 img = cv2.imread(’./xiabang.jpg’, cv2.IMREAD_UNCHANGED) #缩放比例 scale_percent = 0.3 width = int(img.shape[1] * scale_percent) height = int

weixin_38697274

基于水平集CV模型的图像分割(Matlab代码)

基于水平集CV模型的图像分割(Matlab代码),全套代码

小宇QAQ

导向滤波(guide_filter)的python实现

导向滤波(guide_filter)的python实现,可以结合暗通道;理论实现比较好的图像去噪效果。

zachzhan_g
返回顶部
AngstEssenSeele
博客等级 码龄8年 36粉丝 8,180原创