
地 址:北京市顺义区66号
电 话:18191627870
网址:www.lbwcode.com
邮 箱:96580336@qq.com
Oracle优化器工具是用Oe优Oracle数据库中的一个重要组件,它(ta)可以帮助数据库管理员(yuan)和开发人员识别和解决性能问题,化器以下是工具使用Oracle优化器工具提升数据库性能的一些(xie)建议:(图片来源网络,侵删)
1、提升了解优化器工作原理

在开始优化数(shu)据库性能之前,数据首先需要了解Oracle优化器是库性如何工作的,Oracle优化器是用Oe优一个复杂的(de)组件,它负责确定(ding)执行SQL语句的化器最佳方法,优化器会根(gen)据统计(ji)信息、工具成本模型和其他因素来评估各(ge)种执行计划,提升并选择成本最低的数据执行计划。

2、库性收集统计(ji)信息

对(dui)于表ANALYZE TABLE table_name COMPUTE STATISTICS;对于索引ANALYZE INDEX index_name COMPUTE STATISTICS;
3、启用自动优化器提示
默认(ren)情况下,Oracle优化器会尝试自(zi)动优化SQL语句,在某些情况下,手(shou)动指定提示可(ke)能会带来更好(hao)的性能,可(ke)以使用HINT子句来指定优化器提示。
SELECT /*+ FULL(e) USE_NL(t) */ * FROM employees e, departments t WHERE e.department_id = t.department_id;
4、分(fen)析执行计划
通过分析SQL语句的执行计划(hua),可以找出性能瓶颈并采取相应的优化措施,可以使用EXPLAIN PLAN命令来查看SQL语句的执行计(ji)划。
EXPLAIN PLAN FOR SELECT * FROM employees WHERE department_id = 10;
5、使(shi)用SQL调优集
创建SQL调优集CREATE SQL TUNING SET tune_set_name SCOPE=SPFILE;ALTER SYSTEM SET sqltune_collector_stats=TRUE SCOPE=SPFILE;ALTER SYSTEM SET sqltune_collector_text=TRUE SCOPE=SPFILE;ALTER SYSTEM SET sqltune_mode=ALL SCOPE=SPFILE;ALTER SYSTEM SET sqltune_time_statistics_level=MEDIUM SCOPE=SPFILE;ALTER SYSTEM SET sqltune_waits_threshold=100 SCOPE=SPFILE;ALTER SYSTEM SET sqltune_cursor_monitoring=TRUE SCOPE=SPFILE;ALTER SYSTEM SET sqltune_directive='OPTIMIZER_FEATURES_ENABLE(''12.2.0.1'')=ON'; SCOPE=SPFILE;ALTER SYSTEM SET db_file_multiblock_read_count=4 SCOPE=SPFILE;ALTER SYSTEM SET db_file_multiblock_write_count=4 SCOPE=SPFILE;ALTER SYSTEM SET db_file_io_optimizations=ON SCOPE=SPFILE;ALTER SYSTEM SET workarea_size_policy=AUTO SCOPE=SPFILE;ALTER SYSTEM SET shared_pool_reserved_size=2G SCOPE=SPFILE;ALTER SYSTEM SET large_pool_size=8G SCOPE=SPFILE;ALTER SYSTEM SET java_pool_size=2G SCOPE=SPFILE;ALTER SYSTEM SET pga_aggregate_target=4G SCOPE=SPFILE;ALTER SYSTEM SET db_block_size=8192 SCOPE=SPFILE;ALTER SYSTEM SET db_cache_size=50G SCOPE=SPFILE;ALTER SYSTEM SET db_create_file_dest='/u01/app/oracle/oradata/ORCL/dbfile/sysaux01.dbf' SCOPE=SPFILE;ALTER SYSTEM SET db_create_online_log_dest='/u01/app/oracle/oradata/ORCL/redo01.log' SCOPE=SPFILE;ALTER SYSTEM SET db_create_spfile='/u01/app/oracle/oradata/ORCL/initORCL.ora' SCOPE=SPFILE;ALTER SYSTEM SET db_recovery_file_dest='/u01/app/oracle/fast_recovery_area' SCOPE=SPFILE;ALTER SYSTEM SET db_recovery_file_dest_size=5G SCOPE=SPFILE;ALTER SYSTEM SET log_buffer='64K' SCOPE=SPFILE;ALTER SYSTEM SET log_file_size='50M' SCOPE=SPFILE;ALTER SYSTEM SET log_archive_dest='LOCATION=(''localdisk'')'; SCOPE=SPFILE;ALTER SYSTEM SET log_archive_dest='SERVICE=(''orcl'') ASYNC NOWAIT RAISE 'APPLICATION''; SCOPE=SPFILE;ALTER SYSTEM SET log_archive_dest='SERVICE=(''orcl'') ASYNC NOWAIT'; SCOPE=SPFILE;ALTER SYSTEM SET log_archived_dest='LOCATION=(''localdisk'')'; SCOPE=SPFILE;ALTER SYSTEM SET log_archived_dest='SERVICE=(''orcl'') ASYNC NOWAIT RAISE 'APPLICATION''; SCOPE=SPFILE;ALTER SYSTEM SET log_archived_dest='SERVICE=(''orcl'') ASYNC NOWAIT'; SCOPE=SPFILE;ALTER SYSTEM SET log_group_home_dir='/u01/app/oracle/oradata/ORCL' SCOPE=SPFILE;ALTER SYSTEM SET log_checkpoints='ON' SCOPE=SPFILE;ALTER SYSTEM SET log_connections='ON' SCOPE=SPFILE;ALTER SYSTEM SET log_dispatchers='( ''IMMEDIATE'', ''DEFERRED''') SCOPE=SPFILE;ALTER SYSTEM SET log_history='ON' SCOPE=SPFILE;ALTER SYSTEM SET log_parallelism='AUTO' SCOPE=SPFILE;ALTER SYSTEM SET log_remote_servers='LOGHOST:orclhost1,orclhost2' SCOPE=SPFILE;ALTER SYSTEM SET log_statement='ALL' SCOPE=SPFILE;ALTER SYSTEM SET log_text='ON' SCOPE=SPFILE;ALTER PROCEDURE dbmstune.run(tuneset IN string) IS BEGIN NULL;END run; 这是一个简单的存储过程,用于运行SQL调优集。 根据需要修改参数值。 确(que)保在调用此存(cun)储过程(cheng)之前已经(jing)创建了SQL调(diao)优集。 可以像下面这(zhe)样(yang)调用存储过程:BEGIN DBMSTUNE.RUN('tune set name');END; / ALTER PROCEDURE dbmstune.run(tuneset IN string) IS BEGIN NULL;END run; 这是一个简单的存储过程,用于运行SQL调优集。 根据需要修改参数值。 确保在调用此存储过程之前已经创建了SQL调优集。 可以像下面这(zhe)样调用存储过程:BEGIN DBMSTUNE.RUN('tune set name');END; / ALTER PROCEDURE dbmstune.run(tuneset IN string) IS BEGIN NULL;END run; 这是一个简单的存储过程,用于运行SQL调优集。 根据需要修改参数值。 确保在调用此存储过程之前已经(jing)创建了SQL调优集。 可以像下面这样(yang)调用存储过程:BEGIN DBMSTUNE.RUN('tune set name');END; / ALTER PROCEDURE dbmstune.run(tuneset IN string) IS BEGIN NULL;END run; 这是一个简单的存(cun)储过程,用于运行SQL调优集(ji)。 根据需要修改参数(shu)值。 确(que)保(bao)在调用此(ci)存(cun)储过程之前已经创建了SQL调优集。 可以像下面这样调用存储过(guo)程:BEGIN DBMSTUNE.RUN('tune set name');END; / ALTER PROCED