using an option available from 12.2 we can copy the column level defaults to a new table.
but no data copy possible.
demo@ORA12C> create table t1(x int default 1, y varchar2(30) not null, z date) ;
Table created.
demo@ORA12C> insert into t1(x,y,z) values(default,'ABC',sysdate);
1 row created.
demo@ORA12C> insert into t1(y,z) values('Hello',sysdate-3);
1 row created.
demo@ORA12C> commit;
Commit complete.
demo@ORA12C> select * from t1;
X Y Z
---------- ------------------------------ -----------
1 ABC 11-JAN-2018
1 Hello 08-JAN-2018
demo@ORA12C> create table t2
2 for exchange with table t1;
Table created.
demo@ORA12C> select table_name, column_name, data_type,data_length,nullable,data_default
2 from user_tab_columns
3 where table_name in ('T1','T2')
4 order by table_name,column_id;
TABLE COLUM DATA_TYPE DATA_LENGTH N DATA_DEFAU
----- ----- ---------- ----------- - ----------
T1 X NUMBER 22 Y 1
T1 Y VARCHAR2 30 N
T1 Z DATE 7 Y
T2 X NUMBER 22 Y 1
T2 Y VARCHAR2 30 N
T2 Z DATE 7 Y
6 rows selected.
demo@ORA12C> select * from t2;
no rows selected
demo@ORA12C> insert into t2 select * from t1;
2 rows created.
demo@ORA12C> commit;
Commit complete.
demo@ORA12C> select * from t2;
X Y Z
---------- ------------------------------ -----------
1 ABC 11-JAN-2018
1 Hello 08-JAN-2018
demo@ORA12C>