SGA(系统全局区)优化:SGA是Oracle进程共享的内存区域,需根据系统负载合理分配。关键参数包括SGA_TARGET(SGA总大小,建议为物理内存的60%-80%,OLTP系统可稍高)、SGA_MAX_SIZE(SGA最大大小,需大于等于SGA_TARGET)、DB_CACHE_SIZE(数据缓冲区大小,建议占SGA的40%-60%,用于缓存数据块)、SHARED_POOL_SIZE(共享池大小,建议占SGA的20%-30%,用于存储SQL、PL/SQL代码等)、LARGE_POOL_SIZE(大池大小,建议设为100M-500M,用于并行查询、RMAN备份等)。设置示例:ALTER SYSTEM SET sga_target=32G SCOPE=SPFILE; ALTER SYSTEM SET sga_max_size=32G SCOPE=SPFILE;。
PGA(程序全局区)优化:PGA是为每个会话单独分配的内存区域,主要用于排序、哈希操作等。关键参数为PGA_AGGREGATE_TARGET(PGA总大小,建议为物理内存的20%-50%,OLTP系统约占20%,OLAP系统约占50%-70%)。设置示例:ALTER SYSTEM SET pga_aggregate_target=8G SCOPE=SPFILE;。
索引优化:为高频查询的列(如WHERE、JOIN、ORDER BY子句中的列)创建索引(如CREATE INDEX idx_employee_name ON employees(name));定期重建索引(如ALTER INDEX idx_employee_name REBUILD ONLINE),保持索引的高效性;删除未使用或重复的索引(通过DBA_INDEXES视图查看索引使用情况)。
EXPLAIN PLAN分析:使用EXPLAIN PLAN FOR命令查看SQL执行计划(如EXPLAIN PLAN FOR SELECT * FROM employees WHERE name='John';),通过SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);查看结果,识别全表扫描、索引失效等问题。
5. 数据库参数优化
自动内存管理(AMM):通过MEMORY_TARGET(总内存大小,建议为物理内存的70%-80%)和MEMORY_MAX_TARGET(最大总内存,需大于MEMORY_TARGET)参数,让Oracle自动分配SGA和PGA内存。设置示例:ALTER SYSTEM SET memory_target=12G SCOPE=SPFILE; ALTER SYSTEM SET memory_max_target=13G SCOPE=SPFILE; ALTER SYSTEM SET sga_target=0 SCOPE=SPFILE; ALTER SYSTEM SET pga_aggregate_target=0 SCOPE=SPFILE;(需重启数据库生效)。