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