国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

分析數據庫性能的SQL

2024-07-21 02:38:06
字體:
來源:轉載
供稿:網友

  --用于查看哪些實例的哪些操作使用了大量的臨時段
  
  SELECT to_number(decode(SID, 65535, NULL, SID)) sid,
  Operation_type OPERATION,trunc(EXPECTED_SIZE/1024) ESIZE,
  trunc(ACTUAL_MEM_USED/1024) MEM, trunc(MAX_MEM_USED/1024) "MAX MEM",
  NUMBER_PASSES PASS, trunc(TEMPSEG_SIZE/1024) TSIZE
  FROM V$SQL_WORKAREA_ACTIVE
  ORDER BY 1,2;
  
  ---查詢有熱塊查詢的SQL語句
  
  select hash_value
  from v$sqltext a,
  (select distinct a.owner,a.segment_name,a.segment_type from
  dba_extents a,
  (select dbarfil,dbablk
  from (select dbarfil,dbablk
  from x$bh order by tch desc) where rownum < 11) b
  where a.RELATIVE_FNO = b.dbarfil
  and a.BLOCK_ID <= b.dbablk and a.block_id + a.blocks > b.dbablk) b
  where a.sql_text like '%'b.segment_name'%' and b.segment_type = 'TABLE'
  order by a.hash_value,a.address,a.piece;
  
  --全表掃描
  
  select opname,target,b.num_rows,b.tablespace_name,count(target) from v$session_longops a,all_all_tables b
  where a.TARGET=b.owner'.'b.table_name
  having count(target)>10 group by  opname,target,b.num_rows,b.tablespace_name
  
  --查看磁盤排序和緩存排序次數
  
  select to_char(sn.snap_time,'yyyy-mm-dd hh24') time_,
  avg(newmen.value - oldmen.value) sorts_memeory,
  avg(newdsk.value - olddsk.value) disk_sort
  from  stats$sysstat oldmen,
  stats$sysstat newmen,
  stats$sysstat newdsk,
  stats$sysstat olddsk,
  stats$snapshot sn
  where  newdsk.snap_id=sn.snap_id
  and   olddsk.snap_id=sn.snap_id-1
  and   newmen.snap_id=sn.snap_id
  and   newdsk.snap_id=sn.snap_id -1
  and   oldmen.name='sorts (memory)'
  and   newmen.name='sorts (memory)'
  and   olddsk.name='sorts (disk)'
  and   newdsk.name='sorts (disk)'
  group by to_char(sn.snap_time,'yyyy-mm-dd hh24')
  
  --執行最慢的前10個SQL???
  
  select * from (
  select
  to_char(snap_time,'dd Mon HH24:mi:ss') mydate,
  executions               exec,
  loads                 loads,
  parse_calls              parse,
  disk_reads               reads,
  buffer_gets              gets,
  rows_PRocessed             rows_proc,
  sorts                 sorts,
  sql_text,
  hash_value
  from
  perfstat.stats$sql_summary sql,
  perfstat.stats$snapshot   sn
  where
  sql.snap_id >
  (select min(snap_id) min_snap
  from stats$snapshot where snap_time > sysdate-$days_back)
  and
  sql.snap_id = sn.snap_id
  order by $sortskey desc) tt where rownum<11;
  
  --SQL緩存池的命中率查詢(pinhitratio,gethitratio應該大于90%以上)
  
  select namespace,gethitratio,pinhitratio,reloads,invalidations
  from v$librarycache
  where namespace in ('SQL AREA','TABLE/PROCEDURE','BODY','TRIGGER')
  
  --數據庫的常規參數我就不說了,除了V$parameter中的常規參數外,Oracle還有大量的隱含參數,下面的語句就可以查詢到數據庫的所有隱含參數以及其值與參數的描述。

  
  SELECT NAME
  ,VALUE
  ,decode(isdefault, 'TRUE','Y','N') as "Default"
  ,decode(ISEM,'TRUE','Y','N') as SesMod
  ,decode(ISYM,'IMMEDIATE', 'I',
  'DEFERRED', 'D',
  'FALSE', 'N') as SysMod
  ,decode(IMOD,'MODIFIED','U',
  'SYS_MODIFIED','S','N') as Modified
  ,decode(IADJ,'TRUE','Y','N') as Adjusted
  ,description
  FROM ( --GV$SYSTEM_PARAMETER
  SELECT x.inst_id as instance
  ,x.indx+1
  ,ksppinm as NAME
  ,ksppity
  ,ksppstvl as VALUE
  ,ksppstdf as isdefault
  ,decode(bitand(ksppiflg/256,1),1,'TRUE','FALSE') as ISEM
  ,decode(bitand(ksppiflg/65536,3),
  1,'IMMEDIATE',2,'DEFERRED','FALSE') as ISYM
  ,decode(bitand(ksppstvf,7),1,'MODIFIED','FALSE') as IMOD
  ,decode(bitand(ksppstvf,2),2,'TRUE','FALSE') as IADJ
  ,ksppdesc as DESCRIPTION
  FROM x$ksppi x
  ,x$ksppsv y
  WHERE x.indx = y.indx
  AND substr(ksppinm,1,1) = '_'
  AND x.inst_id = USERENV('Instance')
  )
  ORDER BY NAME
  
  --想知道現在哪個用戶正在利用臨時段嗎?這個語句將告訴你哪個用戶正在利用臨時段。
  
  SELECT b.tablespace, b.segfile#, b.segblk#, b.blocks, a.sid, a.serial#,
  a.username, a.osuser, a.status,c.sql_text
  FROM v$session a,v$sort_usage b, v$sql c
  WHERE a.saddr = b.session_addr
  AND a.sql_address = c.address(+)
  ORDER BY b.tablespace, b.segfile#, b.segblk#, b.blocks;
  
  --查看磁盤碎片
  
  select tablespace_name,sqrt(max(blocks)/sum(blocks))*
  (100/sqrt(sqrt(count(blocks)))) FSFI
  from dba_free_space
  group by tablespace_name order by 1
  
  1.查看表空間的名稱及大小
  
  select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
  from dba_tablespaces t, dba_data_files d
  where t.tablespace_name = d.tablespace_name
  group by t.tablespace_name;
  
  2.查看表空間物理文件的名稱及大小
  
  select tablespace_name, file_id, file_name,
  round(bytes/(1024*1024),0) total_space
  from dba_data_files
  order by tablespace_name;
  
  3.查看回滾段名稱及大小
  
  select segment_name, tablespace_name, r.status,
  (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,
  max_extents, v.curext CurExtent
  From dba_rollback_segs r, v$rollstat v
  Where r.segment_id = v.usn(+)
  order by segment_name
  
  15。耗資源的進程(top session)
  
  select s.schemaname schema_name,  decode(sign(48 - command), 1,
  to_char(command), 'Action Code #' to_char(command) ) action,  status
  session_status,  s.osuser os_user_name,  s.sid,     p.spid ,     s.serial# serial_num,
  nvl(s.username, '[Oracle process]') user_name,  s.terminal terminal,
  s.program program,  st.value criteria_value from v$sesstat st,  v$session s , v$process p
  where st.sid = s.sid and  st.statistic# = to_number('38') and  ('ALL' = 'ALL'
  or s.status = 'ALL') and p.addr = s.paddr order by st.value desc, p.spid asc, s.username asc, s.osuser asc
  
  16。
