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",[Link] "TOTAL_SIZE",
[Link] "FREE_SIZE" ,
ceil(([Link]/[Link])*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 ([Link]/[Link])*100 desc
/
PROMPT
PROMPT ʮһ�����С��Ϣ
PROMPT ==============================
PROMPT ���ʹ��������exp��� � � � � � �ݣСԼ���ںϼƴ�С��
col total for 99999999999999999
select nvl([Link],'total') "user",
to_char(sum(bytes),'9999999,999,999,999') "used byte"
from dba_segments t
group by rollup([Link])
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 [Link] = [Link]
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 [Link],
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 [Link]=[Link]
and [Link] 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/[Link]) "buffer/exes",
[Link] "executs",t.SQL_TEXT
from v$sql t where [Link] > 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 [Link]=[Link]
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
[Link],
sql.sql_text,
[Link]
from v$session sess,
v$sqlarea sql,
v$sort_usage sort1
where
[Link]# = sort1.session_num
and [Link] = [Link]
and [Link] = sql.hash_value
and [Link] > 200
order by [Link] asc
/
PROMPT
PROMPT 5��SGA������
PROMPT cache hitҪ����90%--libraryҪ����95%--rowcacheҪ����85%
select * from
(SELECT 1 - ([Link])/( ([Link] + [Link])) "data
cache ratio"
FROM v$sysstat cur, v$sysstat con, v$sysstat phy,v$sysstat phyd
WHERE [Link] = 'db block gets' AND [Link] = 'consistent gets'
AND [Link] = 'physical reads' and [Link] = '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 [Link] "Disk Sorts",
[Link] "Memory Sorts",
round((100 * [Link]) /
decode(([Link] + [Link]), 0, 1, ([Link] + [Link])),
2) "Pct Memory Sorts"
from v$sysstat a, v$sysstat b
where [Link] = 'sorts (disk)'
and [Link] = 'sorts (memory)'
/
prompt
prompt 7���鿴����ݿеı���,ij����ĸ�session��
set linesize 250
select
[Link],a.object_name,[Link],[Link],[Link],b.session_id,b.oracle_username,
b.os_user_name,[Link],b.locked_mode,[Link],[Link],[Link],[Link],[Link]#,
[Link]
from all_objects a,v$locked_object b,sys.gv_$session c
where ( a.object_id = b.object_id ) and ([Link] = [Link] ) 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 =[Link] 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([Link] / [Link], 2) AS CS, [Link], [Link]
FROM v$filestat s, dba_data_files t
WHERE [Link]# = 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
[Link] = [Link]
/
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 [Link]=[Link] 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 [Link] FORMAT a6;
SELECT [Link] "RBS", [Link] "Extends", [Link] "Shrinks"
,[Link] "Wraps", [Link] "AveShrink"
,[Link] "AveActive"
FROM v$rollname n JOIN v$rollstat s USING(usn)
WHERE [Link] != 'SYSTEM'
/
PROMPT
PROMPT 3.1����ѯ��ǰrollback segmentʹ�����
COL [Link] FORMAT a8;
SELECT [Link] "RBS", [Link], [Link], [Link], to_char([Link],'9999999999999')
,[Link] "Active Trans"
FROM v$rollname n JOIN v$rollstat s USING(usn)
WHERE [Link] != '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",[Link] pyr,
[Link] pbr,[Link] pyw, [Link] pbw from v$filestat f, dba_data_files df
where [Link]# = 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 [Link] "Reads", [Link] "Writes"
,[Link] "Average I/O Time", [Link] "Datafile"
FROM v$datafile df, v$filestat fs WHERE [Link]# = [Link]#
and rownum <=10 order by [Link]
/
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 [Link] AS ts, [Link] "Reads", [Link] "Writes"
,[Link] AS br, [Link] AS bw
,[Link] "RTime", [Link] "WTime"
FROM v$tablespace ts, v$datafile df, v$filestat fs
WHERE [Link]# = [Link]# AND [Link]# = [Link]#
UNION
SELECT [Link] AS ts, [Link] "Reads", [Link] "Writes"
,[Link] AS br, [Link] AS bw
,[Link] "RTime", [Link] "WTime"
FROM v$tablespace ts, v$tempfile tf, v$tempstat ts
WHERE [Link]# = [Link]# AND [Link]# = [Link]# 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 [Link],spid,status,substr([Link],1,40) prog,[Link],osuser,value/60/100
value
from v$session a,v$process b,v$sesstat c
where [Link]#=12 and [Link]=[Link] and [Link]=[Link]
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 [Link],[Link],[Link],[Link],([Link]*100)/[Link]||'%' "radio"
from v$sysstat rbar,v$sysstat re
where [Link]='redo buffer allocation retries'
and [Link]='redo entries';
PROMPT
PROMPT 5.2��������sql
Select [Link], --�ỰID
[Link]#, --�Ựserial#
[Link], --�Ự̬״
a.last_call_et as "Seconds", --�Ự����ʱ��
[Link], --����Ự��oracle�û�
[Link], --����Ự�Ĺ���վ
[Link], --����Ự�IJ���ϵͳ�û�
[Link], --����Ự�Ŀͻ�����
[Link], --SQL�����к�
b.sql_text as "SQL" --�û�����ִ�е�sql���
from sys.v_$session a,sys.v_$sqltext b
where [Link] is not null and a.last_call_et > 600 and
b.hash_value(+)=a.sql_hash_value and rownum <=10 order by [Link],[Link]#,[Link];
PROMPT
PROMPT 5.2�� ��ʱ�����лỰ��Ϣ��ȱʡ600�룬���ģ� (���ʱ��: "xdate")
prompt ��ʱ����͵ȴ���ĻỰ��Ϣ��ȱʡ600�룬���ģ� (���ʱ��: "xdate")
set linesize 250
Select 'Waiting' as "STATUS", --�ȴ���Դ�ĻỰ
[Link],[Link]#,[Link] as "SESSION_STATUS",
a.last_call_et as "Seconds", --�ȴ�����ʱ��
[Link]||'.'||c.object_name as "OBJECT",
[Link],[Link],[Link],[Link]
from sys.v_$session a,
dba_objects c,
sys.v_$Locked_object d
where [Link] is not null and
a.last_call_et > 1 and
[Link] is not null and
d.session_id(+)=[Link] and
c.object_id = d.object_id
union
Select 'Locking' as "STATUS", --����סԴ�ĻỰ
[Link],[Link]#,[Link] as "SESSION_STATUS",
a.last_call_et as "Seconds", --��������ʱ��
[Link]||'.'||c.object_name as "OBJECT", --�����סĶ���
[Link],[Link],[Link],[Link]
from sys.v_$session a,
dba_objects c,
sys.v_$Locked_object d
where [Link] is not null and
a.last_call_et > 1 and
[Link] is null and
d.session_id(+)=[Link] 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 ,
[Link] ,[Link],[Link]#,[Link] 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=[Link]
and [Link]=[Link];
PROMPT
PROMPT 5.2�� ˭����˭��ڵ
set linesize 250
SELECT a.inst_id,
[Link],
[Link]#,
[Link],
'alter system kill session ''' || [Link] || ',' || [Link]# || ''';',
DECODE([Link], 0, 'Holder: ', 'Waiter: ') || [Link] sess,
a.id1,
a.id2,
[Link],
[Link],
[Link],
[Link],
b.P1TEXT,
b.p1,
b.p2text,
b.p2,
b.P3TEXT,
b.p3,
[Link],
[Link],
[Link]
FROM gV$LOCK a, gv$session b, gv$process c
WHERE (a.id1, a.id2, [Link]) IN
(SELECT c.id1, c.id2, [Link] FROM gV$LOCK c WHERE [Link] > 0)
and a.INST_ID = b.INST_ID
and [Link] = [Link]
and b.INST_ID = c.INST_ID(+)
and [Link] = [Link](+)
ORDER BY a.id1, [Link]
PROMPT
PROMPT 5.2�� ��ȡtop 10 ��segment
set linesize 250
col objct_name for a30
select * from
(select
[Link], ob.object_name, sum([Link]) Touchs
from x$bh b , dba_objects ob
where [Link] = ob.data_object_id
and [Link]# > 0
group by [Link], 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([Link] / [Link], 2) AS CS,
[Link],
[Link]
FROM v$filestat s, dba_data_files t
WHERE [Link]# = 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 [Link] "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 = [Link]) "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 [Link] FORMAT a8;
SELECT [Link] "RBS", [Link] "Extends", [Link]
"Shrinks"
,[Link] "Wraps", [Link] "AveShrink"
,[Link] "AveActive"
FROM v$rollname n JOIN v$rollstat s USING(usn)
WHERE [Link] != 'SYSTEM';
prompt
prompt #��ѯ��ǰrollback segmentʹ�����
COL [Link] FORMAT a8;
SELECT [Link] "RBS", [Link], [Link], [Link], to_char([Link],'9999999999999')
,[Link] "Active Trans"
FROM v$rollname n JOIN v$rollstat s USING(usn)
WHERE [Link] != '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