当您第一次查看 Oracle 数据库时,第一个问题通常是“警报日志在哪里?”。网格控制可以告诉您,但它通常在环境中不可用。
一段时间前,我发布了一些 bash 和 Perl 脚本来查找和跟踪我博客上的警报日志,我很惊讶地看到该帖子仍然获得了很多点击。
使用的技术是从 v$parameter 中查找 background_dump_dest。但我只在 Oracle 数据库 10g 上测试过这个。
还有比这更好的方法吗?有谁知道这在 11g 中是否仍然有效?
确信它会在 11g 中工作,该参数已经存在了很长时间。
对我来说似乎是找到它的正确方法。
如果未设置 background_dump_dest 参数,alert.log 将被放入 $ORACLE_HOME/RDBMS/trace
打开日志后,我会考虑使用File::Tail或File::Tail::App在写入时显示它,而不是休眠和阅读。 File::Tail::App
特别聪明,因为它会检测到文件被旋转和切换,并且会记住你在程序调用之间的位置。
我还考虑在使用它之前锁定你的缓存文件。竞争条件可能不会打扰您,但是让多个人尝试同时启动您的程序可能会导致争吵谁可以写入缓存文件。
然而,这两个都是挑剔的。我对您的代码的简短浏览并没有发现任何明显的错误。