powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Ошибка oncheck -ce
18 сообщений из 18, страница 1 из 1
Ошибка oncheck -ce
    #35923471
heiwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Помогите, пожалуйста, разобраться с ошибкой. Можно ли узнать, блобы каких именно таблиц повреждены, чтобы переписать их заново? (Informix 9.2)

> oncheck -ce

Validating BLOBSpace 'tppblobs' ...
ERROR: Chunk: 4 /opt/informix/chunks/tppblobs
ERROR:BLOB map page 125 contains reference to invalid tblspace 0x10103a
ERROR:BLOB map page 897 contains reference to invalid tblspace 0x10117a
ERROR:BLOB map page 910 contains reference to invalid tblspace 0x10118a
ERROR:BLOB map page 987 contains reference to invalid tblspace 0x10028b
4 /opt/informix/chunks/tppblobs 250000 249890 110
10 /opt/informix/chunks/tppblobs2 250000 36202 213798
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35927953
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heiwaЗдравствуйте. Помогите, пожалуйста, разобраться с ошибкой. Можно ли узнать, блобы каких именно таблиц повреждены, чтобы переписать их заново? (Informix 9.2)

> oncheck -ce

Validating BLOBSpace 'tppblobs' ...
ERROR: Chunk: 4 /opt/informix/chunks/tppblobs
ERROR:BLOB map page 125 contains reference to invalid tblspace 0x10103a
ERROR:BLOB map page 897 contains reference to invalid tblspace 0x10117a
ERROR:BLOB map page 910 contains reference to invalid tblspace 0x10118a
ERROR:BLOB map page 987 contains reference to invalid tblspace 0x10028b
4 /opt/informix/chunks/tppblobs 250000 249890 110
10 /opt/informix/chunks/tppblobs2 250000 36202 213798
базу знаете ?
Попробуйте oncheck -cDy <имя_БД> (или -cDIy для проверки с индексами)
и вывод результата в файл. По порядку вывода таблиц и ошибок можно сориентироватся.
Если это не подходит по каким либо причинам, то определите все таблицы, где есть блобы (обычно их не очень много) и проверьте каждую таблицу в отдельности. Найти таблицы с блобами можно просканировав схему БД на предмет наличия соответствующих типов данных или имени Blobspace.
Можно воспользоваться нижеприведенным запросом для определения всех blob-ов в БД (правда, писался он 5 лет назад и за его правдивость не ручаюсь :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
---------------------------------------------
-- Find BLOB-columns in db
--   IDS 9.2+
--
-- V.Shulzhenko  DBA_Tools
---------------------------------------------
SELECT 
        tabname[ 1 , 18 ]
        ,colname[ 1 , 18 ]
        ,case mod(c.coltype,  256 )
  when  0  then 'char'
  when  1  then 'smint'
  when  2  then 'integer'
  when  3  then 'float'
  when  4  then 'smfloat'
  when  5  then 'decimal'
  when  6  then 'serial'
  when  7  then 'date'
  when  8  then 'money'
  when  9  then 'null'
  when  10  then 'datetime'
  when  11  then 'bytes'
  when  12  then 'text'
  when  13  then 'varchar'
  when  14  then 'interval'
  when  15  then 'nchar'
  when  16  then 'nvchar'
  when  17  then 'int8'
  when  18  then 'serial8'
  when  19  then 'set'
  when  20  then 'multiset'
  when  21  then 'list'
  when  22  then 'row'
  when  23  then 'collection'
  when  24  then 'rowref'
  when  40  then 'udtvar'
  when  41  then 'udtfixed'
  when  42  then 'refser8'
  when  43  then 'lvarchar'
  when  44  then 'sendrecv'
  when  45  then 'boolean'
  when  46  then 'impexp'
  when  47  then 'impexpbin'
  when  48  then 'udrdefault'
  else 'unknown'
 end                          type
        ,collength
        ,trim(HEX(collength)) hex_length
        ,colno
FROM syscolumns C, systables T
WHERE C.tabid = T.tabid
        and T.tabid >  99 
        and mod(c.coltype,  256 ) in ( 11 , 12 , 19 , 20 , 21 , 22 , 23 , 24 , 40 , 41 )
order by  1 , 2 
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35931319
heiwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilis,
благодарю вас за совет.

Я запустила oncheck -cDIy для двух баз, содержащих таблицы с блобами, но команда оба раза не выдала ошибок. Сообщения, которые были в файлах вывода, довольно больших, свелись к трем типам:

1) WARNING: index check requires a s-lock on tables whose lock level is page.

2) TBLspace data check for armtest:informix.sysaggregates

3) Validating indexes for armtest:armtst.temp_stdwarn...
Index 190_244
Index fragment in DBspace armtestdbs
Index ix_stdwarn_date
Index fragment in DBspace armtestdbs
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35931512
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heiwa
ERROR:BLOB map page 125 contains reference to invalid tblspace 0x10103a
ERROR:BLOB map page 897 contains reference to invalid tblspace 0x10117a
ERROR:BLOB map page 910 contains reference to invalid tblspace 0x10118a
ERROR:BLOB map page 987 contains reference to invalid tblspace 0x10028b

Тогда попробуйте напрямую определить таблицу по ее TBLSNUM, который выдается в сообщении, используя следующий запрос (заменить в последней строке вместо коммента):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select  '----- systabnames -----' _______
        ,tabname
        ,dbsname
        ,partnum
        ,hex(partnum) tblsnum
        ,owner
        ,collate 
from systabnames
where HEX(partnum) matches 
-- 'Укажи TBLSNUM (шестнадцатеричный формат вида 0x010002F) или *'
Кстати, а выгрузку БД утилитой dbexport не пробовали выполнить ?
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35931583
heiwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilis,
я попробую выполнить запрос завтра же.

dbexport обрабатывает базы без проблем.
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35932605
heiwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilis,
я выполнила запрос для sysmaster:

select partnum, hex(partnum), dbsname, owner, tabname, collate
from systabnames;

В точности таких чисел, которые указаны в сообщении об ошибке, я не нашла. Вот ближайшие к ним, до и после. Но меня смущает, что там нет блобов.

к 0x10028b (= 0x0010028b):

partnum 1049173
(expression) 0x00100255
dbsname sandbox
owner armtst
tabname 173_186
collate ru_RU.1251

partnum 1049314
(expression) 0x001002E2
dbsname sandbox
owner coma
tabname routing
collate ru_RU.1251

к 0x10103a, 0x10117a, 0x10118a (= 0x0010103a, 0x0010117a, 0x0010118a):

partnum 1049778
(expression) 0x001004B2
dbsname sandbox
owner oliver
tabname 268_1216
collate ru_RU.1251

partnum 2097153
(expression) 0x00200001
dbsname armtestdbs
owner informix
tabname TBLSpace
collate

На всякий случай я сделала oncheck -cDIy для sandbox, вот строки, содержащие указанные имена таблиц (я опиралась на верхнюю границу):

Validating indexes for sandbox:armtst.strucdemand...
Index 173_186
Index fragment in DBspace rootdbs

Validating indexes for sandbox:oliver.struc...
Index 268_470
Index fragment in DBspace rootdbs
Index 268_1216
Index fragment in DBspace rootdbs
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35932768
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что если вы еще раз выполните oncheck -ce то ошибки уже не будет.
Если они все таки остались, то желательно перезагрузить базу (сделать экспорт-импорт).
Я правильно понял, что это некая тестовая БД (не продакшен) ? Т.е. она не большая ?
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35932951
heiwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilis,
я делала проверку oncheck -ce, но все по-прежнему.

Базы данных на самом деле большие, sandbox поменьше, чем armtest, которая не один гигабайт. И они рабочие, просто на другой машине созданы их копии, где я пытаюсь избавиться от ошибки.

dbexport делается без ошибок, но когда я пытаюсь сделать dbimport, не получается.
Для sandbox получила ошибку: 569 - Cannot reference an external database with logging (при попытке построить синоним к другой базе). А для armtest, которая с блобами и на которую я думала вначале: No free disk space.
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35933098
zaiets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
судя по всему таблиці/блобі/строки ушли а блопі чето остались
oncheck -cDI <dbname> ошібкі в таком случае не даст

Есть ли в талицах, которіе ві вібрали с помощью Васиного запроса блобі?
Хотя даже и при наличии таковіх - возможна потеря.
Возможно єто баг, какая у вас версия информикс?


