温馨提示×

centos中oracle配置方法有哪些

小樊
44
2025-11-27 18:55:12
栏目: 云计算

CentOS 上 Oracle 配置方法概览

CentOS 环境中,Oracle 的配置通常涵盖:系统前置配置监听与服务名网络配置实例创建与启停开机自启与远程访问。下面按场景给出常用做法与关键要点,便于快速落地与排错。

一、系统前置配置

  • 创建用户与组:建议创建专用账户与组,便于权限隔离与运维管理。示例:groupadd oinstallgroupadd dbauseradd -g oinstall -G dba oracle
  • 内核参数:编辑 /etc/sysctl.conf,常见关键项包括:fs.aio-max-nr=1048576fs.file-max=6815744kernel.shmall=2097152kernel.shmmni=4096kernel.sem=250 32000 100 128net.ipv4.ip_local_port_range=9000 65500、以及 rmem/wmem 系列网络缓冲参数;执行 sysctl -p 使生效。
  • 资源限制:编辑 /etc/security/limits.conf,为 oracle 用户设置如 nproc、nofile、stack 的上限;在 /etc/pam.d/login 加入 session required pam_limits.so;必要时在 /etc/profile 中对 oracle 用户设置 ulimit
  • 目录与权限:创建 /u01/app/oracle 等目录并赋权:chown -R oracle:oinstall /u01chmod -R 775 /u01
  • 依赖包:安装常见编译与运行依赖,如 binutils、compat-libcap1、compat-libstdc+±33、gcc、gcc-c++、glibc、glibc-devel、ksh、libaio、libaio-devel、libXi、libXtst、make、sysstat、unixODBC、unixODBC-devel
  • SELinux 与防火墙:测试环境可临时将 SELINUX=permissive(或 setenforce 0),生产环境建议保持 enforcing 并采用最小权限策略;防火墙按需放行 1521/TCP 等端口或临时停用 firewalld 以便联调。

二、监听与网络服务配置

  • 监听程序 Listener(服务器端)
    • 配置文件:$ORACLE_HOME/network/admin/listener.ora。示例:
      LISTENER =
        (DESCRIPTION_LIST =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521))
          )
        )
      SID_LIST_LISTENER =
        (SID_LIST =
          (SID_DESC =
            (SID_NAME = your_sid)
            (ORACLE_HOME = your_oracle_home)
          )
        )
      
    • 常用命令:lsnrctl start|stop|status|reload;修改后执行 reload 或重启以生效。
  • 本地服务名 TNS(客户端/服务器端均可)
    • 配置文件:$ORACLE_HOME/network/admin/tnsnames.ora。示例:
      YOUR_DB =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521))
          (CONNECT_DATA =
            (SID = your_sid)
          )
        )
      
    • 测试连接:sqlplus username/password@YOUR_DB
  • 图形化工具:可使用 Oracle Net Manager(netmgr)netca 向导完成监听与服务名配置,降低手工编辑出错概率。

三、创建数据库实例与启停管理

  • 使用 DBCA 创建实例
    • 交互式:dbca(图形界面按向导完成)。
    • 静默方式(示例):
      dbca -silent \
        -createDatabase \
        -templateName General_Purpose.dbc \
        -gdbname orcl -sid orcl \
        -characterSet AL32UTF8
      
  • 启停实例
    • 登录:sqlplus / as sysdba
    • 启动/关闭:startup / shutdown immediate
  • 环境变量:在 /home/oracle/.bashrc/etc/profile.d/db.sh 中设置 ORACLE_BASE、ORACLE_HOME、ORACLE_SID、PATH、LD_LIBRARY_PATH 等,例如:
    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
    export ORACLE_SID=orcl
    export PATH=$ORACLE_HOME/bin:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
    

四、开机自启与远程访问

  • systemd 服务(推荐)
    • 创建 /etc/systemd/system/oracle.service
      [Unit]
      Description=Oracle Database Service
      After=network.target
      
      [Service]
      Type=forking
      User=oracle
      Environment="ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1"
      ExecStart=$ORACLE_HOME/bin/dbstart $ORACLE_HOME
      ExecStop=$ORACLE_HOME/bin/dbshut $ORACLE_HOME
      Restart=on-abort
      
      [Install]
      WantedBy=multi-user.target
      
    • 启用:systemctl daemon-reload && systemctl enable --now oracle
  • 传统方式
    • /etc/oratab 将对应实例的 N 改为 Y,允许 dbstart/dbshut 管理;结合系统启动脚本(如 rc.local 或自定义脚本)调用 lsnrctl startdbstart
  • 远程访问
    • 确保监听端口 1521/TCP 已在服务器防火墙放行;客户端通过 EZConnect(如 sqlplus user/pass@host:1521/service)或 TNS 名称连接;必要时在 sqlnet.ora 中配置命名方法(如 NAMES.DIRECTORY_PATH=(TNSNAMES, EZCONNECT))。

五、常见问题与快速排查

  • 监听问题:使用 lsnrctl status 查看监听端口与服务映射;修改 listener.ora 后用 lsnrctl reload 或重启;确认 HOST 填写为服务器可解析的主机名或 IP,端口为 1521
  • 实例无法启动:检查 ORACLE_SID 是否与实例一致;查看告警日志(ADR 目录,如 $ORACLE_BASE/diag/rdbms///trace/alert_.log)与监听日志。
  • 客户端连不通:核对服务器与客户端 tnsnames.ora 一致;确认防火墙/安全组放行 1521/TCP;必要时用 tnsping YOUR_DB 验证解析与连通性。
  • 字符集与 NLS:建议数据库字符集使用 AL32UTF8;客户端可通过 NLS_LANG 环境变量统一显示与排序规则。

0