在数据库中远程分析服务器上的alert文件(1)

在数据库中远程分析服务器上的alert文件

很多时候, 我们仅仅有远程服务器的数据库用户(dba用户)的口令, 而没有远程服务器的操作系统用户口令, 或者如果因为网络限制而不能访问远程服务器的操作系统.

但为了分析问题的原因, 希望能在数据库内部查看数据库的alert文件.

下面提供一些方法.


(注意: 下面的方法需要用户具有create any directory权限. 而create any directory权限是一个具有极大潜在安全隐患的权限, 请小心使用.)

1. 得到alert所在目录名和文件名

column dir new_value dname
column filename new_value fname

select a.value dir , 'alert_' || b.instance || '.log' filename
from v$parameter a, v$thread b
where a.name = 'background_dump_dest';

2. 创建 direcotry

create or replace directory x$alert_log$x as
'&dname';

3. 直接查看/保存alert文件
如果你使用plsql developer之类的oracle管理工具, 现在你直接执行下面的命令, 就可以查看并将其保存在你的客户端了. (当然你也可以不用工具, 而是自己写一个小程序完成这项工作)

Select Bfilename('X$ALERT_LOG$X', '&fname') From dual;

下面图示plsql developer中的操作方法:

远程分析服务器上的alert文件
点击后面的...可以显示bfile的内容.

远程分析服务器上的alert文件

点击保存按钮, 可以将内容保存到本地文件.


4. 保存归档alert文件
上面的方法,只能查看最新的alert文件, 下面的方法可以将alert文件归档到数据库中, 以便将来比较分析用.

drop table alert_log_lob;
create table alert_log_lob
  ( load_date date default sysdate,
    BCONTENT BLOB);

CREATE OR REPLACE PACKAGE Pkg_Alert IS

  PROCEDURE Load_Alert_To_Lob(Pfilename Varchar2);
  PROCEDURE Load_Alert(Pfilename VARCHAR2, prefresh Varchar2 Default 'Y');
END Pkg_Alert; 

CREATE OR REPLACE PACKAGE BODY Pkg_Alert IS

  g_last_pos Number  ;
  g_last_line Number ;
  
  PROCEDURE Load_Alert_To_Lob(Pfilename VARCHAR2) IS
    Dest_Loc1 BLOB;
    Src_Loc   BFILE;
    Amount    INTEGER := 4000;
  BEGIN
  
  
    INSERT INTO Alert_Log_Lob
    VALUES (SYSDATE, Empty_Blob())
    RETURNING Bcontent INTO Dest_Loc1;
  
    Src_Loc := Bfilename('X$ALERT_LOG$X', Pfilename);
    Dbms_Lob.OPEN(Src_Loc, Dbms_Lob.Lob_Readonly);

    Dbms_Lob.OPEN(Dest_Loc1, Dbms_Lob.Lob_Readwrite);
  
    Amount := Dbms_Lob.Getlength(Src_Loc);

    Dbms_Lob.Loadfromfile(Dest_Loc1, Src_Loc, Amount);

    Dbms_Lob.CLOSE(Dest_Loc1);
    Dbms_Lob.CLOSE(Src_Loc);
    COMMIT;
  END;

  PROCEDURE Load_Alert(Pfilename VARCHAR2, prefresh Varchar2 Default 'Y') As
   .......

END Pkg_Alert;

这样, 只要执行:

exec pkg_alert.load_alert_to_lob('&fname')

就可以将alert文件保存到alert_log_lob表中. 从这个表中查看保存的方法可以参考前面的内容.

后续内容: 在数据库中远程分析服务器上的alert文件(2)

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

转载于:http://blog.itpub.net/32/viewspace-184225/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值