将 Oracle smallfile 迁移到 bigfile 表空间

0 oracle

我想迁移现有数据库中的所有表空间以使用大文件表空间而不是小文件表空间。Oracle 文档暗示这是可能的,但没有明确说明如何做到这一点。

任何帮助/指针将不胜感激。

Phi*_*lᵀᴹ 6

你有几个选择。

创建新的大文件表空间,然后:

1) 一张一张地移动桌子:

alter table mytable move tablespace bigfile_tablespace;
Run Code Online (Sandbox Code Playgroud)

记住也要移动索引!

alter index myindex rebuild tablespace bigfile_index_tablespace;
Run Code Online (Sandbox Code Playgroud)

2) 用数据泵导出数据库,删除现有对象,然后使用remap_tablespace子句重新导入,例如:

impdp remap_tablespace=OLDSMALLTS1:NEWBIGTS1,OLDSMALLTS2:NEWBIGTS2 directory=mydir dumpfile=mydumpfile.dmp logfile=mylogfile.log
Run Code Online (Sandbox Code Playgroud)

3)DBMS_REDEFINITION用于移动对象。这方面的一个例子可以在我对另一个问题的回答中找到,这里

完成后,删除所有旧对象,然后删除表空间。

如果您能承受停机时间,数据泵将是最简单的选择。