/etc/sysctl.conf
,优化关键参数:vm.swappiness=10 # 减少内存交换
vm.dirty_background_ratio=10 # 控制脏页写入频率
net.core.somaxconn=4096 # 增加网络连接队列
fs.file-max=6815744 # 提升文件句柄限制
执行sysctl -p
使配置生效。systemctl stop firewalld && systemctl disable firewalld
setenforce 0
ext4/xfs
文件系统,挂载时添加noatime
选项减少磁盘访问。HugePages数量 = ceil(SGA_MAX_SIZE / Hugepagesize)
,在/etc/sysctl.conf
中设置:vm.nr_hugepages=2048 # 示例值,需根据SGA大小调整
执行sysctl -p
生效。ALTER SYSTEM SET sga_target=4G SCOPE=BOTH; -- 共享内存区
ALTER SYSTEM SET pga_aggregate_target=1G SCOPE=BOTH; -- 程序全局区
ALTER SYSTEM SET processes=200 SCOPE=SPFILE; -- 最大连接数
ALTER SYSTEM SET sessions=220 SCOPE=SPFILE; -- 会话数(略大于进程数)
ALTER SYSTEM SET log_buffer=64M SCOPE=BOTH; -- 日志缓冲区
ALTER SYSTEM SET db_cache_size=2G SCOPE=BOTH; -- 数据缓存
SELECT *
,明确字段列表;使用绑定变量减少硬解析:-- 优化前(硬解析)
SELECT * FROM employees WHERE department_id=10;
-- 优化后(绑定变量)
SELECT name, salary FROM employees WHERE department_id=:dept_id;
EXPLAIN PLAN
分析执行计划,避免全表扫描。CREATE INDEX idx_emp_dept ON employees(department_id);
ALTER INDEX idx_emp_dept REBUILD;
@?/rdbms/admin/awrrpt.sql -- 生成AWR报告
@?/rdbms/admin/addmrpt.sql -- 生成ADDM报告
EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SCHEMA_NAME');
参考来源: