Top 10 Oracle 11gR2 New Features zt
http://structureddata.org/2009/09/09/top-10-oracle-11gr2-new-features/[@more@] In catching up on blog posts I see that Jonathan Lewis, Christian Antognini and Nuno Souto picked up on the deferred segment creation new feature in Oracle 11gR2. In keeping with the theme, I thought I’d put together the top 10 new features in Oracle Database 11g Release 2 (11.2) that I consider significant. Analytic Functions 2.0 Recursive WITH Clause Preprocessing Data for ORACLE_LOADER Acce
PL/SQL表(oracle内存表)---table()函数用法
=========================================================== 作者: zhouwf0726(http://zhouwf0726.itpub.net) 发表于:2006.08.18 10:03 分类: oracle开发 出处:http://zhouwf0726.itpub.net/post/9689/195237 --------------------------------------------------------------- [@more@]PL/SQL表---table()函数用法 /*PL/SQL表---table()函数用法:利用table()函数,我们可以将PL/SQL返回的结果集代替table。oracle内存表在查询和报表的时候用的比较多,它的速度相对物理表要快几十倍。simple example:
Oracle Pipelined Table Functions
from psoug[@more@]Oracle Pipelined Table Functions Version 10.2 General Data dictionary Objects source$ dba_procedures all_procedures user_procedures dba_source all_sour
应遵循的PL/SQL编码规则 (作者:Steven Feuerstein) zt
提高编写PL/SQL代码数量及质量的四个简单易行指导方针[@more@]我从1990年就开始编写PL/SQL代码。这意味着我已经编写了几万行的软件代码,但我确信,其中的绝大多数代码都非常拙劣,而且难以维护。 幸运地是,我发现找到并遵循编写出更好代码的新方法还为时不晚。就是在去年,我的代码质量有了显著改进;这些改进主要是由于制定了一些简单的规则,并像纪律一样加以遵守。 本文为PL/SQL新手及有经验的开发人员提出了四条建议;遵守其中任何一条,你的代码质量都会有提高。这四点建议都采纳,你可能会惊奇地猛然发现:你竟然是一个非常好的程
hints提示总结 zt
http://space.itpub.net/77406/viewspace-510300 http://download.oracle.com/docs/cd/B12037_01/server.101/b10752/hintsref.htm#6174[@more@]/*+ ALL_ROWS */表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.SELECT /*+ ALL_ROWS */ employee_id, last_name, salary, job_idFROM employees WHERE employee_id = 192;/*+ APPEND */直接插入到表的最后,可以提高速度.insert /*+append*/ into test1 select * from test4 ; insert /*+append */ into emp nologging/*+ CACHE */当进行全表扫描时,CACHE提示能够将表的
关于insert /*+ append*/ 各种insert插入速度比较
http://hi.baidu.com/dba_james/blog/item/6909ec2b7e0a742ad52af128.html[@more@]SQL> select count(*) from t;COUNT(*)----------5442048****************************SQL> alter table t1 nologging;SQL> insert /*+append*/ into t12 select * from t;5442048 rows created.Elapsed: 00:00:55.73****************************SQL> create table t1 nologging parallel(degree 2) as select * from t;Table created.Elapsed: 00:00:56.79********************************SQL> insert /*+APPEND */ into t12 select /*+
利用NO_MERGE解决数据字典视图访问低效 ZT
=========================================================== 作者: yangtingkun(http://yangtingkun.itpub.net)发表于: 2009.06.04 21:04分类: ORACLE 出处: http://yangtingkun.itpub.net/post/468/485443--------------------------------------------------------------- [@more@]数据库的数据字典视图的访问一般都比较迅速,因为Oracle已经做了专门的优化工作,但是有些时候,几个数据字典进行关联的时候,CBO就没有那么智能了,有时候会给出一些效率很低的执行计划。比如在尝试构造一个大表的时候,想要构造DBA_OBJECTS和另一张数
一次更新操作的优化 zt
driving site的使用及游标循环和单句update性能对比http://space.itpub.net/4227/viewspace-196034[@more@]
SELECT FOR UPDATE SKIP LOCKED --- 一个未公开但十分有用的特性 zt
http://space.itpub.net/9036/viewspace-473[@more@]SELECT FOR UPDATE SKIP LOCKED选项是ORACLE的一个未公开的特性,它的含义是SELECT时跳过被锁的记录。考虑下面的例子:会话1:SQL> select * from sex_dict ;SERIAL_NOS SEX_INPUT_CO---------- - ---- --------1 1男 N9 0未知 WZ2 2女 N4 9未定 WDSQL> select * from sex_dict where serial_no = 1 for update ;SERIAL_NOS SEX_INPUT_CO---------- - ---- --------1 1男 N会话2:查询并锁住serial_no in (1,2)的记录SQL> select * from sex_dict where serial_no in ( 1, 2)
整型序号产生器 zt
原文地址:http://www.sqlsnippets.com/en/topic-11814.html[@more@]有的时候。你必须创建连续的整数。例如假设你有如下的数据:select * from t ;DAY_OF_WEEK VAL----------- ----------1 1003 3004 4005 500你想如下输出:DAY_OF_WEEK VAL----------- ----------01 10023 3004 4005 5006如果你有个表。其数据为0到6,那么你可以写如下的查询:selectday_of_week,t.valfromdays_of_the_week dleft outer join t using ( day_of_week )order byday_of_week;DAY_OF_WEEK VAL----------- ----------01 10023 3004 4005 5006 如果你有大量这样
WMSYS.WM_CONCAT 函數的用法 ZT
WMSYS.WM_CONCAT 函數的用法[@more@]SQL> select version from v$instance;VERSION-----------------10.2.0.1.0SQL> SQL> create table IDTABLE2 (3 id number,4 val varchar2(20)5 )6 ;Table createdSQL> SQL> insert into IDTABLE (ID, VAL)2 values (10, 'abc');1 row insertedSQL> insert into IDTABLE (ID, VAL)2 values (10, 'abc');1 row insertedSQL> insert into IDTABLE (ID, VAL)2 values (10, 'def');1 row insertedSQL> insert into IDTABLE (ID, VAL)2 values (10, 'def');1 row insertedSQL> i
Oracle中查看已执行sql的执行计划
DBMS_XPLAN.DISPLAY_CURSOR 介绍[@more@]有时候我们可能会希望查看一条已经执行过的sql的执行计划,常用的方式有两种:a,set autotrace后再重新执行一遍,不过重新执行可能会浪费时间,而且有些语句也不允许(例如修改操作的语句),或者查询v$sql_plan视图,但v$视图的可读性又不是那么好,这里提供一个新方式,通过dbms_xplan.display_cursor来获取执行过的sql的执行计划。首先看看该函数的语法:DBMS_XPLAN.DISPLAY_CURSOR(sql_id IN VARCHAR2 DEFAULT NULL,child_number IN NUMBER DEFAULT NULL,format IN VARCHAR2 DEFAULT 'TYPICAL');
绑定变量、BIND PEEKING、histogram(柱状图)的使用(zt)
http://space.itpub.net/756652/viewspace-470127[@more@]在我们进行对系统进行优化的时候,我们希望在数据中执行的语句尽量的少出现hard parse,尽量使用绑定变量,可以减少分析,节约共享池的空间,减少CPU的使用,所以对于系统中未使用的绑定语句通常告诉开发人员尽量改成使用绑定变量,当where 条件上的字段分布均匀的时候,绑定变量可以达到比较好的效果, 但当该字段数据分布倾斜严重时,并在该字段上收集了histogram信息时会出现什么情况呢?下面将一一测试。 一. create table testtb, 并插入98304条值为(1,’aaa’),3条值为(2,’b
cbo心得(选择率,基数,直方图) zt
http://sunwgneuqsoft.itpub.net/post/34741/456500[@more@]一,概述关于CBO优化器你上网可以搜到一大堆的介绍。用一句话来解释CBO:CBO是一种根据执行代价来选择执行计划的机制。对于CBO来说,最重要的就是各种不同的执行计划的代价的计算。和RBO比较起来,CBO确实要聪明很多。CBO会根据对象上的统计信息来进行执行计划的代价评估,选择出较为高效的。而不是象RBO那样根据一些既有的规则来选择执行计划,愣头青一样的。既然是根据对象上的统计信息来计算代价,那么统计信息对于CBO的重要性就不用多说了。所以在CBO的数据库上,统计信息一
ZT 利用rowid快速在线更新海量数据
http://www.itpub.net/thread-1052077-1-2.html[@more@]最近一直在折腾大表的更新问题,今天终于有了突破。兴奋之余发个帖子跟大家分享一下心得,并且讨论一下是否还可能进一步提高处理速度。问题是这样的:一张5亿条记录的表,没有分区。由于增加了一个冗余字段,需要根据另外一张表(4.8亿条)更新这个大表。下面是具体的描述:环境:HP-UX 11i+Oracle9.2.0.8+RAID要更新的表:T1 (id1 number, id2 number, curr_count number,.....) --id1唯一 5亿条记录 >60GB更新数据来源:T2 (id2 number, curr_count number) --id2唯一 4.
ZT oracle全文索引
全文索引通常用在文本或网页搜索中,比如类似对 "大学生活真好!" 或者一个文件进行索引,查询方法跟使用平常的SELECT的区别是,需要在WHERE条件中使用一个特定的操作符,全文索引分几个类别,分别使用于不同的搜索环境,不同的类别使用不同的操作符进行搜索.没有全文索引时,这类查询通常用下面的sql查询: SELECT id,doc FROM table WHERE doc like ‘%国家%’;[@more@]全文索引通常用在文本或网页搜索中,比如类似对 "大学生活真好!" 或者一个文件进行索引,查询方法跟使用平常的SELECT的区别是,需要在WHERE条件中使用一个
Oracle10g新特性:使用DBMS_SQLTUNE优化SQL
作者: NinGoo(http://ningoo.itpub.net)发表于: 2007.04.30 10:51分类: Oracle 出处: http://ningoo.itpub.net/post/2149/284636---------------------------------------------------------------[@more@]在Oracle10g之前,优化SQL是个比较费力的技术活,不停的分析执行计划,加hint,分析统计信息等等,当然也有SQL调优辅助工具可以使用,只是要么价格昂贵,要么效果不佳。在10g中,Oracle推出了自己的SQL优化辅助工具,这就是新的DBMS_SQLTUNE包。执行DBMS_SQLTUNE包进行sql优化需要有advisor的权限:grant">SYS@ning>grant advi
循环插入多表的insert语句 answered by 三思
有三个表,表A , 表B, 表C。这3个表,都有4个字段,并且这4个字段名称都一样,分别是:ID NAME CODE MESSAGE。我现在要做以下操作:每一个表都同时插入5条数据。其中这5条数据当中,前两列是一样的,第三列的数据是1--5,而最后一列的值是固定的。 例如:表A: ID NAME CODE MESSAGE 0001 xiaoming 1 140 0001 xiaoming 2 112 0001 xiaoming 3 84 0001 xiaoming 4 56 0001 xiaoming 5 28、表B: ID NAME CODE MESSAGE 0001 xiaoming 1 55
小议如果构造数组
ZT PLSQL中构造自定义数组[@more@]1、一维数组SQL> set serveroutput onSQL>SQL> declare 2 type tvar_sz is varray(5) of number; 3 var_sz tvar_sz; 4 begin 5 var_sz := tvar_sz(1, 2, 3, 4, 5); 6 for i in 1 .. var_sz.count loop 7 dbms_output.put_line(var_sz(i)); 8 end loop; 9 end; 10 / 12345 PL/SQL procedure successfully completed2、二维数组SQL> declare 2 type tvar_sz is varray(5) of number; 3 type v_sz is varray(4) of tvar_sz; 4 var_sz v_sz; 5 beg
ZT 自动10046 trace脚本
我在日常工作中经常需要用10046跟踪一些进程,为了方便,写了一个可以方便查看trace的小脚本。 sqlXsuk@oracle9i> @end_trace--结束trace,此时会自动打开格式化后的trace文件如果是linux,则在进入sqlplus前需要设置:export EDITOR=vi或者在$ORACLE_HOME/sqlplus/admin/glogin.sql中加入:DEFINE _EDITOR = vi---------------------------------------------------------------------------------附:以下是事件的有效trace级别:Level 0 tracing被关闭。这相当于设置sql_trace=false。Level 1 跟踪sql语句,包括解析、执行、提取、提