一、硬件基础优化
硬件是数据库性能的基石,需根据业务负载选择合适的配置:
二、操作系统级优化
操作系统配置直接影响Oracle的资源利用率:
/etc/sysctl.conf文件中的关键参数,优化内存、文件句柄和网络性能: fs.file-max:设置为系统最大可打开文件数(建议≥10万,满足Oracle大量文件操作需求);kernel.shmmax:设置为物理内存的2/3(如256GB内存设为17179869184),控制单个共享内存段最大大小;kernel.shmall:设置为kernel.shmmax除以内存页大小(通常4KB,如17179869184/4096=4194304),控制共享内存总页数;net.core.rmem_max/net.core.wmem_max:设置为16MB,增大网络收发缓冲区,提升客户端通信效率;cat /sys/block/sd*/queue/scheduler查看当前调度器): noop调度器(避免重复I/O调度,提升吞吐量);deadline调度器(保证I/O请求的延迟限制,适合高并发场景);cups(打印服务)、bluetooth(蓝牙服务)等不常用服务,减少系统资源竞争。三、Oracle内存参数优化
内存是Oracle性能的核心,需合理分配SGA(共享内存区)和PGA(进程全局区):
SGA_TARGET(动态调整SGA总大小,如10GB)和SGA_MAX_SIZE(SGA最大上限,如12GB),Oracle会自动分配共享池、缓冲区缓存等组件的大小;DB_CACHE_SIZE):设置为SGA的50%-60%(OLTP系统),缓存频繁访问的数据块,减少磁盘I/O;SHARED_POOL_SIZE):设置为SGA的20%-30%(OLTP系统),缓存SQL语句和PL/SQL代码,避免硬解析(硬解析会消耗大量CPU和Latch);LARGE_POOL_SIZE):若使用并行查询或RMAN备份,设置为1GB-2GB,避免共享池碎片化;PGA_AGGREGATE_TARGET(如5GB),Oracle会自动分配PGA内存给排序、哈希连接等操作;V$PGA_TARGET_ADVICE视图预测不同目标值的性能影响,选择命中率>90%的最小值。四、索引与SQL优化
索引和SQL是提升查询性能的关键:
WHERE、JOIN、ORDER BY中的列)创建索引,避免全表扫描;ALTER INDEX idx_name REBUILD命令,减少索引层数和块碎片,提升查询效率;USER_INDEXES视图查找未使用的索引(LAST_ANALYZED为空或长时间未使用),减少DML操作的开销;CREATE INDEX idx_covering ON table_name(col1, col2) INCLUDE (col3)),避免回表操作;SELECT *:明确列出需要的列,减少数据传输量;SELECT * FROM emp WHERE empno = :emp_id,减少SQL解析时间(硬解析会消耗大量资源);EXPLAIN PLAN分析执行计划,找出性能瓶颈(如全表扫描、排序操作)。五、I/O性能优化
I/O是数据库的瓶颈之一,需合理规划存储布局:
/dev/sda,日志文件放/dev/sdb),避免单磁盘争用;RANGE分区)、范围(如LIST分区)或哈希(如HASH分区)划分,减少单表扫描的数据量(如ALTER TABLE sales ADD PARTITION p2025 VALUES LESS THAN (TO_DATE('2026-01-01', 'YYYY-MM-DD')));filesystemio_options参数为ASYNC(默认值),允许Oracle异步读写数据,提升I/O吞吐量;LOG_BUFFER(如16MB-32MB),减少日志写入磁盘的频率(日志缓冲区满时会触发同步写操作,影响性能)。六、监控与持续优化
定期监控数据库性能,识别并解决潜在问题:
DBMS_WORKLOAD_REPOSITORY包生成AWR报告(awrrpt.sql),分析top SQL、等待事件等指标;使用ADDM(自动数据库诊断工具)识别性能瓶颈(如CPU瓶颈、I/O瓶颈);V$SGA、V$PGA视图查看SGA、PGA的使用情况(如V$SGA中的BUFFER_CACHE_HIT_RATIO应≥90%,V$PGA中的SORT_AREA_USAGE应合理);DBMS_STATS.GATHER_TABLE_STATS),让优化器生成更好的执行计划;重组碎片化表(ALTER TABLE table_name MOVE),提升数据访问效率。