记录下来,做数据库优化和索引分析的方案
案例:
1:在分区表中,全局索引可能会导致索引失效,这样执行计划中不走索引,改本地索引local
2:对表进行分析,不用analyze,用了会对执行计划产生影响,对表和索引分析建议用dbms
exec dbms_stats.gather_table_stats(user,upper('tb_ori_0076'),cascade => true,degree => 2);
exec dbms_stats.gather_table_stats(user,
upper('tb_public_0005'),
cascade => true,
degree => 2);
exec dbms_stats.gather_table_stats(user,
upper('tb_index_0056'),
cascade => true,
degree => 2);
exec dbms_stats.gather_table_stats(user,
upper('tb_index_0055'),
cascade => true,
degree => 2);
exec dbms_stats.gather_index_stats(user,'IDX83882807',degree=>2);
3:学会查看explain plan for 执行计划,并创建合适的索引,必要的时候需要用到hint
使用方法:sqlplus user/username@sid
explain plan for sql语句
set timing on
set pagesize 1000
set linesize 150
spool c:/abc.lst
@?/rdbms/admin/utlxplp
spool off
4:使用跟踪事件10046,10046事件是Oracle提供的内部事件,是对SQL_TRACE的增强
SQL>select * from dual;
SQL>alter session set events '10046 trace name context forever,level 12';
SQL>粘贴要跟踪的sql并执行完成
SQL>alter session set events '10046 trace name context off';
SQL>exit
C:\>e:
E:\oracle\product\10.1.0\admin\TESTDB\udump>tkprof testdb_ora_1484.trc abc sys=no
可以在该目录中找到abc这个跟踪文件,进行分析
5:附件是2个写好的plsql命令,abc.sql是利用oracle后台job进行分区在某个时间自动新增分区,tabinfo.sql是分析数据库中当前表,并检索出表中各个字段情况。
通过此分析能快速帮我们排除哪些字段上建立索引最合适。
SQL>@c:\abc.sql 需要开启oracle后台作业进程oracleJobScheduler
SQL> select JOB_NAME,NEXT_RUN_DATE from dba_scheduler_jobs where job_name='MONTHLY_ADD_PARTITION';查看job任务
任务删除 drop_scheduler drop_job
SQL>@c:\tabinfo.sql 输入用户名和表名即可
SELECT no_, stock_code, stock_name, price_, money_flow_5, business
FROM (SELECT /*+ ordered index(t4 TB_ORA_0004_IDX1) index(t4_b TB_ORA_0004_IDX1) */ ROW_NUMBER () OVER (ORDER BY ( t4.f0004_028n- t4_b.f0004_028n) DESC) no_,
t4.f0004_005v stock_code, t5.f0005_002v stock_name,
t4.f0004_007n price_,
t4.f0004_028n - t4_b.f0004_028n money_flow_5,
t55.f0055_002v AS business
FROM tb_ori_0004 t4
INNER JOIN
(SELECT /*+ index(tb_ori_0004 TB_ORA_0004_IDX1) */ f0004_005v, f0004_003v, f0004_004v,
MAX (f0004_002v) f0004_002v
FROM tb_ori_0004
WHERE f0004_001d = (SELECT MAX (f0076_001d)
FROM tb_ori_0076)
GROUP BY f0004_005v, f0004_003v, f0004_004v) t
ON t4.f0004_003v = t.f0004_003v
AND t4.f0004_004v = t.f0004_004v
AND t4.f0004_005v = t.f0004_005v
AND t4.f0004_002v = t.f0004_002v
AND t4.f0004_001d = (SELECT MAX (f0076_001d)
FROM tb_ori_0076)
INNER JOIN tb_ori_0004 t4_b
ON t4_b.f0004_003v = t.f0004_003v
AND t4_b.f0004_004v = t.f0004_004v
AND t4_b.f0004_005v = t.f0004_005v
AND t4_b.f0004_002v =TO_CHAR (TO_DATE (t.f0004_002v, 'HH24MI') - 4 / (24 * 60),
'HH24MI'
)
AND t4.f0004_001d = t4_b.f0004_001d
INNER JOIN tb_public_0005 t5
ON t4.f0004_003v = t5.f0005_007v
AND t4.f0004_004v = t5.f0005_005v
AND t4.f0004_005v = t5.f0005_001v
INNER JOIN
(SELECT t.f0056_003v, t.f0056_002n
FROM tb_index_0056 t
WHERE t.f0056_001d = (SELECT MAX (t.f0056_001d)
FROM tb_index_0056 t)) t6
ON t6.f0056_003v = t5.f0005_001v
INNER JOIN
(SELECT t.f0055_001n, t.f0055_002v
FROM tb_index_0055 t
WHERE t.f0055_003v = '新申万一级') t55
ON t55.f0055_001n = t6.f0056_002n
)WHERE no_ <=30;
分享到:
相关推荐
sqlt ORACLE优化分析工具 sqlt ORACLE优化分析工具 sqlt ORACLE优化分析工具
为提高oracle的sql执行效率,优化性能,通过oracle表分析功能进行调整,能加快sql查询效率2倍以上
ORACLE数据库参数优化与分析 ORACLE数据库参数优化与分析 ORACLE数据库参数优化与分析 ORACLE数据库参数优化与分析 ORACLE数据库参数优化与分析 ORACLE数据库参数优化与分析
《Oracle优化日记:一个金牌DBA的故事》是一本介绍Oracle数据库优化方法的书,以一个实际的大型优化项目为原型,用日记的形式记录了一个优化小组的DBA 如何从纷繁的头绪中找到突破口,进而完成了一个看似不可能完成...
其中主要包括收集数据库统计系统、收集列直方图、分析SQL执行计划、如何让CBO优化器选择最优的执行计划,以及如何使用Hint提示认为改变CBO优化器的执行计划等,希望此文档能够帮助大家更深入地理解Oracle优化!
Oracle优化器案例与原理分析(盖国强),不错的oracle资料。
ORACLE常用分析函数说明,oracle优化
《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...
《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...
让Oracle跑得更快.Oracle.10g性能分析与优化思路
内有两份文档:Oracle语句优化,数据库优化总结,SQL优化,常见优化案例分析技术及优化规则详解。(大公司内部资料)
资源名称:Oracle数据库性能优化 PDF内容简介:本书面向实际应用,从多个角度出发,对Oracle优化中的很多关键问题进行了深入全面的探讨,涵盖了Oracle优化的各个技术层面,从内存优化、IO规划及优化,到SQL优化调整...
oracle通过分析SQL语句的执行计划优化SQL(总结)
Oracle10g性能分析与优化思路.doc
Oracle SQL语句优化技术分析 各种语句的优化分析 讲解的比较细腻
本文档详细描述ORACLE11G的优化方法,并告诉读者不要迷恋优化器。详细对比ORACLE11G和ORACLE10G的某些区别
Oracle性能优化与故障诊断案例分享,通过具体案例来进行分析,从而优化及诊断解决问题。
数据库优化包括:实例的性能优化和SQL语句的性能优化,实例优化和sql优化均可以通过AWR报告来分析并作出优化方案。 这篇文档描述了如何调查EBS系统性能下降原因、如何使用和理解AWR报告、分别阐述了数据库层/应用层/...