Скорее всего вам нужно либо:
1. смириться с ошибкой
2. переинициализировать весь сервер (нужно пересоздать пространство, а оно не удалится если в нем что-то есть)
3. обратиться в поддержку, думаю для таких ситуаций есть средства для чистки


По поводу
Для sandbox получила ошибку: 569 - Cannot reference an external database with logging (при попытке построить синоним к другой базе). А для armtest, которая с блобами и на которую я думала вначале: No free disk space.

Все єто прогнозируемо
В первом случае - синонимі нужно создать после включения логгирования на импортируемой БД.(перед загрузкой убрать операторі создания єтих синонимов)
Во втором - увеличить место.
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35933177
heiwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zaiets,
спасибо за помощь.

В таблицах, выбранных с помощью запроса, полей-блобов вообще нет. А версия Informix 9.2.
Думаю, если я ничего не смогу поделать, действительно придется обратиться в поддержку.
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35934354
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heiwaВ таблицах, выбранных с помощью запроса, полей-блобов вообще нет.
Упс-с. Это как ? Как вы это определяли ?
Приведите пример выполнения запроса (по поиску блоб-полей в таблицах) и вывод dbschema для пары таблиц из этого списка.
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35934379
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heiwa И они рабочие, просто на другой машине созданы их копии, где я пытаюсь избавиться от ошибки.
Ошибка при oncheck -ce где ? На каком сервере ? Основном или вашем, тестовом ?
Если на тестовом, то сделайте как советует zaiets - просто переинициализируйте (заново создайте) сервер и создайте заново все необходимые ДБ-пространства. Надеюсь, что скрипт у вас от основного сервера есть. Затем выгрузите (экспорт) нужные БД на основном сервере и загрузите (импорт) на тестовом. Причем не забывайте про то , что БД имеют ссылки, а значит нужно снова понять совет zaiets - или убрать на время импорта второй БД ссылки на создание синонимов, а затем их добавить после включения транзакционного режима, или во время загрузки 2-й БД импортировать ее с включенным транзакционным режимом (что чревато "длинной" транзакцией).
Вы вообще ранее занимались администрированием Информикс ? Вам все понятно из советов ?
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35935022
heiwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilis,
я совсем недавно начала работать с Informix. Но если мне что-то будет непонятно из советов, я переспрошу. И ошибка, к сожалению, не на тестовом сервере, а на основном. На тестовый сервер базы были скопированы уже с ней.

Так, о таблицах. Я написала выше, каким образом вышла именно на них по systabnames и вашему запросу. Оказалось, это вообще не таблицы сами по себе, а индексы к таблицам strucdemand и struc.

То, что в strucdemand и struc нет блобов, я определила, когда использовала dbschema, а потом поискала в них название tppblobs (dbspace, где у нас хранятся блобы).

DBSCHEMA -t strucdemand -d sandbox strucdemand.sql

{ TABLE "armtst".strucdemand row size = 13 number of columns = 4 index size = 24
}
create table "armtst".strucdemand
(
peak_id integer not null constraint "armtst".n425_887,
object_id integer not null constraint "armtst".n425_888,
object_type nchar(1) not null constraint "armtst".n425_889,
demand_id integer not null constraint "armtst".n425_890,
primary key (peak_id,object_id,demand_id) constraint "armtst".pr_strucdemand
);
revoke all on "armtst".strucdemand from "public";

Информация из DBACCESS об индексах strucdemand:

Index_name Owner Type/Clstr Access_Method Columns

173_186 armtst unique/No btree peak_id
object_id
demand_id

DBSCHEMA -t struc -d sandbox struc.sql

{ TABLE "oliver".struc row size = 63 number of columns = 19 index size = 159 }
create table "oliver".struc
(
peak_id integer not null constraint "oliver".n450_1518,
parent_id integer not null constraint "oliver".n450_1519,
child_id integer not null constraint "oliver".n450_1520,
parent_type nchar(1) not null constraint "oliver".n450_1521,
child_type nchar(1) not null constraint "oliver".n450_1522,
quantity float,
on_branch float,
order integer,
level smallint,
unit_id integer,
mzk_flag nchar(1)
default 'F' not null constraint "oliver".n450_1523,
legacy_walk integer,
current_branch smallint,
advance_normal smallint,
cycle_normal smallint,
advance_fast smallint,
cycle_fast smallint,
parent_order integer,
child_count integer,

check (((((parent_type = 'х' ) AND (child_type IN ('я' ,'д' )) ) OR ((parent_type
= 'я' ) AND (child_type IN ('я' ,'д' ,'о' ,'л' ,'г' )) ) ) OR ((parent_type
= 'д' ) AND (child_type IN ('я' ,'д' ,'о' ,'л' ,'г' )) ) ) OR ((parent_type
= 'о' ) AND (child_type = 'л' ) ) ) constraint "ufff".c450_13450,
primary key (peak_id,order) constraint "oliver".u450_1517
);
revoke all on "oliver".struc from "public";

