如果我在一个目录中有一个数据文件并且它对于该目录来说太大了,我可以使用 Oracle 中的什么命令来移动该文件,或者我是否将另一个数据文件放入另一个目录?
ALTER TABLESPACE
users
ADD DATAFILE
‘/ora01/oracle/oradata/booktst_users_02.dbf’
size 100m
你可以做任何一个。添加数据文件更简单,因为它可以使用您显示的命令在线完成。只要您不介意数据文件跨目录分布,并且您不需要删除文件当前所在的文件系统,这对您来说应该没问题。
该文档解释了如何重新定位数据文件。我不会引用整个事情,但基本上,在表空间脱机的情况下,将数据文件复制到另一个磁盘,然后使用ALTER TABLESPACE...RENAME DATAFILE
命令更新数据库控制文件(和数据字典)以指向新位置,然后你可以使表空间重新联机。
正如文档还提到的,对修改后的数据库进行备份。一旦表空间使用了文件的新副本,您就可以从文件系统中删除旧的副本——小心,确保您正在处理未使用的副本!- 释放磁盘空间。
另一种选择是在更大的文件系统上创建一个带有数据文件的新表空间,然后将所有对象移动到该表空间中,然后删除原始表空间。表空间保持在线,但对正在移动的对象的访问将被暂时阻止;如果对象很大,这可能是一个重大问题,并且比移动数据文件慢得多。