RAC数据文件建在本地的处理

作者简介:卢鹏,现任职于海天起点,从事国家电网数据库相关维护工作,曾就职于中国移动,从事数据模型数据治理等工作。擅长oracle数据库性能优化,数据治理,数据标准等。

场景概述

最近接触的客户RAC系统中,由于管理员的疏忽,误将数据文件添加到了本地的文件系统,导致后台alert日志连续报错甚至RAC的一个节点不能正常open。

所有将相关问题整理如下。

问题分析

此类问题是由于RAC系统的数据文件需要所有节点都能同时访问,所有需要放到共享存储上(集群文件系统或者ASM或者裸设备)。

如果数据文件错误放在了某个本地节点,则其他节点访问不到,数据库就会报错。

遇到此类问题,根据实际情况的不同,一般有如下两种解决方案:

1)将数据文件迁移至共享存储,需要对所在的表空间offline。

2)将该数据文件上的对象move至共享存储上的表空间,move期间该表不能进行业务操作

解决方案

当新增datafile没有数据写入时

(注:datafile后面可以接file_id或file_name)

–确认本地数据文件已删除

方案一: 本范例为将本地文件(test.dbf)迁移至ASM:

当新增datafile已有数据写入时

确认本地数据文件的相关信息:

需要将所移数据文件的表空间offline

利用rman工具将数据文件copy到ASM所在磁盘组:

更新控制文件相关信息:

确认已成功迁移:

将DCTAUTOIMP online:

确认:

至此本地的数据文件已成功迁移至ASM。此方案根据数据文件的大小不等,需要相关的表空间offline时间窗口,实际操作时灵活运用即可。

更为详细的资料还可以参考metalink[ID 390274.1]。

方案二:将所在本地数据文件的对象move至新表空间后,将本地数据文件drop

当新增datafile已有数据写入时

1 现在的本地datafile 已经为offline状态,删除的话需要首先进行recovery,然后online。(假设datafile 的file id 为20)

2 查看当前数据文件有哪些对象,然后move至其它表空间后进行删除

如输出结果为table test_table在该数据文件上

对于分区表则需要依次移动每个分区:

对于索引需要rebuild

如:

移走所有对象后,删除该数据文件

3 将之前移走的对象move回来(如果需要)

 


最后检查alert日志有无相关报错信息,确认没有报错。

未经允许不得转载:Oracle一体机用户组 » RAC数据文件建在本地的处理

相关推荐