Skip to Content
avatar image
Former Member

SQL Anywhere 11 databases are getting corrupt

Hi

We are having problems with databases that are getting corrupted.

We have a server that runs a SQL Anywhere 11 database. (the consolidated database)
Beside that, we have about 15 remote databases that run on the laptops of our mobile workforces.

To keep all databases in sync, we have setup a two-way server-to-laptop replication.

For the replication process we use “SQL Remote”.

Each laptop should replicate his data once in about 1 or 2 weeks.

For exchanging the messages we use the message type “file”.

This year we already experienced 6 times that a remote database got corrupt after replication. (after running dbremote.exe).

The log file of the dbremote utility does NOT show any errors, the replication seems to be finished without any problems.
But after this, it’s not possible anymore to connect to the database, because of the following assertion error:

  • [Sybase][ODBC Driver][SQL Anywhere]Internal database error *** ERROR *** Assertion failed: 201501 (11.0.1.2376)
    Page 0x0:0x7182d1 for requested record not a table page -- transaction rolled back
    Error code=-301
    SQL state=HY000

Can someone tell me more about this error?

What goes wrong and why?

Or does someone has some tips on how to prevent this or tips on how I can do some analyzing myself to see what exactly got broken in the database?

Any help is appreciated.

Thanks.

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

3 Answers

  • Best Answer
    Dec 02, 2014 at 02:30 PM

    Hi Krenton,

    Page 0x0:0x7182d1 for requested record not a table page -- transaction rolled back

    Error code=-301

    SQL state=HY000

    Can someone tell me more about this error?

    Specifically, the page at offset 0x7182d1 in database (So if you have a 4KB page size, this would be byte offset 7439057 x 4096 = 30470377472 into the database) in 0x0 (the main database running) has a page header that indicates that the data on the page is not table data. We don't know what it is, but the signature for table information connected to the table you're scanning is 'not as it should be'.

    What goes wrong and why?

    In the real world, lots of things can go wrong. I list some of the possible things on this question here on the SQL Anywhere forum. This list can include software bugs, but can also include instances where the media is not respecting write-through or write-ordering - see http://scn.sap.com/docs/DOC-34090 (SQL Anywhere I/O Requirements for Linux and Windows) for more details.

    There are also known instances where Intel drivers are not set with the correct write-through settings. The details of this are in the documentation: DocCommentXchange (Improving Robustness on Intel storage drivers).

    Technical Support should still provide assistance. If the problem is a newly-discovered bug in SQL Anywhere 11, their advice will be to apply a more recent EBF or upgrade to a new version. However, that is unlikely in this case.

    Breck is correct - it would probably be best to take a look at the database file in technical support for more clues as to what's happening here. With the current information, it's hard to say more than "something was not correct at the time the page was looked at by the database server."

    Regards,

    Jeff Albion

    SAP Active Global Support

    Add comment
    10|10000 characters needed characters exceeded

    • Hi Krenton,

      Can it be that the numbers are slightly different because of a growing database what makes the page number shift up a little bit?

      Possibly - we would have to actually look at the databases in support to better decide what might be happening.

      Is it also possible to do a check based on the page number (f.e. 0x0:0x8242d1) if you open the database in a hex editor ???


      Yes - this is essentially what we do here at SAP, but we have slightly more advanced tools internally. 😊 I provided the byte calculation above - it will be a combination of multiplying out the offset by the database page size, which will give you the byte offset of where we are looking in the database file.

      Regards,

      Jeff Albion

      SAP Active Global Support

  • Nov 27, 2014 at 02:39 PM

    1. Rebuild (unload/reload) the consolidated DB.

    2. Check that there is enough disk space for log and temp files.

    Assertion error is usually caused by either hardware problems (corrupted disk or low disk space) or by corrupted tables/indexes.

    I suggest you start by rebuilding your DB and by checking the hard drive. If neither of this helps, then it is something more exotic, like circular logic in triggers on replicated tables or unresolved deadlocks.

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member Breck Carter

      Hi Breck,

      Thanks for explaining the automatic recovery process.

      It is good to know that abnormal shutdown should not be the cause.

      I also was starting to think that a laptop that goes into sleep or hibernate mode could be the reason, because besides the 15 laptop, we also have 3 remote databases on other servers that have a permanent connection to the consolidated database, and they run dbremote at least once a day. So these 3 remote databases has by far run the most synchronizations, but none of those 3 got ever corrupted.

      (perhaps I should have mentioned that already in my original post).

      So I should start to think about the hardware of the laptops than.

      I will also try to contact SAP support again to see if they can analyze a corrupt database.

      btw fyi:
      the assertion error is always the same, but the page is different:

      Internal database error *** ERROR *** Assertion failed: 201501 (11.0.1.2376)

      Page 0x0:0x8762d1 for requested record not a table page -- transaction rolled back (-301)

      Internal database error *** ERROR *** Assertion failed: 201501 (11.0.1.2376)

      Page 0x0:0x8742f5 for requested record not a table page -- transaction rolled back (-301)

      Internal database error *** ERROR *** Assertion failed: 201501 (11.0.1.2376)

      Page 0x0:0x8242d1 for requested record not a table page -- transaction rolled back (-301)

      Internal database error *** ERROR *** Assertion failed: 201501 (11.0.1.2376)

      Page 0x0:0x7182d1 for requested record not a table page -- transaction rolled back (-301)

      Thanks Again.

  • avatar image
    Former Member
    Apr 29, 2015 at 06:22 AM

    As an alternative you could try a commercial tool for SQL AnyWhere database recovery.

    Stellar Phoenix Repair for SQL AnyWhere - Repairs and recovers data from corrupt SQL AnyWhere database files. It is compatible with Windows 8, 7, Vista, XP and supports SQL AnyWhere 9, 10, 11 & 12.

    It also has got attention of Breck Carter.

    SQL Anywhere: Stellar Phoenix Repair for SQL Anywhere

    Add comment
    10|10000 characters needed characters exceeded