Oracle数据库巡检

打印 上一主题 下一主题

主题 536|帖子 536|积分 1608

数据库巡检列表

序号业务系统1主机名2操纵系统4单机/RAC4IP地点5地点类型6数据类型7数据库版本8实例名 巡检方案

查抄方面详细查抄内容查抄标准集群设置集群软件版本集群软件版本要等于或高于DB软件版本集群服务状态各种服务状态(除GSD外)需是ONLINE
注:利用asf for rac的环境下ASM资源无需ONLINEOCR/Votedisk查抄OCR及Votedisk状态正常数据库设置数据库版本建议利用未END SERVICE的版本数据库参数满足当前业务性能及可用性需求运行日志和跟踪文件无非常错误(重点关注600,7445错误)控制文件查抄状态是否正常Redo log文件查抄状态是否正常数据文件数据文件在利用裸设备时,不开启自动扩展无效对象查抄数据库中是否有无效对象。表空间表空间利用本地管理,同时利用率不高于90%Resource Limit分析查抄 processes和 sessions是否到达过最大限定。数据库简单性能评估高峰期等待事件同一时间、同一用户、同一个操纵发的等待不得凌驾20个数据库IO响应时间建议数据文件的读写响应时间不得凌驾10毫秒 操纵系统巡检

查抄主机名

  1. hostname
复制代码
查抄linux服务器的操纵系统的版本

  1. cat /etc/redhat-release
复制代码
查看磁盘空间利用环境

  1. df -hT
  2. df -ih
复制代码
查看空闲内存

  1. free -h
复制代码
查看内核/操纵系统/CPU信息

  1. uname -a
复制代码
查看环境变量

  1. env
复制代码
查看系统运行时间、用户数、负载

  1. uptime -p
复制代码
查看全部进程

  1. ps -ef | grep oracle
复制代码
实时显示进程状态

  1. top  
复制代码
查看全部用户的定时任务

  1. crontab -l
复制代码
监控系统设备的IO负载环境

  1. iostat -xm 1 10
复制代码
Oracle集群巡检

集群设置

序号集群类型(standalone/rac)集群版本PSU补丁版本集群节点数12 RAC集群的巡检

查抄集群服务状态

查抄CRS

  1. su - grid
  2. $ORACLE_HOME/bin/crsctl status resource -t
  3. $ORACLE_HOME/bin/crsctl check crs
复制代码
查抄votedisk

  1. $ORACLE_HOME/bin/crsctl query css votedisk
复制代码
查抄nodeapps

  1. $ORACLE_HOME/bin/srvctl status nodeapps
复制代码
查抄ASM

  1. $ORACLE_HOME/bin/srvctl status asm
复制代码
查抄OCR

  1. $ORACLE_HOME/bin/ocrcheck
复制代码
查抄res

  1. $ORACLE_HOME/bin/crsctl stat res -t
复制代码
查看视图$asm_diskgroup内里的的日志状态信息

  1. select name, total_mb, free_mb, USABLE_FILE_MB, TYPE from gv$asm_diskgroup;
复制代码
集群日志分析

  1. #CRS日志
  2. $GRID_HOME/log/HOSTNAME/crsd/crsd.log
  3. #CSS日志
  4. $GRID_HOME/log/HOSTNAME/cssd/ocssd.log
  5. #集群中ALERT文件
  6. $GRID_HOME/log/HOSTNAME/alert(HOSTNAME).log
复制代码
Oracle数据库的巡检

收集数据库信息

数据库基本信息
序号全局数据库名数据库实例名数据库脚色12 数据库的补丁信息
序号数据库版本PSU补丁12 数据库巡检内容

数据库对象大小

  1. -- 1、实例总大小
  2. SELECT SUM(bytes)/1024/1024 AS "Total Size (MB)" FROM dba_segments;
  3. -- 2、表空间大小
  4. -- 查询方法1
  5. SELECT
  6.   d.tablespace_name "Name",
  7.   TO_CHAR(NVL(a.BYTES / 1024 / 1024, 0),'99,999,990.99') "Size (M)",
  8.   TO_CHAR(NVL(a.BYTES - NVL(f.BYTES, 0),0) / 1024 / 1024,'999999990.999') "USE (M)",
  9.   TO_CHAR(NVL((a.BYTES - NVL(f.BYTES, 0)) / a.BYTES * 100,0),'990.00') || '%' "USAGE RATE %",
  10.   TO_CHAR(NVL(f.BYTES / 1024 / 1024, 0),'99,999,990.99') "free (M)",
  11.   TO_CHAR(NVL(f.BYTES / a.BYTES * 100, 0),'99,999,990.99') || '%' "free %"
  12. FROM
  13.   SYS.dba_tablespaces d,
  14.   (SELECT tablespace_name,SUM(BYTES) BYTES FROM dba_data_files GROUP BY tablespace_name) a,
  15.   (SELECT tablespace_name,SUM(BYTES) BYTES FROM dba_free_space GROUP BY tablespace_name) f
  16. WHERE
  17.   d.tablespace_name = a.tablespace_name(+)
  18.   AND d.tablespace_name = f.tablespace_name(+)
  19.   AND NOT (d.extent_management LIKE 'LOCAL' AND d.CONTENTS LIKE 'TEMPORARY')
  20. UNION ALL
  21. SELECT
  22.   d.tablespace_name "Name",
  23.   TO_CHAR(NVL(a.BYTES / 1024 / 1024, 0),'99,999,990.99') "USE (M)",
  24.   TO_CHAR(NVL(t.BYTES, 0) / 1024 / 1024,'999999990.99') USE,
  25.   TO_CHAR(NVL(t.BYTES / a.BYTES * 100, 0),'990.99') || '%' "USAGE RATE %",
  26.   TO_CHAR(NVL((a.BYTES - t.BYTES) / 1024 / 1024,0),'99,999,990.99') "free (M)",
  27.   TO_CHAR(NVL(w.BYTES / a.BYTES * 100, 0),'99,999,990.99') || '%' "free %"
  28. FROM
  29.   SYS.dba_tablespaces d,
  30.   (SELECT tablespace_name,SUM(BYTES) BYTES FROM dba_temp_files GROUP BY tablespace_name) a,
  31.   (SELECT tablespace_name,(sum(tablespace_size) - sum(free_space)) BYTES
  32.   FROM DBA_TEMP_FREE_SPACE GROUP BY tablespace_name) t,
  33.   (SELECT tablespace_name,sum(free_space) BYTES FROM DBA_TEMP_FREE_SPACE GROUP BY tablespace_name) w
  34. WHERE
  35.   d.tablespace_name = a.tablespace_name(+)
  36.   AND d.tablespace_name = t.tablespace_name(+)
  37.   AND d.tablespace_name = w.tablespace_name(+)
  38.   AND d.extent_management LIKE 'LOCAL'
  39.   AND d.CONTENTS LIKE 'TEMPORARY';
  40. -- 查询方法2
  41. SELECT
  42.   D.TABLESPACE_NAME,
  43.   SPACE "SUM_SPACE(M)",
  44.   BLOCKS SUM_BLOCKS,
  45.   SPACE - NVL(FREE_SPACE, 0) "USED_SPACE(M)",
  46.   ROUND((1 - NVL(FREE_SPACE, 0) / SPACE) * 100,2) "USED_RATE(%)",
  47.   FREE_SPACE "FREE_SPACE(M)"
  48. FROM
  49.   (
  50.     SELECT
  51.       TABLESPACE_NAME,
  52.       ROUND(SUM(BYTES) / (1024 * 1024),2) SPACE,
  53.       SUM(BLOCKS) BLOCKS
  54.     FROM DBA_DATA_FILES
  55.     GROUP BY TABLESPACE_NAME
  56.   ) D,
  57.   (
  58.     SELECT
  59.       TABLESPACE_NAME,
  60.       ROUND(SUM(BYTES) / (1024 * 1024),2) FREE_SPACE
  61.     FROM DBA_FREE_SPACE
  62.     GROUP BY TABLESPACE_NAME
  63.   ) F
  64. WHERE
  65.   D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
  66. UNION ALL    --if have tempfile
  67. SELECT
  68.   D.TABLESPACE_NAME,
  69.   SPACE "SUM_SPACE(M)",
  70.   BLOCKS SUM_BLOCKS,
  71.   USED_SPACE "USED_SPACE(M)",
  72.   ROUND(NVL(USED_SPACE, 0) / SPACE * 100,2) "USED_RATE(%)",
  73.   NVL(FREE_SPACE, 0) "FREE_SPACE(M)"
  74. FROM
  75.   (
  76.     SELECT
  77.       TABLESPACE_NAME,
  78.       ROUND(SUM(BYTES) / (1024 * 1024),2) SPACE,
  79.       SUM(BLOCKS) BLOCKS
  80.     FROM DBA_TEMP_FILES
  81.     GROUP BY TABLESPACE_NAME
  82.   ) D,
  83.   (
  84.     SELECT
  85.       TABLESPACE_NAME,
  86.       ROUND(SUM(BYTES_USED) / (1024 * 1024),2) USED_SPACE,
  87.       ROUND(SUM(BYTES_FREE) / (1024 * 1024),2) FREE_SPACE
  88.     FROM V$TEMP_SPACE_HEADER
  89.     GROUP BY TABLESPACE_NAME
  90.   ) F
  91. WHERE
  92.   D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
  93. ORDER BY 5 DESC;
  94. -- 3、查询每个schema的大小
  95. SELECT
  96.     owner AS "Schema",
  97.     SUM(bytes) / 1024 / 1024 AS "Total Size (MB)"
  98. FROM
  99.     dba_segments
  100. GROUP BY owner;
  101. -- 4、按照表空间、schema分组查询
  102. select TABLESPACE_NAME,owner,sum(BYTES)/1024/1024 as "Total Size (MB)"
  103. from dba_segments
  104. group by TABLESPACE_NAME,owner
  105. order by 1,2;
  106. -- 5、查询指定schema下top大对象
  107. select OWNER,SEGMENT_NAME,SEGMENT_TYPE,BYTES/1024/1024 as "Total Size (MB)" from dba_segments
  108. where OWNER = 'SYS'
  109. order by BYTES desc;
