/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');
參考來源: