暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

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

原创 徐sir 2024-04-23
422

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)

最后修改时间:2024-04-23 16:01:09
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论