oracle11巡检脚本,oracle巡检脚本

# ---------------------------------------------------- #

#                      系统负载                        #

# ---------------------------------------------------- #

top -n1|head -20

netstat -apn|wc -l

netstat -pn -l|grep 1521 -c

df -h

# ---------------------------------------------------- #

#                      检测实例                        #

# ---------------------------------------------------- #

ps -ef|grep ora_.mon |grep -v grep

ps -ef|egrep "_pmon_|_smon_|_arc._|_dbw._|_lgwr_|_ckpt_" |egrep -v egrep

# ---------------------------------------------------- #

#                      检测监听                        #

# ---------------------------------------------------- #

netstat -pn -l -t|grep 1521|grep -v grep

ps -ef|grep tnslsnr|grep -v grep

# ---------------------------------------------------- #

#                   检测Alert日志                      #

# ---------------------------------------------------- #

sed -n "/`date -d "-3 day" +"%a %b %e"`/,$"p ${ORACLE_BASE}/admin/${ORACLE_SID}/bdump/alert_${ORACLE_SID}.log |grep ORA- -B 2 -A 5

# ---------------------------------------------------- #

#                   查询数据库状态                     #

# ---------------------------------------------------- #

column PLATFORM_NAME format a30

column DB_UNIQUE_NAME format a20

select DBID,NAME,DB_UNIQUE_NAME,to_char(CREATED,'yyyy-mm-dd') CREATD,

to_char(RESETLOGS_TIME,'yyyy-mm-dd') RSTIME,

LOG_MODE,OPEN_MODE,

DATABASE_ROLE DB_ROLE,

GUARD_STATUS DGSTAT,

PLATFORM_NAME,

FLASHBACK_ON

from v$database;

# ---------------------------------------------------- #

#                   表空间使用                         #

# ---------------------------------------------------- #

column name format a20

column "Used (M)" format a20

column "Free (MB)" format a20

SELECT d.status "Status", d.tablespace_name "Name", d.contents "Type", d.extent_management "Extent Management",

TO_CHAR(NVL(a.bytes/1024/1024, 0),'99,999,990.900') "Size (M)",

NVL(a.bytes -NVL(f.bytes, 0), 0)/1024/1024 ||'/'||NVL(a.bytes/1024/1024, 0) "Used (M)",

TO_CHAR(NVL((a.bytes -NVL(f.bytes, 0)) / a.bytes , 0)* 100, '990.00')||'%' "Used %" ,

nvl(f.bytes,0)/1024/1024||'/'||nvl(a.bytes/1024/1024,0) "Free (MB)",

to_char(nvl(nvl(f.bytes,0) / a.bytes,0)*100,'990.00')||'%' "Free (%)"

FROM sys.dba_tablespaces d,

