使用profiler测试Oracle PL/SQL性能
Oracle存储过程和PL/SQL代码常常包含了多个子过程和SQL,对于单个的SQL,我们很容易分析他的执行效率,但是对于PL/SQL存储过程,我们如何分析它的执行效率、具体每一步的耗时情况呢?Oracle提供了profiler工具可以比较好的解决这个问题。 一、使用前的准备工作 1、检查DBMS_PROFILER包是否安装 desc dbms_profiler;&n
SQL性能的度量 - 利用Hints和dbms_sqltune进行SQL监控
可以使用Hints对某个SQL开启实时监控select/*+monitor*/ count(*) from scott.emp where sal>2000; 使用dbms_sqltune查看监控信息set long 9999999set longchunksize 9999999set linesize 200selectdbms_sqltune.report_sql_monitor from dual; REPORT_SQL_MONITOR-...
SQL性能的度量 - 利用10046事件扩展SQL跟踪
在会话sql_trace的基础上,利用10046诊断事件,可以扩展sql_trace的功能,主要体现在对绑定变量和等待事件的跟踪上。 10046诊断事件可以设置的四个级别:level 1启用标准的SQL跟踪,等价于sql_tracelevel ...
SQL性能的度量 - 会话级别的SQL跟踪sql_trace
通过初始化参数sql_trace开启会话跟踪,通过oradebug命令输出到跟踪文件,提供更加详细的信息。但一般还需要借助tkprof工具格式化跟踪文件便于阅读。 在使用sql_trace之前,有两个初始化参数可能需要注意一下,不过从9i开始都是默认按以下设置的。 初始化参数timed_statistics最好设为true,否...
SQL性能的度量 - 语句级别的SQL跟踪autotrace
在Oracle 10g之前,使用autotrace还需要创建plustrace角色,并把该角色授予所有用户:@?\rdbms\admin\plustrace.sqlgrantplustrace to public; Oracle10g之后autotrace的功能增强了,并简化了以上操作,一个autotrace就可以完成所有的输出。 使用autotrace命令格式如下:setaut...
SQL性能的度量 - 通过v$sql_plan查询执行计划
在分析SQL语句性能时,视图v$sql_plan很有用,以下分几点举例说明。 通过以下脚本可以查询库缓存中已经运行过的SQL的执行计划col"Explain Plan" for a100select ' ' as"No.", '| Operation &nbs...
SQL性能的度量 - 通过explain和dbms_xplan包分析执行计划
使用该工具需要访问一张特殊的表plan_table,该表用于存储执行计划,在Oracle 10g之前需要用脚本utlxplan.sql创建:建表:@?\rdbms\admin\utlxplan.sql建同义词:create publicsynonym plan_table for plan_table;授权:grant all onplan_table to public;?Oracle10g之后不再需...
SQL性能的度量 - CBO优化方式
一条查询语句的处理包括语法分析、语句优化和查询执行三个阶段。在语句优化阶段,Oracle默认使用基于成本的优化器(CBO,cost based optimizer)来选择最好的执行计划,这个最好的标准就是消耗的系统资源如CPU以及I/O资源最少。 基于CBO的优化器有三种优化方式来满足不同的查询需求,即all_rows、first_rows...
Oracle统计信息自动收集
Oracle提供了统计数据自动收集功能。在部署安装软件过程中,其中有一个步骤便是提示是否启用这个功能(默认是启用这个功能)。这个功能貌似带来了统计数据采集上的便捷,但是其中却隐藏着性能隐患。在7*24小时的系统中这种自动运行的任务很有可能对系统性能带来冲击。因此,我们酌情需要修改或是禁掉这项功能。10g和11g的...
AWR、ASH、ADDM和顾问程序
一、自动工作负荷知识库(AWR) Oracle收集大量有关性能和活动的统计信息,这些信息在内存中累积,并定期写入到称之为自动工作负荷知识库(AWR)的表中。AWR作为数据库SYSAUX表空间的一组表和其他对象而存在,并存在于SYSMAN模式中。 统计信息的收集级别由实例参数statistics_level控制,该参...
Oracle直方图统计信息的应用
Oracle直方图统计信息说明了表中数据的分布情况,用于在表中数据分布十分不均衡的情况下,指导CBO优化器选择最优的执行计划。以下例子说明了这一应用。 创建表createtable scott.t(id number); 创建索引createindex scott.idx_t_id on scott.t(id) compute statistics parallel;...
AWR报告阅读提要
AWR(Automatic WorkloadRepository,自动工作负荷知识库)是Oracle 10g开始推出的特性,它通过对比两次快照(snapshot)收集的统计信息,生成有关实例和数据库性能及健康状况的统计报表。 选择报表时间段很关键,要选择能够代表性能问题的时间段。如果快照周期不在这一段时间内,或者快照周期跨度太长而包...