centos

centos oracle性能调优实战

小樊
38
2025-08-16 15:41:46
栏目: 云计算

CentOS下Oracle性能调优实战要点

一、操作系统优化

  1. 内核参数调整
    • 编辑/etc/sysctl.conf,优化关键参数:
      vm.swappiness=10       # 减少内存交换  
      vm.dirty_background_ratio=10  # 控制脏页写入频率  
      net.core.somaxconn=4096  # 增加网络连接队列  
      fs.file-max=6815744    # 提升文件句柄限制  
      
      执行sysctl -p使配置生效。
  2. 关闭非必要服务
    • 禁用防火墙(生产环境需谨慎)和SELinux:
      systemctl stop firewalld && systemctl disable firewalld  
      setenforce 0  
      
  3. 文件系统优化
    • 使用ext4/xfs文件系统,挂载时添加noatime选项减少磁盘访问。

二、内存优化

  1. 大内存页(HugePages)配置
    • 计算公式:HugePages数量 = ceil(SGA_MAX_SIZE / Hugepagesize),在/etc/sysctl.conf中设置:
      vm.nr_hugepages=2048  # 示例值,需根据SGA大小调整  
      
      执行sysctl -p生效。
  2. SGA/PGA参数调整
    • 通过SQL命令设置:
      ALTER SYSTEM SET sga_target=4G SCOPE=BOTH;  -- 共享内存区  
      ALTER SYSTEM SET pga_aggregate_target=1G SCOPE=BOTH;  -- 程序全局区  
      

三、数据库参数优化

  1. 连接数与并发控制
    ALTER SYSTEM SET processes=200 SCOPE=SPFILE;  -- 最大连接数  
    ALTER SYSTEM SET sessions=220 SCOPE=SPFILE;   -- 会话数(略大于进程数)  
    
  2. 日志与缓存优化
    ALTER SYSTEM SET log_buffer=64M SCOPE=BOTH;   -- 日志缓冲区  
    ALTER SYSTEM SET db_cache_size=2G SCOPE=BOTH; -- 数据缓存  
    

四、SQL与索引优化

  1. SQL语句调优
    • 避免SELECT *,明确字段列表;使用绑定变量减少硬解析:
      -- 优化前(硬解析)  
      SELECT * FROM employees WHERE department_id=10;  
      -- 优化后(绑定变量)  
      SELECT name, salary FROM employees WHERE department_id=:dept_id;  
      
    • 使用EXPLAIN PLAN分析执行计划,避免全表扫描。
  2. 索引优化
    • 为高频查询字段创建索引,定期重建失效索引:
      CREATE INDEX idx_emp_dept ON employees(department_id);  
      ALTER INDEX idx_emp_dept REBUILD;  
      

五、硬件与存储优化

  1. 存储升级
    • 使用SSD替代HDD,提升I/O性能;配置RAID 10提升数据冗余和读写速度。
  2. CPU与内存扩容
    • 根据负载增加CPU核心数和内存容量,确保硬件资源充足。

六、监控与维护

  1. 性能监控工具
    • 使用AWR报告分析性能瓶颈:
      @?/rdbms/admin/awrrpt.sql  -- 生成AWR报告  
      @?/rdbms/admin/addmrpt.sql  -- 生成ADDM报告  
      
  2. 定期维护任务
    • 更新统计信息:EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SCHEMA_NAME');
    • 重建碎片化严重的索引或表分区。

七、关键注意事项

参考来源

0
看了该问题的人还看了