oracle学习笔记(三)之检查Oracle的告警日志文件

作为一个 DBA,或者哪怕仅仅是和 Oracle 数据库打交道的技术人员,你都必须知道告警日志是什么,在何处。 
而对于 DBA来说,实时的监控数据库的告警日志是必须进行的工作,监控并且应该根据不同的严重级别,发送不同级别的告警信息(通过邮件、短信) ,这可以帮助我们及时了解数据库的变化与异常,及时响应并介入处理。

 

告警文件错误检查

每日应检查应用数据库警报日志文件(Alert_SID.log),检查是否存在数据库系统错误提示信息,查看有无“ORA-”,Error”,“Failed”等出错信息。根据错误信息进行分析并解决。告警日志文件的路径查看:show parameter background_dump_dest

清除告警日志内容

将每天的告警日志备份好进行清除。具体方法:在$ORACLE_HOME/SID/bdump/   目录下打开alert_ORACLE_SID.LOG这个文件,然后检查里面是否有错误信息,之后每天把它按日期另存为如:alert_ORACLE_SID070416.LOG。再打开alert_ORACLE_SID.LOG文件可清除掉里面的内容,这样便于查看告警日志内容。

检查Oracle对象的状态

主要介绍如何检查相关Oracle对象的状态,内容共分六个部分,分别为:检查Oracle控制文件状态;检查Oracle在线日志状态;检查Oracle表空间的状态;检查Oracle所有表、索引、存储过程、触发器、包等对象的状态。

检查Oracle控制文件状态

输入:>sqlplus “/as sysdba”

select * from v$controlfile;

   输出:

       STATUS   NAME

-------------------------------------

D:/ORACLE/ORADATA/SFYXF/CONTROL01.CTL

D:/ORACLE/ORADATA/SFYXF/CONTROL02.CTL

D:/ORACLE/ORADATA/SFYXF/CONTROL03.CTL
分析:输出结果应该有3条以上(包含3条)的记录,“STATUS”应该为空。状态为空表示控制文件状态正常。

检查Oracle在线日志状态

select * from v$logfile;

输出:

GROUP# STATUS TYPE  MEMBER

---------- ------- --------------------------------------------

3    ONLINE D:/ORACLE/ORADATA/SFYXF/REDO03.LOG

2   ONLINE D:/ORACLE/ORADATA/SFYXF/REDO02.LOG

1   ONLINE D:/ORACLE/ORADATA/SFYXF/REDO01.LOG

分析:输出结果应该有3条以上(包含3条)记录,“STATUS”应该为非“INVALID”,非“DELETED”。 注:“STATUS”显示为空表示正常。
检查Oracle表空间的状态

select tablespace_name,status from dba_tablespaces;

输出:

TABLESPACE_NAME STATUS

------------------------------ ---------

SYSTEM ONLINE

TOOLS ONLINE

RBS ONLINE

TEMP ONLINE

USERS ONLINE

INDX ONLINE

DRSYS ONLINE

WACOS ONLINE

IPAS_SUB_DATA ONLINE

IPAS_SUB_IDX ONLINE

IPAS_USG_DATA ONLINE

IPAS_USG_IDX ONLINE

IPAS_ACCT_DATA ONLINE

IPAS_ACCT_IDX ONLINE

NMS ONLINE

NMS_STAT_DATA ONLINE

NMS_STAT_IDX ONLINE

分析:其中“STATUS”应该都为“ONLINE”, 如果“STATUS”值为“OFFLINE”时应该及时分析其状态原因,并将其改为“ONLINE”状态。

输入:select owner,object_name,object_type from dba_objects where status!='VALID' and owner!='SYS' and owner!='SYSTEM';

输出: no rows selected

 分析:如果有记录返回,则说明存在无效的对象。若这些对象与我们应用相关,那么需要重新生成这个对象。具体生成方法可以寻求ORACLE的技术支持。

检查Oracle各个表空间的增长情况

view plain
  1. select A.tablespace_name, (1 - (A.total) / B.total) * 100 used_percent  
  2.   from (select tablespace_name, sum(bytes) total  
  3.           from dba_free_space  
  4.          group by tablespace_name) A,  
  5.        (select tablespace_name, sum(bytes) total  
  6.           from dba_data_files  
  7.          group by tablespace_name) B  
  8.  where A.tablespace_name = B.tablespace_name;  

输出:

       TABLESPACE_NAME USED_PERCENT

------------------------------ ------------

DRSYS   30.7578125

FS     .19375

INDX   .00390625

IPAS_ACCT_DATA  1.2

IPAS_ACCT_IDX   2.2

IPAS_SUB_DATA   7.4

IPAS_SUB_IDX   7.25

IPAS_USG_DATA   12.378125

IPAS_USG_IDX   20.603125

NMS   5.221875

NMS_STAT_DATA   4.5

NMS_STAT_IDX   1.5125

RBS   27.0009766

SA   .0375

SYSTEM  34.265625

TEMP   2.71972656

TOOLS   .00390625

USERS   608473558

WACOS   10.621875

19 rows selected.

分析:如果使用率“USED_PERCENT”在90%以上,则注意要增加数据文件来扩展表空间而不要是用数据文件的自动扩展功能。

检查system表空间内的内容

view plain
  1. select distinct (owner)  
  2.   from dba_tables  
  3.  where tablespace_name = 'SYSTEM'  
  4.    and owner != 'SYS'  
  5.    and owner != 'SYSTEM'  
  6. union  
  7. select distinct (owner)  
  8.   from dba_indexes  
  9.  where tablespace_name = 'SYSTEM'  
  10.    and owner != 'SYS'  
  11.    and owner != 'SYSTEM';  

输出:no rows selected

分析:如果有记录返回,则表明system表空间内存在一些非system和sys用户的对象。应该进一步检查这些对象是否与我们应用相关。如果相关请把这些对象移到非System表空间,同时应该检查这些对象属主的缺省表空间值。

 

 

转载:http://blog.csdn.net/lpioneer/article/details/5935533

你可能感兴趣的:(oracle,system,数据库,object,扩展,技术人)