复制代码
数据库信息

  1. select DB_UNIQUE_NAME,
  2.        INST_ID,
  3.        dbid,
  4.        name,
  5.        OPEN_MODE,
  6.        VERSION_TIME,
  7.        LOG_MODE,
  8.        DATABASE_ROLE,
  9.        PROTECTION_MODE,
  10.        CREATED
  11.   from gv$database;
复制代码
数据库实例信息

  1. set lin 500
  2. col HOST_NAME for a20;
  3. select HOST_NAME, STARTUP_TIME, STATUS, from gv$instance;
复制代码
数据库选件信息

  1. select parameter,value from gv$option;
复制代码
查看日志状态

  1. col member for a100
  2. set linesize 200
  3. select MEMBER from v$logfile;
  4. select group#, sequence#, bytes/(1024 * 1024 * 1024) GB, members, status, THREAD# from v$logfile;
复制代码
查抄数据库连接环境

  1. 查看当前会话连接数,是否属于正常范围。
  2. select count(*) from v$session;
复制代码
查看数据库参数

  1. show parameter spfile;
  2. select *
  3.   from gv$resource_limit
  4. where resource_name in ('processes', 'sessions');
复制代码
可以查看那些表的统计信息是否过期

  1. set linesize 150
  2. set pagesize 1000
  3. SELECT OWNER, TABLE_NAME, PARTITION_NAME,
  4.        OBJECT_TYPE, STALE_STATS, LAST_ANALYZED
  5.   FROM DBA_TAB_STATISTICS
  6. WHERE (STALE_STATS = 'YES' OR LAST_ANALYZED IS NULL)
  7.    LAST_ANALYZED IS NULL
  8.    AND OWNER NOT IN ('MDDATA', 'MDSYS', 'ORDSYS', 'CTXSYS',
  9.                      'ANONYMOUS', 'EXFSYS', 'OUTLN', 'DIP',
  10.                      'DMSYS', 'WMSYS', 'XDB', 'ORACLE_OCM',
  11.                      'TSMSYS', 'ORDPLUGINS', 'SI_INFORMTN_SCHEMA',
  12.                      'OLAPSYS', 'SYSTEM', 'SYS', 'SYSMAN',
  13.                      'DBSNMP', 'SCOTT', 'PERFSTAT', 'PUBLIC',
  14.                      'MGMT_VIEW', 'WK_TEST', 'WKPROXY', 'WKSYS')
  15.    AND TABLE_NAME NOT LIKE 'BIN%'
  16.   order by 1,2;
