对Oracle数据库整体性能的优化,首先要关注的是在有性能问题时数据库排名前几位等待事件是哪些.Oracle等待事件众多,随着版本的升级,数量还在不断增加,可以通过v$event_name查到当前数据库版本包含的等待事件.例如我在Linux平台查11.2.0.4版本的Oracle是有1367个等待事件.SELECT name FROM V$EVENT_NAME ORDER BY name; 如此多的等待事件自然是要分类汇总,并对常见的等待事件有比较深入的认识,才能在Oracle数据库调优这条路上…
Tables A table describes an entity such as employees. You define a table with a table name, such as employees, and set of columns. In general, you give each column a name, a data type, and a width when you create the table. 1.普通堆表(Heap-Organized Tabl…
1.autotrace的设定 SQL> set autotrace Usage: SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]] set autot on --打开autotrace,之后执行的sql,会显示sql执行结果.执行计划.统计信息 set autot on exp --会显示sql执行结果.执行计划 set autot on stat --会显示sql执行结果.统计信息 set autot tra…
在<SQL Tuning 基础概述05 - Oracle 索引类型及介绍>的1.5小节,提到了几种"索引的常见执行计划": INDEX FULL SCAN:索引的全扫描,单块读,有序 INDEX RANGE SCAN:索引的范围扫描 INDEX FAST FULL SCAN:索引的快速全扫描,多块读,无序 INDEX FULL SCAN(MIN/MAX):针对MAX(),MIN()函数的查询 INDEX SKIP SCAN:查询条件没有用到组合索引的第一列,而组合索引的第一…
在<SQL Tuning 基础概述05 - Oracle 索引类型及介绍>的1.5小节,提到了几种"索引的常见执行计划": INDEX FULL SCAN:索引的全扫描,单块读,有序INDEX RANGE SCAN:索引的范围扫描INDEX FAST FULL SCAN:索引的快速全扫描,多块读,无序INDEX FULL SCAN(MIN/MAX):针对MAX(),MIN()函数的查询INDEX SKIP SCAN:查询条件没有用到组合索引的第一列,而组合索引的第一列重复度…
1.使用sql_trace跟踪执行计划 1.1 当前session跟踪: alter session set sql_trace = true; //开始sql_trace alter session set tracefile_identifier = jytrace; //设定trace文件的标识符 alter session set sql_trace = false; //结束sql_trace 1.2 其他session跟踪:(根据其他session的sid, serial#定位,最常…
Oracle官方文档对SQL Access Advisor的描述如下: SQL Access Advisor, which is a tuning tool that provides advice on improving the performance of a database through partitioning, materialized views, indexes, and materialized view logs. 本文介绍下如何通过DBMS_ADVISOR的quick_…
1.explain plan的使用 SQL> explain plan for delete from t_jingyu; Explained. SQL> select * from table(dbms_xplan.display); PLAN_TABLE_OUTPUT ----------------------------------------------------------------------------------------------------------------…
N多年之前,刚刚接触SQL的时候,就被多表查询中的各种内连接,外连接,左外连接,右外连接等各式各样的连接弄的晕头转向. 更坑的是书上看到的各种表连接还有两种不同的写法, 比如对于表A,表B的查询 1,内连接两种写法: select * from A, B where A.id = B.id; select * from A join B on A.id = B.id; 2,右外连接写法: select * from A, B where A.id(+) = B.id; select * from…
Oracle 10g v$session视图中不同等待事件对应的p1,p2,p3的含义也不同,我们不可能记住所有等待事件对应的p1,p2,p3的含义. 可以通过查询V$EVENT_NAME知道每个等待事件对应的p1,p2,p3的含义 SQL> col name for a25;SQL> col p1 for a10;SQL> col p2 for a10;SQL> col p3 for a10; SQL> SELECT NAME, PARAMETER1 P1, PARAMET…
1. CPU time CPU time其实不是真正的等待事件.是衡量CPU是否瓶颈的一个重要指标.一般来讲,一个良好的系统,CPU TIME 应该排在TOP 5 TIME Event的最前面. 当然这也是相对的, 如果不存在显著的 latch wait 或过高的logical read 等, CPU time 占的比例高才是令人放心的. 也就是说CPU在高效率干活是好事,但是是否因为低效的设置或SQL而消耗CPU时间就需要注意了. NUM_CPU_SOCKETS 物理CPU的数目 NU…
转自 http://blog.itpub.net/29371470/viewspace-1063994/ 1. Buffer busy waits 从本质上讲,这个等待事件的产生仅说明了一个会话在等待一个Buffer(数据块),但是导致这个现象的原因却有很多种.常见的两种是:--当一个会话视图修改一个数据块,但这个数据块正在被另一个会话修改时.--当一个会话需要读取一个数据块,但这个数据块正在被另一个会话读取到内存中时.在新的版本中,第二种情况已经被独立出来,以read by other ses…