问题 阻止Oracle生成sqlnet.log文件


我在perl中使用DBD :: Oracle,并且每当连接失败时,客户端都会生成一个带有错误详细信息的sqlnet.log文件。

问题是,我已经被perl和我自己的日志文件中的错误所困。我真的不需要这些额外的信息。

那么,是否有用于停止创建sqlnet.log的标志或环境?


2371
2018-05-11 13:45


起源

+1 - 谁还没有在他们的系统上不时找到一个百兆字节的sqlnet.log文件: - | - DCookie


答案:


来自metalink

日志记录是自动的,无法关闭日志记录,但由于您使用的是Unix服务器,因此可以将日志文件重定向到空设备,从而消除磁盘空间消耗的问题。

在SQLNET.ORA文件中,将LOG_DIRECTORY_CLIENT和LOG_DIRECTORY_SERVER设置为等于空设备。

例如:

LOG_DIRECTORY_CLIENT = /dev/null
LOG_FILE_CLIENT = /dev/null

在SQLNET.ORA中完全禁止客户端日志记录。

要禁止侦听器进行日志记录,请在LISTENER.ORA文件中设置此参数:

logging_listener = off 

4
2018-05-11 18:41





作为 Oracle文档 状态:要确保记录所有错误,不能在客户端或名称服务器上禁用日志记录。

您可以按照DCookie的建议使用/ dev / null作为日志目录。您可以在Windows机器上使用NUL:


6
2018-05-11 15:11



在Windows指针上为NUL设备+1 - DCookie


您的客户端是Windows还是* nix?如果在* nix中,您可以在sqlnet.ora文件中设置LOG_DIRECTORY_CLIENT = / dev / null。不确定你是否可以为Windows客户端做很多事情。

编辑:在Windows中看起来不可能。您可以做的最好的事情是将上面的sqlnet.ora参数设置为固定位置,并创建一个计划任务以根据需要删除该文件。

好吧,正如托马斯指出Windows上有一个空设备,使用相同的范例。


4
2018-05-11 15:00





重要提示:不要设置“LOG_FILE_CLIENT = / dev / null”,这将导致每次初始化oracle库时都重置/ dev / null的权限,并且当你的umask不允许使用世界可读写的位时,从/ dev / null中删除,如果您有权限chmod该文件:即以root身份运行。

并以root身份运行也许是微不足道的事情,比如php --version有oci php-extension存在!

详情如下: http://lists.pld-linux.org/mailman/pipermail/pld-devel-en/2014-May/023931.html

你应该使用不存在的目录内的路径:

LOG_FILE_CLIENT = /dev/impossible/path

并希望没有人创造目录 /dev/impossible :)

对于Windows NUL 可能很好,因为它不是那里的实际文件...


2
2018-05-22 22:02



更新:似乎原来的修复似乎工作回来然后LOG_FILE_CLIENT = / dev / impossible / path不是一个很好的修复,如果指定的日志路径无效,它会使库再次登录,所以我在fork的中间做什么,我不想要日志,也不希望改变/ dev / null权限。 - Elan Ruusamäe
你只需要担心的权限 /dev/null 改变, 如果 您运行Oracle客户端程序 root。由于其他许多原因,这通常是一个坏主意。但是如果你确实拥有root-powers,那么创建另一个null-device应该没有问题(/dev/ora-null?)并告诉OCI使用它。 - Mikhail T.