查找全局临时表从Oracle

时间:2017-11-21 16:03:19

标签: sql database oracle oracle-sqldeveloper temp-tables

我正在尝试找出Oracle中的临时表从哪里提取数据。此数据库已连接到CMS。我的理解是,当在CMS中运行报表时,Oracle会创建一个临时表来生成报表。在Oracle SQL开发人员中,我可以找到表(空)并查看列名。但是,当我查看生成数据的sql时,它只有列规范,如“column_name number(9,0)”。当我查看依赖项时,name和referenced_name是相同的,类型是同义词。我是Oracle SQL Developer环境的新手。

我的目标是使用从表生成的报告中的数据,但我不知道数据来自何处,也不知道列的调用是什么,因为第三方创建了这些表而我目前无法访问表定义。

非常感谢任何帮助。如果我需要澄清一些事情,请告诉我。感谢

1 个答案:

答案 0 :(得分:0)

请你试试

select table_name from all_tables where temporary = 'Y';

这为您提供了GTT列表

有两种类型,特定于交易和特定于会话。

如果您的GTT是特定于交易的。即,使用ON commit DELETE rows选项创建,然后在提交事务后将删除数据。

如果是特定于会话的。即,使用ON commit PRESERVE rows选项创建,然后数据将被保留,直到会话关闭。你可以查询它。

如果您有DBA访问权限,请使用

查找详细信息
set long 20000
select dbms_metadata.get_ddl( 'TABLE', 'GTT' ) from dual;

将GTT替换为原始的全局临时表名称

但是如果你想了解谁将数据放入GTT,你可以尝试

SELECT *
  FROM dba_dependencies
 WHERE referenced_name  = 'GTT'
   AND referenced_type  = 'TABLE'

OR

SELECT *
  FROM dba_source
 WHERE UPPER(text) LIKE '%YOUR_GTT_NAME%';

此外,您可以直接查询GTT以查找其中的数据并将其追溯到源。