Гость
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742 / 16 сообщений из 16, страница 1 из 1
27.07.2012, 14:04
    #37895343
Aleximos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742
Добрый день!
Возникло несколько проблем при переводе базы данных на более новую версию Sybase.
Во-первых, начали себя вести странно локальные временные таблицы (объявляемые через #). Странность заключалась в том, что некоторые из запросов, в составе которых создавались и использовались временные таблицы, начали выдавать ошибку (ссылка на официальную страницу ошибки - http://dcx.sybase.com/1200/en/saerrors/errm1397.html). Причём ошибку выдавало 1 раз из 4-х (цифра примерная, точной статистики привести не могу), т.е. какой-либо "стабильности" в её выдаче не наблюдалось. Способ решения данной ошибки, рекомендуемый в официальном мануале к Sybase (запуск процедуры с параметром
Код: sql
1.
with recompile

), ничего не дал.
Во-вторых, при падении базы данных, она (база) откатилась к состоянию на момент последнего checkpoint'а, чего не наблюдалось на 10 версии (т.е. были потеряны данные за час, против потерь данных за 5-10 минут на 10 версии).

Вопросы:
1) Чем отличается поведение временных таблиц в 12 версии от 10 версии?
2) Какие ещё есть возможные решения по данной ошибке?
3) Почему могли быть потеряны данные за такой промежуток времени?

Большое спасибо за ответы.
...
Рейтинг: 0 / 0
27.07.2012, 18:17
    #37895941
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742
> которых создавались и использовались временные таблицы, начали выдавать ошибку
> (ссылка на официальную страницу ошибки -
> http://dcx.sybase.com/1200/en/saerrors/errm1397.html).

Повтори сслыку на ошибку и продублируй текстом.
А то не открывается.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.07.2012, 18:58
    #37896000
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742
Исправил заголовок. На самом деле речь идет про ASA.
...
Рейтинг: 0 / 0
27.07.2012, 19:38
    #37896052
Anton Frolov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742
...
Рейтинг: 0 / 0
27.07.2012, 20:50
    #37896093
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742
AleximosВо-первых, начали себя вести странно локальные временные таблицы (объявляемые через #). Странность заключалась в том, что некоторые из запросов, в составе которых создавались и использовались временные таблицы,
Код покажешь?

AleximosВо-вторых, при падении базы данных, она (база) откатилась к состоянию на момент последнего checkpoint'а, чего не наблюдалось на 10 версии (т.е. были потеряны данные за час, против потерь данных за 5-10 минут на 10 версии).На чекпоинте все транзакции зарегестрированные в логе, но не наложенные на собственно базу данных - накладываются (транзакции переходят из dirty pages в white pages). То есть при утере лога, но нормальном файле базы ты получишь базу на момент чекпоинта. Если хочешь вытянуть из старого лога отложенные транзакции, запускай сервер с ключом -а и старым логом.
Если это уже сделано, а транзакции из старого лога не появились, значит падение базы затронуло лог и был поврежден как раз участок лога с грязными транзакциями.
От версии это не зависит.
...
Рейтинг: 0 / 0
30.07.2012, 11:10
    #37897379
Sergey Orlov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742
AleximosВопросы:
1) Чем отличается поведение временных таблиц в 12 версии от 10 версии?
2) Какие ещё есть возможные решения по данной ошибке?
3) Почему могли быть потеряны данные за такой промежуток времени?
Большое спасибо за ответы.
Как пытались перевести с 9-ки на 12-тую, у меня были проблемы при работе 8-ной базы под 9-тым сервером.
После некоторых раздумий, была выбрана след. последовательность действий, была выгружена структура из 8-ки и пытались этим sql-скриптом загрузить в 9-ку, естественно она на кое-что ругалась, анализировалась ругань, вносились изменения в 8-мую базу и процесс повторялся... Ну а потом, поскольку базы были маленькими(1-2гига), то они были выгружены в скрипт со структурой и данными, затем в скриптах была убита статистика и все это богатство загружено в 9-ку...
...
Рейтинг: 0 / 0
30.07.2012, 11:50
    #37897436
