关于按周统计数据
方法1:使用to_char函数select sum(sal) ,to_char(HIREDATE,'yyyy')||':'||to_char(HIREDATE,'IW') week_snfrom scott.empgroup by to_char(HIREDATE,'yyyy')||':'||to_char(HIREDATE,'IW');格式'IW'返回当前日期是当年的第几周方法2:使用next_day()函数select sum(sal) ,NEXT_DAY(trunc(HIREDATE),'星期一')-7 weekstart,NEXT_DAY(trunc(HIREDATE),'星期一') weekend from scott.empgroup by NEXT_DAY(trunc(HIREDATE),'星期一');上面这个例子是在中文字符集下使用,如果在英文字符集下则使用:select sum(sal) ,NEXT_DAY(trunc(HIREDAT
学前班照片
今天在5460上的小学班上弄到了学前班时期的照片,这张照片不知为什么我没有(可能丢了吧),高中时见别人拿出来过。看着上面的时间:1984.7 ,都21年了。看着小时候的自己,发现,现在真是老了。。。。[@more@]
限制用户登录后idle时间
今天一朋友想设置如果客户登录数据库后长时间不操作,就强制其退出。记得这是在profile中配置idle_time,设置成要求的时间,再更换数据库用户的profile,重新登录。可是测试居然无效,超时后用户没有退出,查了手册,原来还要设置初始化参数resource_limit=true才行。[@more@]
使用exists、not eixsts不能用到semi-join、anti-join的一些情况讨论
在Oralce中我们经常会使用exists、not exists来进行一些表连接操作,在普通情况下Oracle的执行计划如果使用到semi-join、anti-join方式来进行表连接的话,速度一遍很快,否则很慢。通过使用提示hash_sj hash_aj也可使执行计划走semi-join、anti-join。但是在有些情况下,即使增加了提示,或者对表进行了分析后,执行计划也不走semi-join、anti-join方式,下面就是对这些情况的讨论。附注:本文中的例子均是在Oracle9.2.0.6 for linux中测试的。[@more@]1、在where条件中多个exists、not exists是or的关系SQL> create table a1 as selec
oracle9i(10g)中使用full outer join遇到bug
今天在oracle9206中使用full outer join遇到bug,执行没有响应,例子如下:[@more@]SQL> select * from p1;MPN CNT----------- ----------1 52 6SQL> select * from p2;MPN CNT----------- ----------2 83 9简单点的没有问题:SQL> select a.mpn,a.cnt,b.mpn,b.cnt2 from (select mpn,sum(cnt) cnt from p1 group by mpn) a3 full outer join4 (select mpn,sum(cnt) cnt from p2 group by mpn) b5 on a.mpn=b.mpn;MPN CNT MPN CNT----------- ---------- ----------- ----------2 6 2 81 53 9如果出现统计多字段查询就无相应了:
Oracle9i中的PGA
1、PGA的结构 Oracle的内存结构,除了SGA(System Global Area)之外,Oracle进程还使用下面三个全局区:The Process Global Area (PGA)The User Global Area (UGA)The Call Global Area (CGA)[@more@]很多人都搞不清楚PGA和UGA两者之间的区别,实际上两者之间的区别跟一个进程和一个会话之间的区别是类似的.尽管说进程和会话之间一般都是一对一的关系,但实际上比这个更复杂.一个很明显的情况是MTS配置,会话往往会比进程多得多.在这种配置下,每一个进程会有一个PGA,每一个会话会有一个UGA.PGA所包含的信息跟会话是无任何关联的,而UGA包
理解Oracle9i中的监听动态注册
在Oracle9i中,使用命令lsnrctl status可以看到如下例子:Service "lrdb" has 2 instance(s).Instance "lrdb", status UNKNOWN, has 1 handler(s) for this service...Instance "lrdb", status READY, has 1 handler(s) for this service...[@more@]这是Oracle9i监听器行为的不同之处的第一个线索,因为Instance "lrdb"出现了两次。出现额外条目是因为,数据库在启动时通过一个被称为动态注册的进程在监听器中注册信息。相应地,如果数据库通过listener.ora文件中的信息在监听器中注册数据库着称为
最近常听的歌 王蓉 - 爸爸妈妈
王蓉 - 爸爸妈妈歌词:歌手:王蓉 专辑:多爱 哦嘿妈妈那天你再次为我悄悄流下泪你可知道它已化作伤痛滴滴落在我心扉永远都不会忘记你看我时那难舍的眼神我不会哦嘿爸爸从一小就给我最多保护那个人你为什么总是低着头一直的抽烟不说话这次我独自离开想找另一种生活听我说让我说[@more@]我爱他他是我心中的那只雨蝶飞吧飞到我心里面化成茧不知道还要多久才能叫醒我共筑城一曲祝英台和梁山伯我爱他他是我心中的那只雨蝶飞吧飞到我心里面化成茧不知道还要多久才能叫醒我共筑城一曲祝英台和梁山伯(music)哦嘿妈妈我那么幸福能在你身边长大现
Ora Ora Oracle电子杂志:关于索引的检验 之 5-8
上次对1万笔数据的表进行了1~5000笔(一半)的范围检索,结果对索引发生了45次I/O。这次我们要以TREEDUMP功能确认结果。[@more@]<关于索引的检验 之5>上次对1万笔数据的表进行了1~5000笔(一半)的范围检索,结果对索引发生了45次I/O。这次我们要以TREEDUMP功能确认结果。◎扩张到100万笔的过程说明1. 现有的10000010~10100000的1万笔,进一步插入10100010~11000000的9万笔(间隔10),扩张成总计10万笔的表(末尾都是0)。2. 插入10000001~10999991的10万笔(间隔10),扩张为总计20万笔数据的表(末尾都是1)。3. 之后,依序
Ora Ora Oracle电子杂志:关于索引的检验 之 1-4
“有了索引,检索就会变快了。”这种想法当然不算错,因为索引本来就是为了让数据查询加快的最常用的方法。可是,各位读者可曾思考过:索引在任何情况下都起作用吗?[@more@]<关于索引的检验 之1>“有了索引,检索就会变快了。”这种想法当然不算错,因为索引本来就是为了让数据查询加快的最常用的方法。可是,各位读者可曾思考过:索引在任何情况下都起作用吗?这次我们要让索引构造恶化,从各种角度分析这个问题。【实验的目的与环境】目的:确认执行什么样的处理会导致索引变慢,并以实验检验变慢的原因。假设:业务操作以Inser
Ora Ora Oracle电子杂志:关于剩余数据块的检验 之6-8
订阅Ora Ora Oracle电子杂志已经有几个月了,今天把它的第一个专题《关于剩余数据块的检验》整理了一下想订阅该杂志的可以访问:http://www.performance-insight.com/china/[@more@]<关于剩余数据块的检验 之6>这次要从表的角度检验剩余数据块的空间分配方式,我会按照下面的顺序说明。接着上次的内容,这次要继续介绍如何检验剩余数据块。有如下三个知识点:1. 理解minimum extent2. 最大程度防止剩余空间碎片的方式﹝本次主题﹞3. 图解Oracle如何使用剩余空间﹝以后再说明﹞这次要向大家说明第2个主题:最大程度防止剩余空间碎片化
Ora Ora Oracle电子杂志:关于剩余数据块的检验 之1-5
订阅Ora Ora Oracle电子杂志已经有几个月了,今天把它的第一个专题《关于剩余数据块的检验》整理了一下想订阅该杂志的可以访问:http://www.performance-insight.com/china/[@more@]<关于剩余数据块的检验 之1>我们曾经收到这样的问题:「想知道coalesce(结合)的作用」、「如何确保剩余数据块、作为表的空间使用?」此外,在实际的支持工作中,也经常有客户问到相同的问题。因此,我们将一边检验这些有密切关系的项目,一边向大家说明。首先向大家说明「coalesce(结合)」。简单的说,就是将空闲空间碎片合并的功能,通常SMON每
导出错误EXP-00091: Exporting questionable statistics
今天在客户那儿在数据库服务器上导出数据时发生EXP-00091,看看帮助[oracle@localhost backup]$ oerr exp 9100091, 00000, "Exporting questionable statistics."// *Cause: Export was able export statistics, but the statistics may not be// usuable. The statistics are questionable because one or more of// the following happened during export: a row error occurred, client// character set or NCHARSET does not match with the server, a query [@more@]估计是客户端字符集设置有问题,然后一看,果然数据库服
查询条件中对rowid进行直接比较的问题
在查询条件中直接使用rowid进行筛选数据时,如果rowid不存在该表中,系统会返回一个错误:ORA-01410: 无效的 ROWID 比如:select * from demo where rowid='ACAJSpAAMAABgfKAAY';但是如果比较是用> < like 这些比较符就不过报这个错据oldwain分析原因可能是oracle调用了dbms_rowid.rowid_verify来验证rowid的合法性。详见:http://www.itpub.net/389839.html[@more@]
在Oracle9i Release 2中使用PL-SQL的集合增强 [作者:Scott Stephens]
Oracle9 Release 2 非常有力地增强了PL/SQL集合功能,它可以对以前的发布版本进行代码维护。例如,可以在Release 2 中将PL/SQL集合用作一个单一的参数,从而避免了使用一长串单个的字段作为参数。[@more@]另外一个优点是记录的集合现在可以是BULK COLLECTION INTO 子句的目标。而在Release 2以前,我们必须为返回的每个列创建一个集合。例如:Declare type deptno_coll is table of dept.deptno%type; type dname_coll is table of dept.dname%type; type loc_coll is table of dept.loc%type; deptno_list deptno_coll; d
一个高人写的oracle资料[转载]
我们从一个用户请求开始讲,ORACLE的完整的工作机制是怎样的,首先一个用户进程发出一个连接请求,如果使用的是主机命名或者是本地服务命中的主机名使用的是机器名(非IP地址),那么这个请求都会通过DNS服务器或HOST文件的服务名解析然后传送到ORACLE监听进程,监听进程接收到用户请求后会采取两种方式来处理这个用户请求,下面我们分专用服务器和共享服务器分别采用这两种方式时的情况来讲:[@more@]专用服务器模式下:一种方式是监听进程接收到用户进程请求后,产生一个新的专用服务器进程,并且将对用户进程的所有控制信息传给此服务器进程,
分布式查询优化一例
在分布式查询中,对于分布在两个节点上的两张表进行嵌套循环连接将会非常慢,这是由于Oracle将所有的远程数据传到本地来处理。所以对于这类查询最好换成排序合并连接或者hash连接。[@more@]下面例子中的表aaa、bbb分别位于两个库,aaa所在库通过数据库链db244访问bbb表:create table aaa as select * from dba_objects;create table bbb as select * from dba_objects;1、嵌套循环连接SQL> select count(*) from aaa a where exists (sel
在PL/SQL开发中正确使用数据类型来提高性能
1、确保比较运算中的数据类型相同 下面例子比较了采用不同数据类型的代价,也就是在if语句中将一个数字类型的数据类型和字符值进行比较。[@more@]程序1:create or replace procedure test_if(p_condition_num number) as lv_temp_num number := 0; lv_temp_cond_num number := p_condition_num;begin for lv_cont_num in 1..100000 loop if lv_temp_cond_num = '1' then lv_temp_num := lv
Oracle9i和10g并存时问题
在Windows2000上先安装10g,再安装9i软件后,无法启动9i的dbca界面[@more@]同时安装10g、9i后的系统pathD:oracleproduct9.2.0bin;C:Program FilesOraclejre1.1.8bin;C:Program FilesOraclejre1.3.1bin;D:oracleproduct10.1.0bin;D:oracleproduct10.1.0jre1.4.2binclient;D:oracleproduct10.1.0jre1.4.2bin;%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;C:KAV2003;C:PROGRA~1ULTRAEDT;C:Program FilesSecureCRT;C:Program FilesATI TechnologiesATI Control Panel;C:KAV69i的dbca能启动的path(需要将10g的jre去掉)D:orac
利用Oracle工具sysresv来显示、清除共享内存和信号量
Oracle从8i开始提供sysresv工具来对Oracle使用的共享内存和信号量进行管理。当服务器上存在多个实例时,该命令能显示每个实例对应的共享内存和信号量,当一个实例由于某种原因崩溃了,但是由该实例创建的共享内存和信号量却没有被系统回收清理掉,可以用这个工具来清除应该回收的共享内存和信号量。[@more@]usage : sysresv [-if] [-d <on/off>] [-l sid1 <sid2> ...] -i : Prompt before removing ipc resources for each sid &n