Depending on the version of oracle you are using you may be able to use dbms_metadata.get_ddl to retrieve the ddl used to created the table, partitions and indexes.

e.g.

SQL> create table test_tab (col1 varchar2(20), col2 number);

Table created.

SQL> select dbms_metadata.get_ddl('TABLE','TEST_TAB',user)
2 from dual;

DBMS_METADATA.GET_DDL('TABLE','TEST_TAB',USER)
--------------------------------------------------------------------------------

CREATE TABLE "GB"."TEST_TAB"
( "COL1" VARCHAR2(20),
"COL2" NUMBER
)