复制代码
查看数据库是否有自动统计信息收集

  1. select window_name,autotask_status,optimizer_stats from dba_autotask_window_clients;
  2. select client_name,status from Dba_Autotask_Client where client_name='auto optimizer stats collection';
  3. select window_name,repeat_interval,duration,enabled from dba_scheduler_windows where ENABLED='TRUE' AND window_name not like 'WEEK%';
  4. dba_tables
复制代码
查抄数据文件的状态记录状态不是"online"的数据文件

  1. set lin 200;
  2. SELECT file_name FROM dba_data_files WHERE status='OFFLINE';
  3. set pagesize  1000
  4. col name format a58;
  5. PROMPT
  6. PROMPT database's datafile and tempfile
  7. SELECT FILE#,NAME,STATUS,ENABLED,BYTES/1024/1024 MB,BLOCK_SIZE  FROM v$datafile  
  8. UNION ALL
  9. SELECT FILE#,NAME,STATUS,ENABLED,BYTES/1024/1024 MB,BLOCK_SIZE  FROM v$tempfile ;
复制代码
查看数据库文件是否存放在共享存储内里的

  1. show parameter db_create_file_dest
  2. select tablespace_name,file_name from dba_data_files;
  3. 备注:RAC在每个节点上面看
复制代码
查看回滚段空间设置

  1. set linesize 140
  2. col segment for a25;
  3. col tablespace_name for a20;
  4. set pagesize 35;
  5. col ds.bytes/1024/1024 heading 'Bytes(M)' for 9999
  6. col status for a10
  7. select
  8.    rb.segment_name "Segment",
  9.    rb.tablespace_name,
  10.    rs.optsize,
  11.    rs.status,
  12.    round(100*(1-waits/gets),2) "Ratio",
  13.    round(ds.bytes/1024/1024) "size (M)"
  14. from dba_rollback_segs rb,
  15.    v$rollstat rs,
  16.    dba_segments ds
  17. where
  18.    rb.segment_id=rs.usn
  19. and rb.segment_name=ds.segment_name
  20. /
复制代码
查抄Oracle控制文件状态

  1. select status,name from v$controlfile;
复制代码
查抄Oracle在线日志状态

  1. col MEMBER format a50;
  2. set lin 100
  3. select group#,status,type,member from v$logfile;
复制代码
查抄Oracle表空间的状态

  1. select tablespace_name,status from dba_tablespaces;
复制代码
查抄Oracle全部数据文件状态

  1. select name,status from v$datafile;
  2. select file_name,status from dba_data_files;
复制代码
查抄无效对象

  1. 语句1
  2. select owner,object_name,object_type from dba_objects where status!='VALID' and owner!='SYS' and owner!='SYSTEM';
  3. 语句2
  4. select owner,object_name,object_type,status
  5. from dba_objects
  6. where status !='VALID'
  7. and owner not in ('SYS','SYSTEM');