Aleximos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742
White Owl,
Вначале создаётся временная таблица:
Код: sql
1.
2.
3.
Create Table #SSpec(DetID Integer, Qty Numeric(20,4), sale Numeric(20,4) Null, sale1 Numeric(20,4) Null, 
ParentID Integer Null, SchetInID Integer Default Autoincrement, Schet VarChar(50) Null, IsError bit default 0,
BaseCurID integer Null, SellAllowed bit default 0, Reserv integer default 0)


Впоследствии в одной из подпроцедур создаётся таблица с таким-же именем и структурой.
Код: sql
1.
2.
3.
Create Table #SSpec(DetID Integer, Qty Numeric(20,4), sale Numeric(20,4) Null, sale1 Numeric(20,4) Null, 
                        ParentID Integer Null, SchetInID Integer Default Autoincrement, Schet VarChar(50) Null, 
                        IsError bit default 0, BaseCurID integer Null, SellAllowed bit default 0, Reserv integer default 0)


Ошибка возникала при обращении к данным, записанным в таблицы, причём как к первой, так и ко второй.
...
Рейтинг: 0 / 0
30.07.2012, 12:21
    #37897483
Aleximos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742
White Owl,
А точнее примерно вот такая последовательность:
В общей коннекции:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Create Table #SSpec(....)
Exec SP1
......    
    Select
    From  #SSpec
            Inner join ........
..... 
 Exec SP2
.....
     Update #SSpec
.....
Exec SP3
.....................
        Create Table #SSpec(....)
        Exec SP1
        Exec SP3
........................
...
Рейтинг: 0 / 0
30.07.2012, 16:27
    #37898022
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742
-Доктор, а если я сделаю так, то у меня болит. Что мне делать?
-Не делайте так!
(старый народный анекдот)

Мораль: не создавайте времянок с одинаковым именем, данные которых вы еще пытаетесь шарить. Я бы ожидал, что на втором create должна была выскочить ошибка, что объект уже существует.

P.S. если приводить до ума бажный код нет никакой возможности, то попробуйте использовать диалект watcom и вместо #t использовать объявления declare local temporary table. А вось попустит на некторое недолгое время.
...
Рейтинг: 0 / 0
30.07.2012, 18:49
    #37898211
Aleximos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742
Ggg_old,

Спасибо за совет, но объявление временной таблицы на Watcom'е тоже не помогало.
Есть ли ещё какие-то варианты?
...
Рейтинг: 0 / 0
31.07.2012, 00:34
    #37898444
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742
Aleximos,

вариант только один - исправлять ваш кривой код. То что оно работало раньше считайте чудом и удачей.
...
Рейтинг: 0 / 0
01.08.2012, 10:30
    #37899991
Anton Frolov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742
Ggg_old,

И как должен быть написан такой код? Можете аналог предложить?
...
Рейтинг: 0 / 0
01.08.2012, 13:04
    #37900293
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742
да какой там аналог? Просто не делайте два раза create table. Create должен быть только один. Если одинаковость имени - принципиальна, и данные как-то переползают из старой таблицы в новую то делайте где-то внутрях alter table, а лучше делайте временную таблицу с другим именем.
...
Рейтинг: 0 / 0
01.08.2012, 16:10
    #37900660
Sergey Orlov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742
Ну и или перед 2-ым create table... сделайте drop table...
...
Рейтинг: 0 / 0
01.08.2012, 16:16
    #37900674
Sergey Orlov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742
Вообще-то я перед созданием временки проверял ее наличие...
...
Рейтинг: 0 / 0
01.08.2012, 16:45
    #37900732
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742
временная таблица - это динамический сессионный объект, который не имеет никакого отношения к процессу компиляции кода времянки. Во всяком случае это верно для SA. (прим.: это не верно верно для ASE, где при компиляции ХП проверяется существование объектов, которые в ней используются, в т.ч. и ХП).
Поэтому в коде скрипты, который вы вызываете должен прямо прописан код проверяющий, существует или нет такая временная таблица и делающая ей drop.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Проблемы при переходе с версии Sybase ASA 10.0.1.4310 на версию 12.0.1.3742 / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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