诊断oracle数据库的问题

 

1           告警日志

实例启动的时刻开始,重要消息以及某些报告消息会被写至告警日志。

告警日志以及所有后台跟踪文件都会被写至BACKGOUND_DUMP_DEST参数所指定的目的地。

告警日志的名称为alert_.log,其中SID为实例名。

BACKGOUND_DUMP_DEST参数是动态的。

告警日志中的报告消息的内容如下:

。启动时间以及操作模式的启动和关闭命令。

。涉及物理结构的操作,使用ALTER DATABASE命令。

。表空间操作。

。所有日志切换与归档,包括所影响文件的名称。

。用于启动实例的非默认初始化参数,还包括ALTER SYSTEM命令修改这些参数。

告警日志包含了影响数据库结构和实例的各种操作的连续历史记录。

告警日志不包含sql语句(DML,DDL)

告警日志包含常见的告警与错误:

。检查点不完全:说明日志文件过小而引起日志切换频繁。

。无法打开文件:在数据库启动过程中产生。

。块讹误:某个数据文件损坏引起。与DBA_EXTENTS视图一起查看。

。归档存在问题:归档目的地满和不可用。

。死锁。

2           后台跟踪文件

所有后台跟踪文件都会被写至BACKGOUND_DUMP_DEST参数所指定的目的地。

所有后台跟踪文件都具有一个头部,这个头部给出了文件的名称以及操作系统和生成该文件的oracle相关的版本信息。接下来的内容是实际的错误。

跟踪文件的命名为:实例的名称+该实例的进程的名称+该进程的操作系统进程号或线程号+后缀.trc

与告警日志不同,跟踪文件始终意味着错误。

DBA能控制放置跟踪文件的位置和其最大大小。

Alter system set max_dump_file_size=’5m’;

告警文件没有最大值,如果没有删除,其将一直增长。

3           服务器生成的告警

服务器告警系统是一种完全可配置的机制,这种机制能够监视数据库、实例和用户的会话,并且能够在达到某些限制以发生特定事件时发生警告。使用MMON监视进程和MMNL辅助进程。

3.1          告警类型

。阀值(threshold)告警:表空间使用

。非阀值告警:ora-1555

V$ALERT_TYPES视图可以查看能够配置告警的指标。

3.2          告警体系结构

实例自身会累积告警系统所使用的统计量。收集统计量不存在任何系统开销。

检索用于计算指标(metric)的统计量是由后台进程MMON完成的。MMON进程是实例的一部分,所以它能够直接访问存储相关信息的数据结构。

MMON进程将告警信息写入至ALERT_QUE队列。订阅者从ALERT_QUE队列读取信息。如果队列存在问题,那么MMON进程会将告警直接写入到告警日志。

告警日志与服务器告警系统完全分离。

3.3          告警信息

DBA_OUTSTANDING_ALERTS:会列出所有已被引发但是尚未处理的有状态的告警。

DBA_ALERT_HISTORY:包括处理的有状态的告警和直接写入到该视图的无状态的告警。

3.4          告警通知机制

该告警通知机制通常会在引发某些告警时向DBA发送邮件消息。DBA可以自定义配置。

3.5          设置阀值

标准的告警有预定义阀值:表空间85%时发出一条告警消息,在97%发出一条临界告警。

使用DATABASE CONTROL工具和DBMS_SERVER_ALEERT程序包设置和编辑阀值。

DBMS_SERVER_ALEERT程序包常用的过程有:

set_threshold

Tablespace_pct_full:指定要监视的指标。

Operator_ge:大于等于。

Object_type_tablespace:被监视对象的类型。

例子:设置、查看和清除告警

1        创建表空间

sys@ORCL> create tablespace small datafile 'e:\oracle\small.dbf' size 1m;

 

表空间已创建。

2        设置警告告警和临界告警

sys@ORCL> BEGIN

  2  DBMS_SERVER_ALERT.SET_THRESHOLD (

  3  metrics_id=>DBMS_SERVER_ALERT.TABLESPACE_PCT_FULL,

  4  warning_operator=>DBMS_SERVER_ALERT.OPERATOR_GE,

  5  warning_value=>50,

  6  critical_operator=>DBMS_SERVER_ALERT.OPERATOR_GE,

  7  critical_value=>75,

  8  observation_period=>1,

  9  consecutive_occurrences=>1,INSTANCE_NAME=>'null',

 10  object_type=>DBMS_SERVER_ALERT.OBJECT_TYPE_TABLESPACE,

 11  object_name=>'SMALL');

 12  END;

 13  /

 