复制代码
查看表空间的利用环境

  1. 表空间信息
  2. 语句:
  3. SELECT d.tablespace_name "Name",
  4.        TO_CHAR(NVL(a.BYTES / 1024 / 1024, 0), '99,999,990.99') "Size (M)",
  5.        TO_CHAR(NVL(a.BYTES - NVL(f.BYTES, 0), 0) / 1024 / 1024,
  6.                '999999990.999') "USE  (M)",
  7.        TO_CHAR(NVL((a.BYTES - NVL(f.BYTES, 0)) / a.BYTES * 100, 0),
  8.                '990.00') || '%' "USAGE RATE  %",
  9.        TO_CHAR(NVL(f.BYTES / 1024 / 1024, 0), '99,999,990.99') "free (M)",
  10.        TO_CHAR(NVL(f.BYTES / a.BYTES * 100, 0), '99,999,990.99') || '%' "free %"
  11.   FROM SYS.dba_tablespaces d,
  12.        (SELECT tablespace_name, SUM(BYTES) BYTES
  13.           FROM dba_data_files
  14.          GROUP BY tablespace_name) a,
  15.        (SELECT tablespace_name, SUM(BYTES) BYTES
  16.           FROM dba_free_space
  17.          GROUP BY tablespace_name) f
  18. WHERE d.tablespace_name = a.tablespace_name(+)
  19.    AND d.tablespace_name = f.tablespace_name(+)
  20.    AND NOT
  21.         (d.extent_management LIKE 'LOCAL' AND d.CONTENTS LIKE 'TEMPORARY')
  22. UNION ALL
  23. SELECT d.tablespace_name "Name",
  24.        TO_CHAR(NVL(a.BYTES / 1024 / 1024, 0), '99,999,990.99') "USE  (M)",
  25.        TO_CHAR(NVL(t.BYTES, 0) / 1024 / 1024, '999999990.99') USE,
  26.        TO_CHAR(NVL(t.BYTES / a.BYTES * 100, 0), '990.99') || '%' "USAGE RATE %",
  27.        TO_CHAR(NVL((a.BYTES - t.BYTES) / 1024 / 1024, 0), '99,999,990.99') "free (M)",
  28.        TO_CHAR(NVL(w.BYTES / a.BYTES * 100, 0), '99,999,990.99') || '%' "free %"
  29.   FROM SYS.dba_tablespaces d,
  30.        (SELECT tablespace_name, SUM(BYTES) BYTES
  31.           FROM dba_temp_files
  32.          GROUP BY tablespace_name) a,
  33.        (SELECT tablespace_name,
  34.                (sum(tablespace_size) - sum(free_space)) BYTES
  35.           FROM DBA_TEMP_FREE_SPACE
  36.          GROUP BY tablespace_name) t,
  37.        (SELECT tablespace_name, sum(free_space) BYTES
  38.           FROM DBA_TEMP_FREE_SPACE
  39.          GROUP BY tablespace_name) w
  40. WHERE d.tablespace_name = a.tablespace_name(+)
  41.    AND d.tablespace_name = t.tablespace_name(+)
  42.    AND d.tablespace_name = w.tablespace_name(+)
  43.    AND d.extent_management LIKE 'LOCAL'
  44.    AND d.CONTENTS LIKE 'TEMPORARY';
复制代码
查抄表空间逐日增长量

  1. SELECT a.snap_id,
  2.        c.tablespace_name ts_name,
  3.        to_char(to_date(a.rtime, 'mm/dd/yyyy hh24:mi:ss'), 'yyyy-mm-dd hh24:mi') rtime,
  4.        round(a.tablespace_size * c.block_size / 1024 / 1024, 2) ts_size_mb,
  5.        round(a.tablespace_usedsize * c.block_size / 1024 / 1024, 2) ts_used_mb,
  6.        round((a.tablespace_size - a.tablespace_usedsize) * c.block_size / 1024 / 1024,
  7.              2) ts_free_mb,
  8.        round(a.tablespace_usedsize / a.tablespace_size * 100, 2) pct_used
  9.   FROM dba_hist_tbspc_space_usage a,
  10.        (SELECT tablespace_id,
  11.                substr(rtime, 1, 10) rtime,
  12.                max(snap_id) snap_id
  13.           FROM dba_hist_tbspc_space_usage nb
  14.          group by tablespace_id, substr(rtime, 1, 10)) b,
  15.          dba_tablespaces c,
  16.          v$tablespace d
  17. where a.snap_id = b.snap_id
  18.    and a.tablespace_id = b.tablespace_id
  19.    and a.tablespace_id=d.TS#
  20.    and d.NAME=c.tablespace_name  
  21.    and  to_date(a.rtime, 'mm/dd/yyyy hh24:mi:ss') >=sysdate-30
  22.    order by a.tablespace_id,to_date(a.rtime, 'mm/dd/yyyy hh24:mi:ss') desc;
复制代码
磁盘组信息

  1. SELECT 'asm disk used:' FROM dual;
  2. set heading  ON;
  3. select group_number gno,name,state,type,total_mb,free_mb,required_mirror_free_mb rmfmb,usable_file_mb ufmb from v$asm_diskgroup;
