自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 收藏
  • 关注

原创 DBMS_STATS.GATHER_TABLE_STATS详解

由于Oracle的优化器是CBO,所以对象的统计数据对执行计划的生成至关重要!  作用:DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息(默认参数下是对表进行直方图信息收集,包含该表的自身-表的行数、数据块数、行长等信息;列的分析--列值的重复数、列上的空值、数据在列上的分布情况;索引的分析-索引页块的数量、索引的深度、索引聚合因子). 

2013-09-09 21:06:36 1565

转载 减少oracle sql回表次数 提高SQL查询性能

要写出高效的SQL,那么必须必须得清楚SQL执行路径,介绍如何提高SQL性能的文章很多,这里不再赘述,本人来谈谈如何从 减少SQL回表次数 来提高查询性能,因为回表将导致扫描更多的数据块。    我们大家都知道,数据库表中数据存储都是以块为单位,称为数据块;表中每行数据都有唯一的地址标志ROWID。  举个例子:    select a from test_db w

2013-09-08 23:47:31 1318

转载 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 677

转载 ORACLE 收集统计信息

今天网上看到一篇关于收集统计信息的文章,还不错,特转载下来。1.     理解什么是统计信息优化器统计信息就是一个更加详细描述数据库和数据库对象的集合,这些统计信息被用于查询优化器,让其为每条SQL语句选择最佳的执行计划。优化器统计信息包括:      表的统计信息o   行数o   Block数o   行平均长度·         列的统计信息o   列中不同值的

2013-09-07 13:42:32 1182

转载 Oracle 绑定变量窥探

Bind Peeking是Oracle 9i中引入的新特性,一直持续到Oracle 10g R2。它的作用就是在SQL语句硬分析的时候,查看一下当前SQL谓词的值,以便生成最佳的执行计划。而在oracle 9i之前的版本中,Oracle 只根据统计信息来做出执行计划。一、绑定变量窥探     使用SQL首次运行时的值来生成执行计划。后续再次运行该SQL语句则使用首次执行计划来执行。

2013-09-07 10:30:24 904

原创 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 914

转载 利用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 885

转载 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 810

转载 oracle的range,hash,list

引言:oracle的range,hash,list三大分区可能我们大家在熟悉不过了,但什么每种分区适用于什么场景可能是很多人的疑惑点,那么在选择不同的分区时应该注意什么,为什么这么选,有哪些需要我们加以注意的地方,让我们一一来探索一下吧:)A.创建range分区,一般用于日期化处理,range分区可以很高的管理基于日期来分区的数据创建一个新用户lsSYS@LEO> create use

2013-09-06 08:58:39 778

转载 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 1019

转载 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 5644

转载 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 957

转载 Oracle三种连接原理

NLJ:根据连接键,把小表的每一行,和大笔的每一行做对比。 一般情况下会对大表连接键上建index。成本计算:读小表的行+(小表的每一行×读取大表的行)SMJ:读取小表和大表读的行,根据连接键排序,然后根据排序后的数据集(小表的和大表的)合进行连接。理想状态:2个表的排序操作都能在内存进行常规情况:2阶段进行:          1.sort run阶段:数据读取到内存

2013-09-04 22:36:04 1118

转载 Oracle表连接操作——Hash Join(哈希连接)

在Oracle中,确定连接操作类型是执行计划生成的重要方面。各种连接操作类型代表着不同的连接操作算法,不同的连接操作类型也适应于不同的数据量和数据分布情况。  无论是Nest Loop Join(嵌套循环),还是Merge Sort Join(合并排序连接),都是适应于不同特殊情况的古典连接方法。Nest Loop Join算法虽然可以借助连接列索引,但是带来的随机读成本过大。而Mer

2013-09-04 22:25:43 1523

转载 连接到RAC数据库的时候经常会出现ORA-12545错误

连接到RAC数据库的时候经常会出现ORA-12545错误针对这个问题Oracle没有认为这个是bug,只是认为是PROBLEM。解决办法可以有两种:修改客户端的hosts和tnsnames.ora或者修改oracle服务器数据库。前者称为客户端解决办法后者称为彻底的解决办法。(由于重启实例和监听风险较大,故通过更改hosts文件和重新配置tnsnames.ora实现)两者都行。彻底

2013-09-03 21:38:38 1101

转载 oracle表连接的方式

oracle表连接的方式  2012-06-03 16:09:02|  分类:oracle基础 |  标签:表连接的方式   |字号大中小 订阅    表的连接是指在一个SQL语句中通过表与表之间的关联,从一个或多个表检索出相关的数据。连接是通过SQL语句中FROM从句的多个表名,以及WHERE从句里定义的表之间的连接条件来实现的。如果一个SQL语句的关联表超过两个,那么连接的顺序如何

