powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Глюки о проблемы при переносе базы - подскажите правильный синтаксис для объединения
12 сообщений из 12, страница 1 из 1
Глюки о проблемы при переносе базы - подскажите правильный синтаксис для объединения
    #34450024
defocus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SCO OpenServer 5.0.7 , Informix Dynamic Server Version 7.31.UC7

Пытаюсь перенести базу opk1 на другой сервер, проблема при загрузке базы - гружу ее в область archdbs с помощью onload, загрузка прерывается с ошибкой :
ISAM error: no such DBspace
Error building TBLspace.
ERROR: DBspace main not found for index 122_66.

Делаю всяческие oncheck-и на исходной базе, из интересного :
Validating indexes for opk1:informix.posting...
Index 122_66
Index fragment in DBspace main
Index ix_posting2
Index fragment in DBspace dbs_po_usd
Index fragment in DBspace dbs_po_rur
Index ix_posting1
Index fragment in DBspace dbs_po_usd
Index fragment in DBspace dbs_po_rur
Index ix_posting3
Index fragment in DBspace dbs_po_usd
Index fragment in DBspace dbs_po_rur

....
Validating indexes for opk1:informix.convoucher...
Index 138_113
Index ix_conv_vid
Index fragment in DBspace main
....
TBLspace data check for opk1:informix.posting
Table fragment in DBspace dbs_po_usd
Table fragment in DBspace dbs_po_rur

На компе куда гружу нет дбспейсов main, dbs_po_usd и т.д.

Хочется чтобы все лежало в одной области - archdbs ... Тут вижу два пути :
1. Создать нужные области main, dbs_po_usd, dbs_po_rur , загрузить базу и сделать
ALTER FRAGMENT на таблицу и индексы ... пробую что-то вроде :
ALTER FRAGMENT ON posting ATTACH INIT IN archdbs
ошибка в синтаксисе.... Подскажите плиз правильный синтаксис для объединения индексов и таблиц ...
http://www.ln.com.ua/~openxs/projects/informix/altfrg.html#attach
мне не помог...

2. dbexport/dbimport - вот тут таится громадная засада - дело в том, что в некоторых таблицах хранится текст программ, в том числе с комментариями на русском в кодировке CP-1251 с виндовыми концами строк ...
dbexport превращает их в "0d \ 0a" , т.е. вставляет слэш !!!, но это было бы фигней - ведь есть gsar из http://www.sql.ru/forum/actualthread.aspx?tid=377396 и помог бы простой search/replace но нет ! - dbexport просто ПОРТИТ ДАННЫЕ ! - сравнил результат селекта из таблицы в файл и dbexport этой таблицы - туча артефактов - помимо этого долбанного слэша, изменения названий функций - было q.eof() - стало q.eotion , обрезание концов строк , вставка туда \| b т.д. всего и не перечислишь ...
Все это действительно так ! Я проверял с десяток раз, сравнивал в хексе и т.п. Так что придется выгружать/загружать такие таблицы ручками ...

P.S. Кстати, возможно результаты пункта 2 можно добавить в ФАК ...
...
Рейтинг: 0 / 0
Глюки о проблемы при переносе базы - подскажите правильный синтаксис для объединения
    #34450145
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
воблингоблин

первый раз слышу что dbexport гадил данные.
Может вы что-то напутали.
Попробуйте сделать dbexport в той же локали, что и в БД.
...
Рейтинг: 0 / 0
Глюки о проблемы при переносе базы - подскажите правильный синтаксис для объединения
    #34450434
defocus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>первый раз слышу что dbexport гадил данные.
Можете почитать тут например http://www.sql.ru/forum/actualthread.aspx?tid=377396

"--
vasilis wrote :
Снова эти индусы :)
Уж сколько багов было в утилитах экспорта-импорта, которые попортили жизнь админам, а делать стандартную утилиту так и не научились (там, наверное, тоже не одно поколение программеров сменилось :)
Помнится, в 7.31.ТС5 тоже был серьезный баг утилиты экспорта и стандартным решением проблемы была тупая замена утилиты из более ранней версии (то, что уже и предложил Денис).
"

