深入oracle
摘要:数据库查看篇: -- ================================================================== --查询Session正在执行的语句 --查看某个进程正在执行什么SQL语句.sql SELECT b.sql_text, sid, serial#, osuser, machine FROM v$session a, v$sqlarea b ...
阅读全文
posted @
2009-01-07 00:46
一江水
阅读(2341)
推荐(0) 编辑
Oracle表分区和索引分区汇总
摘要:Oracle表分区和索引分区汇总 为了简化数据库大表的管理,例如在数据仓库中一般都是TB级的数量级.ORACLE8以后推出了分区选项.分区将表分离在若于不同的表空间上,用分而治之的方法来支撑元限膨胀的大表,组大表在物理一级的可管理性.将大表分割成较小的分区可以改善表的维护、备份、恢复、事务及查询性能。 分区的优点: 1、 增强可用性:如果表的一个分区由于系统故障而不能使用,表的其余好的分区仍可以...
阅读全文
posted @
2008-12-24 17:04
一江水
阅读(9817)
推荐(1) 编辑
用sql比较两个库是否一致
摘要:比较两个数据库,可以用工具,比如toad等,也可以自己写存储过程来实现,偶介绍一个用sql来核对表结构是否一致,以此类推,大家可以写出对比索引是否一致,对比约束是否一致的sql,该sql的缺点就是只能查出差异,却不知是那个表引起的: select case when a.cnt = b.cnt then '两个库结构一致' when a.cnt b.cnt then '两个库结构不一致' en...
阅读全文
posted @
2008-12-08 15:08
一江水
阅读(671)
推荐(0) 编辑
Oracle10g的current_scn是如何计算的?
摘要:http://www.eygle.com/archives/2007/06/oracle10g_current_scn.html 前几天有一个朋友问我一个问题: Oracle10g的current_scn是如何计算的? 我们知道Oracle10g在v$database视图中引入了current_scn,这个SCN来自底层表,代表当前的SCN,在Oracle9i中我们可以通过dbms_flashba...
阅读全文
posted @
2008-11-12 18:00
一江水
阅读(695)
推荐(0) 编辑
Oracle的Number型数值存储及转换
摘要:Oracle在数据库内部通过相应的算法转换来进行数据存储,本文简单介绍Oracle的Number型数值存储及转换.这个内容是为了回答留言板上的2119号问题. 我们可以通过DUMP函数来转换数字的存储形式,一个简单的输出类似如下格式: SQL> select dump(1) from dual; DUMP(1) ...
阅读全文
posted @
2008-11-12 17:59
一江水
阅读(2845)
推荐(0) 编辑
Oracle block 格式
摘要:信息参考: http://www.ixora.com.au/ 特别感谢 overtime 大哥对我的无私的帮助和对我一直鼓励支持我的网友 这些资料是没得到oracle 支持的 所以不能保证信息的正确性 请谨慎使用 科技无限 随便转载 oracle 8.1.7 8k block windows xp create table t(n number); ...
阅读全文
posted @
2008-11-12 17:36
一江水
阅读(1503)
推荐(0) 编辑
ORACLE 中 PROFILE的管理
摘要:PROFILE的管理(资源文件) 当需要设置资源限制时,必须设置数据库系统启动参数RESOURCE_LIMIT,此参数默认值为FALSE 可以使用如下命令来启动当前资源限制: alter system set RESOURCE_LIMIT=true; 当需要以后启动时也启动限制,必须在init.ora中设置 RESOURCE_LIMIT=...
阅读全文
posted @
2008-10-29 10:39
一江水
阅读(4615)
推荐(0) 编辑
Oracle的聚簇因子对于查询IO的影响
摘要:Oracle中,对于同一个查询语句,有时候会很快的完成,有时候却很慢,但是表结构什么的完全一致,表中的数据也完全一致,这个具体是什么原因呢,就要从Index中的细节说起了。 在Oracle中的一个特殊的视图user_indexes中有一个特殊的列,名字是clustering_factor,这个值的内容就是如果访问表的整个表数据,会造成多少次数据库IO。我们可以通过下面的SQL语句来查看。 SELE...
阅读全文
posted @
2008-10-24 22:48
一江水
阅读(1326)
推荐(0) 编辑
关于PCTFREE (PCTUSED)
摘要:Oracle 的其中一个优点时它可以管理每个表空间中的自由空间。 Oracle 负责处理表和索引的空间管理,这样就可以让我们无需懂得 Oracle 的表和索引的内部运作。不过,对于有经验的 Oracle 调优专家来说,他需要懂得 Oracle 是如何管理表的 extent 和空闲的数据块。对于调整拥有高的 insert 或者 update 的系统来说,这是非常重要的。 要精通对象的调整,你需要懂...
阅读全文
posted @
2008-10-24 22:47
一江水
阅读(1502)
推荐(0) 编辑
关于oracle rowid的一些内容
摘要:作者:刘颖博 时间:2004-6-12 mail:liuyingbo@126.com,请指正 转载请注明出处及作者 本文讨论的是关于oracle从8i开始引进object的概念后的rowid,即扩展(extended)的rowid: 1. rowid的介绍 先对rowid有个感官认识: SQL> select ROWID from Bruce_test where rownum 0...
阅读全文
posted @
2008-10-24 21:12
一江水
阅读(16639)
推荐(3) 编辑
Oracle存储物理结构
摘要:翻译和整理:刘晓韬 时间:2007-01-12 摘要: 本文描述了表空间(Oracle数据库首要的逻辑数据库结构)和与每个表空间对应的物理数据文件。这里为了介绍的方便,把属于存储逻辑概念的表空间放到了本章。 综述 Oracle逻辑上把数据存储在表空间中,在物理上把数据存储在相应的数据库。如下图所示: 数据库、表空间和数据文件是紧密相关的,但它们之间有重要的差别: 一个Orac...
阅读全文
posted @
2008-10-23 00:49
一江水
阅读(3161)
推荐(0) 编辑
Oracle中组合索引的使用详解
摘要:在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引。在组合索引的使用方面,Oracle有以下特点:
1、当使用基于规则的优化器(RBO)时,只有当组合索引的前导列出现在SQL语句的where子句中时,才会使用到该索引;
2、在使用Oracle9i之前的基于成本的优化器(CBO)时, 只有当组合索引的前导列出现在SQL语句的where子句中时,才可能会使用到该索引,这取决于优化器计算的使用索引的成本和使用全表扫描的成本,Oracle会自动选择成本低的访问路径;
3、从Oracle9i起,Oracle引入了一种新的索引扫描方式——索引跳跃扫描(index skip scan),这种扫描方式只有基于成本的优化器(CBO)才能使用。这样,当SQL语句的where子句中即使没有组合索引的前导列,并且索引跳跃扫描的成本低于其他扫描方式的成本时,Oracle就会使用该方式扫描组合索引(请见下面的测试3);
4、Oracle优化器有时会做出错误的选择,因为它再“聪明”,也不如我们SQL语句编写人员更清楚表中数据的分布,在这种情况下,通过使用提示(hint),我们可以帮助Orac
阅读全文
posted @
2008-10-19 21:11
一江水
阅读(53734)
推荐(1) 编辑
高水位线(High Water Mark)
摘要:所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上限称为"high water mark"或HWM。这个HWM是一个标记,用来说明已经有多少没有使用的数据块分配给这个segment。HWM通常增长的幅度为一次5个数据块,原则上HWM只会增大,不会缩小,即使将表中的数据全部删除,HWM还是为原值,由于这个特点,使HWM很象一个水库的历史最高水位,这也就是HWM的原始含义,当然不能说一个水库没水了,就说该水库的历史最高水位为0。但是如果我们在表上使用了truncate命令,则该表的HWM会被重新置为0。
阅读全文
posted @
2008-10-15 11:42
一江水
阅读(1482)
推荐(1) 编辑
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
一江水
阅读(5420)
推荐(0) 编辑
disable/enable validate/novalidate 的区别
摘要:启用约束:
enable( validate) :启用约束,创建索引,对已有及新加入的数据执行约束.
enable novalidate :启用约束,创建索引,仅对新加入的数据强制执行约束,而不管表中的现有数据.
禁用约束:
disable( novalidate):关闭约束,删除索引,可以对约束列的数据进行修改等操作.
disable validate :关闭约束,删除索引,不能对表进行 插入/更新/删除等操作.
阅读全文
posted @
2008-09-23 20:04
一江水
阅读(8059)
推荐(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
一江水
阅读(1292)
推荐(0) 编辑
ORACLE执行计划的一些基本概念
摘要:本文介绍了ORACLE执行计划的一些基本概念,供学习应用。 一.相关的概念 Rowid的概念:rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的。对每个表都有一个rowid的伪列,但是表中并不物理存储ROWID列的值。不过你可以像使用其它列那样使用它,但是不能删除改列,也不能对该列的值进行修改、插入。一旦一行数据插入数据库,则rowid在该行的生命周期内是唯一的,即即...
阅读全文
posted @
2008-09-10 23:24
一江水
阅读(754)
推荐(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
一江水
阅读(6878)
推荐(0) 编辑
Oracle Hint:USE_NL、USE_MERGE、UESE_HASH
摘要:USE_NL(嵌套循环连接)
在嵌套循环连接中,Oracle从第一个行源中读取第一行,然后和第二个行源中的数据进行对比。所有匹配的记录放在结果集中,然后Oracle将读取第一个行源中的下一行。按这种方式直至第一个数据源中的所在行都经过处理。第一个记录源通常称为外部表,或者驱动表,相应的第二个行源称为内部表。使用嵌套循环连接是一种从连接结果中提取第一批记录的最快速的方法。
USE_HASH(哈希连接)
当内存能够提供足够的空间时,哈希(HASH)连接是Oracle优化器通常的选择。在哈希连接中,Oracle访问一张表(通常是较大的表),并在内存中建立一张基于连接键的哈希表。然后它扫描连接中其他的表(通常是较大的表),并根据哈希表检测是否有匹配的记录。
阅读全文
posted @
2008-09-10 23:01
一江水
阅读(10797)
推荐(2) 编辑
ORACLE索引与高性能SQL介绍
摘要: 索引的种类
非唯一索引(最常用)
唯一索引
位图索引
局部有前缀分区索引
局部无前缀分区索引
全局有前缀分区索引
散列分区索引
基于函数的索引
阅读全文
posted @
2008-09-09 17:42
一江水
阅读(1187)
推荐(0) 编辑