DEFINE schema=&1
SET FEEDBACK OFF
SET VERIFY OFF
SET PAGESIZE 0
SET LINESIZE 1024
SET TRIMOUT ON
SET TRIMSPOOL ON
SET SERVEROUTPUT ON
SET TERMOUT OFF
COLUMN
sid NOPRINT new_value sid;
SELECT value sid from
v$parameter
where name='db_name';
SPOOL &sid._&schema._reverse_engineer.sql
DECLARE
meta_data_handle
NUMBER;
transform_handle
NUMBER;
DDL
CLOB;
BEGIN
meta_data_handle := DBMS_METADATA.OPEN
('SCHEMA_EXPORT');
DBMS_METADATA.set_filter (meta_data_handle,
'SCHEMA', upper('&schema'));
DBMS_METADATA.set_filter (meta_data_handle,
'INCLUDE_USER', true);
DBMS_METADATA.set_filter (meta_data_handle,
'EXCLUDE_PATH_EXPR', '=''TABLE_DATA''');
-- you can inlcude/exclude
items
--
DBMS_METADATA.set_filter (meta_data_handle,
'INCLUDE_PATH_EXPR', '=''VIEW''');
--
DBMS_METADATA.set_filter (meta_data_handle,
'EXCLUDE_PATH_EXPR', '=''VIEW''');
transform_handle:=
DBMS_METADATA.add_transform (meta_data_handle,
'DDL');
DBMS_METADATA.SET_TRANSFORM_PARAM (transform_handle,
'PRETTY',true);
DBMS_METADATA.SET_TRANSFORM_PARAM (transform_handle,
'SQLTERMINATOR',true);
LOOP
DDL :=
DBMS_METADATA.fetch_clob (meta_data_handle);
EXIT WHEN DDL
IS NULL;
DBMS_OUTPUT.PUT_LINE
(to_char(DDL));
END
LOOP;
DBMS_METADATA.CLOSE (meta_data_handle);
EXCEPTION
WHEN OTHERS
THEN
DBMS_METADATA.CLOSE (meta_data_handle);
END;
/
SPOOL OFF
SET TERMOUT ON