про локаль слышал, но не пробовал .. попробую ...
...
Рейтинг: 0 / 0
Глюки о проблемы при переносе базы - подскажите правильный синтаксис для объединения
    #34450720
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defocusSCO OpenServer 5.0.7 , Informix Dynamic Server Version 7.31.UC7
Пытаюсь перенести базу opk1 на другой сервер, проблема при загрузке базы - гружу ее в область archdbs с помощью onload, загрузка прерывается с ошибкой :
Если перенос производится на другой сервер и другую версию IDS, то можно попробовать воспользоваться утилитой dbexport с этой новой версии, выгружая с удаленного старого сервера прямо на новый сервак. Баги в dbexport были, но не всегда заметные, исправлялись в следующих версиях и, обычно, обходимые при необходимости.
Естественно, выгружать нужно без ключа -ss чтобы не получить привязку к именам dbspaces (надо помнить, что так будет отсутствовать и другая полезная информация :)
defocus
Хочется чтобы все лежало в одной области - archdbs ... Тут вижу два пути :
1. Создать нужные области main, dbs_po_usd, dbs_po_rur , загрузить базу и сделать
ALTER FRAGMENT на таблицу и индексы ... пробую что-то вроде :
ALTER FRAGMENT ON posting ATTACH INIT IN archdbs
ошибка в синтаксисе.... Подскажите плиз правильный синтаксис для объединения индексов и таблиц ...
http://www.ln.com.ua/~openxs/projects/informix/altfrg.html#attach
мне не помог...
Утилита onload/onunload работает с двоичными страницами, поэтому, в данном случае, это более геморойный путь. А синтаксис надо смотреть не в учебных статьях, а в документации к конкретной версии сервера. Надеюсь, что найти доки не проблема (см. FAQ).
Кстати, раз уж таблицы и индексы были фрагментированы, то это для чего то было нужно...
И в описании таблиц тогда следует убрать условие фрагментации...
defocus
2. dbexport/dbimport - вот тут таится громадная засада - дело в том, что в некоторых таблицах хранится текст программ, в том числе с комментариями на русском в кодировке CP-1251 с виндовыми концами строк ...
dbexport превращает их в "0d \ 0a" , т.е. вставляет слэш !!!, но это было бы фигней - ведь есть gsar из http://www.sql.ru/forum/actualthread.aspx?tid=377396 и помог бы простой search/replace но нет ! - dbexport просто ПОРТИТ ДАННЫЕ ! - сравнил результат селекта из таблицы в файл и dbexport этой таблицы - туча артефактов - помимо этого долбанного слэша, изменения названий функций - было q.eof() - стало q.eotion , обрезание концов строк , вставка туда \| b т.д. всего и не перечислишь ...
Все это действительно так ! Я проверял с десяток раз, сравнивал в хексе и т.п. Так что придется выгружать/загружать такие таблицы ручками ...
А какой разделитель ? Нет ли у вас путаницы с юниксовыми и виндовыми выгрузками (перенос текстовых файлов туда-сюда) ?
Как уже посоветовали, проверьте локали при выгрузке. Возможно, что это артефакты перекодировки или ,например, БД у вас создана с локалью отличной от ru_ru.1251.
И руками вовсе не обязательно - скрипт выгрузки только для отдельных таблиц (не во всех же таблицах у вас тексты программ с коментами :) можно сгенерить , а еще лучше, воспользоваться HPL для переноса всей БД (народ утилитку хвалит, особенно, когда научится ею пользоваться :)
defocus
P.S. Кстати, возможно результаты пункта 2 можно добавить в ФАК ...
Дык, о багах там и так написано. Добавлять конкретные описания багов или что ?
...
Рейтинг: 0 / 0
Глюки о проблемы при переносе базы - подскажите правильный синтаксис для объединения
    #34450732
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, надеюсь, что все статьи из FAQ на эту тему внимательно прочитаны ?
http://www.sql.ru/faq/faq.aspx?id=585
...
Рейтинг: 0 / 0
Глюки о проблемы при переносе базы - подскажите правильный синтаксис для объединения
    #34450806
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defocus1. Создать нужные области main, dbs_po_usd, dbs_po_rur , загрузить базу и сделать
ALTER FRAGMENT на таблицу и индексы ... пробую что-то вроде :
ALTER FRAGMENT ON posting ATTACH INIT IN archdbs
ошибка в синтаксисе.... Подскажите плиз правильный синтаксис для объединения индексов и таблиц ...
ALTER FRAGMENT ON TABLE posting INIT IN archdbs
...
Рейтинг: 0 / 0
Глюки о проблемы при переносе базы - подскажите правильный синтаксис для объединения
    #34450855
