Удаление области V 10.A

Обсуждение вопросов по администрированию СУБД Progress OpenEdge
valun
Старожил
Сообщения: 49
Зарегистрирован: 04 авг 2007, 12:48
Контактная информация:

Re: Удаление области V 10.A

Сообщение valun » 28 сен 2016, 16:25

Arelav писал(а):Понятно.

Вот нашёл статью про перенос BLOB/CLOB
http://knowledgebase.progress.com/artic ... le/P117881
Т.е. tablemove не переносит LOB-объекты, это нужно делать особенным способом.

В базе данных точно не используются или не использовались ранее LOB-поля?

Выгрузите через Data Dictionary полную DF и посмотрите наличие LOB-объектов, например

Код: Выделить всё

cat sports.df  | grep LOB


Выгрузил в df все табл и нет ни одного LOB.

Ну судя по тому что в _Field._Data-Type нет ничего похожено на lob то нет. Или они могли при перемещении остаться в старой области и стать "невидимыми" явно ?

Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Re: Удаление области V 10.A

Сообщение George » 28 сен 2016, 20:54

valun писал(а):Object-associate: 1538


В базе есть объект с таким номером?

valun
Старожил
Сообщения: 49
Зарегистрирован: 04 авг 2007, 12:48
Контактная информация:

Re: Удаление области V 10.A

Сообщение valun » 29 сен 2016, 09:49

George писал(а):
valun писал(а):Object-associate: 1538


В базе есть объект с таким номером?

FOR EACH _StorageObject WHERE _StorageObject._Object-Type = 3 NO-LOCK:
for each _File where _file-num = _Object-associate no-lock:
disp _file.

Результат:
pm_list 1538
!,*
!,*
!,*
!,*

Если заглянуть в df данной табл, то она лежит в 12-ой области, а удалить мы хотим 10-ю.
Типы полей character, int64, date, + 3 индекса в 15-ой области.

Нашли с таким же номером (1538) объект в _Index по индексу нашли таблицу и на копии базы удалили обе таблицы через DD.
В _StorageObject запись осталась.

Сделал dump 2-м таблицам - табл. с id 1538 pm_list и вторая таблица с индексом id = 1538, удалил таблицы, загрузил df и данные. В StorageObject запись осталась.

Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Re: Удаление области V 10.A

Сообщение George » 30 сен 2016, 18:28

Не понял зачем надо было удалять эти объекты. Я лишь предлагал найти "бывшего хозяина" записи в _StorageObject в целях восстановления предыстории текущего состояния. Сейчас эта запись, очевидно, потеряла всякую связь со своим родителем. Саму запись в _StorageObject можно удалить 6-ым пунктом утилиты idxfix.

_Object-associate-type
If the Object is a Table (_Object-Type = 1) this is a 2. If the Object is an Index (_Object-Type=2) then this is a 1.

_Object-associate
For Tables, this is the Object# of the primary Index for this Table. For Indexes, this is the Object# of the parent Table.

valun
Старожил
Сообщения: 49
Зарегистрирован: 04 авг 2007, 12:48
Контактная информация:

Re: Удаление области V 10.A

Сообщение valun » 03 окт 2016, 09:12

George писал(а):Не понял зачем надо было удалять эти объекты. Я лишь предлагал найти "бывшего хозяина" записи в _StorageObject в целях восстановления предыстории текущего состояния. Сейчас эта запись, очевидно, потеряла всякую связь со своим родителем. Саму запись в _StorageObject можно удалить 6-ым пунктом утилиты idxfix.

_Object-associate-type
If the Object is a Table (_Object-Type = 1) this is a 2. If the Object is an Index (_Object-Type=2) then this is a 1.

_Object-associate
For Tables, this is the Object# of the primary Index for this Table. For Indexes, this is the Object# of the parent Table.



Я это все проделал на копии базы, поэтому все еще можно попробовать найти бывшего хохяина записи. Хотя если эту запись можно удалить и это позволит удалить область, то этот вариант мне нравится больше.

valun
Старожил
Сообщения: 49
Зарегистрирован: 04 авг 2007, 12:48
Контактная информация:

Re: Удаление области V 10.A

Сообщение valun » 04 окт 2016, 17:50

Я все правильно делаю ?


Index Fix Utility

1. Scan records for missing index entries.
2. Scan indexes for invalid index entries.
3. Both 1 and 2 above.
4. Cross-reference check of multiple indexes for a table.
5. Build indexes from existing indexes.
6. Delete one record and it's index entries.
7. Quit.

