Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Виснут гетерогенные соединения  [new]
ser91k
Guest
Первый сервер с ORACLE на Linux64.
Второй сервер с MySQL на Linux.
Третий сервер на Win2008 с FireBird и клиентом Oracle, на котором настроенные ODBC к MySQL и FireBird.

Сконфигурированные несколько гетерогенных соединений, одно к MySQL и два к FireBird.

C:\oracle\db\hs\admin\initLANBIL.ora
HS_FDS_CONNECT_INFO = LANBIL
HS_FDS_TRACE_LEVEL = OFF
HS_LANGUAGE = AMERICAN_AMERICA.UTF8

C:\oracle\db\hs\admin\initINFINITYDATA.ora
HS_FDS_CONNECT_INFO = INFINITYDATA
HS_FDS_TRACE_LEVEL = OFF

C:\oracle\db\hs\admin\initINFINITYUSERS.ora
HS_FDS_CONNECT_INFO = INFINITYUSERS
HS_FDS_TRACE_LEVEL = OFF

а так же листенер

C:\oracle\db\NETWORK\ADMIN\listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.112.253.2)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\db)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = INFINITYDATA)
(ORACLE_HOME = C:\oracle\db)
(PROGRAM = hsodbc)
)
(SID_DESC =
(SID_NAME = INFINITYUSERS)
(ORACLE_HOME = C:\oracle\db)
(PROGRAM = hsodbc)
)
(SID_DESC =
(SID_NAME = LANBIL)
(ORACLE_HOME = C:\oracle\db)
(PROGRAM = hsodbc)
)
)

На первом серевере с оракл всё прописанно и насроенны DBLInk'и, всё соединяется, и данные выбираются из MySQL и FireBird. Но до определённого момента. Когда колличество процессов, комманда tasklist /FI "IMAGENAME eq hsodbc.exe" с именем hsodbc.exe подходит к 139, на этом всё зависает и помогает только:

net stop OracleoraccTNSListener
затем
taskkill /F /IM hsodbc.exe
затем
net start OracleoraccTNSListener

после этого всё начинает работать. периодичность разная, иногда пару раз за день, иногда в течении недели всё хорошо.

Как победить эту проблему?
14 янв 11, 12:38    [10071858]     Ответить | Цитировать Сообщить модератору
 Re: Виснут гетерогенные соединения  [new]
ser19k
Guest
Народ, помогите! Есть у ковонибуть мысли?
19 янв 11, 14:10    [10096726]     Ответить | Цитировать Сообщить модератору
 Re: Виснут гетерогенные соединения  [new]
-2-
Member

Откуда:
Сообщений: 15330
ser19k
Есть у ковонибуть мысли?
translate('ковонибуть', 'винь', 'ге ')
19 янв 11, 14:25    [10096862]     Ответить | Цитировать Сообщить модератору
 Re: Виснут гетерогенные соединения  [new]
Репозиторий суппозиториев
Guest
Пеши правельно, translate('ковонибуть', 'виндь', 'ге т')
19 янв 11, 15:01    [10097184]     Ответить | Цитировать Сообщить модератору
 Re: Виснут гетерогенные соединения  [new]
Репозиторий суппозиториев
Guest
Пардон, translate('ковонибуть', 'винь', 'ге ?')
19 янв 11, 15:04    [10097216]     Ответить | Цитировать Сообщить модератору
 Re: Виснут гетерогенные соединения  [new]
ser19k
Guest
Репозиторий суппозиториев,

Я прошу помощи по выше сказанной проблеме, а не по правильномуписанию. Гуру оракла, помогите! Я уточню, если что не дописал.
20 янв 11, 08:48    [10101260]     Ответить | Цитировать Сообщить модератору
 Re: Виснут гетерогенные соединения  [new]
MinistrBob
Member

Откуда: Москва
Сообщений: 281
А не может это быть связано с параметром processes, который по умолчанию 150. Может просто процессы заканчиваются и гетерогенный сервис ждет пока не получит освободившийся процесс..
20 янв 11, 09:00    [10101293]     Ответить | Цитировать Сообщить модератору
 Re: Виснут гетерогенные соединения  [new]
ser19k
Guest
MinistrBob, База Oracle находится на первом сервере в init.ora processes=2500, на третем сервере установлен Oracle, но база не создана, и непонятно где менять этот параметр... хотелось бы уточнить может быть есть параметр processes для гетерогенных соединений?
20 янв 11, 10:28    [10101781]     Ответить | Цитировать Сообщить модератору
 Re: Виснут гетерогенные соединения  [new]
ser91k
Guest
Уже третий месяц мучаемся... :( Неужели не кто не сталкивался с подобной проблемой?
10 фев 11, 07:39    [10211901]     Ответить | Цитировать Сообщить модератору
 Re: Виснут гетерогенные соединения  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7134
проверьте что у Вас в listener.log для hsodbc
а пока погадаем:
hsodbc - у Вас 32 битный, так как к 64 не было в поставке.
Единственно что приходит на ум, нехватка памяти для 32 битного приложения hsodbc
Если это так, то решение поднимать еще один listener на другом порту.
И еще, вы dblink закрываете из oracle?
10 фев 11, 10:29    [10212476]     Ответить | Цитировать Сообщить модератору
 Re: Виснут гетерогенные соединения  [new]
ser19k
Guest
В логе дейсвительно есть инфа об нехватке памяти.
лог
// ТУТ ВСЁ ХОРОШО
10-ФЕВ-2011 10:13:32 * (CONNECT_DATA=(SID=LANBIL)(CID=(PROGRAM=)(HOST=ELT\CALL_11)(USER=user))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.102.101.5)(PORT=3486)) * establish * LANBIL * 0
10-ФЕВ-2011 10:16:07 * (CONNECT_DATA=(SID=INFINITYDATA)(CID=(PROGRAM=)(HOST=MSHOME\CALL_7)(USER=пользователь))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.102.101.5)(PORT=58399)) * establish * INFINITYDATA * 0

