- 博客(94)
- 收藏
- 关注
原创 DBMS_STATS.GATHER_TABLE_STATS详解
由于Oracle的优化器是CBO,所以对象的统计数据对执行计划的生成至关重要! 作用:DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息(默认参数下是对表进行直方图信息收集,包含该表的自身-表的行数、数据块数、行长等信息;列的分析--列值的重复数、列上的空值、数据在列上的分布情况;索引的分析-索引页块的数量、索引的深度、索引聚合因子).
2013-09-09 21:06:36
1528
转载 减少oracle sql回表次数 提高SQL查询性能
要写出高效的SQL,那么必须必须得清楚SQL执行路径,介绍如何提高SQL性能的文章很多,这里不再赘述,本人来谈谈如何从 减少SQL回表次数 来提高查询性能,因为回表将导致扫描更多的数据块。 我们大家都知道,数据库表中数据存储都是以块为单位,称为数据块;表中每行数据都有唯一的地址标志ROWID。 举个例子: select a from test_db w
2013-09-08 23:47:31
1290
转载 in与exist , not in与not exist 的区别
in和exists in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为exists比in效率高的说法是不准确的。 如果查询的两个表大小相当,那么用in和exists差别不大。 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in: 例如:表A(小表),表B(大表)1:sel
2013-09-08 20:37:20
654
转载 ORACLE 收集统计信息
今天网上看到一篇关于收集统计信息的文章,还不错,特转载下来。1. 理解什么是统计信息优化器统计信息就是一个更加详细描述数据库和数据库对象的集合,这些统计信息被用于查询优化器,让其为每条SQL语句选择最佳的执行计划。优化器统计信息包括: 表的统计信息o 行数o Block数o 行平均长度· 列的统计信息o 列中不同值的
2013-09-07 13:42:32
1146
转载 Oracle 绑定变量窥探
Bind Peeking是Oracle 9i中引入的新特性,一直持续到Oracle 10g R2。它的作用就是在SQL语句硬分析的时候,查看一下当前SQL谓词的值,以便生成最佳的执行计划。而在oracle 9i之前的版本中,Oracle 只根据统计信息来做出执行计划。一、绑定变量窥探 使用SQL首次运行时的值来生成执行计划。后续再次运行该SQL语句则使用首次执行计划来执行。
2013-09-07 10:30:24
882
原创 ORACLE在线重定义
1.创建表SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, TIME DATE);2、插入数据SQL> INSERT INTO T SELECT ROWNUM, CREATED FROM DBA_OBJECTS; SQL> COMMIT;3、在线重定义的表自行验证,看该表是否可以重定义SQL> EXEC DBMS_R
2013-09-07 00:07:08
879
转载 利用Oracle在线重定义Online Redefinition清理历史数据
我在一文中介绍了Oracle在线重定义的特点及其使用步骤,Online Redefinition的适用场景很多,包括:Modify the storage parameters of a table or clusterMove a table or cluster to a different tablespaceAdd, modify, or drop one or more colu
2013-09-06 23:20:34
854
转载 oracle非分区表删除
以下脚本可以用于将表按照rowid范围分区,获得指定数目的rowid Extent区间(Group sets of rows in the table into smaller chunks), 以便于非分区表利用rowid来实现并行删除或更新:set verify offundefine rowid_rangesundefine segment_nameundefine owner
2013-09-06 23:14:25
785
转载 oracle的range,hash,list
引言:oracle的range,hash,list三大分区可能我们大家在熟悉不过了,但什么每种分区适用于什么场景可能是很多人的疑惑点,那么在选择不同的分区时应该注意什么,为什么这么选,有哪些需要我们加以注意的地方,让我们一一来探索一下吧:)A.创建range分区,一般用于日期化处理,range分区可以很高的管理基于日期来分区的数据创建一个新用户lsSYS@LEO> create use
2013-09-06 08:58:39
756
转载 anlyze table
它主要是用来对表进行重新统计,当一个表被更新之后,下面3个视图一般不会立马被更新,anlyze table对USER_TABLES,ALL_TABLES,DBA_TABLES的相关列进行了更新.NUM_ROWS、BLOCKS、EMPTY_BLOCKS、AVG_SPACE、CHAIN_COUNT、AVG_ROW_LEN使用限制数据字典、外部表、临时表、含有LONG,LOB等字段的表
2013-09-05 23:29:09
997
转载 Oracle查询当前高CPU消耗的SQL语句
分类: Oracle Performance2013-02-21 04:17 224人阅读 评论(0) 收藏 举报ERP数据库某些时段出现CPU使用率接近100%,如何找出这些高CPU消耗的SQL语句?1,查询高CPU消耗的pid$ top2,查询该pid的ADDRSQL> select addr from v$process where spid='24764
2013-09-05 23:16:00
5585
转载 Oracle Transport Tablespace
Oracle 10g 表空间迁移Transport tablespace前需要确认(1)确认表空间是否和其他表空间有包含关系SQL>conn trans_us/trans_usSQL>create table account as select rownum id,username,created from dba_users;(table默认在TRANSPORT_TS表空间里
2013-09-05 21:23:17
938
转载 Oracle三种连接原理
NLJ:根据连接键,把小表的每一行,和大笔的每一行做对比。 一般情况下会对大表连接键上建index。成本计算:读小表的行+(小表的每一行×读取大表的行)SMJ:读取小表和大表读的行,根据连接键排序,然后根据排序后的数据集(小表的和大表的)合进行连接。理想状态:2个表的排序操作都能在内存进行常规情况:2阶段进行: 1.sort run阶段:数据读取到内存
2013-09-04 22:36:04
1099
转载 Oracle表连接操作——Hash Join(哈希连接)
在Oracle中,确定连接操作类型是执行计划生成的重要方面。各种连接操作类型代表着不同的连接操作算法,不同的连接操作类型也适应于不同的数据量和数据分布情况。 无论是Nest Loop Join(嵌套循环),还是Merge Sort Join(合并排序连接),都是适应于不同特殊情况的古典连接方法。Nest Loop Join算法虽然可以借助连接列索引,但是带来的随机读成本过大。而Mer
2013-09-04 22:25:43
1448
转载 连接到RAC数据库的时候经常会出现ORA-12545错误
连接到RAC数据库的时候经常会出现ORA-12545错误针对这个问题Oracle没有认为这个是bug,只是认为是PROBLEM。解决办法可以有两种:修改客户端的hosts和tnsnames.ora或者修改oracle服务器数据库。前者称为客户端解决办法后者称为彻底的解决办法。(由于重启实例和监听风险较大,故通过更改hosts文件和重新配置tnsnames.ora实现)两者都行。彻底
2013-09-03 21:38:38
1069
转载 oracle表连接的方式
oracle表连接的方式 2012-06-03 16:09:02| 分类:oracle基础 | 标签:表连接的方式 |字号大中小 订阅 表的连接是指在一个SQL语句中通过表与表之间的关联,从一个或多个表检索出相关的数据。连接是通过SQL语句中FROM从句的多个表名,以及WHERE从句里定义的表之间的连接条件来实现的。如果一个SQL语句的关联表超过两个,那么连接的顺序如何
2013-09-03 11:45:34
834
转载 INDEX FULL SCAN vs INDEX FAST FULL SCAN
http://blog.csdn.net/robinson_0612/article/details/7452310 INDEX FULL SCAN 与 INDEX FAST FULL SCAN两个长相差不多,乃是一母同胞,因此既有其共性,也有其个性。两者来说其共性是不用扫描表而是通过索引就可以直接返回所需要的所有数据。这对提高查询性能而言,无疑是一个难得的数据访问方式之一,因为索
2013-09-01 22:26:56
635
转载 NULL 值与索引
转载http://blog.csdn.net/robinson_0612/article/details/7437561NULL值是关系数据库系统布尔型(true,false,unknown)中比较特殊类型的一种值,通常称为UNKNOWN或空值,即是未知的,不确定的。由于NULL存在着无数的可能,因此NULL值也不等于NULL值,所以与NULL值相关的操作同样都为NULL值。正是基
2013-08-31 19:46:00
3343
转载 [转贴]【sqlldr】 “Field in data file exceeds maximum length ”解决办法
2012-03-02 18:23:49分类: Oracle建表:create table PC_PLANNAME( PLANNAME VARCHAR(2000)); 使用sqlldr导数时出现如下错误:" Record 1: Rejected - Error on table PC_PLANNAME, column PLANNAME.
2013-08-28 16:34:22
1256
转载 Oracle 索引组织表(IOT)
Oracle 索引组织表(IOT)分类: Oracle 2010-01-15 20:403122人阅读 评论(4)收藏 举报 oracle存储table数据库database磁盘 索引组织表(IOT)有一种类B树的存储组织方法。普通的堆组织表是以一种无序的集合存储。而IOT中的数据是按主键有序的存储在B树索引结构中。与一般B树索引不同的的是,在IOT中每
2013-08-28 11:39:57
595
原创 RAC停启
手动启动RAC 一般情况下每次节点启动的时候,所有服务都会自动启动,如果需要关闭或者启动某个节点,如下所示 停止RAC:emctl stop dbconsole srvctl stop instance -d racdb -i racdb1 srvctl stop instance -d racdb -i racdb2 srvctl stop asm -n no
2013-08-27 20:49:48
670
原创 srvctl报错 :error while loading shared libraries: libpthread.so.0
[oracle@node1 ~]$ vi .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then . ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:$HOME/
2013-08-27 20:18:33
1034
转载 oracle pctfree和pctused详解
一、oracle pctfree和pctused详解一、建立表时候,注意PCTFREE参数的作用PCTFREE:为一个块保留的空间百分比,表示数据块在什么情况下可以被insert,默认是10,表示当数据块的可用空间低于10%后,就不可以被insert了,只能被用于update;即:当使用一个block时,在达到pctfree之前,该block是一直可以被插入的,这个时候处在上升期。PC
2013-08-26 15:11:04
724
转载 高水位线和全表扫描
分类: Oracle 性能优化 2011-11-08 18:15 1527人阅读 评论(2)收藏 举报 tablestatisticssqlinputdeleteoracle 高水位线好比水库中储水的水位线,用于描述数据库中段的扩展方式。高水位线对全表扫描方式有着至关重要的影响。当使用delete 操作表记录时,高水位线并不会下降,随之导致的是全表扫描的实际开销
2013-08-13 18:06:07
677
转载 视图合并(View Merging)
分类:Oracle SQL 调优2012-07-29 00:37 437人阅读 评论(0)收藏举报accessloopstablenestedmergejoin在使用视图或嵌套视图的查询语句中,oracle 为了取得最优的执行计划会将这些视图进行合并,将视图中的表与外部查询的表进行连接。[sql] view plaincopyprint?
2013-08-13 11:38:18
3017
原创 B_TREE索引原理初解
1、读取表中数据并对其进行排序,如果排序的内存超过设定,则使用临时表空间。2、开始把(1处)的排序结果存储在索引段的叶块中,在存储空间到达索引块的pctfree之前,该页块同时担任分支块的重任。3、当到达pctree,需要获得新的块(2处)用来存储索引行。同时生成一个分支块。在该分支块的头部存储着现有叶块的DBA(data block address),新的叶块中开始键值和它的DBA一起构
2013-08-12 22:26:13
940
转载 标量子查询
标量子查询ORACLE允许在select子句中包含单行子查询, 使用标量子查询可以有效的改善性能,当使用到外部连接,或者使用到了聚合函数,就可以考虑标量子查询的可能性1. 取消外部连接的使用外部连接的做法:select a.username,count(*) from all_users a,all_objects bwhere a.username=b.owne
2013-08-12 20:27:14
715
转载 ORACLE库表信息
SELECT * FROM USER_CONSTRAINTS WHERE table_name=upper('ORG_INFO')SELECT * FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME =upper('SYS_C0065894');alter table ORG_INFOadd foreign key (PARENT_ORG_ID)
2013-08-12 10:44:41
575
转载 查询oracle最耗资源的sql语句
查询oracle最耗资源的sql语句,等等1、查询当前系统中正在执行的sql:SELECT osuser, username, sql_text from v$session a, v$sqltext b where a.sql_address =b.address order by address, piece;2、查找死锁的语句:SELECT l.session_i
2013-08-12 10:20:26
2228
转载 INDEX FULL SCAN 或 INDEX FAST FULL SCAN区别
INDEX FULL SCAN 与 INDEX FAST FULL SCAN两个长相差不多,乃是一母同胞,因此既有其共性,也有其个性。两者来说其共性是不用扫描表而是通过索引就可以直接返回所需要的所有数据。这对提高查询性能而言,无疑是一个难得的数据访问方式之一,因为索引中存储的数据通常是远小于原始表的数据。下面具体来看看两者之间的异同。一、何时INDEX FULL SCAN 或 INDE
2013-08-11 17:52:26
1610
转载 oracle中like优化的方法
在oracle中对于like操作时,如果是前后都是模糊查询的时候(类似于col01 like ‘%xxx%’)是没有办法用到索引的,这里提供一种对于这种情况的优化思路,主要的思路是把大表变小,把查询的实体表变窄,把需要的数据放到索引里.常规的写法: create table t01 as select * from dba_objects;SQL> create
2013-08-11 17:15:45
2475
1
转载 index range scan,index fast full scan,index skip scan发生的条件
index range scan(索引范围扫描):1.对于unique index来说,如果where 条件后面出现了 ,between ...and...的时候,那么就可能执行index range scan,如果where条件后面是=,那么就会执行index unique scan。2.对于none unique index来说 如果where 条件后面出现了=,>,3.对于组合索
2013-08-11 16:55:35
783
原创 SQL语句中的ACCESS和FILTER
Prediceate(谓词):一个查询中的WHERE限制条件。 在查看执行计划的信息中,存在两个谓词filter和access 简单地说,执行计划如果显示是access,就表示这个谓词条件的值将会影响数据的访问路径(表还是索引), 而filter表示谓词条件的值并不会影响数据访问路径,只起到过滤的作用。SQL> create table echo as
2013-08-10 22:01:12
2091
原创 ORACLE-位图索引
关于位图索引,搜索到一个很通俗的例子:1、语法create bitmap index index_name on 表名(字段);2、举个例子你就能明白了:如有表 test(id,name,address)数据(1,张三,大连)(2,李四,天津)(3,王五,北京)(4,赵六,大连)....类似这样的数据,如果查询的时候用到 【where address
2013-08-10 17:18:35
853
原创 索引组织表
B_TREE索引采用索引列+ROWID的方式。获取数据的时候要经过2次逻辑读取。1、索引段的读取2、利用索引的ROWID对数据段进行读取。一般情况下,两次逻辑读取不会对查询存在影响。但是当数据的使用频度较高或者经常需要大范围扫描时候,B_TREE索引的优势就不明显了。 索引组织表:指把索引和一般数据列全部存储在相同位置的表结构。如果大部分的查询语句都要求对主键进行扫
2013-08-10 11:42:33
790
原创 SQL优化-materialize
加--+materialize提示,Oracle会先将查询结果写入一张临时表,然再查询临时表,有点类似于:create table global temporary test as select * from dba_tables;select * from test;with tbls test1( select /*+materialize*/ *
2013-08-10 08:53:51
3733
原创 ORACLE绑定变量初解
1、SQL> var i numberSQL> exec :i := 7369;PL/SQL procedure successfully completed.SQL> select * from emp where empno=:i; EMPNO ENAME JOB MGR HIREDATE SA
2013-08-09 08:15:27
520
转载 no_unnest,push_subq,push_pred的用法
no_unnest,push_subq,push_pred的用法 ===========================================================作者: guyuanli(http://guyuanli.itpub.net)发表于:2010.08.26 15:40分类: oralce数据库 出处:http://guyuanli.itpu
2013-08-08 11:15:06
1820
转载 MIN、MAX优化
http://blog.csdn.net/robinson1988/article/details/6623773 select (select min(object_id) min_id from test a),(select max(object_id) max_id from test b) from dual; select (select /*+ index_asc
2013-08-07 17:31:24
1153
原创 ORACLE谓词推入初解
oracle谓词推入:1、创建视图SQL> create view v_p as select * from emp where deptno=10;View created.SQL> select * from v_p ;--视图走全表Execution Plan-----------------------------------------------------
2013-08-07 14:23:41
3981
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人