Ubuntu系统上优化Oracle数据库性能需从 硬件配置、Oracle参数、SQL语句、操作系统、监控维护 五大维度综合调整,以下是具体方法:
ALTER SYSTEM SET sga_target=2G SCOPE=SPFILE; -- 设置SGA目标大小为2GB
ALTER SYSTEM SET pga_aggregate_target=1G SCOPE=SPFILE; -- 设置PGA聚合目标为1GB
MEMORY_TARGET
参数让Oracle自动分配内存,简化配置(如设置MEMORY_TARGET=3G
、MEMORY_MAX_TARGET=4G
)。PROCESSES
(最大进程数)和SESSIONS
(最大会话数)参数调整(如PROCESSES=300
、SESSIONS=335
,需满足SESSIONS=PROCESSES*(1+AGENTS)
)。ALTER SYSTEM SET log_buffer=16M SCOPE=SPFILE; -- 设置日志缓冲区大小为16MB
WHERE
、JOIN
、ORDER BY
的列创建索引(如CREATE INDEX idx_emp_dept ON employees(department_id)
)。ALTER INDEX idx_emp_dept REBUILD
)。CREATE INDEX idx_emp_name_dept ON employees(name, department_id)
)。DBA_UNUSED_COL_STATISTICS
视图),减少维护开销。SELECT *
:明确列出所需列,减少数据传输量(如SELECT emp_id, name FROM employees
而非SELECT *
)。SELECT * FROM employees WHERE department_id = :dept_id
),降低库缓存开销。SELECT /*+ INDEX(emp idx_emp_dept) */ * FROM employees WHERE department_id = 30
)。EXPLAIN PLAN
查看SQL执行路径,识别瓶颈(如EXPLAIN PLAN FOR SELECT * FROM employees WHERE department_id = 30; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
)。CREATE TABLE sales (sale_id NUMBER, sale_date DATE)
PARTITION BY RANGE (sale_date) (
PARTITION p2023 VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD')),
PARTITION p2024 VALUES LESS THAN (TO_DATE('2025-01-01', 'YYYY-MM-DD'))
);
ALTER TABLE sales ADD PARTITION p2025 VALUES LESS THAN (TO_DATE('2026-01-01', 'YYYY-MM-DD'))
)。ALTER TABLE sales PARALLEL (DEGREE 4)
)。SELECT /*+ PARALLEL(sales, 4) */ * FROM sales
)。ALTER SESSION SET parallel_degree_policy = AUTO
)。/etc/sysctl.conf
中设置net.core.rmem_max=16777216
、net.core.wmem_max=16777216
,提升网络性能)。ext4
或xfs
文件系统,挂载时添加noatime
(减少访问时间更新)、data=writeback
(提高写入性能)选项(如mount -o noatime,data=writeback /dev/nvme0n1 /u01/app/oracle
)。bluetooth
、cups
),释放系统资源(通过systemctl disable bluetooth
)。bleachbit
、stacer
等工具清理临时文件、缓存,减少磁盘占用。@?/rdbms/admin/awrrpt.sql
生成AWR报告,@?/rdbms/admin/addmrpt.sql
生成ADDM报告)。DBMS_STATS.GATHER_SCHEMA_STATS
收集表、索引统计信息)。ALTER TABLE employees MOVE
)。