复制代码
asm磁盘组利用率

  1. set line 400
  2. col name for a12
  3. col per for a15
  4. select group_number,
  5.         name,
  6.         total_mb / 1024 total_g,
  7.         round((total_mb - free_mb) / 1024, 2) used_g,
  8.         round(free_mb / 1024, 2) free_g,
  9.         round(usable_file_mb / 1024, 2) usable_g,
  10.         round((total_mb - usable_file_mb) / total_mb * 100, 2) || '%' per
  11.    from v$asm_diskgroup;
复制代码
归档空间利用率

  1. set line 400
  2. col name for a10
  3. col per for a10
  4. select name,
  5.        space_limit / 1024 / 1024 / 1024 total,
  6.        round(space_used / 1024 / 1024 / 1024, 2) used,
  7.        round((space_limit - space_used) / 1024 / 1024 / 1024, 2) free,
  8.        round(space_used / space_limit * 100, 2) || '%' per
  9.   from v$recovery_file_dest;
复制代码
数据库实际数据量大小估算

  1. select nvl(t.owner,'total') "user_name",
  2.        to_char(sum(bytes)/1024/1024,'999,999,999,999') "used (M)"
  3.   from dba_segments  t
  4. group by rollup(t.owner)
  5. order by 2;
复制代码
统计dba_recyclebin和dba_objects内里的对象信息

  1. select count( * ) from dba_recyclebin;
  2. select * from dba_role_privs where granted_role = 'DBA';
  3. set linesize 200
复制代码
查看死锁语句

  1. select username, lockwait, status, machine, program
  2. from v$session
  3. where sid in (select session_id from v$locked_object);
复制代码
备份查抄

  1. select command_id,
  2.        input_type,
  3.        to_char(start_time, 'yyyy-mm-dd hh24:mi:ss') start_time,
  4.        to_char(end_time, 'yyyy-mm-dd hh24:mi:ss') end_time,
  5.        input_bytes_display input,
  6.        output_bytes_display output,
  7.        time_taken_display elapsed_time,
  8.        status
  9.   from v$rman_backup_job_details
  10. where substrc(command_id, 0, 10) >= to_char(sysdate - 1, 'yyyy-mm-dd')
  11. order by 1 desc;
复制代码
数据库日志分析

  1. #alter日志提取
  2. 查看视图: select * from v$diag_info;
  3. #单机日志存放位置
  4. $ORACLE_BASE/diag/rdbms/数据库名/数据库实例名/trace
  5. #RAC数据库日志的存放位置
  6. $ORACLE_BASE/diag/rdbms/数据库名/数据库实例名1/trace
  7. $ORACLE_BASE/diag/rdbms/数据库名/数据库实例名2/trace
复制代码
性能分析

查抄数据库的等待事件

  1. set pages 80
  2. set lines 120
  3. col event for a40
  4. select sid,event,p1,p2,p3,WAIT_TIME,SECONDS_IN_WAIT from v$session_wait where event not like 'SQL%' and event not like 'rdbms%';
复制代码
假如数据库长时间持续出现大量像latch free,enqueue,buffer busy waits,db file sequential read,db file scattered read等等待事件时,需要对其进行分析,可能存在问题的语句。
Disk Read最高的SQL语句的获取

  1. SELECT SQL_TEXT FROM (SELECT * FROM V$SQLAREA ORDER BY DISK_READS) WHERE ROWNUM<=5;
复制代码
查找前10条性能差的sql

  1. SELECT * FROM (SELECT PARSING_USER_ID
  2. EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,
  3. SQL_TEXT FROM V$SQLAREA ORDER BY DISK_READS DESC)
  4. WHERE ROWNUM<10 ;
复制代码
等待时间最多的5个系统等待事件的获取

  1. SELECT * FROM (SELECT * FROM V$SYSTEM_EVENT WHERE EVENT NOT LIKE 'SQL%' ORDER BY TOTAL_WAITS DESC) WHERE ROWNUM<=5;
复制代码
查抄运行很久的SQL

  1. COLUMN USERNAME FORMAT A12
  2. COLUMN OPNAME FORMAT A16
  3. COLUMN PROGRESS FORMAT A8
  4. SELECT USERNAME,SID,OPNAME,ROUND(SOFAR*100 / TOTALWORK,0) || '%' AS PROGRESS,TIME_REMAINING,SQL_TEXT FROM V$SESSION_LONGOPS , V$SQL WHERE TIME_REMAINING <> 0 AND SQL_ADDRESS=ADDRESS AND SQL_HASH_VALUE = HASH_VALUE;
