10-19-2013 07:57 AM - last edited on 10-21-2013 12:14 AM by Liuqing
Can somebody explain me what is HPUX-ia64 Error: 22: Invalid argument error this error bascially appears most of the time while oracle FS gets an IO error.But i have checkd several times there are no IO errors recorded in syslog or dmesg.what could be the culprit all disks,LV,VG are online
ORA-00204: error in reading (block 825, # blocks 64) of control file
ORA-00202: control file: '/oracle/ALRN/control/ALRN01.ctl'
ORA-27091: unable to queue I/O
ORA-27072: File I/O error
HPUX-ia64 Error: 22: Invalid argument
Additional information: 4
Additional information: 825
Additional information: -1
root:/appl/oracle/MOT/rman/rcv# oerr ora 00204
00204, 00000, "error in reading (block %s, # blocks %s) of control file"
// *Cause: A disk I/O failure was detected on reading the control file.
// *Action: Check if the disk is online, if it is not, bring it online and try
// a warm start again. If it is online, then you need to recover
// the disk.
Also if someone knows oracle please let me know of this ora errors in the above context.
P.S. This thread has been moved from HP 9000 to HP-UX > databases.
-HP Forum Moderator
10-21-2013 06:19 PM
from /usr/include/sys/errno.h: errno 22 = EINVAL /* Invalid argument */
[EINVAL] Invalid argument. Some invalid argument (such as unmounting a device that is not currently mounted, mentioning an undefined signal in signal() or kill(), or reading or writing a file for which lseek() has generated a negative pointer). Also set by the math functions described in the (3M) entries of this manual.
So the Oracle message matches the description of the Unix standard error 22. Assuming that the online diagnostics and reporting system are working correctly, this is likely a downsized lvol. What this means is that the lvol containing the control file may have been reduced (lvreduce) in the past and now the filesystem is larger than the disk. The filesystem code is trying to read (lseek) an address that is beyond the end of the disk. Reducing an lvol must be the last step after reducing the filesystem size.
To verify this, run this command:
Divide the first number under kbytes by 1024 to obtain fsMBytes. Then use lvdisplay to show the size of the lvol (LV Size). The result of the fsMBytes calculation must be the same or less than the lvol. If fsMBytes is larger, the filesystem is too large and all data past the lvol size is unaccessible (errno 22). The easiest fix is to extend the lvol (lvextend -L) to the fsMBytes value found with bdf.