跟踪数据库性能
一 .首先跟踪windows系统性能(cpu,mem,read,write等)
二. 跟踪数据库
(1) 查询等待事件:
select sid,
event,
p1text,
p1,
p1raw,
seconds_in_wait,
state,
wait_time
from v$session_wait
where event <> 'SQL*Net message from client';
说明: 由BI分析
(2) 查询当前正在执行的SQL(常用)
SELECT /*+USE_NL(A,C)*/a.username,
a.machine,
a.program,
a.sid,
a.serial#,
a.status,
c.piece,
c.sql_text
FROM v$session a,
v$process b,
v$sqltext c
WHERE a.status='ACTIVE'
AND b.addr=a.paddr
AND a.sql_address=c.address(+)
ORDER BY A.SID,c.piece;
说明: 当系统性能严重下降时观察哪些sql语句在执行
(3) 查询系统中效率低的语句
SELECT * FROM V$SQLAREA SA ORDER BY SA.DISK_READS DESC;
说明: sql_text-----sql语句
executions---执行次数
cpu_time-----cpu运行总时间(毫秒)
disk_read----磁盘读时间
cpu_time/executions---平均执行时间
三. 跟踪数据库
(1) 查看oracle 允许的最大的session:
登陆sqlplus,
SQL>show parameter sessions
NAME TYPE VALUE
------------------------------------ ----------- -----------------------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
mts_sessions integer 165
sessions integer 170 ------------>就是这个。
shared_server_sessions integer 165
其中的sessions 就是。
其他参数查看方法类似。
如果不用sqlplus 也可以使用sql:
SQL>select value from v$parameter where name='sessions';
VALUE
-----------------------------------------------------------
170
(2) ====================================================
select count(*) from v$session;
select count(*) from v$session where program like 'JDBC%';
select machine,count(*) from v$session group by machine;
select machine,program,count(*) from v$session group by machine,program;
====================================================
一 .首先跟踪windows系统性能(cpu,mem,read,write等)
二. 跟踪数据库
(1) 查询等待事件:
select sid,
event,
p1text,
p1,
p1raw,
seconds_in_wait,
state,
wait_time
from v$session_wait
where event <> 'SQL*Net message from client';
说明: 由BI分析
(2) 查询当前正在执行的SQL(常用)
SELECT /*+USE_NL(A,C)*/a.username,
a.machine,
a.program,
a.sid,
a.serial#,
a.status,
c.piece,
c.sql_text
FROM v$session a,
v$process b,
v$sqltext c
WHERE a.status='ACTIVE'
AND b.addr=a.paddr
AND a.sql_address=c.address(+)
ORDER BY A.SID,c.piece;
说明: 当系统性能严重下降时观察哪些sql语句在执行
(3) 查询系统中效率低的语句
SELECT * FROM V$SQLAREA SA ORDER BY SA.DISK_READS DESC;
说明: sql_text-----sql语句
executions---执行次数
cpu_time-----cpu运行总时间(毫秒)
disk_read----磁盘读时间
cpu_time/executions---平均执行时间
三. 跟踪数据库
(1) 查看oracle 允许的最大的session:
登陆sqlplus,
SQL>show parameter sessions
NAME TYPE VALUE
------------------------------------ ----------- -----------------------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
mts_sessions integer 165
sessions integer 170 ------------>就是这个。
shared_server_sessions integer 165
其中的sessions 就是。
其他参数查看方法类似。
如果不用sqlplus 也可以使用sql:
SQL>select value from v$parameter where name='sessions';
VALUE
-----------------------------------------------------------
170
(2) ====================================================
select count(*) from v$session;
select count(*) from v$session where program like 'JDBC%';
select machine,count(*) from v$session group by machine;
select machine,program,count(*) from v$session group by machine,program;
====================================================