PL/SQL 过程已成功完成。

查看设置

sys@ORCL> select metrics_name, WARNING_OPERATOR,status from dba_thresholds where object_name='SMALL';

 

METRICS_NAME        WARNING_OPER  STATUS

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

Tablespace Space Usage     GE           VALID

3        创建表及插入足够记录,从而使空间超过警告阀值

sys@ORCL> create table toobig(c1 char(1000)) tablespace small;

 

表已创建。

sys@ORCL> begin

  2     for n in 1..500 loop

  3     insert into toobig values('a row');

  4     end loop;

  5     commit;

  6  end;

  7  /

 

PL/SQL 过程已成功完成。

 

4        使用DBA_OUTSTANDING_ALERTS视图查询

sys@ORCL> select object_name, reason from dba_outstanding_alerts;

 

OBJECT_NAME

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

REASON

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

UNDO_NOGUARANTEE

表空间 [UNDO_NOGUARANTEE] 已占用 [86 percent]

 

SMALL

表空间 [SMALL] 只有 [0 megabytes] 空闲空间

5        small表空间添加数据文件解决空间告警问题

sys@ORCL> alter tablespace small add datafile 'e:/oracle/small2.dbf' size 2m;

 

表空间已更改。

6        使用DBA_OUTSTANDING_ALERTSDBA_ALERT_HISTORY视图查看

sys@ORCL> select object_name, reason from dba_outstanding_alerts;

 

OBJECT_NAME

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

REASON

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

UNDO_NOGUARANTEE

表空间 [UNDO_NOGUARANTEE] 已占用 [86 percent]

sys@ORCL> select object_name, reason, suggested_action, resolution from dba_alert_history where object_name='SMALL';

 

OBJECT_NAME

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

REASON

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

SUGGESTED_ACTION

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

RESOLUT

-------

SMALL

"表空间的空间使用情况" 度量的阈值已更新

查看 DBA_THRESHOLDS 视图以验证结果

cleared

 

SMALL

表空间 [SMALL] 只有 [2 megabytes] 空闲空间

给表空间添加空间

cleared

 

7        删除small表空间

sys@ORCL> drop tablespace small including contents and datafiles;

 

表空间已删除。

 

8         用户跟踪文件

a)         实例级别的SQL跟踪

启动实例级别的SQL跟踪

Alter system set sql_trace=true;

关闭实例级别的SQL跟踪

Alter system set sql_trace=false;

生成的跟踪文件名为_ora_.trc,由USER_DUMP_DEST参数指定存储位置。

通过以下查询获得

sys@ORCL> select s.username,s.sid,p.spid from v$session s, v$process p where

s.paddr=p.addr;

然后通过获得_ora_.trc文件

b)         会话级别的SQL跟踪

启动会话级别的SQL跟踪

Alter session set sql_trace=true;

关闭会话级别的SQL跟踪

Alter session set sql_trace=false;

生成的跟踪文件由USER_DUMP_DEST参数指定存储位置。

 

针对任何用户会话的跟踪,首先找出会话的标识符与序列号

sys@ORCL> select sid, serial# from v$session where username=’TIM’;

 

SID    SERIAL#

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

130         51

 

其次,使用DBMS_MONITOR程序包,开始写跟踪信息;

sys@ORCL> execute dbms_monitor.session_trace_enable( -

session_id=>130,serial_num=>51);

 

PL/SQL 过程已成功完成。

 

停止写跟踪信息

sys@ORCL> execute dbms_monitor.session_trace_disable( -

session_id=>130,serial_num=>51);

 

PL/SQL 过程已成功完成。

 

c)         使用DATABASE CONTROL进行跟踪

DBMS_MONITOR程序包可以跟踪:

会话级别

模块级别

客户ID级别

服务级别

动作级别

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9537053/viewspace-723162/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9537053/viewspace-723162/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值