2024年1月14日发(作者:)
数据库巡检
张浩
数据库检测
硬件机型 HP DL580 G7
是否集群 是
系统实际用户数 10
数据库进程
进入操作系统,登陆Oracle用户,命令:su — oracle
进入操作系统,登陆Oracle用户
进程情况 命令:ps -ef|grep ora_
Oracle 11g后台进程
DBRM
说明: 数据库资源管理进程(The database resource manager
process),负责设置资源计划和其他的资源管理的工作。
DIAG
说明: 数据库诊断进程(The diagnosibility process),负责维护管理各种用于诊断的转储文件,并执行oradebug命令。
DIA0
说明: 另一个数据库诊断进程,负责检测Oracle数据库中的挂起(hang)和死锁的处理。
PSP0
说明: process spawner,用于产生oracle进程
SMCO
说明: space management coordinator,该进程负责空间管理协调管理工作,负责执行空间的分配和回收。
Wnnn
说明: 命名为W000,W001,W002..。。。,由smcO动态产生执行上述相关任务.
VKTM
说明: virtual keeper of time,用于提供wall-clock time,(每秒钟更新一次)。提供每二十毫秒更新一次的
reference—time counter,看起来有点类似计时器的功能。
GMON
说明: 用于维护asm磁盘组的磁盘之间的关系.
KATE
说明: 当ASM的磁盘离线的时候,该进程负责asm的元文件的io读写。
MARK
说明: 如果有向asm离线磁盘的missed 写请求,该进程将ASM分配的单元的状态标记为stale
FBDA
Process
说明
1 / 8
说明: 涉及到flashback—data—archive新特性的一个进程,The
flashback data archiver proces。用于将”轨表”(tracked
tables)的历史数据进行归档。当"轨表”上的事务提交以后,fbda进程负责将数据的前镜像保存到flashback archive区域.
该进程还负责flashback的数据归档的空间管理、分配、保留,跟踪tracked transactions.
什么是"轨表”(tracked tables): 是指启用了flashback archive特性的表。
RMSn
说明: The Oracle RAC management processes,负责执行Oracle RAC的管理任务,比如RAC相关资源的创建和集群中新实例的
添加。
DSKM
说明: The slave diskmon process , 负责oracle 实例、asm实例和磁盘的管理进程之间的io fencing 信息的交换.如果
使用SAGE的存储,该进程还负责SAGE存储的一些信息的管理.
RAC 进程
GSD global services daemon全局服务守护进程
lock process(LCK) 锁管理进程
DIAG:DIAGNOSABILITY DAEMON失败进程的诊断信息捕获进程
Operating System—Dependent(OSD) 操作系统资源访问进程
LMS — Gobal Cache Service Process 全局缓存服务进程
LMD - Global Enqueue Service Daemon全局查询服务守护进程
LMON—Global Enqueue Service Monitor全局查询服务监视进程
LCK0 — Instance Enqueue Process 实例查询进程
Space
进程状态
使用情况
df -h
监听状态
运行情况
命令:lsnrctl status
配置正常
Listener
命令:sqlplus “/as sysdba”
命令:
More /u01/app/oracle/product/11。2。0/db_1/network/log/sqlnet。log
有错误才有日志
标准配置
位置:/u01/app/oracle/product/11.2.0/db_1/network/admin
正常
Tnsping tnsname(数据库实例名)
标准配置
/u01/app/oracle/diag/rdbms/〈SID〉/ 查看日志 配置情况 Tnsname 运行情况 查看状态 Alert 2 / 8 配置情况 运行情况 正常 More alert_ CRS 服务运行情况 资源运行情况 运行情况 运行情况 crsctl check crs 检查crs的健康情况 crs_stat –t 用来查看RAC中各节点上resources的运行状况,Resources的属性等 ocrcheck 验证OCR的状态以及空间使用情况 crsctl query css votedisk Votingdisk 状态查询 # su — grid $ asmcmd ASMCMD> ls DATA/ ORA_DATA/ ASMCMD> lsdg ora_data OCR Voting Disk 运行情况 crs_stat —t | grep asm ASM 使用情况 数据库 su – oracle sqlplus “/as sysdba” 诊断结果及建议 数据库状select status from v$instance; 态 配置情况 Select * from v$parameter; DBstatus 运行情况 使用资源情况 使用情况 数据文件状态 控制文件状态 日志文件状态 正常 select * from v$resource_limit; select group_number,name,total_mb,free_mb from v$asm_diskgroup; select name,status from v$datafile; select status,name from v$controlfile; select group#,members,archived,status from v$log; ASM DBfile 3 / 8 表空间使set pagesize 50 用率 column "Tablespace” format a13 column "UsedMB” format 99,999,999 column ”FreeMB" format 99,999,999 column "Total MB” format 99,999,999 select fs。tablespace_name "Tablespace", (pace - fs。freespace) ”Used MB”, fs。freespace ”FreeMB”, pace ”Total MB”, round(100 * (fs。freespace / df。totalspace)) ”Pct Free” from (select tablespace_name, round(sum(bytes)/1048576) TotalSpace from dba_data_files group by tablespace_name ) df, (select tablespace_name, round(sum(bytes)/1048576) FreeSpace from dba_free_space group by tablespace_name ) fs where pace_name=pace_name order by ”Pct Free” / 运行情况 正常 select count(*) from v$session where status='ACTIVE'; Sessions 并发数 使用情况 select b。THREAD#,#,,,,ED,b。STATUS Redo from v$logfile a,v$log b where #=b。GROUP#; 配置情况 察看数据锁表有时候是瞬间的,长时间锁定的表才可能是死锁。 Performan库锁表 select l。*, , s。ACTION, _NAME from gv$locked_object l, gv_$session s, all_objects o ce where l。SESSION_ID=s。SID and o。OBJECT_ID=_ID 4 / 8 死锁 set linesize 200 column oracle_username for a16 column os_user_name for a12 column object_name for a30 SELECT l。xidusn, _id,l。oracle_username,_user_name,l。process, n_id,s。serial#, l。locked_mode,o。object_name FROM v$locked_object l,dba_objects o,v$session s where l。object_id = o。object_id and = l。session_id; select me||' '||t2。sid||' ’||t2。serial#||' ’||t2。logon_time||' '||t3。sql_text from v$locked_object t1,v$session t2,v$sqltext t3 where n_id= and t2。sql_address=t3。address order by _time; Selecteq_type"lock",total_req# ”gets",total_wait# ”waits”,cum_wait_time from v$enqueue_stat where total_wait#〉0; column username for a12 column program for a30 column event for a28 column p1text for a15 column p1 for 999,999,999,999,999 select s。username,m,,sw.p1text,sw。p1 from v$session s,v$session_wait sw where = and =’ACTIVE’ order by sw.p1; select event,p1 "File #”,p2 "Block #”,p3 "Reason Code” from v$session_wait order by event; where event = 'buffer busy waits’; select owner,segment_name,segment_type,file_id,block_id from dba_extents where file_id = &P1 and &P2 between block_id and block_id + blocks -1; column event for a35; column p1text for a40; select sid,event,p1,p1text from v$session_wait order by event; enqueue等待 等待事件 set linesize 200 RAC全局select * from v$event_name where NAME like 'gc%' and 等待事WAIT_CLASS=’Cluster'; 件 5 / 8 数据文件select name,rd pbr,wrt pbw,f。phyblkrd pyr,m,im IO from v$filestat f, v$dbfile fs where # = # order by 2,3,4 desc; 表空间IO select tablespace_name,sum(f。phyblkrd) pbr,sum(wrt) pbw,sum(rd) pyr,sum(m),sum(f。writetim) from v$filestat f, dba_data_files fs where f。file# = _id group by tablespace_name order by 2,3,4 desc; 长事务 set linesize 200 column name for a16 column username for a10 select ,b。xacts,,#,me,d。sql_text from v$rollname a,v$rollstat b,v$session c,v$sqltext d,v$transaction e where a。usn=b。usn and b。usn= and c。taddr=e。addr and c。sql_address=d。ADDRESS and _hashvalue=_value order by a。name,c。sid,; select sid,serial#,to_char(start_time,’yyyy-mm-dd hh24:mi:ss’) start_time,sofar,totalwork,(sofar/decode(totalwork,0,1,totalwork))*100 ratio,message from v$session_longops where message like '%RMAN%'; select sid,serial#,to_char(start_time,’yyyy—mm—dd hh24:mi:ss') start_time,sofar,totalwork,(sofar/decode(totalwork,0,1,totalwork))*100 ratio,message from v$session_longops where sofar <〉 totalwork; where (sofar/totalwork)*100 〈 100; 大事务 察看用户 sessionSelect count(*) from v$session; 如果session过多,察看select * from v$session,察看是什么程序 数量 6 / 8 归档的生set linesize 120 column begin_time for a26 成频率 column end_time for a26 select ,to_char(a。first_time,'yyyy-mm—dd hh24:mi:ss') begin_time, ,to_char(b。first_time,'yyyy—mm-dd hh24:mi:ss’) end_time, round((b。first_time — _time)*24*60,2) minutes from v$log_history a,v$log_history b where = +1; SELECT (1 - (SUM(DECODE(NAME, ’physical reads’, VALUE, 0)) / (SUM(DECODE(NAME, ’db block gets', VALUE, 0)) + SUM(DECODE(NAME, ’consistent gets', VALUE, 0))))) * 100 "缓冲区命中率" FROM V$SYSSTAT; SELECT name, gets, misses, immediate_gets, immediate_misses, 100 — Decode(gets,0,0,misses/(gets+misses))*100 ratio1, 100 - 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’); SELECT EXECUTIONS , DISK_READS, BUFFER_GETS, ROUND((BUFFER_GETS—DISK_READS)/BUFFER_GETS,2) Hit_radio, ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run, SQL_TEXT FROM V$SQLAREA WHERE EXECUTIONS>0 AND BUFFER_GETS 〉 0 AND (BUFFER_GETS—DISK_READS)/BUFFER_GETS < 0。8 ORDER BY 4 DESC; select sql_text,buffer_gets,executions,buffer_gets/executions from v$sqlarea where buffer_gets>1000000 order by 4 desc; 缓冲区命中率 重做日志命中率 低效SQL TOP SQL 7 / 8 临时表空间情况 SELECT me 用户名, se。sid, #, se。sql_address, e, se。program, su。tablespace, su。blocks*8192/1024/1024 "Used Space(M)”, e, su。contents FROM v$session se, v$sort_usage su WHERE se。saddr=su。session_addr; SELECT ,B。FIRST_TIME,A。FIRST_TIME,ROUND((A。FIRST__TIME)*24*60,2) MINATES FROM V$LOG_HISTORY A,V$LOG_HISTORY B WHERE =B。RECID +1 AND _TIME>SYSDATE — 20 AND ROUND((A。FIRST_TIME—B。FIRST_TIME)*24*60,2)〈30 ORDER BY A。FIRST_TIME DESC; SELECT OWNER,INDEX_NAME,INDEX_TYPE,TABLE_NAME,STATUS FROM DBA_INDEXES WHERE STATUS = 'UNUSABLE’; 在线日志情况 无效索引 8 / 8


发布评论