create index "ufff".idx_33435664 on "oliver".struc (peak_id,parent_order)
using btree ;
create index "ufff".idx_34343434 on "oliver".struc (peak_id,level)
using btree ;
create index "oliver".ix_struc_edge1 on "oliver".struc (parent_id,
child_id) using btree ;
create index "ufff".ix_struc_edge77 on "oliver".struc (parent_id,
parent_order) using btree ;
create index "sergey".ix_struc_edge78 on "oliver".struc (peak_id,
parent_id) using btree ;
create index "sergey".ix_struc_edge79 on "oliver".struc (peak_id,
child_id) using btree ;
create index "sergey".ix_struc_edge80 on "oliver".struc (peak_id,
parent_id,child_id) using btree ;
alter table "oliver".struc add constraint (foreign key (peak_id)
references "armtst".structop on delete cascade constraint
"oliver".r450_1526);

Информация из DBACCESS об индексах struc:

Index_name Owner Type/Clstr Access_Method Columns

268_470 oliver unique/No btree peak_id
order

idx_33435664 ufff dupls/No btree peak_id
parent_order

idx_34343434 ufff dupls/No btree peak_id
level

ix_struc_edge1 oliver dupls/No btree parent_id
child_id

ix_struc_edge77 ufff dupls/No btree parent_id
parent_order

ix_struc_edge78 sergey dupls/No btree peak_id
parent_id

ix_struc_edge79 sergey dupls/No btree peak_id
child_id

ix_struc_edge80 sergey dupls/No btree peak_id
parent_id
child_id

268_1216 oliver dupls/No btree peak_id
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35939700
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heiwaИ ошибка, к сожалению, не на тестовом сервере, а на основном. На тестовый сервер базы были скопированы уже с ней.
Боюсь, что мы запутаемся в двух серверах :)
Давайте условимся так, вы даете информацию (результаты запросов) только с _одного_ сервера, но не с двух.
Каким образом базы были скопированы ?
oncheck -ce на каком сервере выполнялся ? А повторно ?
А запросы по поиску таблиц вы где делали ?
Не думайте, что два сервера у вас полностью идентичны, вплоть до ошибок во внутренних структурах.

P.S. Я на неделю ухожу в отпуск, т.ч. в ближайшее время форум читать не смогу....
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35940516
heiwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilis,
Базы скопированы с помощью ontape.
oncheck -ce многократно выполнялся на обоих серверах, с одинаковым итогом.
Запросы по поиску таблиц делались на тестовом.
Все результаты с тестового сервера.
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35941340
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heiwavasilis,
я выполнила запрос для sysmaster:

select partnum, hex(partnum), dbsname, owner, tabname, collate
from systabnames;

В точности таких чисел, которые указаны в сообщении об ошибке, я не нашла. Вот ближайшие к ним, до и после. Но меня смущает, что там нет блобов.
Ближайшие до и после - это совсем другие таблицы.
Пусть вас не смущает, что там нет блобов.
Раз вы не нашли тех чисел, которые в сообщении, значит нет уже тех таблиц.
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35942168
heiwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тан,
Спасибо. Вот как! Значит, таблиц нет, а пространство все равно плохое.
Тогда я даже не знаю, как его исправить.
...
Рейтинг: 0 / 0
Ошибка oncheck -ce
    #35942492
zaiets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zaiets
вам нужно либо:
1. смириться с ошибкой
2. переинициализировать весь сервер (нужно пересоздать пространство, а оно не удалится если в нем что-то есть)
3. обратиться в поддержку, думаю для таких ситуаций есть средства для чистки


н-да, как всегда - не дочитал, что вы выбрали не те партнумы а рядом стоящие :)
но, действия теже.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Ошибка oncheck -ce
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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