centos

centos oracle配置注意事项

小樊
55
2025-09-26 09:12:34
栏目: 云计算

CentOS系统配置Oracle数据库注意事项

一、系统准备阶段

  1. 系统更新与兼容性检查
    安装前需将CentOS系统更新至最新版本(sudo yum update -y),确保内核版本、glibc库等与Oracle数据库版本兼容(如Oracle 19c支持CentOS 7/8)。可通过uname -a查看内核版本,参考Oracle官方文档确认兼容性。

  2. 硬件资源规划

    • 内存:Oracle最低要求512MB,但生产环境建议至少2GB(推荐4GB以上),以保证数据库实例和监听器的稳定运行。
    • 硬盘空间:安装包及临时文件需至少10GB,生产环境建议预留20GB以上(用于数据文件、归档日志等)。
    • Swap空间:若内存≤2GB,Swap需为内存的1.5倍;2-16GB则与内存大小一致;>16GB可设为16GB。
  3. 依赖包安装
    必须提前安装Oracle运行所需的依赖包,否则会导致安装失败。常用命令(以CentOS 7为例):

    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
    

    部分预安装包(如oracle-database-preinstall-19c)可自动安装依赖,简化流程。

  4. 用户与组管理
    创建专用用户和组以实现权限隔离:

    sudo groupadd oinstall  # 所属组
    sudo groupadd dba       # 数据库管理员组
    sudo useradd -g oinstall -G dba oracle  # 创建oracle用户并加入组
    sudo passwd oracle      # 设置密码
    

    所有Oracle文件(如安装目录、数据目录)需归属oracle:oinstall

二、系统参数配置

  1. 内核参数调整
    编辑/etc/sysctl.conf,添加以下关键参数以优化系统性能:

    fs.aio-max-nr = 1048576        # 异步I/O最大请求数
    fs.file-max = 6815744          # 系统最大文件句柄数
    kernel.shmall = 2097152        # 共享内存总页数
    kernel.shmmax = 4294967295     # 单个共享内存段最大大小(字节)
    kernel.shmmni = 4096           # 共享内存段最大数量
    kernel.sem = 250 32000 100 128 # 信号量参数(semmsl, semmns, semopm, semmni)
    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使配置生效。

  2. 用户资源限制
    编辑/etc/security/limits.conf,添加以下限制以防止Oracle进程因资源不足被终止:

    oracle soft nproc 2047         # 用户进程软限制
    oracle hard nproc 16384        # 用户进程硬限制
    oracle soft nofile 1024        # 用户打开文件数软限制
    oracle hard nofile 65536       # 用户打开文件数硬限制
    oracle soft stack 10240        # 用户栈空间软限制
    

    编辑/etc/pam.d/login,添加session required pam_limits.so以使限制生效。

  3. PAM模块配置
    确保PAM模块加载pam_limits.so,编辑/etc/pam.d/login文件,添加以下行:

    session required pam_limits.so
    

三、Oracle安装与目录配置

  1. 安装目录设置
    创建Oracle安装目录(如/u01/app/oracle)和数据目录(如/u01/oradata),并设置正确权限:

    sudo mkdir -p /u01/app/oracle /u01/oradata
    sudo chown -R oracle:oinstall /u01
    sudo chmod -R 775 /u01
    

    安装包需上传至安装目录(如/u01/app/oracle),解压后执行runInstaller启动安装向导。

  2. 环境变量配置
    编辑oracle用户的~/.bash_profile(或~/.bashrc),添加以下环境变量:

    export ORACLE_BASE=/u01/app/oracle  # Oracle基目录
    export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1  # Oracle主目录(根据实际路径调整)
    export ORACLE_SID=ORCLCDB           # 数据库实例名(默认)
    export PATH=$ORACLE_HOME/bin:$PATH  # 添加Oracle命令到PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib  # 库文件路径
    export LANG=C                       # 字符集
    export NLS_LANG=AMERICAN_AMERICA.AL32UTF8  # 数据库字符集
    

    执行source ~/.bash_profile使配置生效。

四、网络与安全配置

  1. 监听器配置
    安装完成后,需配置监听器以允许远程连接。编辑$ORACLE_HOME/network/admin/listener.ora文件,确保包含以下内容:

    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))  # 监听地址和端口
        )
      )
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = ORCLCDB)
          (ORACLE_HOME = $ORACLE_HOME)
          (SID_NAME = ORCLCDB)
        )
      )
    

    启动监听器:lsnrctl start,检查状态:lsnrctl status

  2. 防火墙设置
    若系统启用了防火墙(如CentOS 7的firewalld),需开放Oracle监听端口(默认1521):

    sudo firewall-cmd --permanent --add-port=1521/tcp
    sudo firewall-cmd --reload
    

    生产环境中建议关闭防火墙或配置更严格的访问规则。

  3. SELinux配置
    SELinux会限制Oracle进程的权限,建议禁用:

    sudo setenforce 0  # 临时禁用
    sudo sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config  # 永久禁用
    

五、其他注意事项

  1. 时间同步
    确保数据库服务器与客户端时间同步(可使用NTP服务),避免因时间差异导致数据不一致或连接问题。

  2. 日志监控
    定期检查Oracle日志文件(如$ORACLE_BASE/diag/rdbms/$ORACLE_SID/trace/alert_$ORACLE_SID.log),及时发现并解决问题。

  3. 备份策略
    安装完成后,立即配置数据库备份(如RMAN),确保数据安全。

  4. 字符集一致性
    安装前确认系统字符集(locale命令)与Oracle字符集(如AL32UTF8)一致,避免乱码问题。

0
看了该问题的人还看了