温馨提示×

如何在centos上搭建oracle环境

小樊
42
2025-12-13 12:44:41
栏目: 云计算

在 CentOS 上搭建 Oracle 环境的实用步骤

一 环境准备与系统要求

  • 推荐系统:CentOS 7/8(x86_64),内存至少2 GB(建议 ≥4 GB),磁盘可用空间≥10 GB(建议 ≥20 GB)。Swap 建议:内存1–2 GB时设为内存的1.5 倍2–16 GB时与内存相同;>16 GB时设为16 GB。更新系统并安装常用工具:sudo yum update -y && sudo yum install -y unzip

二 两种安装方式概览

  • 方式 A RPM 快速安装 Oracle 19c(推荐)
    • 使用 Oracle 官方 YUM 源安装预安装包,自动完成内核参数、用户与资源限制等配置;再安装数据库主包并初始化实例。适合快速落地与标准化环境。
  • 方式 B 图形化安装 Oracle(11g/12c/19c 通用)
    • 手动创建用户与目录、配置内核参数与资源限制、配置环境变量,上传并解压安装介质,通过 Oracle Universal Installer 或 DBCA 完成安装与建库。

三 方式 A RPM 快速安装 Oracle 19c(CentOS 7 示例)

  • 1)安装预安装包(自动配置内核参数、用户组、limits 等)
    • 导入 Oracle 官方 YUM 源后安装:sudo yum localinstall -y oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm(如缺少依赖,使用 yum localinstall 可自动解决依赖)。
  • 2)安装数据库主包
    • sudo yum localinstall -y oracle-database-ee-19c-1.0-1.x86_64.rpm(主包会创建软件目录,如 /opt/oracle/product/19c/dbhome_1)。
  • 3)初始化数据库实例(静默建库,CDB+PDB)
    • 切换到 oracle 用户:su - oracle
    • 执行:/opt/oracle/product/19c/dbhome_1/bin/dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname ORCLCDB -sid ORCLCDB \ -characterSet AL32UTF8 \ -sysPassword Oracle123! -systemPassword Oracle123! \ -createAsContainerDatabase true \ -numberOfPDBs 1 -pdbName ORCLPDB1 -pdbAdminPassword Oracle123!
  • 4)启动与验证
    • 监听:lsnrctl start;查看监听:lsnrctl status
    • 登录:sqlplus / as sysdba;查看实例:select status from v$instance;
    • 如未自动注册监听,可检查 local_listener 参数或重启监听。

四 方式 B 图形化安装 Oracle(11g/12c/19c 通用)

  • 1)创建用户与组、安装依赖
    • 用户组:sudo groupadd oinstall && sudo groupadd dba
    • 用户:sudo useradd -g oinstall -G dba oracle && sudo passwd oracle
    • 依赖:sudo yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
  • 2)内核参数与资源限制
    • sysctl.conf(示例值,按内存调整,如 kernel.shmmax 一般为物理内存一半,单位 Byte):
      • fs.aio-max-nr = 1048576
      • fs.file-max = 6815744
      • kernel.shmall = 2097152
      • kernel.shmmax = 2147483648
      • 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
      • 生效:sudo sysctl -p
    • limits.conf:oracle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536oracle soft stack 10240
    • PAM:echo "session required pam_limits.so" | sudo tee -a /etc/pam.d/login
  • 3)创建目录与环境变量
    • 目录:sudo mkdir -p /u01/app/oracle && sudo chown -R oracle:oinstall /u01 && sudo chmod -R 775 /u01
    • oracle 用户环境变量(~/.bash_profile 或 ~/.bashrc):
      • export ORACLE_BASE=/u01/app/oracle
      • export ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1
      • export ORACLE_SID=orcl
      • export PATH=$ORACLE_HOME/bin:$PATH
      • export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
  • 4)安装与建库
    • 上传并解压安装介质(如 19c:unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME
    • 图形化安装:xhost +(如在本机图形环境);su - oracle 后执行 ./runInstaller
    • 或使用 DBCA 建库:dbca(图形或静默均可)
  • 5)启动与验证
    • lsnrctl startsqlplus / as sysdbaselect status from v$instance;

五 网络、防火墙与开机自启

  • 防火墙(测试环境可直接关闭;生产环境建议放行端口)
    • 关闭:sudo systemctl stop firewalld && sudo systemctl disable firewalld
    • 放行端口(示例):sudo firewall-cmd --permanent --add-port=1521/tcp && sudo firewall-cmd --reload
  • SELinux(安装阶段可临时禁用;生产环境建议保持 enforcing 并做策略放行)
    • 临时:sudo setenforce 0
    • 永久:sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config(或 disabled,重启生效)
  • 开机自启
    • RPM 方式:已提供 systemd 服务,可直接启用(示例)sudo systemctl enable --now oracle-database-ee-19c
    • 图形化方式:配置 dbstart/dbshut/etc/oratab 的自动启动项,或使用自定义 systemd 服务单元管理 lsnrctldbstart

六 常见问题与排错要点

  • 依赖缺失:安装预安装包时优先使用 yum localinstall 自动补齐依赖(如 bc、bind-utils 等)。
  • 图形化安装报错(如 NoClassDefFoundError、无法打开显示):在本机执行 xhost +,或在服务器设置 DISPLAY 并使用 ssh -X 转发 X11。
  • 监听未注册服务:检查 local_listener 参数、监听状态与 tnsnames.ora 配置;必要时 alter system register;
  • 字符集与 NLS:建议数据库字符集使用 AL32UTF8,客户端 NLS_LANG=AMERICAN_AMERICA.AL32UTF8
  • 日志定位:优先查看 $ORACLE_BASE/diag/ 下的 alerttrace 日志,结合 lsnrctl statustnspingsqlplus 逐步排查。

0