Results 1 to 2 of 2
  1. #1
    Join Date
    Apr 2004

    Unanswered: 'default data cache' errors... again.

    Quite a while ago I got some usefull suggestions on what to do with errors like this:
    COP1_DS: database1 DBCC has Errors'
    10:16:50 ===================== DBCC CHECKALLOC(database1) ====================
    10:40:30 Sybase message 2525 , Severity 16 , state 1
    Server ` COP1_DS '
    Table Corrupt: Object id wrong; tables: alloc page 1330432
    10:40:30 extent id=1330608 l page#=1330613 objid in ext=699149536 (name =
    10:40:30 header1) objid in page=5 (name = sysprocedures) objid in
    10:40:30 sysindexes=699149536 (name = header1)
    10:53:13 ===================== DBCC TABLEALLOC(syslogs) ====================
    10:53:13 =================== DBCC CHECKCATALOG(database1) ==================
    10:53:57 ===================== DBCC CHECKDB(database1) =====================
    11:35:29 Sybase message 605 , Severity 16 , state 1
    Server ` COP1_DS '
    An attempt was made to fetch logical page '1330613' in database
    11:35:29 'database1' from cache 'default data cache'. Page belongs to object
    11:35:29 with id '5', not to object 'header1'.

    No fix so far has worked. BCP fails when it reaches that page.

    I've executed a dbcc page command to get the information and its right, the objid is wrong:

    1> dbcc page(11,1330613,2,0,1)
    2> go

    Page read from disk.

    Buffer header for buffer 0x2F008800 (Mass head)
    page=0x2F009000 bdnew=0x00000000 bdold=0x00000000 bhash=0x00000000
    bmass_next=0x00000000 bmass_prev=0x00000000 bvirtpg=320097717 bdbid=11
    bmass_head=0x2F008800 bmass_tail=0x2F008800 bcache_desc=0x203C0350
    bpool_desc=0x00000000 bdbtable=0x00000000
    Mass bkeep=0 Mass bpawaited=0 Mass btripsleft=0 Mass btripsleft_orig=0
    bmass_size=2048 (2K pool) bunref_cnt=0
    bmass_stat=0x0800 (0x00000800 (MASS_NOTHASHED))
    bbuf_stat=0x0 (0x00000000)
    Buffer blpageno=1330613 bpg_size=2k Mass blpageno=1330613 (Buffer slot #: 0
    bxls_pin=0x00000000 bxls_next=0x00000000 bspid=0
    bxls_flushseq=0 bxls_pinseq=0 bcurrxdes=0x00000000
    Latch and the wait queue:
    Latch (address: 0x2F008820)
    latchmode: 0x0 (FREE_LATCH)
    latchowner: 0
    latchnoofowners: 0
    latchwaitq: 0x00000000 latchwaitqt: 0x00000000

    Latch wait queue:

    Page header for page 0x2F009000
    pageno=1330613 nextpg=1330614 prevpg=1330612 objid=5 timestamp=0001 1c32fbc9
    nextrno=6 level=0 indid=0 freeoff=1160 minlen=16
    page status bits: 0x11 (0x0010 (PG_RNOFREE), 0x0001 (PG_DATA))

    The problem is that this corruption crept into the system and its in all of the backups. If I had a clean backup even a month or so old I'd say suck it up and go to it. However I can't get a clean backup.

    If I could just toggle that objid I think it would make all my problems go away.

    Any thoughts?

  2. #2
    Join Date
    Feb 2009
    Some ideas:

    As I can see, the error is on sysprocedures (objid 5) table which makes the rescue action little more complicated. In such case I'm thinking about following ways:

    1) In case of sysprocedures, the best way probably will be to bcp all the data out, create new database, create all the structures and bcp data back.

    2) Or you can drop all procedures and and recreate them (you must have source codes). But you will get error when dropping the procedure stored on the corrupted page. You will have to truncate the table (and delete related entries in syscolumns and sysqueryplans)

    3) As usually you can use dbcc prtipage command to find the last page of the table and then use the dbcc pglink to narrow down the extent of corruption. Then bcp data out in two wawes - data up to corrupted page and then the rest of the data, etc. I don't see much point in doing this in this situation.

    Warning: points I mentioned were just ideas (I didn't test it), not exact instructions...

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts