OraclegRAC巡检手册.doc
《OraclegRAC巡检手册.doc》由会员分享,可在线阅读,更多相关《OraclegRAC巡检手册.doc(8页珍藏版)》请在冰点文库上搜索。
数据库巡检
张浩
数据库检测
硬件机型
HPDL580G7
是否集群
是
系统实际用户数
10
数据库进程
进入操作系统,登陆Oracle用户,命令:
su-oracle
Process
进程情况
进入操作系统,登陆Oracle用户
命令:
ps-ef|grepora_
说明
Oracle11g后台进程
DBRM
说明:
数据库资源管理进程(Thedatabaseresourcemanagerprocess),负责设置资源计划和其他的资源管理的工作.
DIAG
说明:
数据库诊断进程(Thediagnosibilityprocess),负责维护管理各种用于诊断的转储文件,并执行oradebug命令。
DIA0
说明:
另一个数据库诊断进程,负责检测Oracle数据库中的挂起(hang)和死锁的处理。
PSP0
说明:
processspawner,用于产生oracle进程
SMCO
说明:
spacemanagementcoordinator,该进程负责空间管理协调管理工作,负责执行空间的分配和回收。
Wnnn
说明:
命名为W000,W001,W002.....,由smcO动态产生执行上述相关任务。
VKTM
说明:
virtualkeeperoftime,用于提供wall-clocktime,(每秒钟更新一次)。
提供每二十毫秒更新一次的
reference-timecounter,看起来有点类似计时器的功能。
GMON
说明:
用于维护asm磁盘组的磁盘之间的关系。
KATE
说明:
当ASM的磁盘离线的时候,该进程负责asm的元文件的io读写。
MARK
说明:
如果有向asm离线磁盘的missed写请求,该进程将ASM分配的单元的状态标记为stale
FBDA
说明:
涉及到flashback-data-archive新特性的一个进程,Theflashbackdataarchiverproces。
用于将"轨表"(tracked
tables)的历史数据进行归档。
当"轨表"上的事务提交以后,fbda进程负责将数据的前镜像保存到flashbackarchive区域。
该进程还负责flashback的数据归档的空间管理、分配、保留,跟踪trackedtransactions。
什么是"轨表"(trackedtables):
是指启用了flashbackarchive特性的表。
RMSn
说明:
TheOracleRACmanagementprocesses,负责执行OracleRAC的管理任务,比如RAC相关资源的创建和集群中新实例的
添加。
DSKM
说明:
Theslavediskmonprocess,负责oracle实例、asm实例和磁盘的管理进程之间的iofencing信息的交换。
如果
使用SAGE的存储,该进程还负责SAGE存储的一些信息的管理。
RAC进程
GSDglobalservicesdaemon全局服务守护进程
lockprocess(LCK)锁管理进程
DIAG:
DIAGNOSABILITYDAEMON失败进程的诊断信息捕获进程
OperatingSystem-Dependent(OSD)操作系统资源访问进程
LMS-GobalCacheServiceProcess全局缓存服务进程
LMD-GlobalEnqueueServiceDaemon全局查询服务守护进程
LMON-GlobalEnqueueServiceMonitor全局查询服务监视进程
LCK0-InstanceEnqueueProcess实例查询进程
进程状态
Space
使用情况
df-h
Listener
监听状态
命令:
lsnrctlstatus
配置正常
运行情况
命令:
sqlplus“/assysdba”
查看日志
命令:
More/u01/app/oracle/product/11.2.0/db_1/network/log/sqlnet.log
有错误才有日志
Tnsname
配置情况
标准配置
位置:
/u01/app/oracle/product/11.2.0/db_1/network/admin
运行情况
正常
查看状态
Tnspingtnsname(数据库实例名)
Alert
配置情况
标准配置
/u01/app/oracle/diag/rdbms///trace/alert_sid.log
运行情况
正常
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';
8/8