如何找到对象表中似乎不存在的对象?

BON*_*BON 11 oracle oracle-10g

我有一个名为cot_ntn_pi_v. 有人告诉我这是同义词。它没有出现在 all_synonyms 表中。它看起来像一个视图或表,但我在所有对象表中找不到它。我可以从中选择,但我不能删除它,因为它“不存在”并且我无法创建一个与“该名称已被另一个对象使用”相同名称的新表。

我是要疯了还是在做一些非常愚蠢的事情?

Joh*_*yle 11

与表位于同一命名空间中的对象类型是:

  • 独立程序
  • 独立存储函数
  • 套餐
  • 用户定义类型
  • 序列
  • 观看次数
  • 私人同义词
  • 物化视图

因此它可能是这些类型之一。如果您可以从中进行选择,那么它会排除前五个,将其保留为表、视图、私有同义词或物化视图。

当您在all_objects等中搜索时,您确实使用了大写?例如,

select *
  from ALL_OBJECTS
 where OBJECT_NAME = 'COT_NTN_PI_V'; 
Run Code Online (Sandbox Code Playgroud)

如果您使用诸如 SQL Developer 或 Toad 之类的工具,您可以让它为您描述对象。在工具中突出显示名称,然后Shift-F4在 Developer 或F4Toad 中点击。Toad 提供了大量关于对象的描述,而 Developer 在“详细信息”选项卡中将有一行包含TABLE_NAMEMVIEW_NAME在其中,这将向您显示它是什么。

一旦你知道它是什么,就会更容易知道如何丢弃它。