小编典典

Oracle为什么不告诉您WHICH表或视图不存在?

sql

如果您使用过Oracle,则可能会收到有用的消息“ ORA-00942:表或视图不存在”。消息中不包含缺少的对象的名称是有正当的技术原因吗?

关于此事的争论是由于安全性声音,就像它们是由TSA精心制作的一样。如果我是攻击者,我会知道我刚刚尝试利用哪个表,并且能够轻松地解释此无用的消息。如果我是一名开发人员,需要通过几层应用程序代码进行复杂的联接,那么通常很难说出来。

我的猜测是,当最初实现此错误时,有人忽略了添加对象名称,而现在,人们担心它会破坏兼容性以对其进行修复。(如果代码发生变化,则执行诸如解析错误消息之类的愚蠢操作的代码将被混淆。)

有没有一种开发人员友好的方法(而不是招募DBA)来确定丢失表的名称?


尽管我已经接受了与该主题相关的答案,但它并没有真正回答我的问题: 为什么错误消息中的名称不是一部分? 如果有人能提出真正的答案,我将很乐意更改我的投票。


阅读 213

收藏
2021-04-15

共1个答案

小编典典

您可以在参数文件(纯文本或spfile)中设置EVENT,以强制Oracle在user_dump_dest中转储详细的跟踪文件,如果不是SQL,则对象名称可能在其中。

EVENT =“ 942跟踪名称错误堆栈级别12”

如果您使用的是纯文本文件,则需要将所有EVENT设置保持在连续的行上。不确定如何将其应用于spfile。

2021-04-15