物理机服务器装Oracle数据库,核心思路就一句话:先搞定操作系统环境和依赖包,再用静默方式跑安装程序,最后配置监听和实例,全程不走图形界面也能稳稳落地。
物理机服务器安装oracle数据库前要做哪些硬件和系统检查
老规矩,别一上来就敲命令,物理机和云主机最大的区别在于,硬件资源是独占的,但操作系统环境可能干净得让你想哭,很多人在物理机装Oracle翻车,八成是栽在环境准备这一步。
先看硬件配置够不够格
Oracle 19c是当前主流版本,官方文档给出的最低要求是2核CPU、2GB内存、10GB磁盘空间,但这是”能跑”的标准,不是”跑得动”的标准。
行业共识认为,生产环境物理机建议至少4核起步、16GB内存,磁盘用SSD最好,数据盘和系统盘分开挂载,Oracle安装目录比如/u01单独规划一个分区,避免系统日志把磁盘撑爆。
检查命令很简单:
lscpu看CPU核数和架构free -h看内存总量和交换分区df -h看各分区剩余空间fdisk -l看物理磁盘数量和分区情况
操作系统版本怎么选
Oracle 19c官方支持的操作系统包括RHEL 7.6以上、Oracle Linux 7.6以上、以及CentOS 7.6以上,如果你拿到的物理机是RHEL 8或者Rocky Linux,也问题不大,装的时候加一个兼容参数就行。
物理机服务器安装oracle数据库,很多人纠结选11g还是19c,这里直接给答案:2019年之后新上的业务,无脑选19c,11g在2020年底已经停止官方技术支持,安全补丁断供,等出了漏洞再补救就晚了。
检查系统版本:
cat /etc/os-release
uname -m
x86_64架构没问题,如果是ARM架构的物理机(比如鲲鹏920),得额外下载ARM版的Oracle安装包,别下错了。
网络和主机名这些小细节别忽视
hostname查看主机名,不能带下划线,否则安装时会报错ip addr查看IP地址,确保有静态IP,DHCP分配的IP在重启后会变/etc/hosts文件要配置主机名和IP的映射,localhost也加上
很多人在物理机装Oracle卡在PRVG-0282这类报错,就是hosts文件没配好。
物理机服务器安装oracle数据库的系统配置步骤
这部分是整个流程里最枯燥但最关键的,每一条命令都有意义,别跳过。
创建Oracle用户和用户组
Oracle安装不能用root用户跑,得建一个专用的操作系统账户。
groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle passwd oracle
生产环境建议把oracle用户的umask设置为022,确保创建的文件权限是755,目录是644,避免权限问题导致的诡异报错。
调整内核参数和资源限制
打开/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生效,其中kernel.shmmax的值按实际物理内存来改,如果内存是32GB,设成34359738368就够用。
资源限制这块,编辑/etc/security/limits.conf:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
这是老生常谈的配置,但每次都有因为忘了配置nofile导致监听器文件句柄不够、连接数一多就崩的情况。
关闭防火墙和SELinux
物理机装Oracle数据库,防火墙和SELinux是企业环境最常见的坑,内网环境压跟用不上防火墙,先关为敬。
systemctl stop firewalld systemctl disable firewalld sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0
改完SELinux后reboot一次,用getenforce确认输出是Disabled。
安装依赖包
Oracle 19c需要的依赖包一口气装完:
yum install -y bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make net-tools nfs-utils python python-configshell python-rtslib python-six smartmontools sysstat unixODBC unixODBC-devel gcc gcc-c++ libnsl
CentOS 8以上版本用dnf install替代yum install,其他一样,装完用rpm -qa --queryformat '%{NAME}\n' | grep <包名>逐个验证,缺了就单独补。
物理机装oracle数据库的静默安装步骤与关键参数
图形界面安装在这不展开说,物理机远程操作时没有显示器,静默安装才是正路。
正确下载Oracle 19c安装包
去Oracle官网下载LINUX.X64_193000_db_home.zip,约2.7GB,下载完放到/u01/install目录,校验MD5没问题后解压:
unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/dbhome_1
解压完修改目录属主:
chown -R oracle:oinstall /u01/app/oracle
静默安装的响应文件配置
安装包解压目录下有个response目录,里面有db_install.rsp模板,复制一份出来改:
cp /u01/app/oracle/product/19.3.0/dbhome_1/response/db_install.rsp /home/oracle/ chown oracle:oinstall /home/oracle/db_install.rsp
关键参数修改这几个:
oracle.install.option=INSTALL_DB_SWONLY只装数据库软件,不建实例UNIX_GROUP_NAME=oinstallORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1ORACLE_BASE=/u01/app/oracleoracle.install.db.InstallEdition=EE企业版oracle.install.db.OSDBA_GROUP=dbaoracle.install.db.OSOPER_GROUP=dbaoracle.install.db.OSBACKUPDBA_GROUP=dbaoracle.install.db.OSDGDBA_GROUP=dbaoracle.install.db.OSKMDBA_GROUP=dbaoracle.install.db.OSRACDBA_GROUP=dbaoracle.install.db.rootconfig.executeRootScript=false
用oracle用户执行:
su - oracle cd /u01/app/oracle/product/19.3.0/dbhome_1 ./runInstaller -silent -responseFile /home/oracle/db_install.rsp
安装过程中观察终端输出,最后会提示你去执行/u01/app/oracle/product/19.3.0/dbhome_1/root.sh,用root用户跑完之后,再切回oracle用户执行:
su - oracle /u01/app/oracle/product/19.3.0/dbhome_1/bin/sqlplus -v
看到版本号说明软件装好了。
物理机部署oracle数据库监听与实例创建实操
软件装好了只完成了一半,监听器和实例没起来,Oracle就是一堆摆在那的文件。
配置监听器
用Oracle自带的netca静默建监听:
su - oracle netca -silent -responseFile /home/oracle/netca.rsp
也可以写一条简化命令:
netca -silent -port 1521 -responsefile $ORACLE_HOME/assistants/netca/netca.rsp
监听默认监听1521端口,配置完成后用lsnrctl status确认状态,看到The command completed successfully就对了。
用dbca创建实例
建库用dbca静默模式,一个参数文件搞定。
先把/etc/oraInst.loc里inventory_loc路径确认一下,然后执行:
dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -sid orcl \ -gdbName orcl \ -characterSet AL32UTF8 \ -memoryPercentage 40 \ -emConfiguration NONE \ -datafileDestination /u01/app/oracle/oradata \ -recoveryAreaDestination /u01/app/oracle/fast_recovery_area \ -storageType FS \ -sampleSchema false \ -automaticMemoryManagement true \ -totalMemory 8000 \ -sysPassword YourStrongPwd1 \ -systemPassword YourStrongPwd1
密码必须符合Oracle的复杂度规则:大小写加数字,至少8位。totalMemory按物理机实际内存的一半左右设,别贪多。
创建过程大概10-20分钟,取决于磁盘性能,等终端输出Database creation complete后,实例就建好了。
验证一下:
sqlplus / as sysdba SQL> select status from v$instance;
输出OPEN就说明实例正常运行。
物理机服务器安装oracle数据库后的开机自启配置
物理机免不了重启,每次重启都手动启Oracle,运维压力太大,开机自启必须配。
修改/etc/oratab
这个文件是Oracle实例的注册表,安装时自动生成的,编辑它:
vi /etc/oratab
找到orcl:/u01/app/oracle/product/19.3.0/dbhome_1:N,把最后的N改成Y,保存退出。
写启动脚本
新建/etc/init.d/oracle脚本:
#!/bin/bash
ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
ORACLE_USER=oracle
case $1 in
start)
su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
;;
stop)
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"
;;
esac
赋予执行权限并注册到systemd:
chmod +x /etc/init.d/oracle systemctl daemon-reload systemctl enable oracle
重启一次物理机,等系统起来后执行sqlplus / as sysdba,能进就说明自启配置成功。
物理机安装oracle时常见报错怎么判断和处理
排错能力决定了运维效率,据统计,物理机装Oracle的报错集中在以下几个场景:
ORA-27154和ORA-27102这类内存报错
内核参数配置和物理内存不匹配,确认/etc/sysctl.conf里的kernel.shmall是否小于物理内存页数,用ipcs -lm和cat /proc/meminfo | grep CommitLimit对照检查。
安装界面卡住不动
物理机装Oracle时如果终端长时间无输出,检查以下三项:
- 磁盘IO是不是被占满了,用
iostat -x 1观察 - 防火墙是否把Oracle的通信端口封了
- swap空间是否小于Oracle的最低要求,生产物理机建议swap至少8GB
监听起来了但连不上
lsnrctl status看服务注册状态netstat -tlnp | grep 1521确认监听端口- tnsping测通不代表数据库可用,sqlplus连着才算
物理机安装oracle数据库为什么要避开几个常见误区
最后聊几个容易走偏的点。
小内存物理机硬装5个实例,每个实例内存分配过高,导致系统物理机本身卡到登录都困难,内存不够就老老实实减少实例或调低SGA_TARGET,别赌运气。
官方便携版和RPM版适合开发环境,生产环境别用,Oracle提供了完整的runInstaller安装器,多花十几分钟走正规流程,后续补丁升级和日志排查才不遭罪。
物理机服务器装oracle数据库的成本,除了服务器采购,更值得关注的是后续运维时间,规范安装、完整记录安装日志、文档化配置变更,比任何花哨的自动化工具都管用。
物理机服务器安装oracle数据库常见问题解答
问题:物理机装Oracle一定要图形界面吗?
不必须,物理机在机房交付后往往没有显示器,SSH连上去用静默安装方式即可。runInstaller加-silent参数,配合响应文件,全程无图形界面也能完成安装。
问题:物理机部署Oracle对磁盘分区有什么建议?
Oracle安装目录、数据文件目录、归档日志目录分开挂载,数据文件放独立的数据盘,系统盘只放操作系统和Oracle软件,这样某块盘故障时,其他组件不受牵连。
问题:Oracle 11g和19c在物理机上的性能表现差别大吗?
19c的优化器和管理工具比11g成熟不少,自治数据库方面有些特性是老版本没有的,安全修复上,11g已停止官方支持,不建议生产环境使用,如果业务没有非用11g不可的兼容性依赖,直接选19c。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/788884.html


