网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

sql语句大全

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
oracle数据库性能监控的SQL
    1.监控事例的等待
    SQL>SELECTEVENT,SUM(DECODE(WAIT_TIME,0,0,1))"PREV",SUM(DECODE(WAIT_TIME,0,1,0))"CURR",COUNT(*)"TOT"FROMV$SESSION_WAITGROUPBYEVENTORDERBY4;
    2.回滚段的争用情况
    SQL>SELECTNAME,WAITS,GETS,WAITS/GETS"RATIO"FROMV$ROLLSTATA,V$ROLLNAMEBWHEREA.USN=B.USN;
    3.监控表空间的I/O比例
    SQL>SELECTDF.TABLESPACE_NAMENAME,DF.FILE_NAME"FILE",F.PHYRDSPYR,
    F.PHYBLKRDPBR,F.PHYWRTSPYW,F.PHYBLKWRTPBWFROMV$FILESTATF,DBA_DATA_FILESDFWHEREF.FILE#=DF.FILE_ID
    ORDERBYDF.TABLESPACE_NAME;
    4.监控文件系统的I/O比例
    SQL>SELECTSUBSTR(A.FILE#,1,2)"#",SUBSTR(A.NAME,1,30)"NAME",
    A.STATUS,A.BYTES,B.PHYRDS,B.PHYWRTSFROMV$DATAFILEA,V$FILESTATB
    WHEREA.FILE#=B.FILE#;
    5.在某个用户下找所有的索引
    SQL>SELECTUSER_INDEXES.TABLE_NAME,USER_INDEXES.INDEX_NAME,UNIQUENESS,COLUMN_NAMEFROMUSER_IND_COLUMNS,USER_INDEXESWHEREUSER_IND_COLUMNS.INDEX_NAME=USER_INDEXES.INDEX_NAME
    ANDUSER_IND_COLUMNS.TABLE_NAME=USER_INDEXES.TABLE_NAME
    ORDERBYUSER_INDEXES.TABLE_TYPE,USER_INDEXES.TABLE_NAME,
    USER_INDEXES.INDEX_NAME,COLUMN_POSITION;
    6.监控SGA的命中率
    SQL>SELECTA.VALUE+B.VALUE"LOGICAL_READS",C.VALUE"PHYS_READS",
    ROUND(100*((A.VALUE+B.VALUE)-C.VALUE)/(A.VALUE+B.VALUE))"BUFFERHITRATIO"FROMV$SYSSTATA,V$SYSSTATB,V$SYSSTATCWHEREA.STATISTIC#=38ANDB.STATISTIC#=39ANDC.STATISTIC#=40;
    7.监控SGA中字典缓冲区的命中率
    SQL>SELECTPARAMETER,GETS,GETMISSES,GETMISSES/(GETS+GETMISSES)*100"MISSRATIO",(1-(SUM(GETMISSES)/(SUM(GETS)+SUM(GETMISSES))))*100"HITRATIO"FROMV$ROWCACHEWHEREGETS+GETMISSES<>0GROUPBYPARAMETER,GETS,GETMISSES;
    8.监控SGA中共享缓存区的命中率,应该小于1%
    SQL>SELECTSUM(PINS)"TOTALPINS",SUM(RELOADS)"TOTALRELOADS",
    SUM(RELOADS)/SUM(PINS)*100LIBCACHEFROMV$LIBRARYCACHE;
    SQL>SELECTSUM(PINHITS-RELOADS)/SUM(PINS)"HITRADIO",SUM(RELOADS)/SUM(PINS)"RELOADPERCENT"FROMV$LIBRARYCACHE;
    9.显示所有数据库对象的类别和大小
    SQL>SELECTCOUNT(NAME)NUM_INSTANCES,TYPE,SUM(SOURCE_SIZE)SOURCE_SIZE,SUM(PARSED_SIZE)PARSED_SIZE,SUM(CODE_SIZE)CODE_SIZE,SUM(ERROR_SIZE)ERROR_SIZE,SUM(SOURCE_SIZE)+SUM(PARSED_SIZE)+SUM(CODE_SIZE)+SUM(ERROR_SIZE)SIZE_REQUIREDFROMDBA_OBJECT_SIZEGROUPBYTYPEORDERBY2;
    10.监控SGA中重做日志缓存区的命中率,应该小于1%
    SQL>SELECTNAME,
    GETS,
    MISSES,
    IMMEDIATE_GETS,
    IMMEDIATE_MISSES,
    DECODE(GETS,0,0,MISSES/GETS*100)RATIO1,
    DECODE(IMMEDIATE_GETS+IMMEDIATE_MISSES,
    0,
    0,
    IMMEDIATE_MISSES/(IMMEDIATE_GETS+IMMEDIATE_MISSES)*100)RATIO2
    FROMV$LATCH
    WHERENAMEIN('REDOALLOCATION','REDOCOPY');
    11.监控内存和硬盘的排序比率,最好使它小于.10,增加sort_area_size
    SQL>SELECTNAME,VALUEFROMV$SYSSTATWHERENAMEIN('SORTS(MEMORY)','SORTS(DISK)');
    12.监控当前数据库谁在运行什么SQL语句
    SQL>SELECTOSUSER,USERNAME,SQL_TEXTFROMV$SESSIONA,V$SQLTEXTB
    WHEREA.SQL_ADDRESS=B.ADDRESSORDERBYADDRESS,PIECE;
    13.监控字典缓冲区
    SQL>SELECT(SUM(PINS-RELOADS))/SUM(PINS)"LIBCACHE"FROMV$LIBRARYCACHE;
    SQL>SELECT(SUM(GETS-GETMISSES-USAGE-FIXED))/SUM(GETS)"ROWCACHE"FROMV$ROWCACHE;
    SQL>SELECTSUM(PINS)"EXECUTIONS",SUM(RELOADS)"CACHEMISSESWHILEEXECUTING"FROMV$LIBRARYCACHE;(后者除以前者,此比率小于1%,接近0%为好)
    SQL>SELECTSUM(GETS)"DICTIONARYGETS",SUM(GETMISSES)"DICTIONARYCACHEGETMISSES"FROMV$ROWCACHE;
    14.查找ORACLE字符集
    SQL>SELECT*FROMSYS.PROPS$WHERENAME='NLS_CHARACTERSET';
    15.监控MTS
    SQL>SELECTBUSY/(BUSY+IDLE)"SHAREDSERVERSBUSY"FROMV$DISPATCHER;
    (此值大于0.5时,参数需加大)
    SQL>SELECTSUM(WAIT)/SUM(TOTALQ)"DISPATCHERWAITS"FROMV$QUEUEWHERETYPE='DISPATCHER';
    SQL>SELECTCOUNT(*)FROMV$DISPATCHER;
    SQL>SELECTSERVERS_HIGHWATERFROMV$MTS;
    (servers_highwater接近mts_max_servers时,参数需加大)
    16.碎片程度
    SQL>SELECTTABLESPACE_NAME,COUNT(TABLESPACE_NAME)FROMDBA_FREE_SPACEGROUPBYTABLESPACE_NAMEHAVINGCOUNT(TABLESPACE_NAME)>10;
    SQL>ALTERTABLESPACENAMECOALESCE;
    SQL>ALTERTABLENAMEDEALLOCATEUNUSED;
    SQL>CREATEORREPLACEVIEWTS_BLOCKS_VAS
    SELECTTABLESPACE_NAME,BLOCK_ID,BYTES,BLOCKS,'FREESPACE'SEGMENT_NAMEFROMDBA_FREE_SPACE
    UNIONALL
    SELECTTABLESPACE_NAME,BLOCK_ID,BYTES,BLOCKS,SEGMENT_NAMEFROMDBA_EXTENTS;
    SELECT*FROMTS_BLOCKS_V;
    SQL>SELECTTABLESPACE_NAME,SUM(BYTES),MAX(BYTES),COUNT(BLOCK_ID)FROMDBA_FREE_SPACEGROUPBYTABLESPACE_NAME;
    查看碎片程度高的表
    SQL>SELECTSEGMENT_NAMETABLE_NAME,COUNT(*)EXTENTS
    FROMDBA_SEGMENTSWHEREOWNERNOTIN('SYS','SYSTEM')GROUPBYSEGMENT_NAMEHAVINGCOUNT(*)=(SELECTMAX(COUNT(*))FROMDBA_SEGMENTSGROUPBYSEGMENT_NAME);
    17.表、索引的存储情况检查
    SQL>SELECTSEGMENT_NAME,SUM(BYTES),COUNT(*)EXT_QUANFROMDBA_EXTENTSWHERETABLESPACE_NAME='&;TABLESPACE_NAME'ANDSEGMENT_TYPE='TABLE'GROUPBYTABLESPACE_NAME,SEGMENT_NAME;
    SQL>SELECTSEGMENT_NAME,COUNT(*)FROMDBA_EXTENTSWHERESEGMENT_TYPE='INDEX'ANDOWNER='&;OWNER'GROUPBYSEGMENT_NAME;
    18、找使用CPU多的用户session
    SQL>SELECTA.SID,SPID,STATUS,SUBSTR(A.PROGRAM,1,40)PROG,A.TERMINAL,OSUSER,VALUE/60/100VALUEFROMV$SESSIONA,V$PROCESSB,V$SESSTATC
    WHEREC.STATISTIC#=12ANDC.SID=A.SIDANDA.PADDR=B.ADDRORDERBYVALUEDESC;
    (12?OCPUUSEDBYTHISSESSION)
    表空间统计
    A、脚本说明:
    这是我最常用的一个脚本,用它可以显示出数据库中所有表空间的状态,如表空间的大小、已使用空间、使用的百分比、空闲空间数及现在表空间的最大块是多大。
    B、脚本原文:
    SELECTUPPER(F.TABLESPACE_NAME)"表空间名"
    D.TOT_GROOTTE_MB"表空间大小(M)",
    D.TOT_GROOTTE_MB-F.TOTAL_BYTES"已使用空间(M)",
    TO_CHAR(ROUND((D.TOT_GROOTTE_MB-F.TOTAL_BYTES)/D.TOT_GROOTTE_MB*100,2),'990.99')"使用比",
    F.TOTAL_BYTES"空闲空间(M)",
    F.MAX_BYTES"最大块(M)"
    FROM
    (SELECTTABLESPACE_NAME,
    ROUND(SUM(BYTES)/(1024*1024),2)TOTAL_BYTES,
    ROUND(MAX(BYTES)/(1024*1024),2)MAX_BYTES
    FROMSYS.DBA_FREE_SPACE
    GROUPBYTABLESPACE_NAME)F,
    (SELECTDD.TABLESPACE_NAME,ROUND(SUM(DD.BYTES)/(1024*1024),2)TOT_GROOTTE_MB
    FROMSYS.DBA_DATA_FILESDD
    GROUPBYDD.TABLESPACE_NAME)D
    WHERED.TABLESPACE_NAME=F.TABLESPACE_NAME
    ORDERBY4DESC;
    查看无法扩展的段
    A、脚本说明:
    ORACLE对一个段比如表段或索引无法扩展时,取决的并不是表空间中剩余的空间是多少,而是取于这些剩余空间中最大的块是否够表比索引的“NEXT”值大,所以有时一个表空间剩余几个G的空闲空间,在你使用时ORACLE还是提示某个表或索引无法扩展,就是由于这一点,这时说明空间的碎片太多了。这个脚本是找出无法扩展的段的一些信息。
    B、脚本原文:
    SELECTSEGMENT_NAME,
    SEGMENT_TYPE,
    OWNER,
    A.TABLESPACE_NAME"TABLESPACENAME",
    INITIAL_EXTENT/1024"INITAL_EXTENT(K)",
    NEXT_EXTENT/1024"NEXT_EXTENT(K)",
    PCT_INCREASE,
    B.BYTES/1024"TABLESPACEMAXFREESPACE(K)",
    B.SUM_BYTES/1024"TABLESPACETOTALFREESPACE(K)"
    FROMDBA_SEGMENTSA,
    (SELECTTABLESPACE_NAME,MAX(BYTES)BYTES,SUM(BYTES)SUM_BYTESFROMDBA_FREE_SPACEGROUPBYTABLESPACE_NAME)B
    WHEREA.TABLESPACE_NAME=B.TABLESPACE_NAMEANDNEXT_EXTENT>B.BYTES
    ORDERBY4,3,1;
    查看段(表段、索引段)所使用空间的大小
    A、脚本说明:
    有时你可能想知道一个表或一个索引占用多少M的空间,这个脚本就是满足你的要求的,把<>中的内容替换一下就可以了。
    B、脚本原文:
    SELECTOWNER,
    SEGMENT_NAME,
    SUM(BYTES)/1024/1024
    FROMDBA_SEGMENTS
    WHEREOWNER=
    ANDSEGMENT_NAME=
    GROUPBYOWNER,SEGMENT_NAME
    ORDERBY3DESC;
    查看数据库中的表锁
    A、脚本说明:
    这方面的语句的样式是很多的,各式一样,不过我认为这个是最实用的,不信你就用一下,无需多说,锁是每个DBA一定都涉及过的内容,当你相知道某个表被哪个session锁定了,你就用到了这个脚本。
    B、脚本原文
    SELECTA.OWNER,
    A.OBJECT_NAME,
    B.XIDUSN,
    B.XIDSLOT,
    B.XIDSQN,
    B.SESSION_ID,
    B.ORACLE_USERNAME,
    B.OS_USER_NAME,
    B.PROCESS,
    B.LOCKED_MODE,
    C.MACHINE,
    C.STATUS,
    C.SERVER,
    C.SID,
    C.SERIAL#,
    C.PROGRAM
    FROMALL_OBJECTSA,
    V$LOCKED_OBJECTB,
    SYS.GV_$SESSIONC
    WHERE(A.OBJECT_ID=B.OBJECT_ID)
    AND(B.PROCESS=C.PROCESS)
    --AND
    ORDERBY1,2;
    处理存储过程被锁
    A、脚本说明:
    实际过程中可能你要重新编译某个存储过程理总是处于等待状态,最后会报无法锁定对象,这时你就可以用这个脚本找到锁定过程的那个sid,需要注意的是查v$access这个视图本来就很慢,需要一些布耐心。
    B、脚本原文:
    SELECT*FROMV$ACCESS
    WHEREOWNER=
    ANDOBJECT
    ?
    查看回滚段状态
    A、脚本说明
    这也是DBA经常使用的脚本,因为回滚段是online还是full是他们的关怀之列嘛
    B、脚本原文:
    SELECTA.SEGMENT_NAME,B.STATUS
    FROMDBA_ROLLBACK_SEGSA,
    V$ROLLSTATB
    WHEREA.SEGMENT_ID=B.USN
    ORDERBY2
    看哪些session正在使用哪些回滚段
    A、脚本说明:
    当你发现一个回滚段处理full状态,你想使它变回online状态,这时你便会用alterrollbacksegmentrbs_seg_nameshrink,可很多时侯确shrink不回来,主要是由于某个session在用,这时你就用到了这个脚本,找到了sid的serial#余下的事就不用我说了吧。
    B、脚本原文
    SELECTR.NAME回滚段名,
    S.SID,
    S.SERIAL#,
    S.USERNAME用户名,
    S.STATUS,
    T.CR_GET,
    T.PHY_IO,
    T.USED_UBLK,
    T.NOUNDO,
    SUBSTR(S.PROGRAM,1,78)操作程序
    FROMSYS.V_$SESSIONS,SYS.V_$TRANSACTIONT,SYS.V_$ROLLNAMER
    WHERET.ADDR=S.TADDRANDT.XIDUSN=R.USN
    --ANDR.NAMEIN('ZHYZ_RBS')
    ORDER?BYT.CR_GET,T.PHY_IO
    查看正在使用临时段的session
    A、脚本说明:
    许多的时侯你在查看哪些段无法扩展时,回显的结果是临时段,或你做表空间统计时发现临段表空间的可用空间几乎为0,这时按oracle的说法是你只有重新启动数据库才能回收这部分空间。实际过程中没那么复杂,使用以下这段脚本把占用临时段的session杀掉,然后用altertablespacetempcoalesce;这个语句就把temp表空间的空间回收回来了。
    B、脚本原文
    SELECTUSERNAME,SID,SERIAL#,SQL_ADDRESS,MACHINE,PROGRAM,
    TABLESPACE,SEGTYPE,CONTENTSFROMV$SESSIONSE,V$SORT_USAGESU
    WHERESE.SADDR=SU.SESSION_ADDR;
    
  • 上一篇资讯: SQL(1)
  • 下一篇资讯: sql语句大全(1)
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师