Oracle在Linux上的最佳实践涵盖安装准备、系统配置、性能优化、安全管理、日常维护五大核心环节,以下是具体落地措施:
groupadd创建oinstall(安装组)、dba(数据库管理员组);用useradd创建oracle用户,加入上述两组,设置强密码(如包含大小写字母、数字、特殊字符)。/etc/sysctl.conf,添加以下关键参数以提升Oracle运行效率:fs.file-max = 6815744(系统最大文件句柄数)、kernel.shmmax = 2147483648(共享内存最大值,建议设为物理内存的80%)、kernel.shmall = 2097152(共享内存总页数)、net.core.rmem_max = 4194304(接收缓冲区最大值)、net.ipv4.ip_local_port_range = 9000 65500(应用层端口范围);执行sysctl -p使配置生效。/etc/security/limits.conf,添加oracle用户的资源限制:oracle soft nproc 2047(软限制进程数)、oracle hard nproc 16384(硬限制进程数)、oracle soft nofile 1024(软限制打开文件数)、oracle hard nofile 65536(硬限制打开文件数);同时编辑/etc/pam.d/login,添加session required /lib64/security/pam_limits.so使限制生效。yum安装Oracle要求的依赖包(如binutils、compat-libcap1、libaio、libstdc++、unixODBC等),避免手动编译安装导致的兼容性问题。/u01/app/oracle/product/19.0.0/dbhome_1)和数据目录(如/u01/app/oracle/oradata),设置oracle:oinstall为所有者,权限为775(目录)和664(文件)。oracle用户,运行安装脚本;安装完成后,执行root.sh脚本(需root权限)完成数据库初始化配置。firewalld(systemctl stop firewalld && systemctl disable firewalld)、NetworkManager(若无需动态网络管理),减少系统资源消耗。noop(无队列调度),提升磁盘IO效率(通过echo noop > /sys/block/sda/queue/scheduler临时设置,修改/etc/default/grub永久生效)。db_cache_size)可设置为物理内存的50%-70%(需预留内存给操作系统和其他进程);共享池(shared_pool_size)设置为SGA的10%-20%。log_buffer大小(通常为1-2MB),减少日志写入磁盘的频率,提升事务提交性能。EXPLAIN PLAN分析查询计划,为高频查询字段创建索引(避免全表扫描);使用绑定变量(如:id代替直接值)减少SQL解析开销;定期清理无用索引(如未使用的索引)。DBMS_WORKLOAD_REPOSITORY包生成AWR报告(每60分钟自动收集一次),分析数据库性能瓶颈(如CPU、内存、I/O);使用ADDM(自动数据库诊断监视器)提供优化建议。vmstat、iostat、top等性能数据,分析系统级瓶颈(如CPU利用率、内存交换、磁盘IO等待)。setenforce 0),永久禁用(编辑/etc/selinux/config,设置SELINUX=disabled),避免SELinux限制Oracle进程的权限。/etc/redhat-release文件(如改为redhat-76),隐藏真实系统版本,减少攻击面。dba组用户数量(仅保留oracle用户);设置oracle用户的密码复杂度(通过/etc/pam.d/system-auth配置,要求包含大小写字母、数字、特殊字符,长度≥8位);启用密码过期策略(PASS_MAX_DAYS 90,PASS_WARN_AGE 7)。ALTER SYSTEM SET O7_DICTIONARY_ACCESSIBILITY=FALSE,禁止非SYSDBA用户访问数据字典基础表(如SYS.USER$),防止敏感信息泄露。ALTER SYSTEM SET audit_trail='DB'),记录用户登录、数据修改、权限变更等操作,便于后续追溯。sqlnet.ora中设置SQLNET.ENCRYPTION_SERVER=REQUIRED)。$ORACLE_HOME/network/admin/sqlnet.ora,添加tcp.validnode_checking=yes和tcp.invited_nodes=(192.168.1.0, 192.168.1.1),限制仅允许指定IP地址访问数据库。OPatch工具应用补丁)。/var/log/messages)和Oracle日志(如alert.log、trace文件),避免日志文件占用过多磁盘空间(可设置日志轮转策略,如logrotate)。rman脚本实现自动备份,用dbms_stats.gather_schema_stats收集统计信息)。