ORA-01157: 无法标识/锁定数据文件 21 - 请参阅 DBWR 跟踪文件 ORA-01110: 数据文件 21: '/dev/rlvsas_8g_data06'
执行'alter system check datafiles'后恢复；
alter system check datafiles设计用来在rac环境对数据文件访问进行检测。当磁盘被多个机器共享访问时，有可能个别文件只能被当个机器访问，而其它机器不能访问。一般是由于配置或者操作系统的问题。
假定有个数据文件标示为offline，而且为rac环境。当你想online该数据文件时，你发现其中一个节点不能访问数据文件所在磁盘，这时这个实例不能够验证该数据文件。然后在另外一个实例中，控制文件会将该文件标示为online。但是数据文件仍然不能正常访问，并加载入SGA。此时alter system check datafiles命令可以用来纠正这个问题，使数据文件能够正常访问，将触发实例重新识别并验证这个数据文件。然后使数据库能够正常工作。
Paul Sherman wrote 'I tried an 'alter system check datafiles'
I had never come across that command before and looked at the documentation which states that 'in a distributed database system, such as an Oracle Parallel Server environment, updates an instance's SGA from the database control file to reflect information on all online datafiles'. Global actions against all nodes , local against the current instance only.?
I did check out the OPS install/config guide but did not found anything more in there. I was failing to understand in which circumstances the command would be required, knowing that we are running a number of OPS set ups and I had never used it. Looking further on Metalink I found the following note (Note:1071756.6)
When running "ALTER SYSTEM CHECK DATAFILES" it delivers a "STATEMENT PROCESSED" but there is no recorded activity. There is no alert file even though the book says there is. 燳ou can do an ALTER SYSTEM CHECK DATAFILES if the database is only mounted. But the command does not return an error if a datafile is missing. Solution Description:
The ALTER SYSTEM CHECK DATAFILES command was designed to solve a particular problem of file accessibility.?This most often has to do with OPS, and disks that are shared among several machines.?There are cases where a disk may be accessible on one machine, but not another, because of configuration or OS problems. Imagine that you have a datafile that is marked OFFLINE.?If the disk where that datafile lives is accessible to a particular machine in an OPS installation, then you can bring it ONLINE.?If, however, another machine can't get to that disk at the time you bring it ONLINE, then that instance won't be able to verify the datafile.?Hence in that instance, the controlfile will have the datafile listed as ONLINE, but the datafile still will not be properly accessible and entered in the SGA.? Explanation:
The ALTER SYSTEM CHECK DATAFILES command was designed to allow you to correct the problem from the OS perspective and make the disk accessible. This would then trigger the instance into recognizing this fact, verifying the datafile, and thereby making it available to Oracle in that instance. So the command does not quite do what might be implied by the current documentation.?It does not verify access to all online datafiles,rather, it only looks at those that are now online, but which were not previously verified.?Once a datafile has been verified, it is considered verified for all time, until you OFFLINE the file or until the database is dismounted in that instance.
I hope someone founds that useful, at least I have learnt a bit more by checking it out. Thanks Paul for mentioning it, if only in passing.