复制代码
查抄消耗CPU最高的进程

  1. SET LINE 240
  2. SET VERIFY OFF
  3. COLUMN SID FORMAT 999
  4. COLUMN PID FORMAT 999
  5. COLUMN S_# FORMAT 999
  6. COLUMN USERNAME FORMAT A9 HEADING "ORA USER"
  7. COLUMN PROGRAM FORMAT A29
  8. COLUMN SQL     FORMAT A60
  9. COLUMN OSNAME FORMAT A9 HEADING "OS USER"
  10. SELECT P.PID PID,
  11.        S.SID SID,
  12.        P.SPID SPID,
  13.        S.USERNAME USERNAME,
  14.        S.OSUSER OSNAME,
  15.        P.SERIAL# S_#,
  16.        P.TERMINAL,
  17.        P.PROGRAM PROGRAM,
  18.        P.BACKGROUND,
  19.        S.STATUS,
  20.        RTRIM(SUBSTR(A.SQL_TEXT, 1, 80)) SQLFROM V$PROCESS P,
  21.        V$SESSION S,
  22.        V$SQLAREA A WHERE P.ADDR = S.PADDR AND S.SQL_ADDRESS = A.ADDRESS(+) AND P.SPID LIKE '%&1%';
复制代码
查抄碎片水平高的表

  1. SELECT segment_name table_name, COUNT(*) extents
  2.   FROM dba_segments
  3. WHERE owner NOT IN ('SYS', 'SYSTEM')
  4. GROUP BY segment_name
  5. HAVING COUNT(*) = (SELECT MAX(COUNT(*))
  6.                      FROM dba_segments
  7.                     GROUP BY segment_name);
复制代码
查抄表空间的I/O比例

  1. SELECT DF.TABLESPACE_NAME NAME,
  2.        DF.FILE_NAME       "FILE",
  3.        F.PHYRDS           PYR,
  4.        F.PHYBLKRD         PBR,
  5.        F.PHYWRTS          PYW,
  6.        F.PHYBLKWRT        PBW
  7.   FROM V$FILESTAT F, DBA_DATA_FILES DF
  8. WHERE F.FILE# = DF.FILE_ID
  9. ORDER BY DF.TABLESPACE_NAME;
