Oracle执行计划详解
简介: 本文全面详细介绍oracle执行计划的相关的概念,访问数据的存取方法,表之间的连接等内容。 并有总结和概述,便于理解与记忆!+++ 目录--- 一.相关的概念 Rowid的概念 Recursive Sql概念 Predicate(谓词)&nbs...
直方图、基数、选择性、群集因子
基本概念 基数(Cardinality) 列唯一键(Distinct_keys)的数量,比如性别,该列只有男女之分,所以这一列基数是2。选择性(Selectivity) 列唯一键(Distinct_Keys)与行数(Num_Rows)的比值。直方图 (Histogram)是一种对数据分布质量情况进行描述的工具。它会按照某一列不同值出现数量多少,以及出现的频率高...
执行计划-数据访问方式(全表扫描与4种索引的方式)
执行计划Oracle执行计划的相关概念:Rowid:系统给oracle数据的每行附加的一个伪列,包含数据表名称,数据库id,存储数据库id以及一个流水号等信息,rowid在行的生命周期内唯一。Recursive sql:为了执行用户语句,系统附加执行的额外操作语句,譬如对数据字典的维护等。Row source(行源):oracle执行...
一条sql导致数据库整体性能下降的诊断和解决的全过程
发现数据库load很高,首先看top发现没有特别异常的进程,在数据库中适时抓取正在运行的sql也没发现异常(通常运行时间非常短的sql是不能被抓取到的)。询问相关应用程序人员,最近没有变动。检查应用程序日志发现今天早上跟往常也没有过多登陆和操作。基本上可以圈定是在数据库服务器本身上面。但是这个时候我还没有办法确...
虚拟索引
从9.2版本开始Oracle引入了虚拟索引的概念,虚拟索引是一个“伪造”的索引,它的定义只存在数据字典中并有存在相关的索引段。虚拟索引是为了在不真正创建索引的情况下,验证如果使用索引sql执行计划是否改变,执行效率是否能得到提高。一、虚拟索引支持类型虚拟索引支持B-TREE索引和BIT位图索引,在CBO模式下ORACLE...
是否使用绷定变量的一些建议
1、建议使用绑定变量的列:对于流水号、订单号、用户ID、电话号码、身份证号码、证件号码等,这类列的特点是列的唯一性较好、列的不同值数量跟表的数据量比较接近,而这类列涉及的SQL语句往往存在高并发,写成绑定变量会大大减少数据库的解析成本。 2、不建议使用绑定变量的列:能够枚...
如何加快建 index 索引的时间
朋友在500w的表上建索引,半个小时都没有结束。所以就讨论如何提速。 一.先来看一下创建索引要做哪些操作:1. 把indexkey的data 读到内存==>如果data 没在db_cache 中,这时候很容易有大量的db file scatter read wait2. 对indexkey的data 作排序==>sort_area_size 或者pga_aggregate_tar...
清理Oracle安装目录里的一些日志信息
最近测试环境服务器上磁盘空间紧张,表空间里面的数据也不知道开发哪些需要哪些不需要,而且因为此测试库运行时间比较久远,起码有三年了。于是就从清理Oracle安装目录下的日志下手。发现在一般这几个日志,如果没有做定期清理的话,就比较占空间。1.<user_dump_dest>/alert_<sid>.log2.$ORACLE_HOME/oc4j/j2...
利用sql_trace跟踪一个指定会话的操作
1. sys用户给管理用户授权。SQL> grant execute on sys.dbms_system toandy;Grant succeeded.2. 查询被跟踪用户的sid,serial# SQL> select sid,serial# from v$session whereusername='DBLINK'; SID SERIAL#---------- ----------31 73...
记一次ORACLE的UNDO表空间爆满分析过程
这篇文章是记录一次ORACLE数据库UNDO表空间爆满的分析过程,主要整理、梳理了同事分析的思路。具体过程如下所示:早上收到一数据库服务器的UNDO表空间的告警邮件,最早一封是7:55发出的(监控作业是15分钟一次),从告警邮件分析,好像是UNDO表空间突然一下子被耗尽了。 Tablespace...
SWAP_JOIN_INPUTS Oracle Hint
swap_join_inputs是针对哈希连接的hint,它的含义是让优化器交换原哈希连接的驱动表和被驱动表的顺序,即在依然走哈希连接的情况下让原哈希连接的驱动表变被驱动表,让原哈希连接的被驱动表变为驱动表。注意,在swap_join_inputs hint中指定的目标表应该是原哈希连接中的被驱动表,否则oracle会忽略该hint。/*+ s...
SQL 优化原则
一、问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优化。对于海量...
Oracle执行计划详解
简介: 本文全面详细介绍oracle执行计划的相关的概念,访问数据的存取方法,表之间的连接等内容。 并有总结和概述,便于理解与记忆!+++ 目录--- 一.相关的概念 Rowid的概念 Recursive Sql概念 Predicate(谓词)&nbs...
oracle隐含参数的查看与修改
v$parameter视图中查询参数的时候其实都是通过x$ksppi和x$ksppcv这两个内部视图中得到的。 1. 可以通过如下方式查询当前实例的所有隐含参数:col name for a30;col value for a10;selectx.ksppinm name,y.ksppstvl value,y.ksppstdf isdefault,decode(bitand(...
oracle归档日志增长过快处理方法
oracle归档日志一般由dml语句产生,所以增加太快应该是dml太频繁 首先查询以下每天的归档产生的情况: SELECT TRUNC(FIRST_TIME) "TIME", SUM(BLOCK_SIZE *BLOCKS) 1024oracle归档日志一般由dml语句产生,所以增加太快应该是dml太频繁首先查询以下每天的归档产生的情况:SELECT TRUNC(FIRST_TIME)"TIME",S...
Oracle“死锁”模拟
本着实验优先的原则,先模拟死锁的发生,然后在列一下死锁产生的四个必要条件和处理死锁的一般策略。1.创建两个简单的表t1_deadlock和t2_deadlock,每个表中仅仅包含一个字段asys@ora10g> conn sec/secConnected.sec@ora10g> create table t1_deadlock (a int);Table created.sec@ora10g> create table t2_deadl...
Oracle 手工清除回滚段的几种方法
某些情况下,我们需要手动去清除一些有问题的回滚段,如果该回滚段中包含活动事务,那么使用正常的方式将无法drop,所以此时你dropundo tablespace 也将失败。 可能就会遇到如下的错误:SQL> drop tablespace undotbs1 includingcontents and datafiles;drop tablespace undotbs1 including contentsand dat...
oracle 内存分配和调优总结
一直都想总结一下oracle内存调整方面的知识,最近正好优化一个数据库内存参数,查找一些资料并且google很多下。现在记录下来,做下备份。 一、概述: ...
Oracle Hints详解
在向大家详细介绍Oracle Hints之前,首先让大家了解下Oracle Hints是什么,然后全面介绍Oracle Hints,希望对大家有用。基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担。但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比。此时就需要DBA进行人为...
Oracle cursor_sharing 参数 详解
1.1 CURSOR_SHARINGPropertyDescriptionParameter typeStringSyntaxCURSOR_SHARING = { SIMILAR | EXACT | FORCE }Default valueEXACTModifiableALTER SESSION, ALTER SYSTEMBasicNo CURSOR_SHARING determines what kind of SQL statements can share the same cursors.&n...