1.如何获取该log文件的存放目录,windows、solaris、linux等不同系统下方法是否相同?2.找到该文件后,如何提取log中的死锁信息,即ORA-00060错误,主要提取发生的时间即可。
该问题主要针对windows系统下,有什么效率高的好方法,要考虑到日志文件可能很大,如果全部读进内存解析显然不是好方法。
如果是unix系统下,初步想采用AWK技术。windows下曾考虑过lucene,但是log是不断变化的,感觉lucene不是太适合。3.能不能控制这个log的大小,即文件增长到指定大小后,就写进另一个文件,即alert_SID_1.log,alert_SID_2.log,alert_SID_3.log......这种。4.或者有其它更好,更直接的方法来达到我的目的(即:知道数据库在什么时间点发生过死锁),请直接指教哈。
请各位大侠不吝赐教哈,分不够再加。
该问题主要针对windows系统下,有什么效率高的好方法,要考虑到日志文件可能很大,如果全部读进内存解析显然不是好方法。
如果是unix系统下,初步想采用AWK技术。windows下曾考虑过lucene,但是log是不断变化的,感觉lucene不是太适合。3.能不能控制这个log的大小,即文件增长到指定大小后,就写进另一个文件,即alert_SID_1.log,alert_SID_2.log,alert_SID_3.log......这种。4.或者有其它更好,更直接的方法来达到我的目的(即:知道数据库在什么时间点发生过死锁),请直接指教哈。
请各位大侠不吝赐教哈,分不够再加。
--一般情况下,目录都是固定的,$ORACLE_BASE\SID_NAME\ADMIN\BDUMP ,都在这个目录下。2.找到该文件后,如何提取log中的死锁信息,即ORA-00060错误,主要提取发生的时间即可。
该问题主要针对windows系统下,有什么效率高的好方法,要考虑到日志文件可能很大,如果全部读进内存解析显然不是好方法。
如果是unix系统下,初步想采用AWK技术。windows下曾考虑过lucene,但是log是不断变化的,感觉lucene不是太适合。
-- 写脚本,每个一段时间,扫描一个alert log 文件,有这个错误就发送到邮箱。用存储过程加Job 也行。
3.能不能控制这个log的大小,即文件增长到指定大小后,就写进另一个文件,即alert_SID_1.log,alert_SID_2.log,alert_SID_3.log......这种。-- 写个脚本,每天执行一次,将alert log 复制一份,然后删除就的内容。 这样就可以了。 这个脚本有很多。 下面这个是windows 下面的。alert.bat
set year=%DATE:~0,4%
set month=%DATE:~5,2%
set day=%DATE:~8,2%
copy D:\oracle\admin\ORCL\bdump\alert_orcl.log D:\oracle\admin\ORCL\bdump\alert_orcl"%year%%month%%day%".log
cd. >D:\oracle\admin\ORCL\bdump\alert_orcl.log
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
Q Q 群:62697716
也可以不通过alert文件,根据trace文件来也可以,因为死锁的时候会产生的对应的trace文件的,在unix下面只要根据关键字grep一下就可以知道哪些文件包括了死锁信息。
path_bdump varchar2(4000);
name_alert varchar2(100);
begin select
value into path_bdump
from
sys.v_$parameter
where
name = 'background_dump_dest'; select
'alert_' || value || '.log' into name_alert
from
sys.v_$parameter
where
name = 'db_name'; execute immediate 'create or replace directory background_dump_dest_dir as ''' ||
path_bdump || ''''; execute immediate
'create table alert_log_external ' ||
' (line varchar2(4000) ) ' ||
' organization external ' ||
' (type oracle_loader ' ||
' default directory background_dump_dest_dir ' ||
' access parameters ( ' ||
' records delimited by newline ' ||
' nobadfile ' ||
' nologfile ' ||
' nodiscardfile ' ||
' fields terminated by ''#$~=ui$X''' ||
' missing field values are null ' ||
' (line) ' ||
' ) ' ||
' location (''' || name_alert || ''') )' ||
' reject limit unlimited ';
end;
/begin
external_alert_log;
end;
/select * from alert_log_external;