复制代码
查抄文件系统的I/O比例

  1. SELECT SUBSTR(A.FILE#, 1, 2) "#",
  2.        SUBSTR(A.NAME, 1, 30) "NAME",
  3.        A.STATUS,
  4.        A.BYTES,
  5.        B.PHYRDS,
  6.        B.PHYWRTS
  7.   FROM V$DATAFILE A, V$FILESTAT B
  8. WHERE A.FILE# = B.FILE#;
复制代码
查抄数据库cpu、I/O、内存性能

记录数据库的cpu利用、IO、内存等利用环境,利用vmstat,iostat,sar,top等命令进行信息收集并查抄这些信息,判断资源利用环境。
  1. # top
  2. top - 10:29:35 up 73 days, 19:54, 1 user, load average: 0.37, 0.38, 0.29
  3. Tasks: 353 total,  2 running, 351 sleeping,  0 stopped,  0 zombie
  4. Cpu(s): 1.2% us, 0.1% sy, 0.0% ni,98.8% id, 0.0% wa, 0.0% hi, 0.0% si
  5. Mem: 16404472k total, 12887428k used, 3517044k free,   60796k buffers
  6. Swap: 8385920k total,  665576k used, 7720344k free, 10358384k cached
  7. PID USER     PR NI VIRT RES SHR S %CPU %MEM   TIME+ COMMAND
  8. 30495 oracle   15  0 8329m 866m 861m R  10 5.4  7:53.90 oracle            
  9. 32501 oracle   15  0 8328m 1.7g 1.7g S   2 10.6  1:58.38 oracle            
  10. 32503 oracle   15  0 8329m 1.6g 1.6g S   2 10.2  2:06.62 oracle            
复制代码
注意上面的id值,此部门内容表现系统剩余的cpu,当其均匀值下降至10%以下的时视为CPU利用率非常,需记录下该数值,并将状态记为非常。
内存利用环境

  1. # free -m
  2.             total      used      free    shared   buffers    cached
  3. Mem:       2026      1958       67         0        76      1556
  4. -/+ buffers/cache:       326      1700
  5. Swap:        5992        92      5900
复制代码
如上所示,total(2026)表现系统总内存,used(1958)表现系统利用的内存,free(67)表现系统剩余内存,当剩余内存低于总内存的10%时视为非常。
系统I/O环境

  1. # iostat -k 1 3      kb显示 间隔1秒,显示3条记录
  2. Linux 2.6.9-22.ELsmp (AS14)    07/29/2009
  3. avg-cpu: %user  %nice   %sys%iowait  %idle
  4.           0.16   0.00   0.05   0.36  99.43
  5. Device:           tps   kB_read/s   kB_wrtn/s   kB_read   kB_wrtn
  6. sda              3.33       13.16       50.25  94483478 360665804
  7. avg-cpu: %user  %nice   %sys%iowait  %idle
  8.           0.00   0.00   0.00   0.00 100.00
  9. Device:           tps   kB_read/s   kB_wrtn/s   kB_read   kB_wrtn
  10. sda              0.00        0.00        0.00         0         0
复制代码
cpu属性值说明:


  • %user:CPU处在用户模式下的时间百分比。
  • %nice:CPU处在带NICE值的用户模式下的时间百分比。
  • %system:CPU处在系统模式下的时间百分比。
  • %iowait:CPU等待输入输出完成时间的百分比。
  • %steal:管理程序维护另一个捏造处理器时,捏造CPU的偶然识等待时间百分比。
  • %idle:CPU空闲时间百分比。
   备注:假如%iowait的值过高,表现硬盘存在I/O瓶颈,%idle值高,表现CPU较空闲,假如%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值假如持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
  Disk属性说明:


  • device:磁盘名称
  • tps:每秒钟发送到的I/O哀求数.
  • Blk_read/s:每秒读取的block数.
  • Blk_wrtn/s:每秒写入的block数.
  • Blk_read:读入的block总数.
  • Blk_wrtn:写入的block总数.
系统负载环境

  1. #uptime
  2. 12:08:37 up 162 days, 23:33, 15 users, load average: 0.01, 0.15, 0.10
复制代码
如上所示,load average表现系统负载,背面的3个数值假如有高于2.5的时间就表明系统在超负荷运转了,并将此值记录到巡检表,视为非常。
查看是否有僵死进程

  1. #有些僵尸进程有阻塞其他业务的正常运行,定期杀掉僵尸进程。
  2. select spid from v$process where addr not in (select paddr from v$session);
复制代码
查抄缓冲区命中率

  1. SELECT a.VALUE + b.VALUE logical_reads,
  2.         c.VALUE phys_reads,
  3.         round(100 * (1 - c.value / (a.value + b.value)), 4) hit_ratio
  4.   FROM v$sysstat a,
  5.        v$sysstat b,
  6.        v$sysstat c  WHERE a.NAME = 'db block gets'  AND b.NAME = 'consistent gets'  AND c.NAME = 'physical reads';
复制代码
假如命中率低于90%则需加大数据库参数db_cache_size。
查抄共享池命中率

  1. select sum(pinhits)/sum(pins)*100 from v$librarycache;
复制代码
如低于95%,则需要调解应用程序利用绑定变量,大概调解数据库参数shared pool的大小。
查抄排序区

  1. select name,value from v$sysstat where name like '%sort%';
复制代码
假如disk/(memoty+row)的比例过高,则需要调解sort_area_size(workarea_size_policy=false)或pga_aggregate_target(workarea_size_policy=true)。
查抄日志缓冲区

  1. select name,value from v$sysstat where name in ('redo entries','redo buffer allocation retries');
复制代码
假如redo buffer allocation retries/redo entries凌驾1%,则需要增大log_buffer。
查找占用内存读最多的SQL

  1. SELECT t.ADDRESS,
  2.        t.SQL_TEXT,
  3.            RANK() OVER(ORDER BY t.buffer_gets DESC) AS rank_buffgets,
  4.            to_char(100*ratio_to_report(t.buffer_gets) OVER(),'99.99') AS pct_buffergets
  5. FROM v$sql t;
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊落一身雪

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表