转移表空间步骤
一、转移表空间
ALTER TABLE tab_name MOVE TABLESPACE tabspace_name;
分区表
ALTER TABLE table_name MOVE PARTITION para_name TABLESPACE tablespace_name;
批量生成语句:
select 'ALTER TABLE '||TABLE_NAME||' MOVE TABLESPACE tabspace_name;' from user_tables;
二、重建索引
ALTER INDEX indx_name REBUILD ONLINE;
SEELCT 'ALTER INDEX ''||INDX_NAME||' REBUILD ONLINE;' from user_indexes;
ALTER INDEX indx_name REBUILD PARTITION indx_part_name TABLESPACE tablespace_name;
SELECT 'alter index '||OWNER||'.'||SEGMENT_NAME||' rebuild tablespace tabspace_name online nologging;'
FROM dba_segments where tablespace_name =‘tabspace_name’ AND segment_type='INDEX'
四、指定用户默认的表空间
ALTER USER "user_name" DEFAULT TABLESPACE "TEST_SPC";
五、如果删除表空间之前删除了表空间文件,解决方法(oracle9i验证通过):
$ sqlplus /nolog
sql> conn / as sysdba;
sql> shutdown abort
sql> startup mount
sql> alter datebase datafile 'datafilename' offine drop;
sql> alter database open;
sql> drop tablespace tablespace_name including contents;
六、在表空间联机状态下使该表空间下的数据文件脱机后,在想把脱机的数据文件联机就会报错。可以直接脱机表空间,该空间下的数据文件也变成脱机状态。
七、分区表操作
values less than (200409) tablespace ts_ziken;
--删除一分区
alter table part_tbl drop Partition part_tbl_08;
--将一个分区分为两个分区
alter table bill_monthfee_zero split Partition p_200409 at (200409)
into (Partition p_200409_1 tablespace ts_ziken,
Partition p_200409_2 tablespace ts_ziken_idx);