01 Oracle 19c部署前的“避坑指南”——环境规划与准备

来源:这里教程网 时间:2026-03-03 23:11:24 作者:

01 Oracle 19c部署前的“避坑指南”——环境规划与准备 一、硬件与OS选型:别让“配置”拖后腿 1.1 硬件配置:最低vs推荐,按需选择不浪费 1.2 OS选型:认准兼容版本,避开“小众系统” 1.3 系统参数优化:一键配置,避免“隐疾” 1.3.1 内核参数优化 1.3.2 资源限制配置 1.3.3 SELINUX与防火墙配置 二、存储规划:别把“鸡蛋”放一个篮子里 2.1 存储分离:核心原则“三类文件三分离” 2.1.1 LVM方案(适合中小业务,配置简单) 2.1.2 ASM方案(适合大规模业务,高可用) 2.2 业务适配:IO需求决定磁盘类型 三、前置依赖与权限:细节决定成败 3.1 依赖包安装:yum一键搞定,告别“缺失烦恼” 3.1.1 CentOS 7/RHEL 7 3.1.2 CentOS 8/RHEL 8 3.2 权限配置:oracle用户“专属权限”要给足 3.2.1 创建用户和用户组 3.2.2 创建安装目录并分配权限 3.2.3 配置oracle用户环境变量 四、实操工具:一键检查,省心省力 4.1 系统环境检查脚本 4.2 存储规划检查表 五、部署前多花1小时,运维少踩10个坑

01 Oracle 19c部署前的“避坑指南”——环境规划与准备

“刚部署的Oracle 19c频繁卡顿,查了半天发现是内存给小了”,“生产库跑着跑着报权限错误,原来安装时目录权限没配对”……相信不少DBA新手都踩过这类部署前的“坑”。Oracle 19c作为长期支持的稳定版本,想要它后续“听话”,部署前的环境规划绝对是重中之重。今天这篇指南,就从硬件OS选型、存储规划、依赖权限配置三个核心维度,带你避开那些让人头疼的问题,为数据库搭建稳固的“地基”。

一、硬件与OS选型:别让“配置”拖后腿

很多人觉得“先装了再说,不够再扩容”,但Oracle数据库对硬件和系统的基础要求可不低,前期配置不到位,后期要么性能拉胯,要么直接报错。这里我们分生产和测试环境,把配置标准讲得明明白白。

1.1 硬件配置:最低vs推荐,按需选择不浪费

Oracle官方给出的最低配置仅能保证数据库“启动”,想要稳定运行,必须参考推荐配置。特别是生产环境,绝不能省硬件成本。

硬件类型 生产环境(推荐) 测试环境(最低) 关键说明
CPU 8核及以上(Intel Xeon E5/E7或同等AMD) 2核(x86_64架构) 生产环境建议开启超线程,提升并发处理能力
内存 32GB及以上 8GB SGA+PGA占用约内存的70%,比如32GB内存可分配22GB给数据库
磁盘 500GB及以上(SSD优先) 100GB(机械硬盘即可) 生产环境选SSD提升IO性能,测试环境可节省成本用机械盘
网卡 10Gbps及以上 1Gbps 生产环境保障数据传输速度,避免网络瓶颈

1.2 OS选型:认准兼容版本,避开“小众系统”