defocus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilis1.Если перенос производится на другой сервер и другую версию IDS...
2.А какой разделитель ? Нет ли у вас путаницы с юниксовыми и виндовыми выгрузками (перенос текстовых файлов туда-сюда) ?
3. Да, надеюсь, что все статьи из FAQ на эту тему внимательно прочитаны ?

vasilis Огромное спасибо за развернутый ответ ! ;)
1. Нет версия таже.
2. Разделитель | . В текстах программ не встречается. Переносил scp table.tar.gz .
3. Конечно ФАК прочитан ;)
авторТан
Спасибо, получилось
Код: plaintext
1.
2.
3.
4.
echo "alter fragment on index ix_posting2 init in archdbs" | dbaccess opk1
echo "alter fragment on index ix_posting1 init in archdbs" | dbaccess opk1
echo "alter fragment on index ix_posting3 init in archdbs" | dbaccess opk1
echo "alter fragment on index ix_conv_vid init in archdbs" | dbaccess opk1
echo "ALTER FRAGMENT ON TABLE posting INIT IN archdbs" | dbaccess opk1

Создал нужные области, сделал ALTER FRAGMENT все перенеслось кроме автоиндекса 122_66, саппорт говорит что для этого нужно удалить констрейн на эту табличку, а потом его пересоздать и автоиндекс создастся автоматически ... попробую...
support wrote :
"что бы удалить индекс с именем 122_66 Вам необходимо удалить
констрейн на таблицу.

Имя констрейна на таблицу можно узнать запросом к базу sysmaster

select tabname, constrname from sysconstraints, systables
where sysconstraints.tabid = systables.tabid

Затем удаляем констрейн
ALTER TABLE table_name DROP CONSTRAINT constr_name;
"

О результатах всех экспериментов отпишу ...
...
Рейтинг: 0 / 0
Глюки о проблемы при переносе базы - подскажите правильный синтаксис для объединения
    #34452059
defocus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опаньки, после выполнения вышеописанных команд alter fragment индекс 122_66 перестал иметь фрагменты в dbspace main ;))) Surprise !
На этом задачу считаю решенной. Остался только теоретический интерес ...Дальнейшие эксперименты с dbexport/dbimport проведу сегодня, отпишу ...
...
Рейтинг: 0 / 0
Глюки о проблемы при переносе базы - подскажите правильный синтаксис для объединения
    #34452136
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defocusОпаньки, после выполнения вышеописанных команд alter fragment индекс 122_66 перестал иметь фрагменты в dbspace main ;))) Surprise !
если при создании индекса не указывать схему фрагментации, он будет разложен так же, как таблица
...
Рейтинг: 0 / 0
Глюки о проблемы при переносе базы - подскажите правильный синтаксис для объединения
    #34453581
defocus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эксперимент с локалями почти ничего не дал ;((
У нас DB_LOCALE=en_US.CP1252 CLIENT_LOCALE=en_US.CP1252
говорил
Код: plaintext
export DB_LOCALE=en_US.CP1252 CLIENT_LOCALE=en_US.CP1252
потом пытался выгрузить dbexport-ом - таже фигня .. все кривое

Попробовал выгрузить с помощью UNLOAD
Код: plaintext
echo 'unload to sa_function delimiter "|" select * from sa_function;' | dbaccess opk1
получилось более-менее : опять между 0d 0a повставлялись слэши, НО функции выгрузились и правильно
Код: plaintext
gsar -s\:x0a -r:x0a sa_function.unload sa_function.unload.new
мне помог.
...
Рейтинг: 0 / 0
Глюки о проблемы при переносе базы - подскажите правильный синтаксис для объединения
    #34453643
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>с комментариями на русском в кодировке CP-1251
>У нас DB_LOCALE=en_US.CP1252 CLIENT_LOCALE=en_US.CP1252
no comment (C)

возьмите dbcopy из набора утилит art kagel -- быстро и безглючно.


ЗЫЖ Я Надеюсь вы переносите одну бд из многих с сервера на другой сервер?
...
Рейтинг: 0 / 0
Глюки о проблемы при переносе базы - подскажите правильный синтаксис для объединения
    #34453737
defocus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>no comment
У меня тоже возник этот вопрос к тому кто эти базы делал ;)) Ответ - так сложилось исторически.. ;))

dbcopy попробую, спасибо

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


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