Difference between revisions of "Extract ddl with "dbms metadata.get ddl""

From dbawiki
Jump to: navigation, search
(Different ways of extracting ddl)
Line 6: Line 6:
 
  set trimspool on
 
  set trimspool on
 
  set feed off
 
  set feed off
   
+
  spool deedeeyell.sql
 
  select 'select dbms_metadata.get_ddl(''INDEX'','''||object_name||''',''&&schema'')||chr(10)||''/'' from dual;'
 
  select 'select dbms_metadata.get_ddl(''INDEX'','''||object_name||''',''&&schema'')||chr(10)||''/'' from dual;'
 
  from dba_objects where owner = UPPER('&&schema')
 
  from dba_objects where owner = UPPER('&&schema')
Line 12: Line 12:
 
  and ...
 
  and ...
 
  /
 
  /
 +
spool off
  
 
Get the semi-colon to be appended:
 
Get the semi-colon to be appended:
 
  exec dbms_metadata.set_transform_param(DBMS_METADATA.SESSION_TRANSFORM, ‘SQLTERMINATOR’, TRUE );
 
  exec dbms_metadata.set_transform_param(DBMS_METADATA.SESSION_TRANSFORM, ‘SQLTERMINATOR’, TRUE );
  
  SELECT ‘select dbms_metadata.get_ddl(”’|| object_type || ”’,
+
Make the pretty output:
 +
  exec DBMS_METADATA.SET_TRANSFORM_PARAM (DBMS_METADATA.SESSION_TRANSFORM, 'PRETTY', true);
 +
 
 +
=== Get lots of DDL at once===
 +
select ‘select dbms_metadata.get_ddl(”’|| object_type || ”’,
 
  ”’||object_name||”’,”&&schema”) FROM dual;’
 
  ”’||object_name||”’,”&&schema”) FROM dual;’
  from dba_objects where owner = UPPER(‘&&schema’)
+
  from   dba_objects where owner = UPPER(‘&&schema’)
  and object_type = ‘INDEX’
+
where  1=1
 +
  and   object_type = ‘INDEX’
 
   
 
   
  SELECT ‘select dbms_metadata.get_ddl(”’ || type || ”’,
+
  select ‘select dbms_metadata.get_ddl(”’ || type || ”’,
 
  ”’ || name || ”’, ”’ || UPPER(‘&&schema’) || ”’) FROM dual;’
 
  ”’ || name || ”’, ”’ || UPPER(‘&&schema’) || ”’) FROM dual;’
  FROM dba_object_size
+
  from  dba_object_size
  WHERE owner = UPPER(‘&&schema’)
+
  where  1=1
  AND type = ‘TABLE’; — change to each of the valid types
+
and    owner = UPPER(‘&&schema’)
 +
  and    type = ‘TABLE’; — change to each of the valid types
  
 +
=== Get View DDL===
 +
set long 3000000
 +
set lines 1000
 +
set pages 0
 +
set trimspool on
 +
set feedb off
 +
col eskewell for a1000
 +
spool ddl_view.sql
 +
select DBMS_METADATA.GET_DDL ('VIEW', '&&view_name', '&&schema')||chr(10)||'/' eskewell from dual;
 +
spool off
 +
===Get Trigger DDL===
 
  set long 3000000
 
  set long 3000000
 
  set lines 1000
 
  set lines 1000
 
  set pages 0
 
  set pages 0
 +
set trimspool on
 
  set feedb off
 
  set feedb off
 
  col eskewell for a1000
 
  col eskewell for a1000
  spool deedeeyell
+
  spool ddl_trigger.sql
  select DBMS_METADATA.GET_DDL ('VIEW', 'V_CMDB_MESSAGEFLOW', 'SAPBW')||chr(10)||'/' eskewell from dual;
+
  select dbms_metadata.get_ddl('TRIGGER', '&trigger_name','&schema') ddl
 +
from   dual
 
  spool off
 
  spool off
 
  
 
===Extract ddl for a table without its integrity contraints===
 
===Extract ddl for a table without its integrity contraints===

Revision as of 14:47, 12 December 2011

Different ways of extracting ddl

set pagesize 0
set linesize 30000
set long 500000
set longchunksize 500000
set trimspool on
set feed off
spool deedeeyell.sql
select 'select dbms_metadata.get_ddl(INDEX,||object_name||,&&schema)||chr(10)||/ from dual;'
from dba_objects where owner = UPPER('&&schema')
and object_type = 'INDEX'
and ...
/
spool off

Get the semi-colon to be appended:

exec dbms_metadata.set_transform_param(DBMS_METADATA.SESSION_TRANSFORM, ‘SQLTERMINATOR’, TRUE );

Make the pretty output:

exec DBMS_METADATA.SET_TRANSFORM_PARAM (DBMS_METADATA.SESSION_TRANSFORM, 'PRETTY', true);

Get lots of DDL at once

select ‘select dbms_metadata.get_ddl(”’|| object_type || ”’,
”’||object_name||”’,”&&schema”) FROM dual;’
from   dba_objects where owner = UPPER(‘&&schema’)
where  1=1
and    object_type = ‘INDEX’

select ‘select dbms_metadata.get_ddl(”’ || type || ”’,
”’ || name || ”’, ”’ || UPPER(‘&&schema’) || ”’) FROM dual;’
from   dba_object_size
where  1=1
and    owner = UPPER(‘&&schema’)
and    type  = ‘TABLE’; — change to each of the valid types

Get View DDL

set long 3000000
set lines 1000
set pages 0
set trimspool on
set feedb off
col eskewell for a1000
spool ddl_view.sql
select DBMS_METADATA.GET_DDL ('VIEW', '&&view_name', '&&schema')||chr(10)||'/' eskewell from dual;
spool off

Get Trigger DDL

set long 3000000
set lines 1000
set pages 0
set trimspool on
set feedb off
col eskewell for a1000
spool ddl_trigger.sql
select dbms_metadata.get_ddl('TRIGGER', '&trigger_name','&schema') ddl
from   dual
spool off

Extract ddl for a table without its integrity contraints

dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'REF_CONSTRAINTS', FALSE);

then extract the ddl using one of the methods above.
Finally, extract the constraint ddl and run it separately:

DBMS_METADATA.GET_DDL('REF_CONSTRAINT','<REF_CONS_NAME>');