Enter selection:
6
Type the recid to delete.
3
Type the area for the recid(s).
10

Is this correct? (y/n)
y

Could not find the record in area 10

Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Re: Удаление области V 10.A

Сообщение George » 05 окт 2016, 02:22

valun писал(а):Я все правильно делаю ?


А что известно о записи в _StorageObject?

valun
Старожил
Сообщения: 49
Зарегистрирован: 04 авг 2007, 12:48
Контактная информация:

Re: Удаление области V 10.A

Сообщение valun » 05 окт 2016, 08:54

George писал(а):
valun писал(а):Я все правильно делаю ?


А что известно о записи в _StorageObject?


Только это

Object-type: 3
Object-number: 1
Object-associate: 1
Object-associate: 1538
Area-number: 10
Object-attrib: 8
Object-system: 0
Create-Limit: 150
Toss-Limit: 300

Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Re: Удаление области V 10.A

Сообщение George » 05 окт 2016, 11:29

Чему равен recid(_StorageObject) ?

valun
Старожил
Сообщения: 49
Зарегистрирован: 04 авг 2007, 12:48
Контактная информация:

Re: Удаление области V 10.A

Сообщение valun » 05 окт 2016, 11:31

George писал(а):Чему равен recid(_StorageObject) ?



16512

Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Re: Удаление области V 10.A

Сообщение George » 05 окт 2016, 17:30

Тогда 16512 и надо указать в качестве recid при удалении записи утилитой idxfix.
А в качестве области надо указать 6.

valun
Старожил
Сообщения: 49
Зарегистрирован: 04 авг 2007, 12:48
Контактная информация:

Re: Удаление области V 10.A

Сообщение valun » 05 окт 2016, 17:36

George писал(а):Тогда 16512 и надо указать в качестве recid при удалении записи утилитой idxfix.
А в качестве области надо указать 6.



Так и сделал

Enter selection:
6
Type the recid to delete.
16512
Type the area for the recid(s).
6

Is this correct? (y/n)
y


Index fix completed successfully. (4332)

Но, запустив

FOR EACH _StorageObject WHERE _StorageObject._Object-Type = 3 NO-LOCK:
disp _StorageObject

получил ту же строчку
Object-type: 3
Object-number: 1
Object-associate: 1
Object-associate: 1538
Area-number: 10
Object-attrib: 8
Object-system: 0
Create-Limit: 150
Toss-Limit: 300

Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Re: Удаление области V 10.A

Сообщение George » 05 окт 2016, 19:12

Для эксперимента я удалил нормальную запись в таблице: _StorageObject

Is this correct? (y/n)
y
Record 4464 has been deleted from the database. (5190)
Index fix completed successfully. (4332)

Сообщение 5190 подтверждает что была удалена запись с recid 4464.

Такого сообщения нет для recid 16512. Значит по этому адресу записи нет. FOR EACH _StorageObject находит запись. Значит у этой записи другой recid.

valun
Старожил
Сообщения: 49
Зарегистрирован: 04 авг 2007, 12:48
Контактная информация:

Re: Удаление области V 10.A

Сообщение valun » 06 окт 2016, 08:45

George писал(а):Для эксперимента я удалил нормальную запись в таблице: _StorageObject

Is this correct? (y/n)
y
Record 4464 has been deleted from the database. (5190)
Index fix completed successfully. (4332)

Сообщение 5190 подтверждает что была удалена запись с recid 4464.

Такого сообщения нет для recid 16512. Значит по этому адресу записи нет. FOR EACH _StorageObject находит запись. Значит у этой записи другой recid.



FOR EACH _StorageObject WHERE _StorageObject._Object-Type = 3 NO-LOCK:
disp recid(_StorageObject)

результат:

┌───────┐
│ 16512 │
│ │

могу картинку приложить

valun
Старожил
Сообщения: 49
Зарегистрирован: 04 авг 2007, 12:48
Контактная информация:

Re: Удаление области V 10.A

Сообщение valun » 06 окт 2016, 09:24

Взял любой другой recid - 9649

Type the recid to delete.
9649
Type the area for the recid(s).
6

Is this correct? (y/n)
y


Index fix completed successfully. (4332)

Может все дело в области из которой удаляется запись ?
Потому что если пробовать удалить запись повторно, то не ругается что записи такой нет....
Вобщем если пишешь любой recid и пробуешь его удалить из 6-ой области то никогда никакой ругани не будет.