Urgent from Sybase: Possible data integrity issue when loading a database from a dump, affecting versions of Adaptive Server Enterprise 15.0, 12.5, and earlier
Summary: This document describes a potential data integrity issue with Adaptive Server Enterprise (ASE) that may occur when reloading a database dump that was taken using a blocksize that is greater than 256 times ASE's logical page size, and the physical layout of logical devices of the destination database differs from that of the database from which the dump was taken.
This document contains the following sections:
- Customer Alert
Under certain circumstances LOAD DATABASE may not load a database correctly. Database pages may be written to the wrong locations on the logical devices, resulting in corruption to both the database being loaded and possibly other databases that use the same logical devices as that database. In order for this to occur two specific conditions must be met.
- The dump is loaded into a database that has a different mapping of database fragments on the logical devices to that of the database from which the dump was taken.
- When the dump is created backup server reads and stores contiguous blocks of more than 256 logical pages. This can happen when EITHER:
- The backup server used to create the dump was started with the " -m <size>" option and size is greater than the default value of 48Mb.
- The DUMP DATABASE command used to create the dump specified the BLOCKSIZE parameter and BLOCKSIZE is greater than 256 times ASE's logical page size.
- The integrity of the dumps themselves is unaffected by this issue, even if -m <size> or BLOCKSIZE parameters were used. This issue only occurs as part of the LOAD DATABASE process.
- The only way to be certain if the dump contains contiguous blocks of more than 256 logical pages is to use LOAD DATABASE WITH LISTONLY=FULL. See the Symptoms section below for a fuller explanation.
This issue is being tracked under Sybase CR# 419772. This CR is fixed in the following EBFs, or ones that supersede them. These EBFs are not yet available. Please see the Recommendation section for information on their scheduled availability.
|Platform||ASE 12.5.3||ASE 15.0|
|EBF# (ESD# 7)||EBF# (ESD# 2)|
|HP-UX PA-RISC 32-bit||13328||N/A|
|HP-UX PA-RISC 64-bit||13329||13445|
|HP-UX Itanium 64-bit||13337||N/A|
|Linux x86 32-bit||13332||13447|
|Linux x86 64-bit||13339||N/A|
|Linux Itanium 64-bit||13336||N/A|
|Linux on POWER||13340||13449|
|SG IRIX 32-bit||13333||N/A|
|SG IRIX 64-bit||13334||N/A|
|Solaris SPARC 32-bit||13324||13443|
|Solaris SPARC 64-bit||13325||13444|
Workaround: Until the EBFs are available, or if you intend to remain on one of the affected versions of ASE after that, you should not specify a blocksize that exceeds 256 times ASE's logical page size, or you should ensure that the target database has exactly the same device mapping as the source database.
Symptoms: When the problem has occurred, ASE may report errors 692, 695, 697, or 903 on the loaded database or on other databases on the same logical devices. DBCC consistency checks will report similar errors.
Database dumps that could potentially cause corruption during loading can be identified by using LOAD DATABASE WITH LISTONLY=FULL. If such a dump is identified care must be taken to ensure that the database into which the dump is loaded has the same device mapping as the one from which it came.
Sample output of a dump which was generated with the -m backup server option specified for a 2k page server :
'HDR2' Record format: 'F' Max. bytes/block: 8388608 Record length: 02048 Backup format version: 03
Note: The maximum bytes per block above, 8388608, is greater than 256 * 2048 (2k record length) = 524288, so this database would cause corruption were it loaded into a database with a different device mapping to the one from which it was dumped.
Sample output of a dump which was generated without the -m backup server option specified for a 2k page server :
'HDR2' Record format: 'F' Max. bytes/block: 262144 Record length: 02048 Backup format version: 03
Note: The maximum bytes per block above, 262144, is less than 256 * 2048 (2k record length) = 524288, so this database would NOT cause corruption were it loaded into a database with a different device mapping to the one from which it was dumped.
Sybase strongly recommends that the work around above or, when available, a version of ASE that has CR# 419772 fixed in it is used.
Once the EBFs are available they can be obtained from the Sybase EBFs and Maintenance site.
Follow the instructions in the EBF cover letter to install the EBF.
For information on the availability of ASE 12.5.3 ESD# 7 and ASE 15.0 ESD# 2 please select the appropriate document below.
If you require further assistance please contact your local support center. The contact numbers can be found in the About Support section under Support & Services at the www.sybase.com website.
Copyright © 2006 Sybase, Inc. All rights reserved.