在数据库中远程分析服务器上的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中的操作方法:
点击后面的...可以显示bfile的内容.
点击保存按钮, 可以将内容保存到本地文件.
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/