to move a table just use
ALTER TABLE <tablename> MOVE TABLESPACE <TS_name>;
you have to rebuild all indices on this table afterwards.
You cannot change the owner of a table, I'd suggest 2 ways:
either grant select-permission on the 'old' table to the 'new' user; log in as 'new' user and run
CREATE TABLE <name> AS SELECT * FROM 'old'-user.<name>;
or export the table (using exp) and import it afterwards using FROMUSER= TOUSER=
try in sqlplus
set head off
select 'ALTER INDEX ' || ' owner' || '.' object_name ||
' REBUILD ONLINE;'
where object_type = 'INDEX' and
status = 'INVALID';
please note, this is only an example. at a simple REBUILD ONLINE some of the storage parameters (e.g. 'parallel') are lost.
so for a full recreation with equal storage-statements you have to modify this script.
select 'alter index '||owner||'.'||index_name ||' rebuild;' from
where table_name in ( <either a list of tables as a comma seperated list or a subquery against db_tables used to select your list of tables to move> )
If you are clever you can write a script to do
select '/* 1*/alter table ....;' from dba_tables...
select '/* 2*/alter index ....;' from dba_indexes..
select '/* 3*/analyze table ....;' from dba_tables...
order by 1
which will write a script to move the tables, rebuild the indexes and then analyze them all.