天天看点

迁移oracle数据文件

引言

现在的生产环境,底层大多使用ASM技术了。但这并不妨碍用户把文件——数据文件、参数文件、控制文件等——放到文件系统上。在一些不规范的操作场景下,一个不小心,文件位置就放错了。此时,可能没办法将文件删除、再重建,只能将该文件迁移到ASM中。

还有一种情况,某个存在ASM中的文件,要挪到文件系统中,这也涉及文件的迁移。

迁移数据文件到ASM

前一阵子,就遇到了上面说的第一种情况。一个表空间的数据文件,不小心制定到了文件系统上,没有发现,随着数据文件的增长,引发了文件系统的监控告警。下面介绍一种方法,使用rman工具,将该数据文件迁移到ASM中。

rman是一个功能强大的备份工具。我们首先将文件系统中的数据文件备份到ASM里,然后,再做数据文件切换。

登陆到rman中,先看看数据文件的状态

迁移oracle数据文件

标红的表空间,有一个数据文件。从这个数据文件的名字,可以看出,该文件放在文件系统上。

rman命令,report schema ,十分方便,查看一个库的表空间、数据文件分布时,可以使用。

下面使用rman备份、切换。

迁移oracle数据文件

备份时,我为备份文件指定了文件名。其实也可以不指定,这样oracle会为其自动生成一个名字。

从输出可以看到,备份成功。之后,执行切换命令,就完成了数据文件从文件系统到ASM的迁移。

迁移的后的结果如下:

迁移oracle数据文件

这是一个简单的数据文件迁移案例,但可以举一反三。从ASM向文件系统迁移,也可采用这个思路。就不赘述了。

美中不足

在数据文件迁移过程中,表空间是不能对外提供服务的,要首先对表空间做offline操作,待迁移结束后,再做online操作。

altertablespace ccvcc_data offline | online

因为表空间的离线,会对应用造成影响,不能读写,这是这种方法的缺憾。

大家有什么好的法子?能够做到热迁移,欢迎给我留言啊!

更多原创文章请关注公众号:

IT运维记事本

迁移oracle数据文件