++ redefinition
—ALTER USER «XXXXXX» QUOTA UNLIMITED ON XXXXXX;
create table exampl_redif (a clob, i int); delete from exampl_redif; insert into exampl_redif values(' exec dbms_redefinition.can_redef_table (''REDIFINISHION_TABLE_OWNER'',''REDIFINISHION_TABLE_NAME'',dbms_redefinition.cons_use_rowid); BEGIN DBMS_REDEFINITION.start_redef_table (''REDIFINISHION_TABLE_OWNER'', ''REDIFINISHION_TABLE_NAME'', ''REDIFINISHION_TABLE_NAME_REDEF'', NULL, DBMS_REDEFINITION.cons_use_rowid); END; / BEGIN DBMS_REDEFINITION.SYNC_INTERIM_TABLE(''REDIFINISHION_TABLE_OWNER'', ''REDIFINISHION_TABLE_NAME'', ''REDIFINISHION_TABLE_NAME_REDEF''); END; / DECLARE num_errors PLS_INTEGER; BEGIN DBMS_REDEFINITION.copy_table_dependents (''REDIFINISHION_TABLE_OWNER'', ''REDIFINISHION_TABLE_NAME'', ''REDIFINISHION_TABLE_NAME_REDEF'', 1, TRUE, TRUE, TRUE, TRUE, num_errors, TRUE); END; / begin for i in ( select ''alter index ''||owner||''."''||index_name||''" rebuild tablespace REDIFINISHION_TABLESPACE_NEW online'' isql from all_indexes where TABLE_NAME=''REDIFINISHION_TABLE_NAME_REDEF'' and tablespace_name=''REDIFINISHION_TABLESPACE_OLD'' ) loop execute immediate i.isql; end loop; end; / BEGIN DBMS_REDEFINITION.FINISH_REDEF_TABLE(''REDIFINISHION_TABLE_OWNER'', ''REDIFINISHION_TABLE_NAME'', ''REDIFINISHION_TABLE_NAME_REDEF''); END; / begin for i in ( select ''alter table ''||owner||''.''||table_name||'' drop constraint ''||constraint_name isql from all_constraints where r_constraint_name=(select constraint_name from all_constraints where table_name=''REDIFINISHION_TABLE_NAME_REDEF'' and constraint_type=''P'' and owner=''REDIFINISHION_TABLE_OWNER'') and owner=''REDIFINISHION_TABLE_OWNER'' and status=''DISABLED'' ) loop execute immediate i.isql; end loop; end; / DROP TABLE REDIFINISHION_TABLE_OWNER.REDIFINISHION_TABLE_NAME_REDEF; ',1); commit; select owner,table_name, replace( replace( dbms_metadata.get_ddl('TABLE',table_name,owner),'"'||owner||'"."'||table_name||'"','"'||owner||'"."'||table_name||'_REDEF"' ), 'TABLESPACE "USERS"','TABLESPACE "NEW_TABLESPACE"' ) || ';' || replace( replace( replace( replace( (select a from exampl_redif),'REDIFINISHION_TABLE_OWNER',owner ),'REDIFINISHION_TABLE_NAME',table_name ),'REDIFINISHION_TABLESPACE_NEW','PGU' ),'REDIFINISHION_TABLESPACE_OLD','USERS' ) from all_tables where TABLESPACE_NAME='USERS' and OWNER='MY_OWNER';
ps: thx to Vladimir Mukin for material