ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 处理的两个图省事才出来的问题,喜欢copy ORACLE_HOME的人应该看看

处理的两个图省事才出来的问题,喜欢copy ORACLE_HOME的人应该看看

原创 Linux操作系统 作者:buptdream 时间:2009-01-05 14:05:20 0 删除 编辑
案例1
关键词:复制导致文件权限变化


环境 9i  具体版本忘了
solaris 9

源于一次故障诊断
第一天上午:接到电话说oracle 报错
执行批量插入的过程或报表程序报错:
SQL> BEGIN brpt_get_daily_report_p; END;
*
ERROR 位于第 1 行:
ORA-00604: 递归 SQL 层 1 出现错误
ORA-01115: 从文件 1 读取块时出现 IO 错误 (块 # 28738)
ORA-01110: 数据文件 1: '/dev/md/billds/rdsk/d301'
ORA-27091: skgfqio: 无法进行 I/O 操作
ORA-27072: skgfdisp: I/O 错误
SVR4 Error: 12: Not enough space
Additional information: 28737
ORA-06508: PL/SQL: 无法在调用之前找到程序单元
ORA-06512: 在"UNITELE.BRPT_GET_DAILY_REPORT_P", line 87
ORA-06512: 在line 1

alert log有大量类似:
Additional information: 15497
ORA-01115: IO error reading block from file 93 (block # 62842)
ORA-01110: data file 93: '/dev/md/billds/rdsk/d84'
ORA-27091: skgfqio: unable to queue I/O
ORA-27072: skgfdisp: I/O error
SVR4 Error: 12: Not enough space
Additional information: 62841
Fri Mar 14 07:31:07 2008
Errors in file /arraybill/oracle/admin/orabill/udump/orabill_ora_28779.trc:
ORA-00600: internal error code, arguments: [kdtdelrow-2], [63], [63], [], [], [], [], []
ORA-01115: IO error reading block from file 556 (block # 94232)
ORA-01110: data file 556: '/dev/md/billds/rdsk/d679'
ORA-27091: skgfqio: unable to queue I/O
ORA-27072: skgfdisp: I/O error
SVR4 Error: 12: Not enough space
Additional information: 94231
Fri Mar 14 07:31:40 2008
Errors in file /arraybill/oracle/admin/orabill/udump/orabill_ora_29096.trc:
ORA-00604: 递归 SQL 层 1 出现错误
ORA-01115: 从文件 265 读取块时出现 IO 错误 (块 # 114425)
ORA-01110: 数据文件 265: '/dev/md/billds/rdsk/d259'
ORA-27091: skgfqio: 无法进行 I/O 操作
ORA-27072: skgfdisp: I/O 错误
SVR4 Error: 12: Not enough space
Additional information: 114424
ORA-06512: 在line 3
Fri Mar 14 07:49:28 2008

经过询问和检查,在中午之前排除了操作系统、硬件和空间问题的可能性。
下午把问题方向 瞄准了bug:
Bug 4439465 - OERI [kdtdelrow-2] / ORA-604 from BULK inserts 被排除,怀疑ora-600的错误只是表象,是由其他问题引起的,所以放弃了根据ora-600找问题。
Bug 6370741引起了注意:
Bug 4439465 - OERI [kdtdelrow-2] / ORA-604 from BULK inserts
Experiencing the errors as follows: .
ORA-01115: IO error reading block from file 18 (block # 2613966)
ORA-01110: data file 18: '/dev/vx/rdsk/bre25knet01_vg05/spo_smstg202'
ORA-27091: skgfqio: unable to queue I/O
ORA-27072: skgfdisp: I/O error
SVR4 Error: 12: Not enough space
Additional information: 2613965 .
Unsetting SGA_MAX_SIZE stops the error from occurring.
This is unaccpetable to customer as without setting the parameter they experience ORA-4031 errors.

但是用户拒绝接受sga_max_size会引起问题,一定要有理由,并且该bug并没有正式声明(很可能不是bug)
下午拿到了vpn帐号,远程登录上去,在alert log中又看到了一些可疑的东西:
Tue Mar 11 23:33:14 2008
WARNING: -------------------------------
WARNING: oradism not set up correctly.
Dynamic ISM can not be locked. Please
setup oradism, or unset sga_max_size.
[diagnostic 0, 16, 1001]
----------------------------------------

这是在上次修改之后启动DB的时候得warning,(因为错误多,给我发过来的错误信息里没有包含这些信息,只有4天左右的)
根据这个信息找到:
Note:338751.1 Database Crashed Due to ORA-600 [ksfd_odmgo1] and Ora-17500
Symptoms
Database doesn't open because of:

ORA-00600: internal error code, arguments: [ksfd_odmgo1], [4294967274], [0xFFFFFFFF7FFF85A8],
..
Fri Sep 30 08:10:41 2005
Errors in file /oracle/ew01/ewt1/admin/bdump/ewt11_p002_16730.trc:
ORA-01115: IO error reading block from file 8 (block # 45354)
ORA-01110: data file 8: '/dbf/ew01/dba01/ewt1/ppvd.001'
ORA-17500: ODM err:ODM ERROR V-41-4-12 Not enough space
ORA-10388: parallel query server interrupt (failure)

Alert.log also shows:
WARNING: -------------------------------
WARNING: oradism not set up correctly.
Dynamic ISM can not be locked.


Cause
ORADISM doesn't have the right permission.

Solution
Shutdown the databases running from this ORACLE_HOME.

chgrp dba $ORACLE_HOME/bin/oradism
As root:
chown root $ORACLE_HOME/bin/oradism
chmod 06550 $ORACLE_HOME/bin/oradism

回忆起来,用户曾说过这台oracle的软件是从其它服务器copy过来的,于是检查oradism的权限,发现确实有问题:
[oracle]> ls -l oradism*
-r-xr-x---   1 oracle   dba        12928 2004   3月 25 oradism
-r-xr-x---   1 oracle   dba        10424 2002   4月 27 oradism.sav

正常情况下,安装过程最后会用root用户执行root.sh,这个脚本有相应的命令会把权限修改好:
[oracle]> pwd
/arraybill/oracle/product/9205
[oracle]> cat root.sh|grep oradism
if [ -f $ORACLE_HOME/bin/oradism ]; then
        $CHOWN root $ORACLE_HOME/bin/oradism
        $CHMOD 06550 $ORACLE_HOME/bin/oradism

原因可能是在copy的过程中,文件的权限发生了改变,或者整个$ORACLE_HOME被特意修改为oracle:dba了。
所以:一直以来DISM都是有问题的,但是因为sga_max_size一直以来是default,问题也就没有显现出来。
直道前两天有人增加shared pool的时候alter system 给sga_max_size设定了一个值
问题才显明出来。

第二天晚上,客户申请到了停机,让前方人员执行$ORACLE_HOME/root.sh但是因为copy过来目录不同,所以执行报错。
于是只好把root.sh里的
$CHOWN root $ORACLE_HOME/bin/oradism
$CHMOD 06550 $ORACLE_HOME/bin/oradism

单独执行了,经测试问题已经解决。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10701850/viewspace-526734/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-12-04

  • 博文量
    25
  • 访问量
    336176