Oracle常用诊断语句

1)根据程序名称查找相关信息
select A.process,B.spid,A.sid,A.serial#,A.sql_address,A.username,A.program,A.status,A.machine,A.terminal,A.osuser
from v$session A, v$process B
--where A.program like '%'||UPPER('&&sBossServiceName')||'%'
where A.program like '%qam%'
-- and A.machine='e6900f1'
and A.paddr = B.addr
order by A.machine,A.sid;


2)根据程序名称查找当前sql
select * from v$sqltext
where address in (
select A.sql_address
from v$session A, v$process B
--where A.program like '%'||UPPER('&&sBossServiceName')||'%'
where A.program like '%qam%'
-- and A.machine='e6900f1'
and A.paddr = B.addr)
order by address,piece;


3)通过sid,获取session正在执行的sql语句
SELECT sql_text FROM v$sqltext
WHERE address = (select sql_address from v$session where sid = &sid)
ORDER BY piece;


4)通过操作系统的pid查找sid

select * from v$session
where paddr=(select addr from v$process where spid=&spid);

select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=1057

5)通过sid查找spid
select * from v$process
where addr = (select paddr from v$session where sid = &sid);

6)通过找出被kill的session的地址,查找出其对应的操作系统进程ID(spid)
select * from v$process
where addr in (
select p.addr from v$process p where pid <> 1
minus
select s.paddr from v$session s
);

7)查看锁(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;

8)查看等待(wait)情况
SELECT v$waitstat.class, v$waitstat.count count, SUM(v$sysstat.value) sum_value
FROM v$waitstat, v$sysstat WHERE v$sysstat.name IN ('db block gets',
'consistent gets') group by v$waitstat.class, v$waitstat.count

9)查看表空间的名称及大小
select
fs.tablespace_name "Tablespace",
(df.totalspace - fs.freespace) "Used MB",
fs.freespace "Free MB",
df.totalspace "Total MB",
round(100*(1-fs.freespace/df.totalspace),2)||'%' "Pct. Used"
from
(select
tablespace_name,
round(sum(bytes)/1048576) TotalSpace
from
dba_data_files
group by
tablespace_name
) df,
(select
tablespace_name,
round(sum(bytes)/1048576) FreeSpace
from
dba_free_space
group by
tablespace_name
) fs
where
df.tablespace_name=fs.tablespace_name;

10)查看等待(wait)情况
SELECT v$waitstat.class,
v$waitstat.count count,
SUM(v$sysstat.value) sum_value
FROM v$waitstat, v$sysstat
WHERE v$sysstat.name IN ('db block gets', 'consistent gets')
group by v$waitstat.class, v$waitstat.count

扫描二维码关注公众号,回复: 2762711 查看本文章

11)查看sga情况
SELECT NAME, BYTES FROM SYS.V_$SGASTAT ORDER BY NAME ASC

12)查看catched object
SELECT owner,
name,
db_link,
namespace,
type,
sharable_mem,
loads,
executions,
locks,
pins,
kept
FROM v$db_object_cache

13)查看有哪些用户连接
select s.osuser os_user_name,
decode(sign(48 - command),
1,
to_char(command),
'Action Code #' || to_char(command)) action,
p.program oracle_process,
status session_status,
s.terminal terminal,
s.program program,
s.username user_name,
s.fixed_table_sequence activity_meter,
'' query,
0 memory,
0 max_memory,
0 cpu_usage,
s.sid,
s.serial# serial_num
from v$session s, v$process p
where s.paddr = p.addr
and s.type = 'USER'
order by s.username, s.osuser

14)根据v.sid查看对应连接的资源占用等情况
select n.name, v.value, n.class, n.statistic#
from v$statname n, v$sesstat v
where v.sid = 12
and v.statistic# = n.statistic#
order by n.class, n.statistic#


15)DBA需要关注的latch有

Select name,
gets,
misses,
sleeps,
wait_time,
spin_gets,
immediate_gets,
immediate_misses
from v$latch
where name like '%shared pool%'
or name like '%library cache'
or name like '%cache buffers lru chain%'
or name like '%cache buffers chains%'
or name like '%redo allocation%'
or name like '%redo copy%';

16)latch争用 前10的语句
SELECT OBJECT_NAME, SUBOBJECT_NAME
FROM DBA_OBJECTS
WHERE DATA_OBJECT_ID in
(select data_object_id
from (SELECT OBJ data_object_id, FILE#, DBABLK, CLASS, STATE, TCH
FROM X$BH
WHERE HLADDR in (select addr
from (select addr
from v$latch_children
order by (gets + misses + sleeps) desc)
where rownum < 20)
order by tch desc)
where rownum < 20);

17)等待事件明细
select sid,event,p1,p1text from gv$session_wait order by 2
18)查看等待时间的SQL
select sql_text
from gv$sqltext a
where a.hash_value =
(select sql_hash_value from v$session where sid = '37')
order by piece asc
19)等待事件明细
select sid,event,p1,p1text from gv$session_wait order by 2
20)查询等待事件语句
SELECT SQL_TEXT
FROM V$SQL SQL, V$SESSION S
WHERE SQL.HASH_VALUE = S.SQL_HASH_VALUE
AND SQL.ADDRESS = S.SQL_ADDRESS
AND S.SID = &sid;

猜你喜欢

转载自www.cnblogs.com/fishjar/p/9475909.html
今日推荐