// А ТУТ УЖЕ ВСЁ ПЛОХО
10-ФЕВ-2011 10:16:35 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:18:22 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:20:26 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:20:42 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:20:52 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:21:33 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:21:42 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:22:07 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:23:06 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:24:41 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:26:29 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:27:13 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:27:56 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:28:54 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:29:22 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:30:14 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:30:26 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:30:47 * 12531
TNS-12531: TNS:cannot allocate memory
10-ФЕВ-2011 10:31:20 * 12531
TNS-12531: TNS:cannot allocate memory

// УБИЛ ВСЕ hsodbc.exe ПРОЦЕССЫ И ПЕРЕЗАПУСТИЛ ЛИСТЕНЕР
TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production on 10-ФЕВ-2011 10:31:47

Copyright (c) 1991, 2005, Oracle. All rights reserved.

System parameter file is C:\oracle\db\network\admin\listener.ora
Log messages written to C:\oracle\db\network\log\listener.log
Trace information written to C:\oracle\db\network\trace\listener.trc
Trace level is currently 0

Started with pid=5280
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.112.253.2)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
Listener completed notification to CRS on start

TIMESTAMP * CONNECT DATA [* PROTOCOL INFO] * EVENT [* SID] * RETURN CODE
10-ФЕВ-2011 10:32:26 * (CONNECT_DATA=(SID=LANBIL)(CID=(PROGRAM=)(HOST=WORKGROUP\GROB-PC)(USER=grob))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.102.101.5)(PORT=25017)) * establish * LANBIL * 0
11 фев 11, 07:17    [10217941]     Ответить | Цитировать Сообщить модератору
 Re: Виснут гетерогенные соединения  [new]
ser19k
Guest
Vadim Lejnin,

С ещё одним листенером попробую... А как закрывать гетерогенное соединение из окакла?
У меня есть пакет в котором есть следующая функция:
  function get_account (
              p_nik     in DEVDB.BL_ABONS.NIK%TYPE
           ) return table_accounts PIPELINED
  is
    val  record_account;
    c    INTEGER;
    nr   INTEGER;
    v_id_client_type   DEVDB.CT_CLIENTS.ID_CLIENT_TYPE%TYPE;
  begin
 
    select c.id_client_type into v_id_client_type from devdb.bl_abons a inner join devdb.ct_clients c on c.id_client = a.id_client and a.nik = p_nik;
    if v_id_client_type = 2 then
      c := DBMS_HS_PASSTHROUGH.OPEN_CURSOR@LANBIL;
      DBMS_HS_PASSTHROUGH.PARSE@LANBIL(c, q'<
          select a.uid, a.login, a.pass, a.name, a.phone
            from accounts a
           where a.login = ?>');
      DBMS_HS_PASSTHROUGH.BIND_VARIABLE@LANBIL(c, 1, p_nik);
      LOOP
        nr := DBMS_HS_PASSTHROUGH.FETCH_ROW@LANBIL(c);
        EXIT WHEN nr = 0;
        DBMS_HS_PASSTHROUGH.GET_VALUE@LANBIL(c, 1, val.v_UID);
        DBMS_HS_PASSTHROUGH.GET_VALUE@LANBIL(c, 2, val.v_LOGIN);
        DBMS_HS_PASSTHROUGH.GET_VALUE@LANBIL(c, 3, val.v_PASS);
        DBMS_HS_PASSTHROUGH.GET_VALUE@LANBIL(c, 4, val.v_NAME);
        DBMS_HS_PASSTHROUGH.GET_VALUE@LANBIL(c, 5, val.v_PHONE);
        --select convert(val.v_PHONE,'CL8MSWIN1251', 'UTF8') into val.PHONE from dual;
        pipe row(val);
      END LOOP;
      DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@LANBIL(c);
    end if;
    --return;
    exception
      when others then
        null;
    return;
  end;

вот после её выполнения я бы закрывал соединение, но незнаю как. Подскажите пожалуйста?
11 фев 11, 07:21    [10217944]     Ответить | Цитировать Сообщить модератору
 Re: Виснут гетерогенные соединения  [new]
ser19k
Guest
Нашёл
  begin
    commit;
    execute immediate 'alter session close database link LANBIL';
  end;

Но нужно обязательно делать commit или rollback иначе ругается на то что dblink используется :( Может есть способ обойти это?

Установка HS_TRANSACTION_MODEL = READ_ONLY в файле initLANBIL.ora непомогла.
11 фев 11, 08:02    [10217992]     Ответить | Цитировать Сообщить модератору
 Re: Виснут гетерогенные соединения  [new]
ser91k
Guest
Нашли пару ссылок по теме

http://forums.oracle.com/forums/thread.jspa?threadID=2154580
http://ss64.com/nt/syntax-desktopheap.html

эксперементируем...
14 фев 11, 08:43    [10229906]     Ответить | Цитировать Сообщить модератору
 Re: Виснут гетерогенные соединения  [new]
santas1978
Member

Откуда: Тверь
Сообщений: 9
А зачем обходить commit или rollback?
Надо добавить их.
Проблема с ростом количества процессов скорее всего именно из за этого.
Можно, конечно, использовать параметр:
HS_IDLE_TIMEOUT=n где n в минутах, но это на аварийные случаи.
14 фев 11, 12:17    [10231287]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить