假设我有一个名为TABLE1的表,它位于表空间TS1中。我还有另一个表空间TS2。
以下三个命令有何不同:
ALTER TABLE TABLE1 MOVE NOLOGGING PARALLEL;
ALTER TABLE TABLE1 MOVE TABLESPACE TS1 NOLOGGING PARALLEL;
ALTER TABLE TABLE1 MOVE TABLESPACE TS2 NOLOGGING PARALLEL;
提前感谢。
假设我有一个名为TABLE1的表,它位于表空间TS1中。我还有另一个表空间TS2。
以下三个命令有何不同:
ALTER TABLE TABLE1 MOVE NOLOGGING PARALLEL;
ALTER TABLE TABLE1 MOVE TABLESPACE TS1 NOLOGGING PARALLEL;
ALTER TABLE TABLE1 MOVE TABLESPACE TS2 NOLOGGING PARALLEL;
提前感谢。
因此,使用第一条语句,Oracle会将表移动到同一表空间中的新段,而在其他两条语句中,Oracle会将表移动到指定表空间(分别为TS1和TS2)中的新段。
move_table_clause
允许您将非分区表或分区表的分区数据移动到一个新段中,可选择在不同的表空间中,并可选择修改任何其存储属性。
TABLE1
已经在表空间TS1
上,则第一条和第二条命令将执行相同的操作。MOVE
只会在原始表空间上重新组织段。我尝试了许多脚本,但并不适用于所有对象。你不能将聚集的对象从一个表空间移动到另一个表空间,必须使用expdp。因此,我建议使用expdp是将所有对象移动到不同表空间的最佳选择。
以下是命令。
nohup expdp \"/ as sysdba\" DIRECTORY=test_dir DUMPFILE=users.dmp LOGFILE=users.log TABLESPACES=USERS &
https://www.orahow.com/2018/06/move-all-objects-to-another-tablespace.html