查看鎖(lock)情況
  
  select /*+ RULE */ ls.osuser os_user_name,  ls.username user_name,
  decode(ls.type, 'RW', 'Row wait enqueue lock', 'TM', 'DML enqueue lock', 'TX',
  'Transaction enqueue lock', 'UL', 'User supplied lock') lock_type,
  o.object_name object,  decode(ls.lmode, 1, null, 2, 'Row Share', 3,
  'Row Exclusive', 4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive', null)
  lock_mode,  o.owner,  ls.sid,  ls.serial# serial_num,  ls.id1,  ls.id2
  from sys.dba_objects o, (  select s.osuser,  s.username,  l.type,
  l.lmode,  s.sid,  s.serial#,  l.id1,  l.id2  from v$session s,
  v$lock l  where s.sid = l.sid ) ls where o.object_id = ls.id1 and  o.owner
  <> 'SYS'  order by o.owner, o.object_name
  
  --查看低效率的SQL語句
  
  SELECT EXECUTIONS , DISK_READS, BUFFER_GETS,
  ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio,
  ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run,
  SQL_TEXT
  FROM  V$SQLAREA
  WHERE EXECUTIONS>0
  AND   BUFFER_GETS > 0
  AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8
  ORDER BY 4 DESC

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 千阳县| 青冈县| 南江县| 怀远县| 聊城市| 武义县| 江西省| 玉龙| 北流市| 安远县| 金阳县| 循化| 托里县| 犍为县| 翁牛特旗| 金塔县| 高州市| 巧家县| 连山| 衡山县| 郴州市| 金溪县| 尚义县| 怀来县| 昔阳县| 塘沽区| 延庆县| 英吉沙县| 阿勒泰市| 蒲城县| 河南省| 阿瓦提县| 徐汇区| 沅陵县| 西昌市| 文昌市| 横峰县| 互助| 孟州市| 安达市| 嵊泗县|