在 CentOS 上配置 Oracle 的标准流程
以下流程覆盖 CentOS 7/8 上部署 Oracle 11g/12c/19c 的关键环节,包含系统准备、内核与资源限制、用户与目录、安装与建库、网络与自启、验证与常见问题处理,便于快速落地与排错。
一 环境准备与系统优化
hostnamectl set-hostname dbecho "服务器IP 主机名" >> /etc/hostsyum -y --nogpgcheck install oracle-rdbms-server-12cR1-preinstall.x86_64(自动完成依赖与内核参数建议)dnf install -y bc binutils elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libXrender libX11 libXi libXtst libgcc libstdc++ libstdc++-devel libxcb make net-tools smartmontools sysstat unzip libnsl libnsl2cat /sys/kernel/mm/transparent_hugepage/enabled/etc/default/grub 的 GRUB_CMDLINE_LINUX 增加 transparent_hugepage=never,执行 grub2-mkconfig -o /boot/grub2/grub.cfg 并重启systemctl stop firewalld && systemctl disable firewalldsetenforce 0 并编辑 /etc/selinux/config 将 SELINUX=enforcing 改为 SELINUX=permissive 或 disabled二 创建用户组与目录并配置资源限制
groupadd -g 6001 oinstallgroupadd -g 6002 dbauseradd -u 6001 -g oinstall -G dba oraclepasswd oraclemkdir -p /opt/oracle/product/19c/dbhome_1 /u02/oradatachown -R oracle:oinstall /opt/oracle /u02oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock 134217728
oracle hard memlock 134217728
session required pam_limits.sofs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
fs.aio-max-nr = 1048576
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 --system三 安装 Oracle 软件与创建数据库
yum localinstall -y oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpmunzip LINUX.X64_193000_db_home.zip -d /opt/oracle/product/19c/dbhome_1),进入目录执行 ./runInstaller./runInstaller./runInstaller -silent -responseFile /path/to/response.rspnetca(图形)或静默配置dbca(图形)或静默建库(示例)dbca -silent \
-createDatabase \
-templateName General_Purpose.dbc \
-gdbname ORCLCDB -sid ORCLCDB \
-responseFile NO_VALUE \
-characterSet AL32UTF8 \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName PDB1 \
-sysPassword <口令> \
-systemPassword <口令>
root.sh 脚本(通常位于 $ORACLE_HOME/root.sh)四 网络、服务与自启动配置
lsnrctl status;启动:lsnrctl starttnsnames.ora,确保服务名与 GLOBAL_DBNAME 一致cat > /etc/systemd/system/oracle.service <<'EOF'
[Unit]
Description=Oracle Database Service
After=network.target
[Service]
Type=simple
User=oracle
Environment="ORACLE_HOME=/opt/oracle/product/19c/dbhome_1"
Environment="ORACLE_SID=ORCLCDB"
ExecStart=/opt/oracle/product/19c/dbhome_1/bin/dbstart $ORACLE_HOME
ExecStop=/opt/oracle/product/19c/dbhome_1/bin/dbshut $ORACLE_HOME
ExecStartPre=/opt/oracle/product/19c/dbhome_1/bin/lsnrctl start
ExecStopPost=/opt/oracle/product/19c/dbhome_1/bin/lsnrctl stop
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now oracle
/etc/init.d/oracledb_ORCLCDB-19c configurechkconfig oracledb_ORCLCDB-19c onfirewall-cmd --add-port=1521/tcp --permanent && firewall-cmd --reload(若启用防火墙)五 验证与常见问题处理
sqlplus / as sysdbastartup / shutdown immediatelsnrctl statusselect * from v$version;
select name, open_mode from v$database;
select userenv('language') from dual;
/etc/hosts 正确绑定 IP 与主机名,否则建库/监听会报错compat-libstdc++-33 与 compat-libcap1,必要时设置环境变量 export CV_ASSUME_DISTID=RHEL7.6 再执行安装tnsnames.ora 配置正确、数据库处于 OPEN 状态