如何获取用于在oracle中创建表的select语句查询

时间:2017-08-28 13:41:13

标签: oracle

我在oracle中创建了一个像

的表
CREATE TABLE suppliers AS (SELECT * FROM companies  WHERE id > 1000);

我想知道用于创建此表的完整select语句。

我已经尝试了get_ddl,但它没有给出select语句。你能告诉我如何获得选择声明吗?

2 个答案:

答案 0 :(得分:1)

如果您很幸运,其中一个语句将显示用于生成表格的DDL:

select *
from gv$sql
where lower(sql_fulltext) like '%create table suppliers%';

select *
from dba_hist_sqltext
where lower(sql_text) like '%create table%';

我使用了“幸运”这个词,因为GV$SQL通常只有几小时或几天的结果,直到数据从共享池中清除。 DBA_HIST_SQLTEXT仅在您启用AWR时才有帮助,该语句在AWR配置为保存数据的最后X天运行(默认值为8),语句在之后运行最后一个快照集合(默认情况下它每小时发生一次),并且该语句运行的时间足以让AWR认为它值得保存。

对于每个表,Oracle并不总是存储完整的SQL。出于安全原因,DDL语句经常在数据字典中被截断。如果文字在前N个字符后突然切断,请不要感到惊讶。

根据SQL的调用方式,案例和空间可能会有所不同。使用lower和许多通配符来增加查找语句的机会。

答案 1 :(得分:0)

尝试这个:

 select distinct table_name
 from
 all_tab_columns where column_name in
 (
 select column_name from
  all_tab_columns    
 where table_name ='SUPPLIERS'
 )

你可以找到从表

创建的表