Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从Oracle中的所有_表视图中排除MDRT%表_Sql_Oracle - Fatal编程技术网

Sql 从Oracle中的所有_表视图中排除MDRT%表

Sql 从Oracle中的所有_表视图中排除MDRT%表,sql,oracle,Sql,Oracle,我尝试使用以下查询检索特定架构中的所有表: SELECT OWNER || '.' || TABLE_NAME from sys.all_tables where secondary = 'N' and owner = 'TEST' 直到今天,当我意识到同一个查询在11.2.0.3和更高版本的Oracle之间的行为有所不同时,这个查询才对我起到了很好的作用。从Oracle 11.2.0.4开始,同一查询还返回一些附加表,所有表都以名称MDRT开头 我已经验证了11.2.0.3和11.2.

我尝试使用以下查询检索特定架构中的所有表:

SELECT OWNER || '.' || TABLE_NAME
  from sys.all_tables
 where secondary = 'N' and owner = 'TEST'
直到今天,当我意识到同一个查询在11.2.0.3和更高版本的Oracle之间的行为有所不同时,这个查询才对我起到了很好的作用。从Oracle 11.2.0.4开始,同一查询还返回一些附加表,所有表都以名称MDRT开头

我已经验证了11.2.0.3和11.2.0.4dbs中都存在类似的表(在12c中也注意到了)。在谷歌上搜索一下这些表的内容,发现它们是Oracle在创建空间索引时创建的。我查看了
all_tables
的模式,看看是否可以使用任何列尝试排除这些附加表,但没有成功


最令人惊讶的是,我在SO或Oracle论坛上找不到任何讨论这一问题的文章。这很烦人。

正如@AlexPoole所解释的,这些MDRT表可以按名称排除。下面是一个具体的例子,可以帮助您(和其他人)解决这个反复出现的问题:

    SELECT 
         AT.OWNER || '.' || AT.TABLE_NAME
    from 
          sys.all_tables AT,
          MDSYS.all_sdo_index_info SI   /* here are the sdo_index details */
 where 
        AT.secondary = 'N' 
    and AT.owner = 'TEST'
    and AT.owner = SI.sdo_index_owner(+)      /* optionally match schema  */
    and AT.table_name = SI.sdo_index_table(+) /* optionally match table   */
    and SI.sdo_index_table is null            /* force no results from SI */
;

您问的是如何将它们从视图中排除,而不仅仅是从查询中排除(使用
和表名,不像'MDRT%'
)?哦,不,我不想以任何方式修改数据。我只需要向连接的用户显示他在我的应用程序中拥有的所有表。我需要以某种方式隐藏这些附加表。我确实尝试过使用not LIKE,它可以处理我的测试数据,但是其他一些数据库中的名称是以MDXT而不是MDRT开头的。我只是想在这里找到一个更通用的解决方案。当然,我必须回到MD%,因为没有其他东西可以工作。不知道为什么要有索引表,或者索引会出现在这个视图中;但我没有合适的版本,也没有任何空间背景。但是,这些也会出现在你的生活中吗?如果是这样的话,你可以用它来排除它们。是的,@AlexPoole,创建这些表是为了存储/管理用于空间索引的R树索引的节点级别。SDO空间索引的create index语法包括存储参数,但不包括物理表名(很遗憾)。此外,是的,这些参数包含在所有的_SDO_index_info(或用户_SDO_index_info)中