12C在线移动数据文件之后仍然报错ORA-01157的解决办法

1、起因

客户的12C RAC生产环境上,有人把Oracle数据文件创建到了其中1个节点的的本地磁盘上,导致这个查询只在那个节点能查询到,在另一个节点查询就报错。
数据库是Oracle 12c的版本,可以支持在线移动数据文件(如果是12C以前的版本,基本就得把数据文件offline或者停库修改位置了)这是个新特性,之前我也没有用过,于是我直接执行了如下的SQL

alter database move datafile '/u01/app/oracle/product/12.2/db1/dbs/xxxx.dbf' to '+DATA'; 

把数据文件移动到了ASM存储上.
本以为大功告成的我,第2天又接到了开发人员的反馈,在PLSQL上查询,报这个错误
 

image.png

image.png


反馈的结果就是还有问题,一查表就报错,我在后台用sys查2节点发现没有问题,在1节点查询还是有问题。​这就十分奇怪了。

2、问题处理

顺着报错信息,直接查MOS吧,

ORA-01157 when running query on dba_datafiles on a particular instance (of RAC database) for a file moved from Filesystem to ASM using “alter database move datafile” command (which is a 12c new feature).

一样的报错,也是发生在执行了alter database move datafile之后

SMON: following errors trapped and ignored:
ORA-00604: error occurred at recursive SQL level 1
ORA-01157: cannot identify/lock data file 291 - see DBWR trace file
ORA-01110: data file 291: '<Full Path of Datafile>'

1.A new datafile was added by mistake in the dbs directory instead of ASM.
2.This datafile was later moved to ASM using an “alter database move datafile” command.

这属于一个已知的问题,需要按如下操作执行,就可以恢复(下面的命令在有问题的节点执行,就是把文件建到本地的那个节点)。

$ sqlplus / as sysdba
alter system check datafiles;
alter system flush shared_pool;

实测有效,仅做记录。
就是flush shared_pool可能会影 响

参考依据

ORA-01157 when running query on dba_datafiles on a particular instance in RAC for a file moved from Filesystem to ASM (Doc ID 2499264.1)

 也欢迎关注我的公众号【徐sir的IT之路】,一起学习!
————————————————————————————
公众号:徐sir的IT之路
优快云 :https://blog.youkuaiyun.com/xxddxhyz?type=blog
墨天轮:https://www.modb.pro/u/3605
PGFANS:https://www.pgfans.cn/user/home?userId=5568
————————————————————————————

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐sir(徐慧阳)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值