Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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
Oracle11g 系统或目录表-DBA\uU/DBC-输出不稳定_Oracle11g_Teradata - Fatal编程技术网

Oracle11g 系统或目录表-DBA\uU/DBC-输出不稳定

Oracle11g 系统或目录表-DBA\uU/DBC-输出不稳定,oracle11g,teradata,Oracle11g,Teradata,我试图获取使用系统表或目录表引用特定字段的所有表/视图(换句话说,所有对象)的列表。我正在使用以下查询 select * from dba_col_comments where column_name like('SXX_AXXX_%') order by 1; 然而,输出是不稳定的。当我重复运行相同的查询而不做任何更改时,输出是不同的。例如,它生成9300条记录,几分钟后生成9350条,几分钟后生成9347条 我在Teradata中也观察到了同样的行为 我的理论是——在生产环境

我试图获取使用系统表或目录表引用特定字段的所有表/视图(换句话说,所有对象)的列表。我正在使用以下查询

select * 
  from dba_col_comments 
 where column_name like('SXX_AXXX_%') 
 order by 1;
然而,输出是不稳定的。当我重复运行相同的查询而不做任何更改时,输出是不同的。例如,它生成9300条记录,几分钟后生成9350条,几分钟后生成9347条

我在Teradata中也观察到了同样的行为

我的理论是——在生产环境中,创建的临时对象可能会在系统/目录表中获得一个条目


有什么想法/方向吗?

在Teradata中,您会发现,当全局临时表被实例化(由SQL语句引用)时,应该将记录添加到数据字典表TVM中。会话注销后,这些记录将被删除,只留下与提交的原始
CREATE GLOBAL TEMPORARY table
语句关联的基表记录

您可以使用view
DBC.allentitables
找到这些实例

在Teradata中,
易失性表
不在数据字典中维护

编辑-您的里程数可能会有所不同,但这会让您开始使用Teradata

SELECT D1.DatabaseNameI AS DatabaseName_
     , T1.TVMNameI AS TableName_
     , F1.FieldName AS ColumnName_
  FROM "DBC".TVM T1
 INNER JOIN
       "DBC".Dbase D1
    ON D1.DatabaseId = T1.DatabaseId
 INNER JOIN
       "DBC".TVFields F1
    ON F1.DatabaseId = T1.DatabaseId
   AND F1.TableId = T1.TVMId
WHERE F1.FieldName = 'MyColumn'
  --AND D1.DatabaseNameI IN ('{Database1}', ... '{Database99}') -- Filter on databases
  AND F1.FieldType in ('i', 'i1', 'i2', 'i8') -- Integer, ByteInt, SmallInt, BigInt
  --AND T1.TableKind IN ('T') -- Optional Filter to just tables.
  AND NOT EXISTS
     (SELECT 'x'
        FROM "DBC".TempTables TT1
       WHERE Tt1.TableId = T1.TVMId
     )
;

你的理论听起来相当不错,很可能是Oracle为自己的内部流程创建了对象。你还没有描述你的问题是什么。。。你到底在追求什么?你确定你在追求什么?为什么不排除系统模式?我正在尝试的是——在我们的一个项目中,我们正在尝试将代理键的数据类型从整数更改为十进制(18,0)。这是一个非常重要的字段,用于近14000个表中。我试图确保使用system/catalog/data dictionary表是查找数据库对象的简单方法。然而,正如我所提到的,我试图了解为什么产出会出现这种波动,以及如何消除它们。换句话说,我如何获取此字段存在或引用的数据库对象列表,并确保这些对象不是临时的。您应该能够将考虑的数据库限制为仅包含目标表和临时表的数据库。消除最终用户能够创建表的任何数据库。还应考虑修改引用此列的全局临时表的任何基本定义。谢谢@Rob-您的回复非常有用。