随笔-227  评论-32  文章-175  trackbacks-1
09 2008 档案
一个使用柱状图的案例[转]
摘要: 1、对于取值较少的字段,如果是倾斜的,而我们的查询结果是数据量较小的,这种情况,在这个字段上创建B树索引,是可以起作用的。 2、索引起作用的前提是必须对该字段采集柱状图信息,并且SQL中该字段的条件不能使用绑定变量(如果使用绑定变量由于BIND PEEKING,会导致执行计划不稳定)阅读全文
posted @ 2008-09-28 00:57 一江水 阅读(143) | 评论 (0) 编辑
create sequence
摘要: create sequence emp_sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10; SELECT empseq.currval FROM DUAL; 阅读全文
posted @ 2008-09-24 00:25 一江水 阅读(2164) | 评论 (0) 编辑
disable/enable validate/novalidate 的区别
摘要: 启用约束: enable( validate) :启用约束,创建索引,对已有及新加入的数据执行约束. enable novalidate :启用约束,创建索引,仅对新加入的数据强制执行约束,而不管表中的现有数据. 禁用约束: disable( novalidate):关闭约束,删除索引,可以对约束列的数据进行修改等操作. disable validate :关闭约束,删除索引,不能对表进行 插入/更新/删除等操作.阅读全文
posted @ 2008-09-23 20:04 一江水 阅读(1002) | 评论 (1) 编辑
Oracle多粒度封锁机制研究
摘要: 为了确保并发用户在存取同一数据库对象时的正确性(即无丢失修改、可重复读、不读“脏”数据),数据库中引入了锁机制。基本的锁类型有两种:排它锁(Exclusive locks记为X锁)和共享锁(Share locks记为S锁)。 排它锁:若事务T对数据D加X锁,则其它任何事务都不能再对D加任何类型的锁,直至T释放D上的X锁;一般要求在修改数据前要向该数据加排它锁,所以排它锁又称为写锁。 共享锁:若事务T对数据D加S锁,则其它事务只能对D加S锁,而不能加X锁,直至T释放D上的S锁;一般要求在读取数据前要向该数据加共享锁,所以共享锁又称为读锁。阅读全文
posted @ 2008-09-19 23:00 一江水 阅读(288) | 评论 (0) 编辑
如何drop大表的中不用的字段[转]
摘要: 我们要删除表中不用的字段,如果直接drop column,对于大表,进行DDL操作的时间会比较长,会严重阻塞DML语句,导致应用服务器crash,通常的做法是先set unused column column_name 或者 set unused column_name,column_name...,然后再利用停机时间做alter table table_name drop unused columns阅读全文
posted @ 2008-09-11 21:16 一江水 阅读(196) | 评论 (0) 编辑
ORA-01555的解释
posted @ 2008-09-11 15:53 一江水 阅读(271) | 评论 (0) 编辑
Oracle Hint(提示)和INDEX(索引)的一些忠告
摘要: Oracle的hint种类繁多,大致可以分为下面几类: 优化方式和目标:如RULE、CHOOSE、FIRST_ROWS、ALL_ROWS等。 访问路径:如INDEX、FULL、CLUSTER、INDEX_FFS等。 查询转换:如MERGE、USE_CONCAT、NO_EXPAND等。 连接顺序:如LEADING、ORDERED、STAR等。 连接操作:如USE_NL、USE_HASH、USE_MERGE等。 并行执行:如PARALLE、NOPARALLEL、PARALLEL_INDEX等。 其他类型;如APPEND、UNNEST、CACHE等。阅读全文
posted @ 2008-09-10 23:21 一江水 阅读(1089) | 评论 (0) 编辑
Oracle Hint:USE_NL、USE_MERGE、UESE_HASH
摘要: USE_NL(嵌套循环连接) 在嵌套循环连接中,Oracle从第一个行源中读取第一行,然后和第二个行源中的数据进行对比。所有匹配的记录放在结果集中,然后Oracle将读取第一个行源中的下一行。按这种方式直至第一个数据源中的所在行都经过处理。第一个记录源通常称为外部表,或者驱动表,相应的第二个行源称为内部表。使用嵌套循环连接是一种从连接结果中提取第一批记录的最快速的方法。 USE_HASH(哈希连接) 当内存能够提供足够的空间时,哈希(HASH)连接是Oracle优化器通常的选择。在哈希连接中,Oracle访问一张表(通常是较大的表),并在内存中建立一张基于连接键的哈希表。然后它扫描连接中其他的表(通常是较大的表),并根据哈希表检测是否有匹配的记录。 阅读全文
posted @ 2008-09-10 23:01 一江水 阅读(1255) | 评论 (0) 编辑
and_equal,index_join,index_combine
摘要: and_equal,index_join,index_combine这三种都是oracle利用索引关联获得数据的方法,三者的目的都是为了最大限度的利用索引,减少回表的代价.但是三者的实现方法是有区别的阅读全文
posted @ 2008-09-10 21:23 一江水 阅读(162) | 评论 (0) 编辑
ORACLE索引与高性能SQL介绍
摘要:   索引的种类   非唯一索引(最常用)   唯一索引   位图索引   局部有前缀分区索引   局部无前缀分区索引   全局有前缀分区索引   散列分区索引   基于函数的索引阅读全文
posted @ 2008-09-09 17:42 一江水 阅读(198) | 评论 (0) 编辑
NLS参数设置导致的性能问题案例
摘要: Execute Immediate ' alter session set nls_comp=LINGUISTIC' Execute Immediate ' alter session set nls_sort=BINARY_CI'阅读全文
posted @ 2008-09-08 23:17 一江水 阅读(168) | 评论 (0) 编辑
Oracle左连接,右连接
摘要: 左连接显示左边全部的和右边与左边相同的 右连接显示右边全部的和左边与右边相同的 内连接是只显示满足条件的! 阅读全文
posted @ 2008-09-08 22:50 一江水 阅读(490) | 评论 (0) 编辑
Oracle的consistent gets是如何计算的?
摘要: 1.单表扫描 SQL> execute show_space('TEST1','WWJ'); Unformatted Blocks ..................... 0 FS1 Blocks (0-25) ..................... 0阅读全文
posted @ 2008-09-06 22:13 一江水 阅读(117) | 评论 (0) 编辑
ORACLE 执行计划分析
posted @ 2008-09-06 20:39 一江水 阅读(1545) | 评论 (0) 编辑
Oracle中的Union、Union All、Intersect、Minus[转]
摘要: Intersect和Minus的操作和Union基本一致,这里一起总结一下: Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序; Union All,对两个结果集进行并集操作,包括重复行,不进行排序; Intersect,对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序; Minus,对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。 可以在最后一个结果集中指定Order by子句改变排序方式。阅读全文
posted @ 2008-09-06 13:18 一江水 阅读(207) | 评论 (0) 编辑
Oracle 性能优化的基本方法概述
摘要: 确定当前Oracle性能瓶颈 重点:从Oracle 等待接口v$system_event、v$session_event和v$session_wait中获得等待事件,进而找出影响性能的对象和sql语句阅读全文
posted @ 2008-09-03 10:38 一江水 阅读(524) | 评论 (0) 编辑
ORACLE中查看执行计划plan
摘要: sql>set serveroutput on sql>set autotrace traceonly 完整格式是: SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]阅读全文
posted @ 2008-09-02 17:15 一江水 阅读(370) | 评论 (0) 编辑
ADDM测试手记
摘要: 1.运行以下SQL,找到你要分析的时间段的SNAP_ID,记下两个时间对应的SNAP_ID SQL>SELECT SNAP_ID,BEGIN_INTERVAL_TIME,END_INTERVAL_TIME,SNAP_LEVEL,ERROR_COUNT FROM dba_hist_snapshot ORDER BY snap_id DESC; 2.运行@ORACLE_HOME/rdbms/admin/addmrpt.sql生成报告 在SQL运行的过程中,会首先提示输入起始的SNAP_ID,输入你刚才记下的开始时间对应的SNAP_ID,接着会要求输入中止时间对应的SNAP_ID,接着会要求输入一个名称,Oracle会生成一个以此名称命名的报告,如test.lst.阅读全文
posted @ 2008-09-01 15:05 一江水 阅读(101) | 评论 (0) 编辑