powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 11.9.2 запорчена таблица
9 сообщений из 9, страница 1 из 1
ASE 11.9.2 запорчена таблица
    #36581115
trakober
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем привет!

Недавно dbcc проверка нашла hard faults на таблице. Fault report выдал:
Table Name___Index Type___Code___Description___________Page Number
Bad_table____0____________100002_page free offset error___83498991

мануал по ошибкам ASE выдал:
ошибка 100002 подобна ошибке 2505

по 2505 вот что раскопал:
Table Corrupt: Free offset in page header is not reasonable; free offset should be >= %d
and <= %d; check this page and offset (page#=%ld freeoffset on the page header=%ld)
Explanation: There may be possible corruption in a database or a database object. Take
any corrective action indicated by the message. Consult the Adaptive Server System
Administration Guide and the Troubleshooting Guide.

Пытался выгрузить bcp - не получилось. В процессе выгрузки есть несколько строк ругни:
CTLIB Message: - L4/O1/S5/N28/5/0:
ct_fetch(): protocol specific layer: external error: There is a tds protocol error. An illegal token was received.
CTLIB Message: - L4/O2/S6/N36/6/0:
ct_fetch(): protocol specific layer: internal Client Library error: There is a tds state machine error. An illegal tds token sequence was received.

Несмотря на это выгрузка продолжается, доходит почти до конца, но затем вылетает виндовое окно с ошибкой:
"Инструкция по адресу "0x7c911689" обратилась к памяти по адресу "0x07ac3030". Память не может быть "read".

dbcc checktable (Bad_table) выдает:
Checking Bad_table
Table Corrupt: Free offset in page header is not reasonable; free offset should be >= 32 and <= 2048; check this page and offset (page#=83498991 freeoffset on the page header=2111)
Table Corrupt: Free offset in page header is not reasonable; free offset should be >= 32 and <= 2048; check this page and offset (page#=97769615 freeoffset on the page header=2286)
Table Corrupt: Free offset in page header is not reasonable; free offset should be >= 32 and <= 2048; check this page and offset (page#=97859175 freeoffset on the page header=2202)
The total number of data pages in this table is 767028.
Table has 4624532 data rows.
Could not retrieve row from logical page 3 via RID because the entry in the offset table for that RID is less than or equal to 0.
DBCC execution completed. If DBCC printed error messages, contact a user with System Administrator (SA) role.

Каким способом можно починить таблицу?
Что если запустить селект по всей таблице с формированием скрипта по вставке, а потом на новой табл. выполнить скрипт по инсертам? Просто сама таблица большая - 4,5 млн. строк, получится ли?
...
Рейтинг: 0 / 0
ASE 11.9.2 запорчена таблица
    #36581318
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trakober,

пробуйте вылить данные bcp с указанием -F & -L ключей, обходя проблемные записи


выясните командой dbcc page информацию про страницы 83498991, 97769615, 97859175
...
Рейтинг: 0 / 0
ASE 11.9.2 запорчена таблица
    #36582823
trakober
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
к сожалению, с ключами -F -L та же картина :(

dbcc page выдала вот что (но что полезного отсюда можно взять?):
------------------------ Execute ------------------------

Page not found in cache default data cache.
Read from disk.

BUFFER:
Buffer header for buffer 0x1F03C000 (Mass head)
page=0x1F03C800 bdnew=0x00000000 bdold=0x00000000 bhash=0x00000000
bmass_next=0x00000000 bmass_prev=0x00000000 bvirtpg=1561763823 bdbid=6
bmass_head=0x1F03C000 bmass_tail=0x1F03C000 bcache_desc=0x0558CEB0
bpool_desc=0x00000000 bdbtable=0x00000000
Mass bkeep=0 Mass bpawaited=0 Mass btripsleft=0 Mass btripsleft_orig=0
bsize=2048 (2K pool) bunref_cnt=0
bmass_stat=0x0800 (0x00000800 (MASS_NOTHASHED))
bbuf_stat=0x0 (0x00000000)
Buffer bpageno=83498991 Mass bpageno=83498991 (Buffer slot #: 0)
bxls_pin=0x00000000 bxls_next=0x00000000
bxls_flushseq=0 bxls_pinseq=0 bcurrxdes=0x00000000
Latch and the wait queue:
Latch (address: 0x1f03c020)




Latch wait queue:

PAGE HEADER:
Page header for page 0x1f03c800
pageno=83498991 nextpg=83499608 prevpg=83498990 objid=2025526745 timestamp=3337 b11b6feb
nextrno=7 level=0 indid=0 freeoff=2111 minlen=103
page status bits: 0x1 (0x0001 (PG_DATA))

DBCC execution completed. If DBCC printed error messages, contact a user with System Administrator (SA) role.

Page not found in cache default data cache.
Read from disk.

BUFFER:
Buffer header for buffer 0x1F03C000 (Mass head)
page=0x1F03C800 bdnew=0x00000000 bdold=0x00000000 bhash=0x00000000
bmass_next=0x00000000 bmass_prev=0x00000000 bvirtpg=1610637455 bdbid=6
bmass_head=0x1F03C000 bmass_tail=0x1F03C000 bcache_desc=0x0558CEB0
bpool_desc=0x00000000 bdbtable=0x00000000
Mass bkeep=0 Mass bpawaited=0 Mass btripsleft=0 Mass btripsleft_orig=0
bsize=2048 (2K pool) bunref_cnt=0
bmass_stat=0x0800 (0x00000800 (MASS_NOTHASHED))
bbuf_stat=0x0 (0x00000000)
Buffer bpageno=97769615 Mass bpageno=97769615 (Buffer slot #: 0)
bxls_pin=0x00000000 bxls_next=0x00000000
bxls_flushseq=0 bxls_pinseq=0 bcurrxdes=0x00000000
Latch and the wait queue:
Latch (address: 0x1f03c020)




Latch wait queue:

PAGE HEADER:
Page header for page 0x1f03c800
pageno=97769615 nextpg=97769632 prevpg=97769614 objid=2025526745 timestamp=3337 b119af79
nextrno=7 level=0 indid=0 freeoff=2286 minlen=103
page status bits: 0x1 (0x0001 (PG_DATA))

DBCC execution completed. If DBCC printed error messages, contact a user with System Administrator (SA) role.

Page not found in cache default data cache.
Read from disk.

BUFFER:
Buffer header for buffer 0x1F03C000 (Mass head)
page=0x1F03C800 bdnew=0x00000000 bdold=0x00000000 bhash=0x00000000
bmass_next=0x00000000 bmass_prev=0x00000000 bvirtpg=1610727015 bdbid=6
bmass_head=0x1F03C000 bmass_tail=0x1F03C000 bcache_desc=0x0558CEB0
bpool_desc=0x00000000 bdbtable=0x00000000
Mass bkeep=0 Mass bpawaited=0 Mass btripsleft=0 Mass btripsleft_orig=0
bsize=2048 (2K pool) bunref_cnt=0
bmass_stat=0x0800 (0x00000800 (MASS_NOTHASHED))
bbuf_stat=0x0 (0x00000000)
Buffer bpageno=97859175 Mass bpageno=97859175 (Buffer slot #: 0)
bxls_pin=0x00000000 bxls_next=0x00000000
bxls_flushseq=0 bxls_pinseq=0 bcurrxdes=0x00000000
Latch and the wait queue:
Latch (address: 0x1f03c020)




Latch wait queue:

PAGE HEADER:
Page header for page 0x1f03c800
pageno=97859175 nextpg=97859160 prevpg=97859174 objid=2025526745 timestamp=3337 b119e43c
nextrno=7 level=0 indid=0 freeoff=2202 minlen=103
page status bits: 0x1 (0x0001 (PG_DATA))

DBCC execution completed. If DBCC printed error messages, contact a user with System Administrator (SA) role.
------------------------- Done --------------------------
...
Рейтинг: 0 / 0
ASE 11.9.2 запорчена таблица
    #36582959
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trakoberк сожалению, с ключами -F -L та же картина :(

dbcc page выдала вот что (но что полезного отсюда можно взять?):


а можно глянуть на "ту же картину" ?

вот так пробовал?

Код: plaintext
1.
2.
3.
4.
5.
6.
bcp db.dbo.Bad_table out data50.dat -Sserver -Uuser -Ppass -n -F1 -L50
bcp db.dbo.Bad_table out data100.dat -Sserver -Uuser -Ppass -n -F51 -L100
bcp db.dbo.Bad_table out data150.dat -Sserver -Uuser -Ppass -n -F101 -L150
bcp db.dbo.Bad_table out data200.dat -Sserver -Uuser -Ppass -n -F151 -L200
...
bcp db.dbo.Bad_table out data4624532.dat -Sserver -Uuser -Ppass -n -F4624500 -L4624532
вместо 50 можно начать с 1000
таким образом выяснить какие записи битые (уменьшая кол-во записей на "битых" диапазонах)

про page - да так, для проверки что это именно таблица, а не индекс...

кстати, а что вернет это

Код: plaintext
sp_helpindex Bad_table  

?
...
Рейтинг: 0 / 0
ASE 11.9.2 запорчена таблица
    #36587075
M_Olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а Вы не пробовали создать на том же сервере новую БД и перегнать данные из таблицы в новую БД?
...
Рейтинг: 0 / 0
ASE 11.9.2 запорчена таблица
    #36587305
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M_Olgaа Вы не пробовали создать на том же сервере новую БД и перегнать данные из таблицы в новую БД?
но это не избавляет от попытки достать данные из этой таблицы, правда?
...
Рейтинг: 0 / 0
ASE 11.9.2 запорчена таблица
    #36588186
trakober
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
M_Olga, для этого отдельная база не нужна. Я просто сделал select * into new_table from bad_table, после этого select count по обеим таблицам выдает одинаковое количество строк, но...
Я так думаю, что подсчет в запорченной табл. идет за исключением плохих строк. На это меня натолкнул тот факт, что в Sybase Central есть расхождение по размеру таблицы старой и новой на 2 КБайта.
Кто как думает?
...
Рейтинг: 0 / 0
ASE 11.9.2 запорчена таблица
    #36588217
trakober
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad, вот именно, нужно как-то достать запорченные данные...
...
Рейтинг: 0 / 0
ASE 11.9.2 запорчена таблица
    #36588304
trakober
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad, команда sp_helpindex CardCheck выдала:

index_name | index_description | index_keys | index_max_rows_per_page | index_fillfactor | index_reservepagegap
XPKBad_table | clustered, unique located on nod_data | Bad_table_ID | 0 | 0 | 0
XBad_table_CardNumber | nonclustered located on indexes | Bad_table_CardNumber | 0 | 0 | 0
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 11.9.2 запорчена таблица
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]