Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 MS SQL + Oracle = проблемы, или грязный межрассовый секс вместо нежной любви ?  [new]
Shlippenbaranus
Member

Откуда:
Сообщений: 241
Добрый день, не особо надеюсь на помощь, но все-таки.

Работаю с MS SQL 2005 со связанным сервером на Oracle (пусть он будет LEON). Открываю management studio, выполняю запрос
  select
    *
  from
    openquery(
      LEON, 'много букв'
  )
'
- запрос отрабатывает за несколько секунд. Работаю дальше, возвращаюсь к указанному запросу - а он вдруг берет, и "повисает". Как теперь оказалось, в действительности запрос продолжает выполняться, но очень долго - от получаса до многих часов.

При этом:

1) попытка прервать выполнение запрос из интерфейса management studio оказывается безуспешной - сообщение executing query в строке статуса сменяется на canceling query, и все;

2) попытка выполнить тот же запрос через другой связанный сервер, отличающийся от первого выбором провайдера (LEON - MSDAORA, альтернативный - OraOLEDB.Oracle) приводит к аналогичному "зависанию";

3) попытка выполнить тот же запрос через openrowset без обращения к связанному серверу, т.е. вот так:
  select
    *
  from
    openrowset(
      'OraOLEDB.Oracle',
      'алиас из tnsnames.ora';'юзер';'пароль',
      'тот же запрос'
    )
приводит к аналогичному зависанию;

5) попытка несущественно изменить текст запроса (в предельном случае - ПЕРЕНЕСТИ СКОБКУ В ДРУГУЮ СТРОКУ), и выполнить "новый" запрос любым способом приводит к тиому, что "новый" запрос завершается за несколько секунд. А "старый", при этом, продоложает "висеть".

Отмечу, что объем изменений, которые нужно произвести для того, чтобы запрос снова выполнился за неск-ко секунд, может быть разным: в предельном случае, как я уже указал, достаточно перенести скобку в другую строку, в обычном - написать что-нибудь вроде
  select
    *
  from
    openrowset(
      'OraOLEDB.Oracle',
      'алиас из tnsnames.ora';'юзер';'пароль',
      'select * from (изначальный запрос)'
    )
, иногда нужно избавиться от аналитических функций в запросе, т.п.

Кроме того, отмечу, что (а) "на самом оракле", т.е. в sqlplus, исходный запрос всегда выполняется быстро, (б) проблемы не наблюдались при выполнении запросов, не использующих аналитические функции, (в) тестировавшийся запрос стал вести себя странно после того, как в процессе работы я попытался прервать выполнение альтернативного запроса на связаном сервере, (г) ни SQL сервер, ни Oracle с тех пор не перегружались.

Вопрос к почтенному обществу: что это может быть, и где искать?

И главное: способен ли MS SQL 2005 СТАБИЛЬНО работать в связке с Oracle 11g, или я должен ждать необычных проблем в необычных местах постоянно?
7 июн 11, 13:15    [10776316]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL + Oracle = проблемы, или грязный межрассовый секс вместо нежной любви ?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Shlippenbaranus
И главное: способен ли MS SQL 2005 СТАБИЛЬНО работать в связке с Oracle 11g, или я должен ждать необычных проблем в необычных местах постоянно?
Судя по довольно большому количеству вопросов, скорее всего второе.
7 июн 11, 13:22    [10776373]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL + Oracle = проблемы, или грязный межрассовый секс вместо нежной любви ?  [new]
BestZvit
Member

Откуда: Гоблино
Сообщений: 2250
Shlippenbaranus
а он вдруг берет, и "повисает". Как теперь оказалось, в действительности запрос продолжает выполняться, но очень долго - от получаса до многих часов.


1. Смотрел - в Oracle запрос-то в это время (пока ты висишь) реально выполняется ? Или там он уже не ничего не делает, а просто ты принять к себе данные не можешь (причин тут м.б. море) ?

2. Планы на стороне Оракла не поплыли ?
3. Утечек памяти в пуле MSSQL нет ?
4. Утечек памяти в dll-ках в провайдере нет ? (логи смотрели ? Нет ли в логах ошибок, пусть по первому взгляду даже будет казаться, что эти ошибки к функционалу и не относятся)
5. MSSQL 2005 - небось совсем без сервис паков ? (Очень напоминает)

... и т.д. и т.п.

PS
Если лень истреблять саму причину, а достаточно любой затычки - переносите "СКОБКУ В ДРУГУЮ СТРОКУ" и радуйтесь молниеносности отработки (вот только надолго ли.. )
7 июн 11, 15:15    [10777212]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL + Oracle = проблемы, или грязный межрассовый секс вместо нежной любви ?  [new]
Shlippenbaranus
Member

