Indexing issues while partitioning with dbms_redefinition
Ok, minimal test case that reproduces the error, showing it's the intermediate table PK that is the problem:

SQL&gt; CREATE TABLE SO33070_ORIGINAL
  2  (
  3          SERIAL_ID NUMBER(15,0),
  4      INSERTED_TIME DATE DEFAULT SYSDATE,
  5          PRIMARY KEY (SERIAL_ID)
  6  );

Table created.

SQL&gt;
SQL&gt; CREATE TABLE SO33070_NEW
  2  (
  3          SERIAL_ID NUMBER(15,0),
  4      INSERTED_TIME DATE DEFAULT SYSDATE,
  5          PRIMARY KEY (SERIAL_ID)
  6  )
  7  PARTITION BY RANGE ("INSERTED_TIME") INTERVAL (NUMTODSINTERVAL(1,'DAY'))
  8  (
  9    PARTITION "p1_1" VALUES LESS THAN (TO_DATE(' 2012-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
 10  );

Table created.

SQL&gt;
SQL&gt;
SQL&gt; exec DBMS_REDEFINITION.START_REDEF_TABLE( uname =&gt; 'PHIL', orig_table =&gt; 'SO33070_ORIGINAL', int_table =&gt; 'SO33070_NEW', col_mapping =&gt; '', options_flag =&gt; DBMS_REDEFINITION.CONS_USE_ROWID);

PL/SQL procedure successfully completed.

SQL&gt;
SQL&gt; DECLARE
  2  num_errors NUMBER;
  3  BEGIN
  4
  5  DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(uname =&gt; 'PHIL', orig_table=&gt;'SO33070_ORIGINAL', int_table=&gt;'SO33070_NEW', copy_indexes=&gt;dbms_redefinition.cons_orig_params , copy_triggers=&gt;TRUE, copy_constraints=&gt;TRUE, copy_privileges=&gt;TRUE, ignore_errors=&gt;FALSE, num_errors=&gt;num_errors, copy_statistics=&gt;false);
  6
  7  END;
  8  /
DECLARE
*
ERROR at line 1:
ORA-01408: such column list already indexed
ORA-06512: at "SYS.DBMS_REDEFINITION", line 1364
ORA-06512: at "SYS.DBMS_REDEFINITION", line 2026
ORA-06512: at line 5


SQL&gt;
SQL&gt; col object_owner for a6
SQL&gt; col base_table_name for a20
SQL&gt; col ddl_txt for a55
SQL&gt;
SQL&gt; select object_type, object_owner, base_table_name, ddl_txt
  2  from dba_redefinition_errors;

OBJECT_TYPE  OBJECT BASE_TABLE_NAME
------------ ------ --------------------
DDL_TXT
-------------------------------------------------------
INDEX        PHIL   SO33070_ORIGINAL
CREATE UNIQUE INDEX "PHIL"."TMP$$_SYS_C00110330" ON "PH
IL"."SO33070_NEW" ("SERIA


SQL&gt;
SQL&gt; exec DBMS_REDEFINITION.ABORT_REDEF_TABLE(uname=&gt;'PHIL', orig_table=&gt;'SO33070_ORIGINAL', int_table=&gt;'SO33070_NEW');

PL/SQL procedure successfully completed.

SQL&gt;


You have 2 options to fix this.

Option 1 - create the intermediate table without a primary key (best option!!):

SQL&gt; CREATE TABLE SO33070_ORIGINAL
  2  (
  3          SERIAL_ID NUMBER(15,0),
  4      INSERTED_TIME DATE DEFAULT SYSDATE,
  5          PRIMARY KEY (SERIAL_ID)
  6  );

Table created.

SQL&gt;
SQL&gt; CREATE TABLE SO33070_NEW
  2  (
  3          SERIAL_ID NUMBER(15,0),
  4      INSERTED_TIME DATE DEFAULT SYSDATE
  5  )
  6  PARTITION BY RANGE ("INSERTED_TIME") INTERVAL (NUMTODSINTERVAL(1,'DAY'))
  7  (
  8    PARTITION "p1_1" VALUES LESS THAN (TO_DATE(' 2012-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  9  );

Table created.

SQL&gt;
SQL&gt;
SQL&gt; exec DBMS_REDEFINITION.START_REDEF_TABLE( uname =&gt; 'PHIL', orig_table =&gt; 'SO33070_ORIGINAL', int_table =&gt; 'SO33070_NEW', col_mapping =&gt; '', options_flag =&gt; DBMS_REDEFINITION.CONS_USE_ROWID);

PL/SQL procedure successfully completed.

SQL&gt;
SQL&gt; DECLARE
  2  num_errors NUMBER;
  3  BEGIN
  4
  5  DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(uname =&gt; 'PHIL', orig_table=&gt;'SO33070_ORIGINAL', int_table=&gt;'SO33070_NEW', copy_indexes=&gt;dbms_redefinition.cons_orig_params , copy_triggers=&gt;TRUE, copy_constraints=&gt;TRUE, copy_privileges=&gt;TRUE, ignore_errors=&gt;TRUE, num_errors=&gt;num_errors, copy_statistics=&gt;false);
  6
  7  END;
  8  /

PL/SQL procedure successfully completed.

SQL&gt;
SQL&gt; col object_owner for a6
SQL&gt; col base_table_name for a20
SQL&gt; col ddl_txt for a55
SQL&gt;
SQL&gt; select object_type, object_owner, base_table_name, ddl_txt
  2  from dba_redefinition_errors;

no rows selected

SQL&gt;
SQL&gt; exec DBMS_REDEFINITION.FINISH_REDEF_TABLE(uname=&gt;'PHIL', orig_table=&gt;'SO33070_ORIGINAL', int_table=&gt;'SO33070_NEW');

PL/SQL procedure successfully completed.

SQL&gt;


Option 2 - simply tell DBMS_REDEFINITION to ignore the error (ignore_errors=&gt;true).

It looks like there are some errors, but they don't matter as the PK constraint and index was created when the intermediate table was created:

SQL&gt; exec DBMS_REDEFINITION.START_REDEF_TABLE( uname =&gt; 'PHIL', orig_table =&gt; 'SO33070_ORIGINAL', int_table =&gt; 'SO33070_NEW', col_mapping =&gt; '', options_flag =&gt; DBMS_REDEFINITION.CONS_USE_ROWID);

PL/SQL procedure successfully completed.

SQL&gt;
SQL&gt; DECLARE
  2  num_errors NUMBER;
  3  BEGIN
  4
  5  DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(uname =&gt; 'PHIL', orig_table=&gt;'SO33070_ORIGINAL', int_table=&gt;'SO33070_NEW', copy_indexes=&gt;dbms_redefinition.cons_orig_params , copy_triggers=&gt;TRUE, copy_constraints=&gt;TRUE, copy_privileges=&gt;TRUE, ignore_errors=&gt;TRUE, num_errors=&gt;num_errors, copy_statistics=&gt;false);
  6
  7  END;
  8  /

PL/SQL procedure successfully completed.

SQL&gt;
SQL&gt; col object_owner for a6
SQL&gt; col base_table_name for a20
SQL&gt; col ddl_txt for a55
SQL&gt;
SQL&gt; select object_type, object_owner, base_table_name, ddl_txt
  2  from dba_redefinition_errors;

OBJECT_TYPE  OBJECT BASE_TABLE_NAME
------------ ------ --------------------
DDL_TXT
-------------------------------------------------------
INDEX        PHIL   SO33070_ORIGINAL
CREATE UNIQUE INDEX "PHIL"."TMP$$_SYS_C00110410" ON "PH
IL"."SO33070_NEW" ("SERIA

CONSTRAINT   PHIL   SO33070_ORIGINAL
ALTER TABLE "PHIL"."SO33070_NEW" ADD CONSTRAINT "TMP$$_
SYS_C00110410" PRIMARY KE


SQL&gt;
SQL&gt; exec DBMS_REDEFINITION.FINISH_REDEF_TABLE(uname=&gt;'PHIL', orig_table=&gt;'SO33070_ORIGINAL', int_table=&gt;'SO33070_NEW');

PL/SQL procedure successfully completed.

SQL&gt;