Read/write errors

Message text

kernel: write error on virtual disk %d, block %ld

or:

kernel: read error on virtual disk %d, block %ld

NoteThis error may be caused by a hardware problem.

Explanation

This error occurs when Adaptive Server fails to read or write to the specified location on disk. This failure is usually a result of a physical disk problem.

If mirroring is enabled, you may also see these errors:

udunmirror: i/o error on %s device ‘%s’

or

sddone: %s error on virtual device

Action

If you see error 823 followed by sddone errors on an IBM Regatta server, the problem could be caused by a cache line synchronization problem on this family of servers. See TechNote 1023360 for details and the solution from IBM http://www.sybase.com/detail?id=1023360.

If you are running on another platform, use this procedure to correct the error:

  1. Identify the device with the problem by selecting the row from sysdevices that has the virtual disk number indicated in the error message:

    1> select name, phyname from master..sysdevices 
    2> where low/power(2,24) = <virtual_disk_number> 
    3> go
    

    The output from this query should provide the physical name of the damaged disk.

    NoteThe sp_diskblock procedure described below also identifies the device.

  2. Shut down Adaptive Server and examine the disk as soon as feasible and correct any problems found to prevent further corruption, then restart Adaptive Server.

  3. Use the procedure described below to determine which database (if there is more than one database on the device), table, or index is affected by this error. Use this information to assess the potential severity of the problem quickly and decide on an action that is appropriate for your operating environment.

    1. Use the sp_diskblock procedure supplied in “Gathering information about read/write errors” in the chapter “Other Useful Tasks” in the most recent version of Troubleshooting and Disaster Recovery. The syntax of this procedure is:

      sp_diskblock <virtual_disk>, <block_number>
      

      For example, if the read/write error message displays a virtual disk number 4 and a block number 871, the procedure command is:

      1> sp_diskblock 4, 871
      2> go
      
      
      Virtual disk 4, block 871 corresponds to:
      Logical page 1895 in the "production" database (dbid=4) on device "main".
      
    2. Use the dbcc page command to determine which object is using that page. Refer to “Finding an object name from a page number” in the chapter “Other Useful Tasks” in the most recent version of Troubleshooting and Disaster Recovery for details on this procedure.

      WARNING! Use the dbcc page command only as directed. This command is undocumented, nonstandard, and is provided “as is” without any warranty. Sybase Technical Support does not support this command for general use. Although the command syntax is provided for reference, use this command only in the specific diagnostic situations described, and with the specific syntax shown. Failure to do so could cause performance problems and database corruption.

Additional information

Refer to “dopen error” and “udunmirror errors” for information about dopen, sddone, and udunmirror errors.