运行情况
正常
Morealert_sid。
log
CRS
服务运行情况
crsctlcheckcrs
检查crs的健康情况
资源运行情况
crs_stat–t
用来查看RAC中各节点上resources的运行状况,Resources的属性等
OCR
运行情况
ocrcheck
验证OCR的状态以及空间使用情况
Voting
Disk
运行情况
crsctlquerycssvotedisk
Votingdisk状态查询
ASM
运行情况
crs_stat-t|grepasm
使用情况
#su—grid
$asmcmd
ASMCMD>ls
DATA/
ORA_DATA/
ASMCMD>lsdgora_data
数据库
su–oracle
sqlplus“/assysdba”
诊断结果及建议
DBstatus
数据库状态
selectstatusfromv$instance;
配置情况
Select*fromv$parameter;
运行情况
正常
使用资源情况
select*fromv$resource_limit;
ASM
使用情况
selectgroup_number,name,total_mb,free_mbfromv$asm_diskgroup;
DBfile
数据文件状态
selectname,statusfromv$datafile;
控制文件状态
selectstatus,namefromv$controlfile;
日志文件状态
selectgroup#,members,archived,statusfromv$log;
表空间使用率
setpagesize50
column"Tablespace"formata13
column"UsedMB"format99,999,999
column"FreeMB"format99,999,999
column”TotalMB"format99,999,999
select
fs.tablespace_name"Tablespace”,
(df.totalspace-fs。
freespace)”UsedMB”,
fs.freespace”FreeMB”,
df。
totalspace"TotalMB”,
round(100*(fs。
freespace/df.totalspace))"PctFree”
from
(select
tablespace_name,
round(sum(bytes)/1048576)TotalSpace
from
dba_data_files
groupby
tablespace_name
)df,
(select
tablespace_name,
round(sum(bytes)/1048576)FreeSpace
from
dba_free_space
groupby
tablespace_name
)fs
wheredf.tablespace_name=fs。
tablespace_name
orderby"PctFree”
/
运行情况
正常
Sessions
并发数
selectcount(*)fromv$sessionwherestatus=’ACTIVE’;
Redo
使用情况
selectb。
THREAD#,a.GROUP#,a.STATUS,a。
MEMBER,b.BYTES,b.ARCHIVED,b。
STATUS
fromv$logfilea,v$logbwherea。
GROUP#=b.GROUP#;
Performance
配置情况
察看数据库锁表
锁表有时候是瞬间的,长时间锁定的表才可能是死锁。
selectl.*,s.OSUSER,s.ACTION,o.OBJECT_NAME
fromgv$locked_objectl,gv_$sessions,all_objectso
wherel。
SESSION_ID=s.SID
ando。
OBJECT_ID=l。
OBJECT_ID
死锁
setlinesize200
columnoracle_usernamefora16
columnos_user_namefora12
columnobject_namefora30
SELECTl。
xidusn,l。
object_id,l.oracle_username,l。
os_user_name,l。
process,
l.session_id,s.serial#,l.locked_mode,o。
object_name
FROMv$locked_objectl,dba_objectso,v$sessions
wherel。
object_id=o.object_idands.sid=l。
session_id;
selectt2.username||' '||t2。
sid||' ’||t2。
serial#||’ ’||t2。
logon_time||’ ’||t3.sql_text
fromv$locked_objectt1,v$sessiont2,v$sqltextt3
wheret1。
session_id=t2。
sid
andt2。
sql_address=t3。
address
orderbyt2。
logon_time;
enqueue等待
Selecteq_type”lock",total_req#”gets",total_wait#"waits”,cum_wait_timefromv$enqueue_statwheretotal_wait#>0;
等待事件
setlinesize200
columnusernamefora12
columnprogramfora30
columneventfora28
columnp1textfora15
columnp1for999,999,999,999,999
selects.username,s.program,sw。
event,sw.p1text,sw.p1fromv$sessions,v$session_waitsw
wheres.sid=sw。
sidands.status='ACTIVE’
orderbysw。
p1;
selectevent,p1"File#”,p2"Block#”,p3"ReasonCode"fromv$session_wait
orderbyevent;
whereevent=’bufferbusywaits’;
selectowner,segment_name,segment_type,file_id,block_idfromdba_extents
wherefile_id=&P1and&P2betweenblock_idandblock_id+blocks-1;
columneventfora35;
columnp1textfora40;
selectsid,event,p1,p1textfromv$session_waitorderbyevent;
RAC全局等待事件
select*fromv$event_namewhereNAMElike’gc%'andWAIT_CLASS='Cluster’;
数据文件IO
selectfs。
namename,f.phyblkrdpbr,f。
phyblkwrtpbw,f。
phyblkrdpyr,f。
readtim,f.writetim
fromv$filestatf,v$dbfilefs
wheref。
file#=fs.file#orderby2,3,4desc;
表空间IO
selecttablespace_name,sum(f.phyblkrd)pbr,sum(f.phyblkwrt)pbw,sum(f.phyblkrd)pyr,sum(f。
readtim),sum(f.writetim)
fromv$filestatf,dba_data_filesfs
wheref.file#=fs.file_id
groupbytablespace_name
orderby2,3,4desc;
长事务
setlinesize200
columnnamefora16
columnusernamefora10
selecta。
name,b.xacts,c。
sid,c.serial#,c.username,d.sql_text
fromv$rollnamea,v$rollstatb,v$sessionc,v$sqltextd,v$transactione
wherea。
usn=b。
usn
andb.usn=e。
XIDUSN
andc。
taddr=e。
addr
andc。
sql_address=d。
ADDRESS
andc。
sql_hashvalue=d.hash_value
orderbya.name,c.sid,d。
piece;
大事务
selectsid,serial#,to_char(start_time,’yyyy—mm—ddhh24:
mi:
ss’)start_time,sofar,totalwork,(sofar/decode(totalwork,0,1,totalwork))*100ratio,messagefromv$session_longops
wheremessagelike'%RMAN%’;
selectsid,serial#,to_char(start_time,’yyyy-mm-ddhh24:
mi:
ss’)start_time,sofar,totalwork,(sofar/decode(totalwork,0,1,totalwork))*100ratio,messagefromv$session_longops
wheresofar<>totalwork;
where(sofar/totalwork)*100<100;
察看用户session数量
Selectcount(*)fromv$session;
如果session过多,察看select*fromv$session,察看是什么程序
归档的生成频率
setlinesize120
columnbegin_timefora26
columnend_timefora26
selecta.recid,to_char(a。
first_time,'yyyy—mm—ddhh24:
mi:
ss')begin_time,
b。
recid,to_char(b。
first_time,'yyyy-mm-ddhh24:
mi:
ss’)end_time,
round((b。
first_time-a。
first_time)*24*60,2)minutes
fromv$log_historya,v$log_historyb
whereb.recid=a。
recid+1;
缓冲区命中率
SELECT(1—(SUM(DECODE(NAME,'physicalreads',VALUE,0))/
(SUM(DECODE(NAME,’dbblockgets',VALUE,0))+
SUM(DECODE(NAME,’consistentgets',VALUE,0)))))*100
"缓冲区命中率”
FROMV$SYSSTAT;
重做日志命中率
SELECTname,gets,misses,immediate_gets,immediate_misses,
100-Decode(gets,0,0,misses/(gets+misses))*100ratio1,
100-Decode(immediate_gets+immediate_misses,0,0,immediate_misses/(immediate_gets+immediate_misses))*100ratio2
FROMv$latchWHEREnameIN(’redoallocation',’redocopy');
低效SQL
SELECTEXECUTIONS,DISK_READS,BUFFER_GETS,
ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2)Hit_radio,
ROUND(DISK_READS/EXECUTIONS,2)Reads_per_run,
SQL_TEXT
FROMV$SQLAREA
WHEREEXECUTIONS〉0
ANDBUFFER_GETS>0
AND(BUFFER_GETS—DISK_READS)/BUFFER_GETS〈0。
8
ORDERBY4DESC;
TOPSQL
selectsql_text,buffer_gets,executions,buffer_gets/executions
fromv$sqlareawherebuffer_gets〉1000000orderby4desc;
临时表空间情况
SELECTse。
username用户名,
se。
sid,
se.serial#,
se.sql_address,
se。
machine,
se.program,
su.tablespace,
su。
blocks*8192/1024/1024"UsedSpace(M)”,
su.segtype,
su.contents
FROMv$sessionse,
v$sort_usagesu
WHEREse。
saddr=su.session_addr;
在线日志情况
SELECTB。
RECID,B。
FIRST_TIME,A。
FIRST_TIME,ROUND((A。
FIRST_TIME—B。
FIRST_TIME)*24*60,2)MINATES
FROMV$LOG_HISTORYA,V$LOG_HISTORYB
WHEREA.RECID=B.RECID+1ANDA.FIRST_TIME〉SYSDATE-20ANDROUND((A.FIRST_TIME—B.FIRST_TIME)*24*60,2)〈30
ORDERBYA。
FIRST_TIMEDESC;
无效索引
SELECTOWNER,INDEX_NAME,INDEX_TYPE,TABLE_NAME,STATUSFROMDBA_INDEXES
WHERESTATUS='UNUSABLE';