2013-09-03 11:45:34 862

转载 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 653

转载 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 3371

转载 [转贴]【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 1277

转载 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 613

原创 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 690

原创 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 1055

转载 oracle pctfree和pctused详解

一、oracle pctfree和pctused详解一、建立表时候,注意PCTFREE参数的作用PCTFREE:为一个块保留的空间百分比,表示数据块在什么情况下可以被insert,默认是10,表示当数据块的可用空间低于10%后,就不可以被insert了,只能被用于update;即:当使用一个block时,在达到pctfree之前,该block是一直可以被插入的,这个时候处在上升期。PC

2013-08-26 15:11:04 740

转载 高水位线和全表扫描

分类: Oracle 性能优化 2011-11-08 18:15 1527人阅读 评论(2)收藏 举报 tablestatisticssqlinputdeleteoracle   高水位线好比水库中储水的水位线,用于描述数据库中段的扩展方式。高水位线对全表扫描方式有着至关重要的影响。当使用delete 操作表记录时,高水位线并不会下降,随之导致的是全表扫描的实际开销

2013-08-13 18:06:07 693

转载 视图合并(View Merging)

分类:Oracle SQL 调优2012-07-29 00:37 437人阅读 评论(0)收藏举报accessloopstablenestedmergejoin在使用视图或嵌套视图的查询语句中,oracle 为了取得最优的执行计划会将这些视图进行合并,将视图中的表与外部查询的表进行连接。[sql] view plaincopyprint?

2013-08-13 11:38:18 3061

原创 B_TREE索引原理初解

1、读取表中数据并对其进行排序,如果排序的内存超过设定,则使用临时表空间。2、开始把(1处)的排序结果存储在索引段的叶块中,在存储空间到达索引块的pctfree之前,该页块同时担任分支块的重任。3、当到达pctree,需要获得新的块(2处)用来存储索引行。同时生成一个分支块。在该分支块的头部存储着现有叶块的DBA(data block address),新的叶块中开始键值和它的DBA一起构

2013-08-12 22:26:13 961

转载 标量子查询

标量子查询ORACLE允许在select子句中包含单行子查询, 使用标量子查询可以有效的改善性能,当使用到外部连接,或者使用到了聚合函数,就可以考虑标量子查询的可能性1. 取消外部连接的使用外部连接的做法:select a.username,count(*)  from all_users a,all_objects bwhere a.username=b.owne

2013-08-12 20:27:14 733

转载 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 592

转载 查询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 2249

转载 INDEX FULL SCAN 或 INDEX FAST FULL SCAN区别

INDEX FULL SCAN 与 INDEX FAST FULL SCAN两个长相差不多,乃是一母同胞,因此既有其共性,也有其个性。两者来说其共性是不用扫描表而是通过索引就可以直接返回所需要的所有数据。这对提高查询性能而言,无疑是一个难得的数据访问方式之一,因为索引中存储的数据通常是远小于原始表的数据。下面具体来看看两者之间的异同。一、何时INDEX FULL SCAN 或 INDE

2013-08-11 17:52:26 1687

转载 oracle中like优化的方法

在oracle中对于like操作时,如果是前后都是模糊查询的时候(类似于col01 like ‘%xxx%’)是没有办法用到索引的,这里提供一种对于这种情况的优化思路,主要的思路是把大表变小,把查询的实体表变窄,把需要的数据放到索引里.常规的写法: create table t01 as select * from dba_objects;SQL> create

2013-08-11 17:15:45 2536 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 803

原创 SQL语句中的ACCESS和FILTER

Prediceate(谓词):一个查询中的WHERE限制条件。    在查看执行计划的信息中,存在两个谓词filter和access    简单地说,执行计划如果显示是access,就表示这个谓词条件的值将会影响数据的访问路径(表还是索引),    而filter表示谓词条件的值并不会影响数据访问路径,只起到过滤的作用。SQL> create table echo as

2013-08-10 22:01:12 2130

原创 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 872

原创 索引组织表

B_TREE索引采用索引列+ROWID的方式。获取数据的时候要经过2次逻辑读取。1、索引段的读取2、利用索引的ROWID对数据段进行读取。一般情况下,两次逻辑读取不会对查询存在影响。但是当数据的使用频度较高或者经常需要大范围扫描时候,B_TREE索引的优势就不明显了。 索引组织表:指把索引和一般数据列全部存储在相同位置的表结构。如果大部分的查询语句都要求对主键进行扫

2013-08-10 11:42:33 810

原创 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 3763

原创 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 547

转载 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 1854

转载 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 1186

原创 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 4005

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除