Oracle RAC ORA-01157 ORA-01110 ORA-27041问题分析处理

现场环境:

服务器:AIX version 6.1

数据库:oracle 10.2.0.4.0 RAC(双机,这里命名为节点一、节点二

存储:裸设备(共享存储)


现象描述:用户报前台应用查询出错,报ORA-01157错误。

通过分别检查两个节点上的告警日志发现,节点二上的Oracle报了ORA-01157 ORA-01110 ORA-27041的错误,说无法识别或锁定数据文件,且系统报错:Permission denied。同一时间下,节点一没有报错,提示的是成功添加一个数据文件。

Oracle RAC ORA-01157 ORA-01110 ORA-27041问题分析处理_第1张图片

(节点二上的告警日志截图)

报错说明:

ORA-01157: cannotidentify/lock data file string - see DBWR trace file

ORA-01157:无法识别/锁定数据文件串- 见DBWR跟踪文件


原因分析:

Oracle报了ORA-01157 ORA-01110 ORA-27041的错误。

对于ORA-01157,Oracle给出的分析如下:

The backgroundprocess was either unable to find one of the data files or failed to lock itbecause the file was already in use. The database will prohibit access to thisfile but other files will be unaffected. However the first instance to open thedatabase will need to access all online data files. Accompanying error from theoperating system describes why the file could not be identified.

说明:后台进程要么无法找到数据文件中的一个或未能将其锁定,因为该文件已在使用。该数据库将禁止访问该文件,但其他文件将不受影响。然而,第一个实例打开数据库时将需要访问所有在线数据文件。可以从操作系统当时给出的错误描述得知文件为什么无法识别。


这里是因为DBA在给表空间添加数据文件时,在一个节点上(因为是共享存储,所以只需要在其中一个节点上创建即可)创建完逻辑卷(mklv -y 'rac_data156_30g' -t 'raw' datavg 120)后,只在节点一上给oracle用户授权(chown oracle:oinstall /dev/rrac_data156_30g)后就执行了Alter tablespace add操作,后来才给节点二上的Oracle用户授权,所以导致问题的发生。正确的做法是要先同时对各个节点的逻辑卷进行授权(授权给oracle用户使用),然后在进到oracle进行添加数据文件的操作。


解决过程

Oracle给出的解决操作如下:

Action: Have operating system make file available todatabase. Then either open the database or do ALTER SYSTEM CHECK DATAFILES.

说明:使用操作系统添加文件给数据库,然后可以打开(重启)数据库(问题节点)或执行ALTER SYSTEM CHECK DATAFILES。

 

本次问题中,是通过执行ALTER SYSTEM CHECK DATAFILES更新实例的sga信息,更新控制文件,使得后台进程可以正确的识别数据文件。至此,问题得到了解决。


后续建议:在通过逻辑卷对Oracle数据库添加数据文件时,一定要先对两个节点上的文件分别授权,然后再执行Alter tablespace add操作。


你可能感兴趣的:(Oracle,DBA成长之路)