Откуда:
Сообщений: 241
BestZvit
1. Смотрел - в Oracle запрос-то в это время (пока ты висишь) реально выполняется ? Или там он уже не ничего не делает, а просто ты принять к себе данные не можешь (причин тут м.б. море) ?
2. Планы на стороне Оракла не поплыли ?
3. Утечек памяти в пуле MSSQL нет ?
4. Утечек памяти в dll-ках в провайдере нет ? (логи смотрели ? Нет ли в логах ошибок, пусть по первому взгляду даже будет казаться, что эти ошибки к функционалу и не относятся)
5. MSSQL 2005 - небось совсем без сервис паков ? (Очень напоминает)

... и т.д. и т.п.

PS
Если лень истреблять саму причину, а достаточно любой затычки - переносите "СКОБКУ В ДРУГУЮ СТРОКУ" и радуйтесь молниеносности отработки (вот только надолго ли.. )


Спасибо за советы. Посмотреть что-то на стороне Oracle я не могу по административным причинам, что касается логов - симметричная ситуация наблюдается на двух MS SQL серверах, но одинаковых ошибок в логах я не вижу. Cервис-пак SP3.

Что касается лени - есть такое слово "текучка". И она по мне уже матом ругается :).
7 июн 11, 19:09    [10778841]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL + Oracle = проблемы, или грязный межрассовый секс вместо нежной любви ?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Стабильно работающей вещи не получится как ни крути. Но на проблемы с подвисанием не нарывался ни разу - стабильно. Да, рубить бесполезно, если лоханулся с запросом (условиями). Да, чувствителен к тексту (аля коменты) и типам данных. Про версии оракловского клиента ваще молчу.

Были утечки памяти (на 32х), периодические падения из-за ошибок в оракловском клиенте работающем в окружении MS SQL процесса.

С планами были проблемы на стороне самого оракакла, тяжело давались. Но от вызова через скуль никак не зависило.

Сочувствую.
7 июн 11, 19:19    [10778864]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL + Oracle = проблемы, или грязный межрассовый секс вместо нежной любви ?  [new]
Outproc ora
Guest
Mnior
Стабильно работающей вещи не получится как ни крути. Но на проблемы с подвисанием не нарывался ни разу - стабильно. Да, рубить бесполезно, если лоханулся с запросом (условиями). Да, чувствителен к тексту (аля коменты) и типам данных. Про версии оракловского клиента ваще молчу.

Были утечки памяти (на 32х), периодические падения из-за ошибок в оракловском клиенте работающем в окружении MS SQL процесса.

С планами были проблемы на стороне самого оракакла, тяжело давались. Но от вызова через скуль никак не зависило.

Сочувствую.


В свойствах провайдера, кстати, "outproc" ставить не пробовали ?
7 июн 11, 20:22    [10778987]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL + Oracle = проблемы, или грязный межрассовый секс вместо нежной любви ?  [new]
Glamorama
Member

