HP-UX下oracle无法开启事例
SQL> startup;
ORACLE instance started.
Total System Global Area 6.4137E+10 bytes
Fixed Size 2185632 bytes
Variable Size 2.5367E+10 bytes
Database Buffers 3.8655E+10 bytes
Redo Buffers 112844800 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 4054 - see DBWR trace file
ORA-01110: data file 4054: '/oradata/data/ACCREP/DATA2015/TBS_D1503_D017.DBF'
提示无法识别/锁定文件
=======================================================================================
检查文件是否存在:
kjdb_2#[/oradata/databack]ll /oradata/data/ACCREP/DATA2015/TBS_D1503_D017.DBF
-rw-r----- 1 oracle oinstall 791683072 Mar 28 01:49 /oradata/data/ACCREP/DATA2015/TBS_D1503_D017.DBF
=======================================================================================
检查日志:
Successful mount of redo thread 1, with mount id 1637052095
Database mounted in Exclusive Mode
Lost write protection disabled
Completed: ALTER DATABASE MOUNT
Fri Mar 27 20:47:00 2015
ALTER DATABASE OPEN
Errors in file /oradata/oracle/diag/rdbms/accrep/accrep/trace/accrep_dbw0_2669.trc:
ORA-01157: cannot identify/lock data file 4052 - see DBWR trace file
ORA-01110: data file 4052: '/oradata/data/ACCREP/DATA2015/TBS_D1504_C012.DBF'
ORA-27086: unable to lock file - already in use
HPUX-ia64 Error: 46: No locks available
Additional information: 10
Errors in file /oradata/oracle/diag/rdbms/accrep/accrep/trace/accrep_dbw0_2669.trc:
ORA-01157: cannot identify/lock data file 4053 - see DBWR trace file
ORA-01110: data file 4053: '/oradata/data/ACCREP/DATA2015/TBS_I1504_C012.DBF'
ORA-27086: unable to lock file - already in use
HPUX-ia64 Error: 46: No locks available
Additional information: 10
=======================================================================================
文件编号4052之前的文件都没问题,而且文件都存在,trace目录下大量生成trc文件,内容如下:
Trace file /oradata/oracle/diag/rdbms/accrep/accrep/trace/accrep_ora_3083.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /oradata/oracle/product/11.2/db_1
System name: HP-UX
Node name: kjdb_2
Release: B.11.31
Version: U
Machine: ia64
Instance name: accrep
Redo thread mounted by this instance: 1
Oracle process number: 0
Unix process pid: 3083, image: oracle@kjdb_2
*** 2015-03-28 01:39:36.599
Ioctl ASYNC_CONFIG error, errno = 1
Ioctl ASYNC_CONFIG error, errno = 1
*** SESSION ID:(1151.15) 2015-03-28 01:39:36.740
*** SERVICE NAME:(SYS$USERS) 2015-03-28 01:39:36.740
*** MODULE NAME:(sqlplus@kjdb_2 (TNS V1-V3)) 2015-03-28 01:39:36.740
*** ACTION NAME:() 2015-03-28 01:39:36.740
Ioctl ASYNC_CONFIG error, errno = 1
Ioctl ASYNC_CONFIG error, errno = 1
=======================================================================================
参考ASYNC_CONFIG信息作以下操作,开启IO异步
cp /usr/sbin/setprivgrp /usr/sbin/setprivgrp_bak
/usr/sbin/setprivgrp dba MLOCK
vi /etc/privgroup
dba MLOCK RTSCHED RTPRIO
cat /etc/privgroup
dba MLOCK RTSCHED RTPRIO
重启主机,重启数据库
问题依旧,且数据库启动速度极慢,关闭数据库,还原文件,重启主机。
=======================================================================================
检查系统核心参数
kctune>/tmp/kctune.log
......
nflocks 4096 4096 Imm (auto disabled)
nproc 16384 16384 Immed
......
nflocks为系统默认值
=======================================================================================
在HP-UNIX的机器上,如果系统核心参数nflock设置不是足够大的时候,这样可能会使Oracle不能锁定所需要的数据文件而导致错误:
ORA-27086: skgfglk: unable to lock file - already in use
或者错误:
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-0110: data file 4: '/Oracle/oradata/user01.dbf'
ORA-27041: unable to open file
HP-UX Error: 23: File table overflow
Additional information: 2
或者错误:
ORA-07445: exception encountered: core dump [%s] [%s] [%s] [%s] [%s] [%s]
ORA-01110: data file %s: '%s'
ORA-01242: data file suffered media failure: database in NOARCHIVELOG mode
ORA-01115: IO error reading block from file %s (block # %s)
ORA-27041: unable to open file
HP-UX Error: 23: File table overflow
Additional information: 3
解决这个问题的方法是增大相关的核心参数:(建议以下的配置)
nproc 4096 Max Number of Processes
nfile 63488 Max Number of Open Files
nflocks 4096 Max Number of File Locks
设置方法:
kctune nflocks=16384
==> Update the automatic 'backup' configuration first? y
* The automatic 'backup' configuration has been updated.
* Future operations will update the backup without prompting.
=======================================================================================
重启数据库,正常。