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)。