(select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a,

(select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) f

WHERE d.tablespace_name = a.tablespace_name(+)

AND d.tablespace_name = f.tablespace_name(+)

AND NOT (d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY')

UNION ALL

SELECT d.status "Status",d.tablespace_name "Name", d.contents "Type", d.extent_management "Extent Management",

TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99,999,990.900') "Size (M)",

NVL(t.bytes, 0)/1024/1024||'/'||NVL(a.bytes/1024/1024, 0) "Used (M)",

TO_CHAR(NVL(t.bytes / a.bytes , 0)* 100, '990.00')||'%' "Used %",

(a.bytes-nvl(t.bytes,0))/1024/1024||'/'||nvl(a.bytes/1024/1024,0) "Free (MB)",

to_char(nvl((a.bytes-nvl(t.bytes,0)) / a.bytes,0)*100,'990.00')||'%' "Free (%)"

FROM sys.dba_tablespaces d,

(select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a,

(select tablespace_name, sum(bytes_cached) bytes from v$temp_extent_pool group by tablespace_name) t

WHERE d.tablespace_name = a.tablespace_name(+)

AND d.tablespace_name = t.tablespace_name(+)

AND d.extent_management like 'LOCAL'

AND d.contents like 'TEMPORARY';

# ---------------------------------------------------- #

#                   数据文件使用                       #

# ---------------------------------------------------- #

col file_name format a50

SELECT df.file_id, df.file_name, df.size_mb,

NVL (free.maxfree, 0) maxfree_mb,

ROUND (NVL (free.free_mb, 0), 2) free_mb,

100 - ROUND (100.0 * NVL (free.free_mb, 0) / df.size_mb, 2) pct_used,

ROUND (100.0 * NVL (free.free_mb, 0) / df.size_mb, 2) pct_free,

df.status

FROM (SELECT file_id, file_name, tablespace_name, BYTES / 1048576 size_mb,status

FROM dba_data_files) df,

(SELECT   file_id, SUM (BYTES) / 1048576 free_mb,

TRUNC (MAX (BYTES / 1024 / 1024), 2) maxfree

FROM dba_free_space

GROUP BY file_id) free

WHERE df.file_id = free.file_id(+)

ORDER BY 2;

# ---------------------------------------------------- #

#                   等待事件                           #

# ---------------------------------------------------- #

select event, sum(seconds_in_wait) "wait time(s)",count(sid) "count" from v$session_wait group by event;

# ---------------------------------------------------- #

#                   引起等待事件的语句                 #

# ---------------------------------------------------- #

select s.sql_text, sw.event

from v$session b,v$session_wait sw,v$sqltext s

where b.sid=sw.sid

and sw.event not like '%SQL*Net%'

and sw.EVENT NOT LIKE 'rdbms%'

and s.hash_value=b.sql_hash_value

and s.sql_id=b.sql_id

order by s.address,s.piece;

# ---------------------------------------------------- #

#                   redo log    切换频率               #

# ---------------------------------------------------- #

SELECT   TO_CHAR (first_time, 'yyyy-mm-dd') DAY, COUNT (*) switch_times, SUM (DECODE (TO_CHAR (first_time, 'hh24'), '00', 1, 0)) h00, SUM (DECODE (TO_CHAR (first_time, 'hh24'), '01', 1, 0)) h01, SUM (DECODE (TO_CHAR (first_time, 'hh24'), '02', 1, 0)) h02, SUM (DECODE (TO_CHAR (first_time, 'hh24'), '03', 1, 0)) h03, SUM (DECODE (TO_CHAR (first_time, 'hh24'), '04', 1, 0)) h04, SUM (DECODE (TO_CHAR (first_time, 'hh24'), '05', 1, 0)) h05, SUM (DECODE (TO_CHAR (first_time, 'hh24'), '06', 1, 0)) h06, SUM (DECODE (TO_CHAR (first_time, 'hh24'), '07', 1, 0)) h07, SUM (DECODE (TO_CHAR (first_time, 'hh24'), '08', 1, 0)) h08,

SUM (DECODE (TO_CHAR (first_time, 'hh24'), '09', 1, 0)) h09,

SUM (DECODE (TO_CHAR (first_time, 'hh24'), '10', 1, 0)) h10,

SUM (DECODE (TO_CHAR (first_time, 'hh24'), '11', 1, 0)) h11,

SUM (DECODE (TO_CHAR (first_time, 'hh24'), '12', 1, 0)) h12,

SUM (DECODE (TO_CHAR (first_time, 'hh24'), '13', 1, 0)) h13,

SUM (DECODE (TO_CHAR (first_time, 'hh24'), '14', 1, 0)) h14,

SUM (DECODE (TO_CHAR (first_time, 'hh24'), '15', 1, 0)) h15,

SUM (DECODE (TO_CHAR (first_time, 'hh24'), '16', 1, 0)) h16,

SUM (DECODE (TO_CHAR (first_time, 'hh24'), '17', 1, 0)) h17,

SUM (DECODE (TO_CHAR (first_time, 'hh24'), '18', 1, 0)) h18,

SUM (DECODE (TO_CHAR (first_time, 'hh24'), '19', 1, 0)) h19,

SUM (DECODE (TO_CHAR (first_time, 'hh24'), '20', 1, 0)) h20,

SUM (DECODE (TO_CHAR (first_time, 'hh24'), '21', 1, 0)) h21,

SUM (DECODE (TO_CHAR (first_time, 'hh24'), '22', 1, 0)) h22,

SUM (DECODE (TO_CHAR (first_time, 'hh24'), '23', 1, 0)) h23

FROM v$log_history

WHERE first_time > TRUNC (SYSDATE - 1)

GROUP BY ROLLUP (TO_CHAR (first_time, 'yyyy-mm-dd'));

# ---------------------------------------------------- #

#                   redo log    缓冲区                 #

# ---------------------------------------------------- #

期望结果:应该小于5%。

巡检说明:由于数据库的所有DML和DLL操作在执行之前必须在重做日志缓冲区生成一条记录,故重做日志缓冲区内的竞争将严重影响数据库的性能。在重做日志缓冲区内的竞争主要有两类,latch竞争和过量请求竞争。

SELECT    TO_CHAR (ROUND ((r.VALUE / e.VALUE) * 100, 2), '990.99' ) || '%' "redolog buffer retry ratio" FROM v$sysstat r, v$sysstat e WHERE r.NAME = 'redo buffer allocation retries' AND e.NAME = 'redo entries';

# ---------------------------------------------------- #

#                   检查无效的对象                     #

# ---------------------------------------------------- #

select owner,object_id,object_name,object_type,status from dba_objects where owner in ( 'SMS', 'MMS', 'WAP', 'UNINET', 'SYS', 'SYSTEM')  and status != 'VALID' order by owner;

SELECT object_id, owner || '.' || object_name object_name, object_type, status, TO_CHAR (created, 'yy-mm-dd hh24:mi:ss') created, TO_CHAR (last_ddl_time, 'yyyy-mm-dd hh24:mi:ss') last_ddl_time FROM all_objects WHERE status != 'VALID';

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值