Откуда:
Сообщений: 152
У меня работает только через OraOLEDB.Oracle, с MSDAORA любви не получилось.
Глюки бывали при работе с 9i (вплоть до падения SQL Server и необходимости перезагрузки Windows), с 11g всё работает стабильно (правда статистики маловато - всего лишь пара запросов каждый день).
Поэкспериментируйте с дровами на стороне SQL Server, заплатками к Oracle. А проблем с сеткой между серверами нет случаем?
8 июн 11, 00:29    [10779840]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL + Oracle = проблемы, или грязный межрассовый секс вместо нежной любви ?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Outproc ora
"outproc" ставить не пробовали ?
Решили опять/снова/повторить данный вариант. Да, большинство запросов отвалилось. НО, мы на этом не остановились и решили копать. И нашли условие работоспособности!!!:
EXEC('begin ... end;', ... ,<LastParam>) AT OraLinkName
Если последний параметр
  • или не OUT
  • или не NULL (до вызова)
  • или остаётся NULL в результате (после вызова)

    Ура!!!!!!!

    Версия провайдера: 11.2.0.1.0

    Когда у нас было 32 битная система приходилось увеличивать -g <memory_to_reserve>. И если в OUT параметрах вдруг затесался не NULL (до вызова), то утечка памяти была большой и эта память быстро забивалась.

    Сейчас 64 битная, да и провайдер другой. Посмотрим.

    По ходу придётся отказываться от своих высказываний: 10204549
  • 14 июн 11, 16:27    [10811452]     Ответить | Цитировать Сообщить модератору
     Re: MS SQL + Oracle = проблемы, или грязный межрассовый секс вместо нежной любви ?  [new]
    Memory Leak
    Guest
    Mnior
    Когда у нас было 32 битная система приходилось увеличивать -g <memory_to_reserve>. И если в OUT параметрах вдруг затесался не NULL (до вызова), то утечка памяти была большой и эта память быстро забивалась.


    А теперь утечка памяти маленькая и память забивается не так быстро ?
    14 июн 11, 16:33    [10811499]     Ответить | Цитировать Сообщить модератору
     Re: MS SQL + Oracle = проблемы, или грязный межрассовый секс вместо нежной любви ?  [new]
    egaraev
    Member

    Откуда:
    Сообщений: 63
    Советую поставить все патчи на Оракл клиента, все патчи на МС СКЛ Сервер. Мне это помогло, правда это было примерно год назад, т.ч. деталей не помню...
    14 июн 11, 17:04    [10811770]     Ответить | Цитировать Сообщить модератору
     Re: MS SQL + Oracle = проблемы, или грязный межрассовый секс вместо нежной любви ?  [new]
    invm
    Member

    Откуда: Москва
    Сообщений: 9836
    egaraev
    Советую поставить все патчи на Оракл клиента, все патчи на МС СКЛ Сервер. Мне это помогло, правда это было примерно год назад, т.ч. деталей не помню...

    А мне вот патчи оракловые только ухудшили ситуацию. Так что не все так однозначно. Правда было это пару лет назад.
    14 июн 11, 17:26    [10811907]     Ответить | Цитировать Сообщить модератору
     Re: MS SQL + Oracle = проблемы, или грязный межрассовый секс вместо нежной любви ?  [new]
    Mnior
    Member

    Откуда: Кишинёв
    Сообщений: 6724
    egaraev
    патчи
    Вообще-то пришлось тра искать наиболее подходящую версию, при которой этот комбайн не разрывало от собственного пука.
    Желание менять версии и вообще обновляться давно уже пропало противоположное. Работает? - Забетонируй!

    Memory Leak, "теперь" (т.е. до этого момента) система x64 и были периодические (ежемесячные) падения, примерно тоже самое как раньше с утечками (вынужденная перезагрузка раз в месяц). Но были моменты что "жил" не более недели-дня. Приходилось резко снижать количество запросов путём выворачивания архитектуры (кеширование, синхронизация).

    По идее, если я ничего не путаю, за счёт x64, утечка памяти вряд ли явно обнаружится.
    15 июн 11, 00:59    [10813676]     Ответить | Цитировать Сообщить модератору
     Re: MS SQL + Oracle = проблемы, или грязный межрассовый секс вместо нежной любви ?  [new]
    Memory Leak
    Guest
    Mnior
    По идее, если я ничего не путаю, за счёт x64, утечка памяти вряд ли явно обнаружится.

    Точнее сказать - "Вряд ли на х64 утечка памяти будет к себе привлекать внимание"

    PS
    Утечка в любом случае - не есть хорошо, но, разумеется, хозяин-барин...
    15 июн 11, 22:33    [10818957]     Ответить | Цитировать Сообщить модератору
     Re: MS SQL + Oracle = проблемы, или грязный межрассовый секс вместо нежной любви ?  [new]
    Mnior
    Member

    Откуда: Кишинёв
    Сообщений: 6724
    Mnior
    Если последний параметр
  • или не OUT
  • или не NULL (до вызова)
  • или остаётся NULL в результате (после вызова)

    Ура!!!!!!!
  • Clob-ы не работают, если более 64K данных.
    Кстати параметр тоже последний.
    17 июн 11, 16:24    [10829767]     Ответить | Цитировать Сообщить модератору
     Re: MS SQL + Oracle = проблемы, или грязный межрассовый секс вместо нежной любви ?  [new]
    Mnior
    Member

    Откуда: Кишинёв
    Сообщений: 6724
    Outproc ora
    В свойствах провайдера, кстати, "outproc" ставить не пробовали ?
    Всё равно можно уложить сервер.
    Хорошо, что не просто падает (на nt.dll), а дампит на oledb.

    Валится также - через SELECT. Pipeline у MS дырявый, в смысле не надёжный, в угоду скорости.
    От Table-Valued Function (т.е. предварительно INSERT SELECT) не отказаться. Ладно, привычка выработана.
    Хотя как раз OLE Automation наоборот, в TVF роняет сервер.

    Ещё интересная особенность, под сервисной учёткой, без права делегирования, INSERT для Win юзверей не работает:
    ORA ... couldn't "INSERT INTO LinkServer..Schema.Table". Или имя провайдера, если через OPENQUERY.
    DELETE например без проблем.
    Не, понятно конечно что к чему, но в такой череде программных костылей не каждому под силу разобраться.
    Метаданные работают, колбасит также (разнотипные дубли в наборе колонок, индексных).

    Надо увеличить дозу крови на жертвенном алтаре за умерщвление Oracle.
    22 июн 11, 23:05    [10858344]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить