Oracle Database Health Check SQL
Oracle Database Health Check SQL
* File: olm_ora_check.sql
* Type: SQL*Plus script
* Author: OLM Technical Support Services
* Begin_Date: 04-JAN-05
*
* Description: OLM Oracle Database health check report SQL
*
* Modifications:
* 08-JAN-05
*
*******************************************************************/
set verify off feedback off serveroutput on size 1000000 pages 10000
set trimout on trimspool on linesize 2000
set heading on
spool SE_oracle_check_out.txt
PROMPT
PROMPT һ�������Ϣ
--Windows NT systeminfo
--host top
--host vmstat 4 5
--host iostat
--�����
-- $ uname -a
--�����
ͺ
--HP # model
--�˰ں汾
--HP # getconf KERNEL_BITS
--AIX # /usr/sbin/bootinfo -K
--Solaris # isainfo -kv
--����ϵͳ�汾
--AIX $ oslevel -r
--HP, Linux, Solaris $ uname -a
--Tru64 $ /usr/sbin/sizer -v
--������Ϣ
--HP $ bdf
--others $ df -k
--������ڴ
--AIX $ /usr/sbin/lsattr -E -l sys0 -a realmem, lsattr -El mem0
--Linux $ /usr/sbin/dmesg | grep "Physical:"
--HP $ grep MemTotal /proc/meminfo
--Solaris $ /usr/sbin/prtconf | grep "Memory size"
--Tru64 $ /bin/vmstat -P | grep "Total Physical Memory"
--�� � � � � � �ڴ
-- $ vmstat 20 5
--�������С
--AIX $ /usr/sbin/lsps -a
--HP $ /usr/sbin/swapinfo -a, swapinfo -m
--Linux, Tru64 $ /sbin/swapon -s
--Solaris $ /usr/sbin/swap -1
--CPU ��Ϣ
--Solaris # psrinfo -v|grep "Status of processor"|wc -l
--AIX # lsdev -Cc processor, lsattr -El proc0
--���� # lsdev -C|grep Process|wc -l
--CPU������
--Solaris $ sar -u -M 20 5
--Others $ sar -u 20 5
--�������
--AIX $ netstat -in, netstat -rn
l_status := dbms_sql.execute(l_theCursor);
PROMPT
PROMPT ����ʵ��ſ���Ϣ
PROMPT ==============================
PROMPT
PROMPT --show database
select name ,open_mode,log_mode from v$database;
PROMPT
PROMPT --show instance
select instance_number,instance_name ,status from gv$instance;
PROMPT
PROMPT --show cpu parameter
show parameter cpu_c
PROMPT
PROMPT --show SGA
show sga;
PROMPT
PROMPT --show PGA
SELECT * FROM V$PGASTAT;
PROMPT
PROMPT ���� �ݿdatabase��Ϣ
PROMPT ==============================
PROMPT
PROMPT �ġ��� �ݿʵ����Ϣ
PROMPT ==============================
exec olm_tts_print_table('select * from v$instance')
PROMPT
PROMPT �塢�� �ݿѡ����Ϣ
PROMPT ==============================
prompt ѡ����װ
COL PARAMETER FOR A20
col value for a10
SELECT PARAMETER,VALUE FROM V$OPTION ;
PROMPT
PROMPT �ߡ� � � � � � ļ�
PROMPT ==============================
COL NAME FOR a30
SELECT * FROM V$controlfile;
PROMPT
PROMPT �ˡ��� � � � �־Ϣ
PROMPT ==============================
PROMPT
PROMPT �š�����ļ�
PROMPT ==============================
COL FILE_NAME FOR a20
col BYTES for 999999999999
SELECT FILE_ID ID,FILE_NAME,TABLESPACE_NAME "TBS_name",BYTES,autoextensible
"auto_extend"
FROM dba_data_files order by tablespace_name;
PROMPT
PROMPT ʮ����ʱ�ļ�
PROMPT ==============================
col FILE_NAME for a30
col BYTES for 99999999999
SELECT FILE_ID ID,FILE_NAME,TABLESPACE_NAME "TBS_name",BYTES,autoextensible
"auto_extend"
FROM dba_temp_files;
PROMPT
PROMPT ʮһ����ռ���Ϣ
PROMPT ==============================
set heading on
col "��ռ���" for a10
--col "��ռ�ʹ����%" heading 'ʹ����' for 999
col "��ռ�ʹ����%" heading 'used_ratio' for 999
--col "��ռ����" heading '���' for 9999999999
col "��ռ����" heading 'total_size' for 99999999999999999
--col "ʣ��ռ��СM" heading 'ʣ��' for 99999999
col "ʣ��ռ��СM" heading 'free_size' for 999999999999999
--col "����ģʽ" heading '����ģʽ' for a10
col "����ģʽ" heading 'manager_mode' for a10
select
a.tablespace_name "TBS_name",a.total "TOTAL_SIZE",
b.free "FREE_SIZE" ,
ceil((1-b.free/a.total)*100) "TBS_UESD_RATIO%",
c.extent_management "MANAGER_MODE"
from
(select
tablespace_name,
sum(nvl(bytes,0))/1024/1024 total
from
dba_data_files
group by tablespace_name
) a,
(select
tablespace_name,
sum(nvl(bytes,0))/1024/1024 free
from
dba_free_space
group by tablespace_name
) b ,
dba_tablespaces c
where
a.tablespace_name=b.tablespace_name
and a.tablespace_name=c.tablespace_name
order by (1-b.free/a.total)*100 desc
/
PROMPT
PROMPT ʮһ�����С��Ϣ
PROMPT ==============================
PROMPT ���ʹ��������exp��� � � � � � �ݣСԼ���ںϼƴ�С��
col total for 99999999999999999
select nvl(t.owner,'total') "user",
to_char(sum(bytes),'9999999,999,999,999') "used byte"
from dba_segments t
group by rollup(t.owner)
order by 2
/
prompt ʮ������ռ���п����
PROMPT ==============================
prompt ���ҵ��ܸߵ�ֵ��ʹ�úϲ��������д�����п�ʱ��������תΪ������ع
select tablespace_name,count(*) cnt from dba_free_space group by tablespace_name
order by cnt desc
/
PROMPT ʮ���عοռ�����
PROMPT ==============================
PROMPT
PROMPT ʮ�ġ�NLS��������
PROMPT ==============================
SELECT * FROM NLS_Database_Parameters;
PROMPT
PROMPT ʮ�塢����ݿû���ȫ��
PROMPT ==============================
set pages 100 lines 132
clear breaks
break on username on account_status on default_tablespace on temporary_tablespace
on profile
select username,
ACCOUNT_STATUS,
default_tablespace,
temporary_tablespace,
granted_role
from dba_users u,dba_role_privs r
where u.username = r.grantee
order by username
/
PROMPT
PROMPT ʮ�ߡ�ʧЧ����
PROMPT ==============================
SELECT OWNER "user_name",OBJECT_NAME,OBJECT_TYPE,CREATED,LAST_DDL_TIME FROM
DBA_OBJECTS WHERE STATUS = 'INVALID'
ORDER BY OWNER,OBJECT_NAME;
PROMPT
PROMPT ʮ�ˡ����õĴ�����
PROMPT ==============================
SELECT owner "user_name",trigger_name,status FROM dba_triggers where status =
'DISABLED';
PROMPT
PROMPT ʮ�š����õ�Լ��
col STATUS format a10
SELECT owner "user_name",constraint_name,decode(constraint_type,'P','premary
key','F','forign key',constraint_type) "constrain mode"
,status
FROM dba_constraints where status = 'DISABLED'
/
PROMPT
PROMPT ��ʮ����Ч������
PROMPT ==============================
SELECT owner "user_name",index_name,status FROM dba_indexes where status =
'UNUSABLE'
/
ͬprompt ��ʮһ�����������һ
ͬ ��ռ�Ķ���
PROMPT ==============================
clear breaks
break on owner on tbsname on tname
select a.owner,
a.tablespace_name tbsname ,
a.table_name tname,
b.index_name iname
from
dba_tables a
,dba_indexes b
where
a.tablespace_name=b.tablespace_name
and b.table_name=a.table_name
and a.owner=b.owner
and b.owner NOT in ('SYS','SYSTEM')
order by owner
/
PROMPT
PROMPT ��ʮ������Ҫ�����
�SQL( ��� )������ݿ
PROMPT ==============================
end;
/
PROMPT
PROMPT 1����������ڴʮ��SQL
set linesize 250
col SQL_TEXT for a56
select * from (
select trunc(t.BUFFER_GETS/t.EXECUTIONS) "buffer/exes",
t.EXECUTIONS "executs",t.SQL_TEXT
from v$sql t where t.EXECUTIONS > 0 order by 1 desc )
where rownum <= 10;
PROMPT
PROMPT 2��TOP 5 �ȴ�event
col event for a28
select EVENT,TOTAL_WAITS, TOTAL_TIMEOUTS, TIME_WAITED, AVERAGE_WAIT from (
select * from v$system_event where event not like '%rdbms%' and event not like
'%message%' and event not like
'SQL*Net%' order by total_waits desc
)
where rownum <=5
/
PROMPT
PROMPT 3�����̶�����SQL
prompt disk_readsһ��ҪС��300�źã�������������̫
�����������õĸ�
set linesize 250
select st.sql_text
from v$sql s, v$sqlarea st
where s.address=st.address
and s.hash_value=st.hash_value
and s.disk_reads > 300000
order by s.disk_reads asc
/
PROMP
PROMPT 4����������������صSQL
set linesize 250
select
sess.username,
sql.sql_text,
sort1.blocks
from v$session sess,
v$sqlarea sql,
v$sort_usage sort1
where
sess.serial# = sort1.session_num
and sort1.sqladdr = sql.address
and sort1.sqlhash = sql.hash_value
and sort1.blocks > 200
order by sort1.blocks asc
/
PROMPT
PROMPT 5��SGA������
PROMPT cache hitҪ����90%--libraryҪ����95%--rowcacheҪ����85%
select * from
(SELECT 1 - (phy.value-phyd.value)/( (cur.value + con.value-phyd.value)) "data
cache ratio"
FROM v$sysstat cur, v$sysstat con, v$sysstat phy,v$sysstat phyd
WHERE cur.name = 'db block gets' AND con.name = 'consistent gets'
AND phy.name = 'physical reads' and phyd.NAME = 'physical reads direct' ),
(select sum(pinhits)/sum(pins) "SQL share pool ratio" from v$librarycache) ,
(select 1-SUM(GETMISSES)/SUM(GETS) "library ratio" from V$ROWCACHE)
/
PROMPT
prompt 6����������ڴ
select a.value "Disk Sorts",
b.value "Memory Sorts",
round((100 * b.value) /
decode((a.value + b.value), 0, 1, (a.value + b.value)),
2) "Pct Memory Sorts"
from v$sysstat a, v$sysstat b
where a.name = 'sorts (disk)'
and b.name = 'sorts (memory)'
/
prompt
prompt 7���鿴����ݿеı���,ij����ĸ�session��
set linesize 250
select
a.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
from all_objects a,v$locked_object b,sys.gv_$session c
where ( a.object_id = b.object_id ) and (b.process = c.process ) order by 1,2
/
*prompt
*prompt 8��current run sql statment
*select osuser, username, sql_text from v$session a, v$sqltext b
*where a.sql_address =b.address order by address, piece
*/
PROMPT
PROMPT ��ʮ�ġ�������Ϣ
PROMPT
PROMPT 1��TOP 5 �ȴ�event
col event for a28
select EVENT,TOTAL_WAITS, TOTAL_TIMEOUTS, TIME_WAITED, AVERAGE_WAIT from (
select * from v$system_event where event not like '%rdbms%' and event not like
'%message%' and event not like
'SQL*Net%' order by total_waits desc) where rownum <=5
/
PROMPT
PROMPT 2���鿴�ȵ�����ļ�(�ӵ����ȡʱ���ж�)
SELECT t.file_name, t.tablespace_name,
round(s.singleblkrdtim / s.singleblkrds, 2) AS CS, s.READTIM, s.WRITETIM
FROM v$filestat s, dba_data_files t
WHERE s.file# = t.file_id and rownum<=10 order by cs desc
/
PROMPT
PROMPT 2���鿴 redo���־л�Ƶ��
PROMPT
PROMPT 2.1���鿴 redo���־л�Ƶ��
select sequence#,to_char(first_time,'yyyymmdd_hh24:mi:ss')
firsttime,round((first_time-lag(first_time) over(order by
first_time))*24*60,2) minutes from v$log_history where first_time > sysdate - 1
order by first_time ,minutes
/
PROMPT
PROMPT 2.2�����lgwr i/o���� (time_waited/total_waits����ʾƽ��lgwrд�����ʱ��
��>1��ʾд�����)
select total_waits,time_waited,average_wait,time_waited/total_waits as avg from
v$system_event where event = 'log file
parallel write'
/
PROMPT
PROMPT 2.3�����������redo���������Ϣ
col value format 999999999999999.99
col name format a20
select name,value from v$sysstat where name like '%redo%'
/
PROMPT
PROMPT 2.4����ѯredo block size
select max(lebsz) from x$kccle;
/
PROMPT
PROMPT 2.5���鿴 redo allocation latch
col name for a30
select name,gets,misses,misses/gets from v$latch_children where name='redo
allocation'
/
PROMPT
PROMPT 2.6���鿴��redo��صȴ��¼�
col event format a40
select event,total_waits,total_timeouts,average_wait from v$system_event where
upper(event) like'%REDO%'
/
PROMPT
PROMPT 2.7���鿴 session redo event
select event,total_waits,total_timeouts,average_wait from v$session_event where
upper(event) like'%REDO%';
PROMPT
PROMPT 2.8���鿴 user commit����
select to_number(value,99999999999) from v$sysstat where name='user commits';
PROMPT
PROMPT 3�����undo
PROMPT
PROMPT
PROMPT 3.1�� ��عε��������
col ratio format 999999.999
select name, waits, gets, waits/gets "ratio" from v$rollstat a, v$rollname b where
a.usn = b.usn
/
PROMPT
PROMPT 3.1���鿴 redo���־л�Ƶ�ʼ��undo
show parameter undo_
PROMPT 3.1�����undo rollback segment ʹ�����
col name for a12
select name,rssize,extents,latch,xacts,writes,gets,waits from v$rollstat
a,v$rollname b where a.usn=b.usn order by waits
desc
/
PROMPT
PROMPT 3.1������ÿ���Ӳ����undoblk���
PROMPT Undospace=UR*UPS*blocksize + overload(10%),����undo tablespace��С
select sum(undoblks)/sum((end_time-begin_time)*24*60*60) from v$undostat;
PROMPT
PROMPT 3.1����ѯundo������Ϣ
COL undob FORMAT 99990;
COL trans FORMAT 99990;
COL snapshot2old FORMAT 9999999990;
SELECT undoblks "UndoB", txncount "Trans"
,maxquerylen "LongestQuery", maxconcurrency "MaxConcurrency"
,ssolderrcnt "Snapshot2Old", nospaceerrcnt "FreeSpaceWait"
FROM v$undostat
/
PROMPT
PROMPT 3.1����ѯrollback ����ϸ��Ϣ(�������,�չ����,ƽ�������
�����)
COL n.name FORMAT a6;
SELECT n.name "RBS", s.extends "Extends", s.shrinks "Shrinks"
,s.wraps "Wraps", s.aveshrink "AveShrink"
,s.aveactive "AveActive"
FROM v$rollname n JOIN v$rollstat s USING(usn)
WHERE n.name != 'SYSTEM'
/
PROMPT
PROMPT 3.1����ѯ��ǰrollback segmentʹ�����
COL n.name FORMAT a8;
SELECT n.name "RBS", s.status, s.waits, s.gets, to_char(s.writes,'9999999999999')
,s.xacts "Active Trans"
FROM v$rollname n JOIN v$rollstat s USING(usn)
WHERE n.name != 'SYSTEM'
/
PROMPT
PROMPT 3.1����ѯʹ��rollback segmentʱ�ȴ����
SELECT ROUND(SUM(waits/gets)*100,2)||'%' "Contention" FROM
v$rollstat
/
PROMPT
PROMPT 3.1����ѯʹ��rollback segmentʱ�ȴ���ʼ���ƽ�ֻ�
������
�����
COL contention FORMAT 9999999990;
SELECT AVG(xacts) "Trans per RBS"
,ROUND(SUM(waits/gets)*100,2)||'%' "Contention"
FROM v$rollstat
/
PROMPT
PROMPT 24 ����i/o
PROMPT ------------------------------
PROMPT
PROMPT
PROMPT 4.1 ���رռ��i/o����1
set linesize 250
col name format a10
col file format a40
col pyw format 99999999999999
col pyr format 99999999999999
col pbw format 99999999999999
col pbr format 99999999999999
select df.tablespace_name name,df.file_name "file",f.phyrds pyr,
f.phyblkrd pbr,f.phywrts pyw, f.phyblkwrt pbw from v$filestat f, dba_data_files df
where f.file# = df.file_id
order by df.tablespace_name
/
PROMPT
PROMPT 4.1 ��� sga ��������������������־ʣ�Ӧ��С��1%
set linesize 240
col name format a10
select name,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
from v$latch
where name in ('redo allocation', 'redo copy')
/
PROMPT
PROMPT 4.1 ������ڴӲ�̵�������ʣ����ʹ��С�� .10����� sort_area_size
set linesize 240
col name format a8
col name format 99999999999999
select name, value from v$sysstat where name in ('sorts (memory)', 'sorts (disk)')
and rownum <=5
/
PROMPT
PROMPT 4.1 ��Ƭ�̶�
set linesize 250
select tablespace_name,count(tablespace_name) from dba_free_space group by
tablespace_name having count(tablespace_name)>10
/
PROMPT
PROMPT 4.1 segmentʹ�����
set linesize 250
COL username FORMAT a10;
COL segtype FORMAT a10;
SELECT username, segtype, extents "Extents Allocated"
,blocks "Blocks Allocated"
FROM v$tempseg_usage
/
PROMPT
PROMPT 4.1 temporary segmentʹ����� �鿴����ļ���Ϣ,���ļ��϶���Ը����Ҫ�ֶν������� ���top
10
set linesize 240
col datafile format a20
SELECT fs.phyrds "Reads", fs.phywrts "Writes"
,fs.avgiotim "Average I/O Time", df.name "Datafile"
FROM v$datafile df, v$filestat fs WHERE df.file# = fs.file#
and rownum <=10 order by fs.phyrds
/
PROMPT
PROMPT �鿴��������ļ�i/o���,���ļ�̫��,���Ը�дΪtop 10
set linesize 250
COL ts FORMAT a10 HEADING "Tablespace";
COL reads FORMAT 999999999;
COL writes FORMAT 999999999;
COL br FORMAT 999999999 HEADING "BlksRead";
COL bw FORMAT 999999999 HEADING "BlksWrite";
COL rtime FORMAT 999999999;
COL wtime FORMAT 999999999;
SELECT ts.name AS ts, fs.phyrds "Reads", fs.phywrts "Writes"
,fs.phyblkrd AS br, fs.phyblkwrt AS bw
,fs.readtim "RTime", fs.writetim "WTime"
FROM v$tablespace ts, v$datafile df, v$filestat fs
WHERE ts.ts# = df.ts# AND df.file# = fs.file#
UNION
SELECT ts.name AS ts, ts.phyrds "Reads", ts.phywrts "Writes"
,ts.phyblkrd AS br, ts.phyblkwrt AS bw
,ts.readtim "RTime", ts.writetim "WTime"
FROM v$tablespace ts, v$tempfile tf, v$tempstat ts
WHERE ts.ts# = tf.ts# AND tf.file# = ts.file# and rownum <=10 ORDER BY 1
/
PROMPT
PROMPT 4.2����ʹ��CPU����û�session ,cpu used by this session
set linesize 250
col PROG format a38
col OSUSER format a10
select a.sid,spid,status,substr(a.program,1,40) prog,a.terminal,osuser,value/60/100
value
from v$session a,v$process b,v$sesstat c
where c.statistic#=12 and c.sid=a.sid and a.paddr=b.addr
and rownum <=10
order by value desc;
PROMPT
PROMPT 25��activity session or sql statment
PROMPT ==============================
PROMPT 5.1���鿴���й��SQL��䣺
set linesize 250
SELECT SQL_TEXT FROM V$SQL where rownum <=10
PROMPT
PROMPT 5.2�����log_buffer��ʹ�����ֵ���С��1%���������log_buffer �Ĵ�С)
set linesize 250
select rbar.name,rbar.value,re.name,re.value,(rbar.value*100)/re.value||'%' "radio"
from v$sysstat rbar,v$sysstat re
where rbar.name='redo buffer allocation retries'
and re.name='redo entries';
PROMPT
PROMPT 5.2��������sql
Select a.sid, --�ỰID
a.serial#, --�Ựserial#
a.status, --�Ự̬״
a.last_call_et as "Seconds", --�Ự����ʱ��
a.username, --����Ự��oracle�û�
a.machine, --����Ự�Ĺ���վ
a.osuser, --����Ự�IJ���ϵͳ�û�
a.program, --����Ự�Ŀͻ�����
b.piece, --SQL�����к�
b.sql_text as "SQL" --�û�����ִ�е�sql���
from sys.v_$session a,sys.v_$sqltext b
where a.username is not null and a.last_call_et > 600 and
b.hash_value(+)=a.sql_hash_value and rownum <=10 order by a.sid,a.serial#,b.piece;
PROMPT
PROMPT 5.2�� ��ʱ�����лỰ��Ϣ��ȱʡ600�룬���ģ� (���ʱ��: "xdate")
prompt ��ʱ����͵ȴ���ĻỰ��Ϣ��ȱʡ600�룬���ģ� (���ʱ��: "xdate")
set linesize 250
Select 'Waiting' as "STATUS", --�ȴ���Դ�ĻỰ
a.sid,a.serial#,a.status as "SESSION_STATUS",
a.last_call_et as "Seconds", --�ȴ�����ʱ��
c.owner||'.'||c.object_name as "OBJECT",
a.username,a.machine,a.osuser,a.program
from sys.v_$session a,
dba_objects c,
sys.v_$Locked_object d
where a.username is not null and
a.last_call_et > 1 and
a.lockwait is not null and
d.session_id(+)=a.sid and
c.object_id = d.object_id
union
Select 'Locking' as "STATUS", --����סԴ�ĻỰ
a.sid,a.serial#,a.status as "SESSION_STATUS",
a.last_call_et as "Seconds", --��������ʱ��
c.owner||'.'||c.object_name as "OBJECT", --�����סĶ���
a.username,a.machine,a.osuser,a.program
from sys.v_$session a,
dba_objects c,
sys.v_$Locked_object d
where a.username is not null and
a.last_call_et > 1 and
a.lockwait is null and
d.session_id(+)=a.sid and
c.object_id = d.object_id
order by status,sid,serial#,object;
PROMPT
PROMPT 5.2�� ���� sql
set linesize 250
select object_name ,machine ,
s.program ,s.sid,s.serial#,p.spid as
from v$locked_object l,dba_objects o ,v$session s ,v$process p
where l.object_id=o.object_id
and l.session_id=s.sid
and s.paddr=p.addr;
PROMPT
PROMPT 5.2�� ˭����˭��ڵ
set linesize 250
SELECT a.inst_id,
b.sid,
b.SERIAL#,
c.spid,
'alter system kill session ''' || b.sid || ',' || b.SERIAL# || ''';',
DECODE(a.request, 0, 'Holder: ', 'Waiter: ') || a.sid sess,
a.id1,
a.id2,
a.lmode,
a.request,
a.type,
b.EVENT,
b.P1TEXT,
b.p1,
b.p2text,
b.p2,
b.P3TEXT,
b.p3,
b.STATUS,
b.machine,
b.taddr
FROM gV$LOCK a, gv$session b, gv$process c
WHERE (a.id1, a.id2, a.type) IN
(SELECT c.id1, c.id2, c.type FROM gV$LOCK c WHERE c.request > 0)
and a.INST_ID = b.INST_ID
and a.SID = b.SID
and b.INST_ID = c.INST_ID(+)
and b.PADDR = c.ADDR(+)
ORDER BY a.id1, a.request
PROMPT
PROMPT 5.2�� ��ȡtop 10 ��segment
set linesize 250
col objct_name for a30
select * from
(select
ob.owner, ob.object_name, sum(b.tch) Touchs
from x$bh b , dba_objects ob
where b.obj = ob.data_object_id
and b.ts# > 0
group by ob.owner, ob.object_name
order by sum(tch) desc)
where rownum <=10
PROMPT
PROMPT 5.1 ����������object
set linesize 250
select * from (select owner,object_name,value from v$segment_statistics where
statistic_name='physical reads' order by value desc) w
here rownum<=10
PROMPT
PROMPT 5.1 �鿴�ȵ�����ļ�(�ӵ����ȡʱ���ж�)
set linesize 250
SELECT t.file_name,
t.tablespace_name,
round(s.singleblkrdtim / s.singleblkrds, 2) AS CS,
s.READTIM,
s.WRITETIM
FROM v$filestat s, dba_data_files t
WHERE s.file# = t.file_id and rownum<=10 order by cs desc
PROMPT
PROMPT 5.1 ��redo ������־л�Ƶ��
set linesize 250
select sequence#,to_char(first_time,'yyyymmdd_hh24:mi:ss')
firsttime,round((first_time-lag(first_time) over(order by first_time))*24
*60,2) minutes from v$log_history where first_time > sysdate - 1 order by
first_time ,minutes;
PROMPT
PROMPT 5.1 ���lgwr i/o���� (time_waited/total_waits����ʾƽ��lgwrд�����ʱ��
��>1��ʾд�����)
set linesize 250
select total_waits,time_waited,average_wait,time_waited/total_waits as avg from
v$system_event where event = 'log file parallel writ
e';
PROMPT
PROMPT ��ʮ�塢���ͽ���
PROMPT
prompt
prompt #��ѯ��������library cache�У���������ִ�д�������sql(����*ִ��)
set linesize 250
COL sql_text FORMAT A90;
SELECT * FROM(
SELECT parse_calls*executions "Product", parse_calls
"Parses"
,executions "Execs", sql_text FROM v$sqlarea ORDER BY 1 DESC)
WHERE ROWNUM <= 10;
prompt
prompt #�鿴 shared pool��,row cache��ϸ��Ϣ
set linesize 250
SELECT COUNT "Entries", GETS "Requests", GETMISSES "Misses"
,MODIFICATIONS "DML Activity", parameter "Area"
FROM v$rowcache;
prompt
prompt #�鿴 shared pool����
set linesize 250
SELECT (SELECT ROUND(value/1024/1024,0) FROM v$parameter
WHERE name = 'shared_pool_size') "Current Mb"
, shared_pool_size_for_estimate "Projected Mb"
, ROUND(shared_pool_size_factor*100) "%"
, ESTD_LC_SIZE "Library Mb"
, ESTD_LC_TIME_SAVED "Parse Savings"
,to_char(ESTD_LC_MEMORY_OBJECT_HITS,'999999999999') "Hits"
FROM v$shared_pool_advice
ORDER BY 1;
prompt
prompt #�鿴 library cache �)���������(�������ڴ
set linesize 250
SELECT lc_namespace "Library"
,LC_INUSE_MEMORY_OBJECTS "Objects"
,LC_INUSE_MEMORY_SIZE "Objects Mb"
,LC_FREEABLE_MEMORY_OBJECTS "Freeable Objects"
,LC_FREEABLE_MEMORY_SIZE "Freeable Mb"
FROM v$library_cache_memory;
prompt
prompt �鿴 pga����
set linesize 250
SELECT (SELECT ROUND(value/1024/1024,0) FROM v$parameter
WHERE name = 'pga_aggregate_target') "Current Mb"
, ROUND(pga_target_for_estimate/1024/1024,0) "Projected Mb"
, ROUND(estd_pga_cache_hit_percentage) "%"
FROM v$pga_target_advice
ORDER BY 2;
prompt
prompt tabase read buffer cache hit ratio =1 � (physical reads / (db block gets +
consistent gets))
set linesize 250
SELECT to_char(value,'9999999999999'), name FROM V$SYSSTAT WHERE name IN
('physical reads', 'db block gets', 'consistent gets');
prompt
prompt #��ѯ���������ݿ
set linesize 250
SELECT 'Database Buffer Cache Hit Ratio ' "Ratio"
, ROUND((1-
((SELECT SUM(value) FROM V$SYSSTAT WHERE name = 'physical reads')
/ ((SELECT SUM(value) FROM V$SYSSTAT WHERE name = 'db block gets')
+ (SELECT SUM(value) FROM V$SYSSTAT WHERE name = 'consistent gets')
))) * 100)||'%' "Percentage"
FROM DUAL;
prompt
prompt #�鿴 cache������pool,�������
COL pool FORMAT a10;
SELECT a.name "Pool", a.physical_reads, a.db_block_gets
, a.consistent_gets
,(SELECT ROUND((1-(physical_reads / (db_block_gets + consistent_gets)))*100)
FROM v$buffer_pool_statistics
WHERE db_block_gets+consistent_gets != 0
AND name = a.name) "Ratio"
FROM v$buffer_pool_statistics a;
prompt
prompt # �鿴���ݿcache��keep����Щobject
set linesize 250
COL table_name FORMAT A16
COL index_name FORMAT A16
SELECT table_name AS "Table", NULL, buffer_pool, cache FROM
user_tables
WHERE buffer_pool != 'DEFAULT' OR TRIM(cache)='Y'
UNION
SELECT table_name, index_name, NULL, buffer_pool FROM
user_indexes
WHERE buffer_pool != 'DEFAULT'
ORDER BY 1, 2 NULLS FIRST;
prompt
prompt #��ѯrollback ����ϸ��Ϣ(�������,�չ����,ƽ�������
�����)
set linesize 250
COL n.name FORMAT a8;
SELECT n.name "RBS", s.extends "Extends", s.shrinks
"Shrinks"
,s.wraps "Wraps", s.aveshrink "AveShrink"
,s.aveactive "AveActive"
FROM v$rollname n JOIN v$rollstat s USING(usn)
WHERE n.name != 'SYSTEM';
prompt
prompt #��ѯ��ǰrollback segmentʹ�����
COL n.name FORMAT a8;
SELECT n.name "RBS", s.status, s.waits, s.gets, to_char(s.writes,'9999999999999')
,s.xacts "Active Trans"
FROM v$rollname n JOIN v$rollstat s USING(usn)
WHERE n.name != 'SYSTEM';
prompt
prompt ��ѯʹ��rollback segmentʱ�ȴ����
set linesize 250
SELECT ROUND(SUM(waits/gets)*100,2)||'%' "Contention" FROM
v$rollstat;
prompt
prompt ��ѯʹ��rollback segmentʱ�ȴ���ʼ���ƽ�ֻ�
������
�����
set linesize 250
COL contention FORMAT 9999999990;
SELECT AVG(xacts) "Trans per RBS"
,ROUND(SUM(waits/gets)*100,2)||'%' "Contention"
FROM v$rollstat;
prompt
prompt 27.�鿴��������ָ����Ϣ(�ȴ��¼�,latch��,����,����,indexʹ����)
prompt =================================
prompt �鿴�������ݿchain
set linesize 250
SELECT 'Chained Rows ' "Ratio"
, ROUND(
(SELECT SUM(value) FROM V$SYSSTAT
WHERE name = 'table fetch continued row')
/ (SELECT SUM(value) FROM V$SYSSTAT
WHERE name IN ('table scan rows gotten', 'table fetch by
rowid'))
* 100, 3)||'%' "Percentage"
FROM DUAL;
prompt
prompt ���)��������(����������ڴ
set linesize 250
SELECT 'Sorts in Memory ' "Ratio"
, ROUND(
(SELECT SUM(value) FROM V$SYSSTAT WHERE name = 'sorts (memory)')
/ (SELECT SUM(value) FROM V$SYSSTAT
WHERE name IN ('sorts (memory)', 'sorts (disk)')) * 100, 5)
||'%' "Percentage"
FROM DUAL;
prompt
prompt �����ļ�����ȡ���Զ��չ
set linesize 250
col file_name format a60
select file_name from
(SELECT file_name,BYTES,autoextensible FROM dba_data_files
UNION ALL
SELECT file_name,BYTES,autoextensible FROM DBA_TEMP_FILES)
t where autoextensible = 'YES'
ORDER BY BYTES DESC
/
prompt ����optimizer_index_caching��������Ϊ90����ǰֵΪ0
select * from v$parameter where name = 'optimizer_index_c
aching' and value = '0';
prompt
prompt ����optimizer_index_cost_adj��������Ϊ10��50����ǰֵΪ100��
select * from v$parameter where name = 'optimizer_
index_cost_adj' and value = '100';
prompt
prompt ����db_file_multiblock_read_count��������СһЩ����ǰֵΪ16
select * from v$parameter
where name = 'db_file_multiblock_read_count' and value > '16';
prompt
prompt ��Oracle9i�У�����PGA�Ĺ���ʽΪAUTO
select '��Oracle9i�У�����PGA�Ĺ���ʽΪAUTO��' from v$parameter
where name = 'workarea_size_policy' and value <> 'AUTO';
prompt
prompt racle9i�н���UNDO�Ĺ���ʽΪAUTO
select * from v$parameter
where name = 'undo_management' and value <> 'AUTO';
prompt
set heading on
prompt Ĭ�ϱ�ռ 䲻 ӦΪSYSTEM���û�
select username from dba_users
where default_tablespace = 'SYSTEM' and username not in ('SYS', 'OUTLN','SYSTEM');
prompt
PROMPT ϵͳ��ռ��з�SYS�Ķ���
select OWNER,SEGMENT_NAME,SEGMENT_TYPE--,
--decode(segment_type,
--'TABLE','alter table '||OWNER||'.'||SEGMENT_NAME||' MOVE TABLESPACE
&'||'TABLESPACE;' ,
--'INDEX','alter index '||OWNER||'.'||SEGMENT_NAME||' REBUILD TABLESPACE
&'||'TABLESPACE NOLOGGING;',
--null) SCRIPT
from dba_segments t
where t.tablespace_name = 'SYSTEM'
AND OWNER NOT IN ('SYS','OUTLN','SYSTEM','WMSYS')
/
PROMPT
PROMPT ======================================
PROMPT =========end end end end end =========
PROMPT ======================================
drop function olm_tts_remove_constants ;
drop olm_tts_table_constants ;
drop table olm_tts_t1;
drop procedure olm_tts_print_table;
PROMPT
PROMPT
spool off
exit
--ed &report_name