单条SQL语句实现复杂逻辑几例(转)
摘要:1、按指定规则生成指定商品2002年销售额,其中彩电项值为2001年的销售额加2000年的销售额,微波炉为2000年销售额, 然后汇总彩电+微波炉的2002年总销售额。表数据如下:CITYPRODUCT YEARSALES-------------------- -----------------北京 彩电 1999 3000北京 彩电 2000 2500北京 彩电 2001 4500北京 微波炉 1999 800北京 微波炉 2000 7000北京 微波炉 2001 333北京 冰箱 1999 2323北京 冰箱 2000 1212北京 冰箱 2001 7676天津 彩电 1999 2121
阅读全文
posted @
2011-09-21 16:48
小光_520
阅读(247)
推荐(0)
Statspack之十四-"log file sync" 等待事件(转贴)
摘要:当一个用户提交(commits)或者回滚(rollback),session的redo信息需要写出到redo logfile中.用户进程将通知LGWR执行写出操作,LGWR完成任务以后会通知用户进程.这个等待事件就是指用户进程等待LGWR的写完成通知.对于回滚操作,该事件记录从用户发出rollback命令到回滚完成的时间.如果该等待过多,可能说明LGWR的写出效率低下,或者系统提交过于频繁.针对该问题,可以关注:log file parallel write等待事件user commits,user rollback等统计信息可以用于观察提交或回滚次数解决方案:1.提高LGWR性能尽量使用快速
阅读全文
posted @
2011-09-13 15:33
小光_520
阅读(278)
推荐(0)
Statspack之十三-Enqueue(转贴)
摘要:enqueue是一种保护共享资源的锁定机制。该锁定机制保护共享资源,如记录中的数据,以避免两个人在同一时间更新 同一数据。enqueue包括一个排队机制,即FIFO(先进先出)排队机制。 Enqueue等待常见的有ST、HW 、TX 、TM等ST enqueue,用于空间管理和字典管理的表空间(DMT)的区间分配,在DMT中典型的是对于uet$和fet$数据字典表的 争用。对于支持LMT的版本,应该尽量使用本地管理表空间. 或者考虑手工预分配一定数量的区(Extent),减少动态扩展时发生的严重队列竞争。 我们通过一个实例来看一下: DB Name DB Id Insta...
阅读全文
posted @
2011-09-13 15:22
小光_520
阅读(228)
推荐(0)
Statspack之十二-db file scattered read-DB文件分散读取(转帖)
摘要:这种情况通常显示与全表扫描相关的等待。当数据库进行全表扫时,基于性能的考虑,数据会分散(scattered)读入Buffer Cache。如果这个等待事件比较显著,可能说明对于某些全表扫描的表,没有创建索引或者没有创建合适的索引,我们可能需要检查这些数据表已确定是否进行了正确的设置。然而这个等待事件不一定意味着性能低下,在某些条件下Oracle会主动使用全表扫描来替换索引扫描以提高性能,这和访问的数据量有关,在CBO下Oracle会进行更为智能的选择,在RBO下Oracle更倾向于使用索引。因为全表扫描被置于LRU(Least Recently Used,最近最少适用)列表的冷端(cold e
阅读全文
posted @
2011-09-07 16:53
小光_520
阅读(224)
推荐(0)
Statspack之十一-Statspack报告各部分简要说明(转帖)
摘要:第一部分 数据库概要信息DB Name DB Id Instance Inst Num Release Cluster Host---------- ----------- ------------ -------- ----------- ------------GLOB 188430914 glob 1 9.2.0.4.0 NO b02第二部分 数据库采样时段,这一部分记录了数据库采样的时间,以及采样点数,这部分信息对于report来说是十分重要。任何统计数据都需要通过时间纬度来衡量,离开...
阅读全文
posted @
2011-09-07 16:42
小光_520
阅读(196)
推荐(0)
Statspack之十-调整STATSPACK的收集门限(转帖)
摘要:Statspack有两种类型的收集选项:级别(level):控制收集数据的类型门限(threshold):设置收集的数据的阈值。1.级别(level)Statspack共有三种快照级别,默认值是5a.level 0: 一般性能统计。包括等待事件、系统事件、系统统计、回滚段统计、行缓存、SGA、会话、锁、缓冲池统计等等。b.level 5: 增加SQL语句。除了包括level0的所有内容,还包括SQL语句的收集,收集结果记录在stats$sql_summary中。c.level 10: 增加子锁存统计。包括level5的所有内容。并且还会将附加的子锁存存入stats$lathc_children
阅读全文
posted @
2011-09-07 16:26
小光_520
阅读(161)
推荐(0)
Statspack之九-其它重要脚本(转帖)
摘要:1.通过导出保存及共享数据在诊断系统问题时,可能需要向专业人士提供原始数据,这时我们可以导出Statspack表数据,其中我们可能用到:spuexp.par其内容主要为:file=spuexp.dmp log=spuexp.log compress=y grants=y indexes=y rows=y constraints=y owner=PERFSTAT consistent=y我们可以导出如下:exp userid=perfstat/my_perfstat_password parfile=spuexp.par2.删除数据spdrop.sql在执行时主要调用两个脚本: spdtab.s
阅读全文
posted @
2011-09-07 16:23
小光_520
阅读(161)
推荐(0)
Statspack之八-删除历史数据(转帖)
摘要:删除stats$snapshot数据表中的相应数据,其他表中的数据会相应的级连删除:SQL> select max(snap_id) from stats$snapshot;MAX(SNAP_ID)------------166SQL> delete from stats$snapshot where snap_id < = 166;143 rows deleted你可以更改snap_id的范围以保留你需要的数据。在以上删除过程中,你可以看到所有相关的表都被锁定。SQL> select a.object_id,a.oracle_username ,b.object_na
阅读全文
posted @
2011-09-07 16:03
小光_520
阅读(233)
推荐(0)
Statspack之七-移除定时任务(转贴)
摘要:移除一个定时任务,可以如下操作: SQL> select job,log_user,priv_user,last_date,next_date,interval from user_jobs;JOB LOG_USERLAST_DATENEXT_DATEINTERVAL---------- ----------------------------------- ------------------------------ -----------22 PERFSTAT 2002-12-5:14:33:26 2002-12-5 14:43:00 trunc(SYSDATE+1/144,'
阅读全文
posted @
2011-09-07 15:55
小光_520
阅读(177)
推荐(0)
Statspack之六-生成分析报告(转贴)
摘要:Statspack之六-生成分析报告调用spreport.sql可以生成分析报告:SQL> @spreportDB Id DB Name Inst Num Instance----------- ------------ -------- ------------1277924236 EYGLE 1 eygleCompleted SnapshotsSnap SnapInstance DB Name Id Snap Started Level Comment------------ ------------ ----- ----------------- ----- -----------
阅读全文
posted @
2011-09-07 15:46
小光_520
阅读(213)
推荐(0)
Statspack之五-规划自动任务(转贴)
摘要:Statspack正确安装以后,我们就可以设置定时任务,开始收集数据了。可以使用spatuo.sql来定义自动任务。先来看看spauto.sql的关键内容:dbms_job.submit(:jobno, 'statspack.snap;',trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);这个job任务定义了收集数据的时间间隔:一天有24个小时,1440分钟,那么:1/24HH每小时一次1/48MI每半小时一次1/144MI
阅读全文
posted @
2011-09-06 17:36
小光_520
阅读(172)
推荐(0)
Statspack之四-测试安装好的Statspack(转贴)
摘要:运行statspack.snap可以产生系统快照,运行两次,然后执行spreport.sql就可以生成一个基于两个时间点的报告。如果一切正常,说明安装成功。SQL>execute statspack.snapPL/SQL procedure successfully completed.SQL>execute statspack.snapPL/SQL procedure successfully completed.SQL>@spreport.sql…可是有可能你会得到以下错误:SQL> exec statspack.snap; BEGIN statspack.snap
阅读全文
posted @
2011-09-06 16:51
小光_520
阅读(210)
推荐(0)
Statspack之三-安装statspack(转贴)
摘要:安装Statspack需要用internal身份登陆,或者拥有SYSDBA(connect / as sysdba)权限的用户登陆。需要在本地安装或者通过telnet登陆到服务器。在Oracle8.1.6版本中运行statscre.sql;在Oracle8.1.7版本中运行spcreate.sql。首先登陆到数据库,最好转到$ORACLE_HOME/RDBMS/ADMIN目录,这样我们执行脚本就可以方便些。D:\oracle\ora81\RDBMS\ADMIN>sqlplus internalSQL*Plus: Release 8.1.7.0.0 - Production on 星期二
阅读全文
posted @
2011-09-06 16:26
小光_520
阅读(275)
推荐(0)
Statspack之二-需要更改的系统参数(转贴)
摘要:为了能够顺利安装和运行Statspack你可能需要设置以下系统参数:job_queue_processes 为了能够建立自动任务,执行数据收集,该参数需要大于0。你可以在初试化参数文件中修改该参数(使该参数在重起后以然有效)。该参数可以在系统级动态修改(重起后失效)。SQL> alter system set job_queue_processes = 6; System altered在Oracle9i当中,可以指定范围,如 both,这样该修改在当前及之后保持有效(仅当你使用spfile时,如果在9i中仍然使用pfile,那么更改方法同8i相同):SQL> alter syst
阅读全文
posted @
2011-09-06 16:23
小光_520
阅读(171)
推荐(0)
Statspack之一-Statspack简介(转贴)
摘要:Oracle Statspack 从Oracle8.1.6开始被引入Oracle,并马上成为DBA和Oracle专家用来诊断数据库性能的强有力的工具。通过Statspack我们可以很容易的确定Oracle数据库的瓶颈所在,记录数据库性能状态,也可以使远程技术支持人员迅速了解你的数据库运行状况。因此了解和使用Statspack对于DBA来说至关重要。在数据库中Statspack的脚本位于$ORACLE_HOME/RDBMS/ADMIN目录下,对于ORACLE8.1.6,是一组以stat开头的文件;对于ORACLE8.1.7,是一组以sp开头的文件。在Oracle8.1.6中,Statspack第
阅读全文
posted @
2011-09-06 16:20
小光_520
阅读(190)
推荐(0)