引言
现在的生产环境,底层大多使用ASM技术了。但这并不妨碍用户把文件——数据文件、参数文件、控制文件等——放到文件系统上。在一些不规范的操作场景下,一个不小心,文件位置就放错了。此时,可能没办法将文件删除、再重建,只能将该文件迁移到ASM中。
还有一种情况,某个存在ASM中的文件,要挪到文件系统中,这也涉及文件的迁移。
迁移数据文件到ASM
前一阵子,就遇到了上面说的第一种情况。一个表空间的数据文件,不小心制定到了文件系统上,没有发现,随着数据文件的增长,引发了文件系统的监控告警。下面介绍一种方法,使用rman工具,将该数据文件迁移到ASM中。
rman是一个功能强大的备份工具。我们首先将文件系统中的数据文件备份到ASM里,然后,再做数据文件切换。
登陆到rman中,先看看数据文件的状态
标红的表空间,有一个数据文件。从这个数据文件的名字,可以看出,该文件放在文件系统上。
rman命令,report schema ,十分方便,查看一个库的表空间、数据文件分布时,可以使用。
下面使用rman备份、切换。
备份时,我为备份文件指定了文件名。其实也可以不指定,这样oracle会为其自动生成一个名字。
从输出可以看到,备份成功。之后,执行切换命令,就完成了数据文件从文件系统到ASM的迁移。
迁移的后的结果如下:
这是一个简单的数据文件迁移案例,但可以举一反三。从ASM向文件系统迁移,也可采用这个思路。就不赘述了。
美中不足
在数据文件迁移过程中,表空间是不能对外提供服务的,要首先对表空间做offline操作,待迁移结束后,再做online操作。
altertablespace ccvcc_data offline | online
因为表空间的离线,会对应用造成影响,不能读写,这是这种方法的缺憾。
大家有什么好的法子?能够做到热迁移,欢迎给我留言啊!
更多原创文章请关注公众号:
IT运维记事本