Oracle 19c对Linux系统的兼容性有明确要求,别随便用一个版本就上。目前最稳定的搭配是CentOS 7/8和RHEL 7/8,具体版本建议选择:

  • CentOS 7.6及以上、CentOS 8.2及以上

  • RHEL 7.6及以上、RHEL 8.2及以上

    这里特别提醒:别用CentOS 6或更低版本,不仅不兼容,后续连依赖包都装不上;也别尝试Ubuntu等非RHEL系系统,遇到问题很难找到解决方案。

    1.3 系统参数优化:一键配置,避免“隐疾”

    系统默认参数往往满足不了Oracle的需求,比如内核参数限制、资源限制等,必须手动优化。这些操作不用记,直接抄作业就行。

    1.3.1 内核参数优化

    编辑/etc/sysctl.conf文件,添加以下内容,然后执行sysctl -p生效:

    
    # Oracle 19c 内核参数配置
    
    fs.file-max 
    = 
    6815744  
    # 系统最大文件句柄数
    
    kernel.sem 
    = 
    250 
    32000 
    100 
    128  
    # 信号量配置
    
    kernel.shmmni 
    = 
    4096  
    # 共享内存段最大数量
    
    kernel.shmall 
    = 
    1073741824  
    # 共享内存总大小(单位:页,4KB/页)
    
    kernel.shmmax 
    = 
    4398046511104  
    # 单个共享内存段最大大小(建议为物理内存的75%)
    
    net.core.rmem_default 
    = 
    262144  
    # 默认接收缓冲区大小
    
    net.core.rmem_max 
    = 
    4194304  
    # 最大接收缓冲区大小
    
    net.core.wmem_default 
    = 
    262144  
    # 默认发送缓冲区大小
    
    net.core.wmem_max 
    = 
    1048576  
    # MAX发送缓冲区大小
    
    net.ipv4.ip_local_port_range 
    = 
    9000 
    65500  
    # 本地端口范围
    
    fs.aio-max-nr 
    = 
    1048576  
    # 异步IO请求最大数量

    1.3.2 资源限制配置

    编辑/etc/security/limits.conf文件,添加oracle用户的资源限制:

    
    # Oracle用户资源限制
    
    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 soft memlock 
    134217728  
    # 软限制:锁定内存大小(128GB)
    
    oracle hard memlock 
    134217728  
    # 硬限制:锁定内存大小(128GB)

    1.3.3 SELINUX与防火墙配置

    SELINUX默认开启会阻止Oracle的部分操作,建议关闭;防火墙如果不是必须,可直接关闭,若需要开启则开放1521(数据库端口)和22(SSH端口)。

    
    # 关闭SELINUX(永 久生效,需重启)
    
    
    sed 
    -i 
    's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    
    
    # 临时关闭SELINUX(无需重启)
    
    setenforce 
    0
    
    
    
    
    
    # 关闭防火墙(CentOS 7/8)
    
    systemctl 
    stop firewalld
    
    systemctl disable firewalld
    
    
    
    
    
    # 若需开启防火墙,开放必要端口
    
    
    # systemctl start firewalld
    
    
    # firewall-cmd --zone=public --add-port=1521/tcp --permanent
    
    
    # firewall-cmd --zone=public --add-port=22/tcp --permanent
    
    
    # firewall-cmd --reload

    二、存储规划:别把“鸡蛋”放一个篮子里

    “数据文件和日志文件放一块,磁盘满了数据库直接挂了”——这是新手最常犯的存储错误。Oracle的不同文件对IO的需求不同,必须分开存储,才能保证性能和安全。

    2.1 存储分离:核心原则“三类文件三分离”

    数据文件、日志文件、归档文件的IO特性完全不同,混存会导致IO竞争,严重影响性能。推荐两种分离方案,中小规模用LVM,大规模用ASM。

    2.1.1 LVM方案(适合中小业务,配置简单)

    通过LVM将不同磁盘分区,分别挂载给三类文件,示例如下:

    文件类型 磁盘配置 挂载点 核心原因
    数据文件 2块SSD做RAID 1 /u01/oradata 数据读写频繁,RAID 1保障数据安全
    日志文件 2块SSD做RAID 1 /u01/oraredo 日志写入是顺序IO,独立磁盘避免延迟
    归档文件 1块大容量机械硬盘 /u01/orarchive 归档读写频率低,机械盘节省成本
    LVM创建挂载示例(以数据文件挂载点为例):
    
    # 创建物理卷
    
    pvcreate /dev/sdb1
    
    
    # 创建卷组
    
    vgcreate oravg /dev/sdb1
    
    
    # 创建逻辑卷(大小为卷组的100%)
    
    lvcreate 
    -l 
    100%VG 
    -n oradata oravg
    
    
    # 格式化逻辑卷
    
    mkfs.xfs /dev/oravg/oradata
    
    
    # 创建挂载点并挂载
    
    
    mkdir 
    -p /u01/oradata
    
    mount /dev/oravg/oradata /u01/oradata
    
    
    # 设置开机自动挂载
    
    
    echo 
    "/dev/oravg/oradata /u01/oradata xfs defaults 0 0" >> /etc/fstab

    2.1.2 ASM方案(适合大规模业务,高可用)

    ASM是Oracle自带的存储管理工具,支持自动负载均衡和故障转移,适合多节点或大容量存储场景。核心是创建三个磁盘组,对应三类文件:

  • DATA磁盘组:存储数据文件,用SSD提升读写性能

  • REDO磁盘组:存储日志文件,用高速SSD保障写入速度

  • FRA磁盘组:存储归档文件和备份集,用大容量磁盘

    2.2 业务适配:IO需求决定磁盘类型

    不同业务场景对磁盘IO的要求天差地别,选对磁盘类型才能发挥性能优势:

  • OLTP场景(如电商交易、金融支付) :特点是高频次小事务,以随机IO为主。必须用SSD,且数据文件和日志文件要分开,避免IO冲突。比如某电商系统,用SSD后订单提交响应时间从500ms降至80ms。

  • OLAP场景(如报表统计、数据仓库) :特点是大批量数据查询,以连续IO为主。可以用SSD提升速度,若数据量极大,也可用机械硬盘组RAID 5,平衡成本和性能。

    三、前置依赖与权限:细节决定成败

    “依赖包缺失导致安装中断”“权限不足无法创建目录”,这些问题都出在前置准备上。只要把依赖包装全、权限配对,安装过程就能顺风顺水。

    3.1 依赖包安装:yum一键搞定,告别“缺失烦恼”

    Oracle 19c依赖的包很多,手动一个个装容易遗漏,直接用yum命令一键安装最稳妥。不同系统版本的依赖包略有差异,对应脚本如下:

    3.1.1 CentOS 7/RHEL 7

    yum install 
    -y binutils compat-libcap1 compat-libstdc
    ++
    -33 \
    
    compat-libstdc
    ++
    -33.i686 glibc glibc.i686 glibc-devel glibc-devel.i686 \
    
    ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libX11 libX11.i686 \
    
    libXau libXau.i686 libXi libXi.i686 libXtst libXtst.i686 libgcc libgcc.i686 \
    
    libstdc
    ++ libstdc
    ++.i686 libstdc
    ++
    -devel libstdc
    ++
    -devel.i686 libxcb libxcb.i686 \
    
    
    make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel

    3.1.2 CentOS 8/RHEL 8

    yum install 
    -y binutils compat-libcap1 
    gcc gcc-c
    ++ glibc glibc-devel \
    
    ksh libaio libaio-devel libX11 libXau libXi libXtst libgcc libstdc
    ++ \
    
    libstdc
    ++
    -devel libxcb 
    make nfs-utils net-tools smartmontools sysstat \
    
    unixODBC unixODBC-devel

    安装完成后,可通过以下命令验证是否有缺失(无输出则表示全部安装):

    rpm -q binutils compat-libcap1 glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libgcc libstdc++ libstdc++-devel libxcb make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel | grep "not installed"

    3.2 权限配置:oracle用户“专属权限”要给足

    Oracle安装和运行必须用oracle用户,且目录权限要配置正确,否则会出现“无法写入文件”“权限被拒绝”等错误。操作步骤如下:

    3.2.1 创建用户和用户组

    
    # 创建用户组
    
    groupadd 
    -g 
    54321 oinstall
    
    groupadd 
    -g 
    54322 dba
    
    groupadd 
    -g 
    54323 oper
    
    
    # 创建oracle用户并加入组
    
    useradd 
    -u 
    54321 
    -g oinstall 
    -G dba,oper oracle
    
    
    # 设置oracle用户密码
    
    passwd oracle

    3.2.2 创建安装目录并分配权限

    Oracle的安装目录(ORACLE_HOME)和数据目录必须由oracle用户拥有,权限设为755即可:

    
    # 创建安装目录和数据目录
    
    
    mkdir 
    -p /u01/app/oracle/product/19.3.0/dbhome_1
    
    
    mkdir 
    -p /u01/oradata
    
    
    mkdir 
    -p /u01/oraredo
    
    
    mkdir 
    -p /u01/orarchive
    
    
    # 分配权限
    
    
    chown 
    -R oracle:oinstall /u01/app
    
    
    chown 
    -R oracle:oinstall /u01/oradata
    
    
    chown 
    -R oracle:oinstall /u01/oraredo
    
    
    chown 
    -R oracle:oinstall /u01/orarchive
    
    
    chmod 
    -R 
    755 /u01/app
    
    
    chmod 
    -R 
    755 /u01/oradata

    3.2.3 配置oracle用户环境变量

    切换到oracle用户,编辑~/.bash_profile文件,添加以下内容,让Oracle能找到安装路径和配置:

    
    # Oracle环境变量
    
    
    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:
    $HOME/.local/bin:
    $HOME/bin
    
    
    export 
    LD_LIBRARY_PATH
    =
    $ORACLE_HOME/lib:/lib:/usr/lib

    配置完成后,执行source ~/.bash_profile生效。

    四、实操工具:一键检查,省心省力

    做完以上配置,怎么确认没问题?别手动一条条查,用下面的工具脚本,一键校验硬件、OS参数、依赖包,让问题无所遁形。

    4.1 系统环境检查脚本

    创建check_oracle_env.sh脚本,内容如下,执行后会自动输出检查结果:

    
    #!/bin/bash
    
    
    echo 
    "==================== 硬件检查 ===================="
    
    
    # CPU检查
    
    
    echo 
    "CPU核数: 
    $(grep -c 'processor' /proc/cpuinfo)
    "
    
    
    # 内存检查
    
    
    echo 
    "内存大小: 
    $(free -h | grep Mem | awk '{print 
    $2
    }')
    "
    
    
    # 磁盘检查
    
    
    echo 
    "磁盘空间: "
    
    df 
    -h | 
    grep 
    -E 
    '/u01|/dev/sd'
    
    
    
    
    
    echo 
    -e 
    "\n==================== 依赖包检查 ===================="
    
    
    dep_pkgs
    =
    "binutils compat-libcap1 glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libgcc libstdc++ libstdc++-devel libxcb make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel"
    
    
    for pkg 
    in 
    $dep_pkgs; 
    do
    
        rpm 
    -q 
    $pkg > /dev/null 
    2>&1
    
        
    if [ 
    $? 
    -ne 
    0 ]; 
    then
    
            
    echo 
    "缺失依赖包: 
    $pkg
    "
    
        
    fi
    
    
    done
    
    
    
    
    
    echo 
    -e 
    "\n==================== 内核参数检查 ===================="
    
    
    # 检查shmmax参数
    
    
    shmmax
    =
    $(sysctl -n kernel.shmmax)
    
    
    echo 
    "kernel.shmmax: 
    $shmmax
     (建议至少为物理内存的75%)"
    
    
    # 检查文件句柄数
    
    
    file_max
    =
    $(sysctl -n fs.file-max)
    
    
    echo 
    "fs.file-max: 
    $file_max
     (建议≥6815744)"
    
    
    
    
    
    echo 
    -e 
    "\n==================== 权限检查 ===================="
    
    
    # 检查目录权限
    
    
    if [ 
    -d 
    "/u01/app/oracle" ]; 
    then
    
        
    owner
    =
    $(stat -c %U:%G /u01/app/oracle)
    
        
    echo 
    "/u01/app/oracle 权限: 
    $owner
     (应为oracle:oinstall)"
    
    
    else
    
        
    echo 
    "/u01/app/oracle 目录不存在"
    
    
    fi
    
    
    
    
    
    echo 
    -e 
    "\n检查完成!若有缺失或异常,请根据提示修复。"

    执行方法:chmod +x check_oracle_env.sh && ./check_oracle_env.sh,根据输出的“缺失依赖包”“权限异常”等提示逐一修复即可。

    4.2 存储规划检查表

    部署前对照以下检查表,确保存储配置无误:

  • ☐ 数据文件、日志文件、归档文件已分别挂载到不同磁盘

  • ☐ 数据文件和日志文件所在磁盘为SSD(生产环境)

  • ☐ 各挂载点磁盘空间充足(生产环境≥100GB)

  • ☐ 挂载点权限为oracle:oinstall,权限755

  • ☐ 已配置开机自动挂载,避免重启后挂载失效

    五、部署前多花1小时,运维少踩10个坑

    Oracle 19c的环境规划,核心就是“稳”——硬件配置够量、OS参数适配、存储分离合理、权限依赖配齐。这些工作看似繁琐,但每一步都在为后续运维“扫雷”。

    记住一句话:“部署前的细致,就是运行后的稳定”。按照这篇指南操作,再用检查脚本校验一遍,你的Oracle 19c就能有一个坚实的“开局”。下一篇,我们将进入实际安装环节,带你手把手完成Oracle 19c的单实例部署,不见不散!

    ???? 点赞,你的认可是我创作的动力!

    ⭐️ 收藏,你的青睐是我努力的方向!

    ✏️ 评论,你的意见是我进步的财富!

    PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我吧!

    原文链接: https://mp.weixin.qq.com/s/1xzw88FVltnqD3N3ulJsCQ

  • 相关推荐