a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 92|回复: 1

[综合] Oracle综合辅导:如何在Oracle的报警日志添加自定义的消息

[复制链接]
发表于 2012-8-4 13:54:49 | 显示全部楼层 |阅读模式
Oracle把所有的主要系统消息都写入Oracle报警日志里。要为所有的Oracle 系统消息创建唯一的一个存放地点,Oracle 专业人士必须学会一种方法来把应用程序的消息写入到报警日志里去。, v5 h! ]& z+ R# w& j- t1 H' }
  ) H0 y$ ~- Y3 x# P) {2 h
  把所有的Oracle消息集中起来(不管是系统消息还是应用程序消息)确实能够简化数据库的管理,因为所有与Oracle相关的报警消息都存放在一个集中的文件里。" ]* e6 w3 j& E5 w8 B" q
  
8 Z- l, T9 L: D% v; f" `4 d9 L  Oracle DBA可以创建一个全局的PL/SQL存储过程来处理与报警日志文件的交互过程,然后他们调用这个全局软件包,将合适的消息传递给这个存储过程。下面是这种调用的一个例子:
2 q# l5 n/ L% g* ~3 f$ }) j  8 @' B% S3 p9 y& s
  when others then  N) I4 L+ B6 [' `+ z. ~
  ; d2 C9 d& E) u: e; b) G2 m& t
    dbms_custom.write_alert
6 m, ]  ^, o. i% R( Q  7 G0 P4 z# z  L1 k4 L4 m
    (:p_sysdate||' Application error'||:var1||' encountered');
" \! u) K# @) Q4 {% o  
; L6 z, V/ _6 N& d  \  要完成写的过程,你可以使用Oracle的UTL_FILE 包,它允许Oracle SQL 和PL/SQL 直接从服务器的文本文件进行读写。2 d, u6 t( R! C
  8 x/ \# Z% f) B# |  g
  要向Oracle 报警日志写入自定义的消息,应该遵循下面的步骤:
2 T4 n) ]5 P: ~0 v  
) ~4 p+ x) N$ ], {: F  1.     找到后台转储路径(报警日志的位置)。
% |1 R4 O* N+ ^1 J" J9 q" _, X/ a  - s" P; E7 c- V$ C# g4 t8 s
  2.     设置UTL_FILE_DIR 初始化参数。
+ O7 Q' D$ Y2 {' c( i/ ?    t+ U' X0 i$ @) G- A" y
  3.     执行UTL_FILE.FOPEN打开文件进行写访问。
/ V: L0 h) M) T5 Z" i6 h# k  
8 T, r: P! f3 I5 M8 o- D  4.     使用DBMS_OUTPUT.PUT_LINE向报警日志写入自定义的消息。; M& l+ n- n. R+ c. j, u
  - }, M# K$ N  A- t
  5.     执行UTL_FILE.FCLOSE来关闭文件。( g9 O' A  `2 t1 |
  
* k& i6 L3 ]! ]( {  下面是一个Oracle9i的程序例子:5 Q; [% v% a6 I5 Q$ Q
  % b+ y* y3 d2 j5 C8 g
  -- ******************************************************) S9 X0 N2 D6 N  B
  9 I' G# m+ G, e( B. B! F; K
  -- 取得报警日志文件的路径/ ?2 J; z% `3 ^8 O! j
    V5 S: g2 C& R( S4 v$ ~
  -- ******************************************************
回复

使用道具 举报

 楼主| 发表于 2012-8-4 13:54:50 | 显示全部楼层

Oracle综合辅导:如何在Oracle的报警日志添加自定义的消息

  
7 n3 `4 q/ K$ j8 y. `. E  select5 b- ]/ h, `9 a
  
/ I: P4 q, N# d( K4 K8 I    name into :alert_loc: |2 v! O# l) O$ T2 D
  
4 A6 j8 w- |5 e: i: a9 u  from
6 z+ }3 A/ F/ z) V) v! \" W/ _  
* F7 ~: [; |: j1 |    v$parameter; q  S+ {9 `% W( c$ v1 F
  
3 K1 X" `. L, t( ~4 @+ u0 ?6 s  where7 V! ], d8 C: [6 M) e
  
3 v4 p* x( D$ T1 p9 X    name = 'background_dump_destination';
5 j: |( ~1 Q1 F9 [7 `, d  5 j+ ^! }- j1 u- o& w6 y
  -- ******************************************************
4 l2 Y+ |  I; G& d+ C  
9 ^  k& l3 d7 Z$ x  -- 设置utl_file_dir3 ]3 Z( n. _$ A1 n0 v! l
  
# B% X( Q$ W( n. B( w2 p  --  (在Oracle9i 以前,你必须返回数据库)& K( D, x9 w3 J0 A) e: }, T
  
! a5 K. o# Q. H& u' d# X3 ^& P5 y  -- ******************************************************8 R5 {/ ^! _# P: V
  - g6 u1 k* D( u, x* c2 c
  alter system set utl_file_dir = ':alert_log');9 M5 S9 V/ T# R% ~# k
  
) A  P7 A1 ^' ]! j& w  -- ******************************************************2 V( c- K3 L% A) U" I
  ; W% R( f- F$ d  ]  O
  -- 打开报警文件进行写操作( ~3 `/ D/ s$ H' r% o$ q1 h: b
  
9 T+ I! n  [! Q; M5 Z  -- ******************************************************. V0 y4 N& O5 }+ ]  O
  5 ^/ E7 K+ e' s* U" M; m
  utl_file.fopen(':alert_loc','alertprod.log','W');$ u% p' F, @: s4 D1 f5 y
  ! m( q. Z% m% K7 L
  -- ******************************************************
. X4 C+ I* k3 I4 z; }0 i) d1 K1 O  
, b, }! O& J8 f# W1 l  l  -- 将自定义的消息写入报警日志文件里5 i. E+ M4 Q- V5 S( M- ]
  . d# Z5 T9 s" D5 o! L: ^
  -- ******************************************************
3 F' c% g2 t* i  ( h4 E0 Z9 }4 l2 t1 u& F  ^7 G
  dbms_output.put_line('invalid_application_error');
, W* G- ~2 I' X( o9 `6 [" k: o: p  
6 j$ W6 D2 q: s+ f; S) [" W  -- ******************************************************5 d2 U) O/ I3 F/ ]4 @
  
  E2 m3 p! `* }8 y% a* K+ V1 n: y  -- 关闭报警日志文件3 E0 M" J  @( i( V* I
  
, {* i+ y4 s+ E4 m' {# O  -- ******************************************************) N4 I4 a  x" _& a2 u) K) t4 k( z
  3 M8 i9 F( _' @: B& ]0 u. \# y
  utl_file.fclose(':alert_loc');
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-15 07:38 , Processed in 0.568757 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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