我正在尝试找出Oracle中的临时表从哪里提取数据。此数据库已连接到CMS。我的理解是,当在CMS中运行报表时,Oracle会创建一个临时表来生成报表。在Oracle SQL开发人员中,我可以找到表(空)并查看列名。但是,当我查看生成数据的sql时,它只有列规范,如“column_name number(9,0)”。当我查看依赖项时,name和referenced_name是相同的,类型是同义词。我是Oracle SQL Developer环境的新手。
我的目标是使用从表生成的报告中的数据,但我不知道数据来自何处,也不知道列的调用是什么,因为第三方创建了这些表而我目前无法访问表定义。
非常感谢任何帮助。如果我需要澄清一些事情,请告诉我。感谢
答案 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以查找其中的数据并将其追溯到源。