eygle.com   eygle.com
eygle.com eygle
eygle.com  
 
  • dbms_sqltune解析SQL的BIND_DATA绑定变量值 Posted by eygle at 2010-11-23

    【内容摘要】最近在用户案例分析中,需要解析一下SQL的绑定变量以分析SQL逻辑,通过wrh$_sqlstat的BIND_DATA可以将Oracle存储的绑定变量分析出来。

  • Oracle Index Merge 与 and_equal 的变迁 Posted by eygle at 2010-06-08

    【内容摘要】and_equal是Oracle支持的一种特定操作,可以将多个单列索引进行合并(Index Merge)输出查询结果。 同时and_equal可以通过Hints来进行强制,最少指定两个索引,最多指定5个。

  • SQL 共享之 ROLL_INVALID_MISMATCH 含义 Posted by eygle at 2010-01-18

    【内容摘要】在10g中,缺省的使用AUTO_INVALIDATE选项时,分析对象之后,原有SQL并不会立即失效,失效时间和SQL执行有关,同时受到另外一个参数的影响:_optimizer_invalidation_period ,这个参数的缺省值是18000s(以下是Oracle 10gR2的缺省设置),当超过这个时间,SQL会重新硬解析,生成一个新的SQL,并标记与之前Cursor不能共享的原因为 ROLL_INVALID_MISMATCH

  • CBO中 SMON 进程与 col_usage$ 的维护 Posted by eygle at 2009-12-15

    【内容摘要】从Oracle9i开始,为了监控column的使用信息,引入了一个对象col_usage$,用于记录运行时的COLUMN使用信息。

  • CBO的魔术 - 一个错误的索引选择会带来的后果 Posted by eygle at 2009-09-16

    【内容摘要】说CBO是Oracle最为博大精深的技术一点也不为过,只是这技术越复杂越深奥出错的机会就越多了。

  • 如何对时间进行简单加减运算 Posted by eygle at 2008-04-22

    【内容摘要】今天有朋友问,如果对时间进行运算,比如对一个时间值加3分钟,或者对一个时间减去1秒.....

  • 关于PARALLEL_MAX_SERVERS参数的设置 Posted by eygle at 2007-11-27

    【内容摘要】PARALLEL_MAX_SEVERS参数设置并行执行可用的最大进程数量,该参数的缺省值如下得出

  • 使用REF CURSOR处理Oracle的结果集 Posted by eygle at 2007-11-06

    【内容摘要】Oracle提供REF CURSOR,通过该功能可以实现在程序间传递结果集的功能,利用REF CURSOR也可以实现BULK SQL,从而提高SQL性能。

  • library cache pin与PROCEDURE的重建 Posted by eygle at 2007-04-02

    【内容摘要】理想的方式应该是,Oracle能够判断之前的Library Cache Pin的模式,如果是共享模式,则可以跳过Pin请求,如果是排他模式,则必须等待,目前的处理并不能从实质上改变竞争。

  • Oracle10g中过程(PROCEDURE )重建的增强 Posted by eygle at 2007-04-02

    【内容摘要】在Oracle10g中,这个LAST_DDL_TIME不再变化,这说明在10g中,当我们执行create or replace PROCEDURE 时,Oracle现在先尝试进行过程检查,如果内容没有变化,则不需要对过程进行重新编译,这可以减少Cache中的Invalidation,从而可以减少竞争

  • Oracle10g中SCN与TimeStamp的相互转换 Posted by eygle at 2007-01-08

    【内容摘要】作为对于闪回操作(flashback)的一个增强,Oracle10g提供了函数对于SCN和时间戳进行相互转换。

  • 使用外部表分析eygle.com的网站访问日志 Posted by eygle at 2006-10-18

    【内容摘要】经过使用Oracle的外部表对Oracle的警告日志文件、跟踪文件进行获取和分析之后,我发现外部表实在是非常易用,甚至到了随心所欲的境地(当然外部表尚不能修改外部文件)。 使用外部表可以很容易的实现网站的访问日志分析。 虽然使用Awstats等工具也可以实现,可是使用Oracle来分析我们更应该得心应手。 而且这一切还是有那么一点点Cool的。 好了,闲言少叙,让我们来看一下我分析的过程。

  • 使用Oracle的外部表访问跟踪文件 Posted by eygle at 2006-10-17

    【内容摘要】前面说过Oracle的外部表可以用来访问警告日志文件,其实Oracle的外部表可以非常灵活的被使用。 如果用户具有了Create Direcotry的权限,就能通过外部表访问很多主机上的文件。 我们看一下使用外部表访问跟踪文件的例子。

  • 使用Oracle的外部表查询警告日志文件 Posted by eygle at 2006-10-15

    【内容摘要】从Oracle9i开始,Oracle的外部表技术(Oracle External Tables)被极大的增强,通过外部表访问外部数据增强了Oracle数据库和外部数据源进行数据交互的能力,对于数据仓库和ETL来说,这些增强极大的方便了数据访问。 对于DBA来说,最常见一个例子是可以使用外部表来访问警告日志文件或其他跟踪文件. 以下一个例子用来说明外部表的用途。

  • 使用分析函数进行行列转换 Posted by eygle at 2006-09-26

    【内容摘要】经常有朋友问到行列转换的问题,留言板上也有这样的提问

    其实使用分析函数进行处理是很好的方式,翻一下Tom的书,将其中的一个例子收录在这里. 比如查询scott.emp表的用户SAL排序信息,可以使用如下查询

  • 学习-SQL查询连续号码段的巧妙解法 Posted by eygle at 2006-09-26

    【内容摘要】在ITPUB上有一则非常巧妙的SQL技巧,学习一下,记录在这里。

  • Oracle9i基于视图(view)的约束声名 Posted by eygle at 2006-02-27

    【内容摘要】从Oracle9i开始,Oracle允许对于视图(view)进行主键、唯一键、外键约束的声名。

  • 基于主键和唯一约束的显示索引控制 Posted by eygle at 2006-02-27

    【内容摘要】从Oracle9i开始,主键创建时的索引和唯一性约束可以在建表时独立定义。 随后,约束可以被独立drop,而索引可以保留。这是Oracle9i中对于索引增强的几个特性之一。

  • Oracle HowTo:如何使用Leading提示改变表连接方式 Posted by eygle at 2006-02-26

    【内容摘要】通过Leading 和 use_hash 提示连用,我们可以巧妙的影响SQL中表和结果集的Join顺序.

  • 如何使用ordered提示改变SQL执行计划 Posted by eygle at 2006-02-25

    【内容摘要】通过ordered提示,可以避免CBO SQL解析过程中的表连接评估,从而避免Oracle产生错误的执行计划,或者强制Oracle按照我们指定的方式执行。

  • 索引与Null值对于Hints及执行计划的影响 Posted by eygle at 2006-02-22

    【内容摘要】由于B*Tree索引不存储Null值,所以在索引字段允许为空的情况下,Oracle查询不会使用索引.

  • 使用Index提示 强制使用索引 Posted by eygle at 2006-02-21

    【内容摘要】虽然索引并不总会快于全表扫描,但是很多时候我们希望Oracle使用索引来执行某些SQL,这时候我们可以通过index hints来强制SQL使用index.

  • 基于自定义函数的Function-Based索引创建 Posted by eygle at 2006-01-23

    【内容摘要】基于自定义函数的Function-Based索引的创建

  • Definer and Invoker Rights Posted by eygle at 2005-12-12

    【内容摘要】

    本文用以回答留言板上的2111号问题.

    在Oracle8i以前,所有已编译存储对象(包括packages, procedures, functions, triggers, and views)只能以定义者(Definer)身份解析运行;从Oracle8i开始,Oracle引入调用者(invoker)权限,使得对象可以以调用者身份和权限执行。

    定义者(Definer)指编译存储对象的所有者.
    调用者(Invoker)指拥有当前会话权限的模式,这可能和当前登录用户相同或不同(alter session set current_schema 可以改变调用者Schema).



  • 批量绑定(bulk binds):FOR循环与FORALL的性能比较 Posted by eygle at 2005-11-13

    【内容摘要】通常在SQL语句中给PL/SQL变量赋值叫做绑定(Binding),一次绑定一个完整的集合称为批量绑定(Bulk Binding)。 批量绑定(Bulk binds)可以通过减少在PL/SQL和SQL引擎之间的上下文切换(context switches )提高了性能. 批量绑定(Bulk binds)包括: (i) Input collections, use the FORALL statement,一般用来改善DML(INSERT、UPDATE和DELETE) 操作的性能 (ii) Output collections, use BULK COLLECT clause,一般用来提高查询(SELECT)的性能

  • How to use Oracle Dump Function Posted by eygle at 2005-11-10

    【内容摘要】DUMP 函数使用范例

  • 如何使用DBMS_LOB从文件中加载CLOB数据 Posted by eygle at 2005-08-16

    【内容摘要】最近被人批评BLOG有娱乐化倾向,赶紧写点技术文章. 此文用以回答留言板上1224号问题。 BFILE包含二进制数据,所以当通过BFILE方式加载数据到CLOB/NCLOB时,Oracle不进行字符集转化。 如果字符集是可变长的,例如UTF-8或ZHS16GBK,Oracle使用UCS2存储LOB数据。所以如果想BFILE文件数据能够正确加载入数据库,那么文件需要以USC2字符集存储。 那么还有一点需要注意的是,如果以Unicode模式存储文件,那么文件会增加两个字节: 'FF FE'. 在加载文件时我们需要跳过这两个字节。 在Windows上我们存储文件时选择Unicode方式,我输入的字符为: test测试 Oracle BFile数据加载问题 研究 然后我们可以加载这个文件的内容,注意比较前后两个过程不同之处: SQL> create table t ( 2...

  • 使用UTL_FILE转储数据为逗号分隔符文件 Posted by eygle at 2005-05-13

    【内容摘要】 Tom写过这样一个函数用于把数据转储为逗号分隔符文件,看到很多人问类似的问题,转载这里供参考。 注意,UTL_FILE使用的Directory,需要你预先创建,具体可以参考Using Create directory & UTL_FILE in Oracle create or replace function dump_csv( p_query in varchar2, p_separator in varchar2...

  • Why "EXECUTE ANY PROCEDURE" is a dangerous PRIVILEGE? Posted by eygle at 2005-05-10

    【内容摘要】TOM曾经多次说过: All I need is "CREATE SESSION" and "EXECUTE ANY PROCEDURE" and I can totally do anything I want to...

  • What's mean ORA-25191? Posted by eygle at 2005-05-09

    【内容摘要】 在参考了Using DBMS_SYS_SQL Package to grant Privilege留言板里有朋友继续问道,出现了以下错误: ORA-25191: cannot reference overflow table of an index-organized table ORA-06512: at "SYS.DBMS_SYS_SQL", line...

  • Using DBMS_SYS_SQL Package to grant Privilege Posted by eygle at 2005-05-07

    【内容摘要】在Oracle9i之前,如果你想要把对象权限授予某些用户,那么你需要使用该对象属主或者使用具有该对象with grant option权限的用户。


  • 使用PL/SQL从数据库中读取BLOB对象 Posted by eygle at 2005-04-30

    【内容摘要】通过实例介绍如何使用PL/SQL从数据库中读取BLOB对象..

  • 使用存储过程(PL/SQL)向数据库中存储BLOB对象 Posted by eygle at 2005-04-28

    【内容摘要】以下存储过程用于向数据库加载BLOB对象 1.创建directory并授权 关于Directory可以参考: Using Create directory & UTL_FILE in Oracle C:\>sqlplus "/ as sysdba" SQL*Plus: Release 10.1.0.3.0 - Production on...

  • Using Create directory & UTL_FILE in Oracle Posted by eygle at 2005-04-22

    【内容摘要】Create directory让我们可以在Oracle数据库中灵活的对文件进行读写操作,极大的提高了Oracle的易用性和可扩展性

  • Oracle中大批量删除数据的方法 Posted by eygle at 2005-04-21

    【内容摘要】批量删除海量数据通常都是很复杂及缓慢的,方法也很多,但是通常的概念是:分批删除,逐次提交。

  • 如何有条件的分步删除数据表中的记录 Posted by eygle at 2005-02-22

    【内容摘要】有时候我们需要分配删除数据表的一些记录,分批提交以减少对于Undo的使用,本文提供一个简单的存储过程用于实现该逻辑。

  • 使用触发器实现数据库级守护,防止DDL操作 Posted by eygle at 2004-12-16

    【内容摘要】不管是有意还是无意的,你可能会遇到数据库中重要的数据表等对象被drop掉的情况,这可能会给我们带来巨大的损失. 通过触发器,我们可以实现对于表等对象的数据库级守护,禁止用户drop操作.

  • 使用dbms_rowid包获得rowid的详细信息 Posted by eygle at 2004-12-16

    【内容摘要】Rowid中包含了记录的详细信息,通过dbms_rowid包可以获得这些信息.本文通过一个定义自定义函数介绍该package的使用

  • 使用USE_CONCAT提示 Posted by eygle at 2004-11-18

    【内容摘要】USE_CONCAT提示强迫优化器扩展查询中的每一个OR谓词为独立的查询块,最后合并所有查询块的结果,返回结果集给用户。
    当使用多个in-lists查询时,Oracle可能选择把单个查询扩展为多个查询块。

  • 如何从结果集中获得随机结果 Posted by eygle at 2004-11-06

    【内容摘要】从Oracle8i开始Oracle提供采样表扫描特性。

  • CBO对于Oracle SQL执行计划的影响(之二) Posted by eygle at 2004-10-30

    【内容摘要】在Oracle7的年代,这样的SQL语句执行的很快,但是在Oracle8以后的数据库,如果碰巧你用的是CBO,那么这样的语句执行结果可能是Hang了(其实不是死了,只是很多人没有耐心等而已),在Oracle7里,这样的语句毫无疑问使用RBO,很快你就可以得到执行结果。

  • CBO对于Oracle SQL执行计划的影响(之一) Posted by eygle at 2004-10-30

    【内容摘要】我们的数据库使用dbms_stats.gather_schema_stats分析过,具有足够及时的所有数据,然而在CBO的执行计划下,优化器选择了完全不同的执行计划.

  • 关于PUSH_SUBQ提示的说明 Posted by eygle at 2004-10-15

    【内容摘要】PUSH_SUBQ 可以用来控制子查询的执行 这个是PUSH_SUBQ 的本意

  • 关于Oracle9i的Peeking of User-Defined Bind Variables Posted by eygle at 2004-09-16

    【内容摘要】我们知道,由于使用绑定变量,在Oracle9i之前会导致柱状图信息无法被用到
    从Oracle9i开始Oracle提供了Peeking的方式,在使用绑定变量的SQL第一次执行时,使用参数传递成文本sql,此时可以有效的利用存在的柱状图信息进行执行计划的评估,从而在某些数据分布不均和的情况下,可能可以产生更为精确的执行计划.这显然是一个有益的提高,然而这个Peeking有时候也会存在问题,本文通过实例说明这个特性及其不足.


  • 使用or展开进行sql调整 Posted by eygle at 2004-07-09

    【内容摘要】降低逻辑读是优化SQL的基本原则之一,我们尝试通过降低逻辑读来加快SQL的执行...

  • OPTIMIZER_INDEX_COST_ADJ与成本计算 Posted by eygle at 2004-06-28

    【内容摘要】OPTIMIZER_INDEX_COST_ADJ,这个初始化参数代表一个百分比,取值范围在1到10000之间. 该参数表示索引扫描和全表扫描成本的比较。缺省值100表示索引扫描成本等价转换与全表扫描成本。

  • 使用DBMS_SUPPORT包 Posted by eygle at 2004-06-19

    【内容摘要】DBMS_SUPPORT包从Oracle7.2引入,主要功能用以提供更完整的用户session跟踪信息

  •  

    CopyRight © 2004-2008 eygle.com, All rights reserved.
    联系站长:eygle(at)eygle.com|MSN联系:eygle(at)hotmail.com