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