Generate the DDL of entire schema objects with DBMS_METADATA package
We will use the DBA_OBJECTS table for specify the parameter input to get all the DDL of all objects present in the schema.
Following script will give you the ddl of object present in the Schema.
SPOOL E:\DDL.SQL
set pagesize 0
set long 90000
set feedback off
set echo off
set heading off
set lines 100
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform,'SQLTERMINATOR',true);
exec DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);
select dbms_metadata.GET_DDL(u.object_type,u.object_name,u.owner) from
dba_objects u
where owner = 'Schema_name';
SPOOL OFF
Note:
1. You can also disabled storage clause in defination of Oracle by executing following statement before generated DDLs
exec DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);
2. Enable the SQL Terminator after each object syntax completed.
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform,'SQLTERMINATOR',true);
Example:
Showing the two object present in the list
SQL> set pagesize 0
SQL> set long 90000
SQL> set feedback off
SQL> set echo off
SQL> set heading off
SQL> set lines 100
SQL>
SQL> exec dbms_metadata.set_transform_param(dbms_metadata.session_transform,'SQLTERMINATOR',true);
SQL> exec DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);
SQL>
SQL> select dbms_metadata.GET_DDL(u.object_type,u.object_name,u.owner) from
2 dba_objects u
3 where owner = 'TEST';
CREATE TABLE "TEST"."TESTPRIMARY"
( "ID" NUMBER,
"NAME" VARCHAR2(10),
PRIMARY KEY ("ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
TABLESPACE "USERS" ENABLE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
TABLESPACE "USERS" ;
CREATE TABLE "TEST"."TESTING"
( "ID" NUMBER,
"NAME" VARCHAR2(100)
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
TABLESPACE "USERS" ;
CREATE UNIQUE INDEX "TEST"."SYS_C008201" ON "TEST"."TESTPRIMARY" ("ID")
PCTFREE 10 INITRANS 2 MAXTRANS 255
TABLESPACE "USERS" ;