天天看点

如何编辑,读取和查询Alert.Log(文档ID 1072547.1)

目的:

每个数据库都有一个alert.log。 数据库的警报日志是包含内部错误(ORA-600/7445),损坏错误和死锁错误(ORA-60),管理操作以及SQL * Plus语句STARTUP,SHUTDOWN, 存档日志和恢复。

每次发生这些事件时,Oracle都会向警报日志写入数据。

本笔记根据警报日志的常见问题提供有关阅读,编辑和查询警报日志的信息。

方案:

1.如果警报日志被删除会发生什么?

如果删除警报日志,则在下次发生警报日志中记录的事件时,Oracle会自动创建新日志。

2.如果警报日志被锁定,是否会更新?

如果警报日志在数据库启动或运行时由应用程序打开,则可能会遇到问题,即需要从磁盘重新加载警报日志,并且将丢失发布到应用程序的更改。如果您不从磁盘重新加载警报日志,则在保存警报日志时,启动/事件所做的更改将会丢失。

例如:

a.警报日志在文本编辑器中打开并进行更改。

b.更改系统切换日志文件;发布

c.日志文件切换记录将不会发布,直到编辑器释放锁定。如果保存编辑器中所做的更改,日志切换将不会发布到警报日志中。

3.如何将自己的消息写入警报日志。

如果要将消息写入警报日志,则可以使用未记录的KSDWRT过程(DBMS_SYSTEM的一部分)。

关于DBMS_SYSTEM的注意事项:

实际上,只有在Oracle支持人员要求时才能安装该软件包。

它没有记录在服务器文档中。

因此,软件包的功能可能会改变,恕不另行通知

它仅在Oracle支持人员的指导下使用,否则不受支持。

根据内部注释153324.1:

一般来说,如果一个软件包根本不在Oracle文档中,这是故意的,因为它不适合最终用户使用。 客户应避免使用未记录的软件包,除非有特别指示使用它们

Oracle支持或Oracle开发。

sys.dbms_system.ksdwrt的第一个参数表示目标:

*使用1写入跟踪文件。

*使用2写入“alert.log”。

*使用3写入两者。

第二个参数是消息。

例:

begin

sys.dbms_system.ksdwrt(2, 'My own message');

end;

/

4.如何使用SQL查询警报日志。

从9i开始,您可以将外部平面文件映射到Oracle表格。

在11g中,X $ DBGALERTEXT现在以表格形式存在。 您可以查询表格以获取所需的特定列。

继续阅读