我在oracle中创建了一个像
的表CREATE TABLE suppliers AS (SELECT * FROM companies WHERE id > 1000);
我想知道用于创建此表的完整select语句。
我已经尝试了get_ddl,但它没有给出select语句。你能告诉我如何获得选择声明吗?
答案 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'
)
你可以找到从表
创建的表