powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / link to MSSQL: transaction not closed
16 сообщений из 16, страница 1 из 1
link to MSSQL: transaction not closed
    #39578646
Alexey Kuzmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем - здравствуйте!
Для мониторинга процесса выгрузки данных из Oracle DB в MSSQL мы используем db-link.
При этом, каждый раз при запросе на MSSQL открывается транзакция.
Механизм мониторинга такой: есть файл со списком скриптов, которые выполняются на целевой БД. Один из скриптов использует тот самый dblink.
Процесс крутится в цикле и ежеминутно дёргает скрипты из конфига.
Но на MSSQL транзакция остаётся открытой до тех пор. пока не прибиваем процесс.
Можно ли как-то сделать, чтобы в DB-link не открывалась транзакция в MSSQL?
Или - закрывалась каким-нибудь следующим запросом.
Спасибо заранее.
...
Рейтинг: 0 / 0
link to MSSQL: transaction not closed
    #39578706
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за линк?
...
Рейтинг: 0 / 0
link to MSSQL: transaction not closed
    #39620306
Alexey Kuzmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема так и остаётся.

Задача: нужно, чтобы после запроса соединение с удалённой БД закрывалось, не оставляя открытой транзакцию.

Линк такой:
CREATE DATABASE LINK DWH CONNECT TO "R" IDENTIFIED BY "xxx" USING dwh1 ;
dwh =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1522))
(CONNECT_DATA=(SID=<SID>))
(HS=OK)
)

Запрос запускается агентом zabbix, не знаю, как можно выполнить команду
DBMS_SESSION.CLOSE_DATABASE_LINK('mydb')

Можно ли прописать в свойствах db_link-а, чтобы соединение закрывалось (хотя бы, по timeout)?
...
Рейтинг: 0 / 0
link to MSSQL: transaction not closed
    #39620319
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Kuzmin,

Alexey KuzminUSING dwh1;
dwh =

Показывайте, как у вас dwh1 настроено.
...
Рейтинг: 0 / 0
link to MSSQL: transaction not closed
    #39620323
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И больше подробностей. Версия Oracle, какой драйвер используется, настройки odbc/jdbc/jtds, винда или nix и т.п.

Будет легче помочь.
...
Рейтинг: 0 / 0
link to MSSQL: transaction not closed
    #39625287
Alexey Kuzmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините за задержку с ответом: была другая срочная задача.

dwh1 =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1522))
(CONNECT_DATA=(SID=dg4msql_dwh1))
(HS=OK)
)

Oracle 11.2.0.4
OS Linux 3.8.13-118.18.3.el7uek.x86_64

Как посмотреть, какой драйвер используется?

К сожалению, больших подробностей я не знаю: в данном случае, я - пользователь системы, которая была кем-то настроена.
...
Рейтинг: 0 / 0
link to MSSQL: transaction not closed
    #39625305
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрите конфигурации HS.
Лежит в %ORACLE_HOME%\hs\admin\.
Имеет название initSID.ora, т.е. у вас должно быть что-то такое.

C:\ORACLE\ORA11G\11.2\hs\admin\initdg4msql_dwh1.ora

В ней указан способ соединения, мой пример указывает на имя ODBC-источника для Windows.

HS_FDS_CONNECT_INFO = SRV-SQL-01
HS_FDS_TRACE_LEVEL = 0

В линуксе настраивал давно, там надо уже смотреть настройки драйвера, на который указание в этом файле, вероятно, unixODBC.
...
Рейтинг: 0 / 0
link to MSSQL: transaction not closed
    #39625445
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Kuzmin,

Название намекает на Database Gateway Installation

Также имеет смысл почитать Database Gateway for SQL Server User's Guide
...
Рейтинг: 0 / 0
link to MSSQL: transaction not closed
    #39625812
Alexey Kuzmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В $ORACLE_HOME/hs/admin есть файл initdg4odbc.ora, но он - пустой и сильно старый.
В tnsnames.ora прописано так:
dwh =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1522))
(CONNECT_DATA=(SID=dg4msql_dwh1))
(HS=OK)
)

Из параметров HS:
SQL> sho parameter hs

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
hs_autoregister boolean TRUE

Шлюз - работает:
$ ps -ef|grep dg
oracle 32704 1 0 Apr04 ? 00:00:03 dg4msqldg4msql_dwh1 (LOCAL=NO)

Директории $ORACLE_HOME/dg4msql - нет.

В общем, пока непонятно, как оно настроено.
...
Рейтинг: 0 / 0
link to MSSQL: transaction not closed
    #39654621
Alexey Kuzmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вернулся.

В файле /oracle/app/11.2/tghome_2/dg4msql/admin/initdg4msql_dwh1.ora:

HS_FDS_CONNECT_INFO=srv-dwh-lsn:15025//DWH
# alternate connect format is hostname/serverinstance/databasename
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
HS_LANGUAGE=American
HS_TRANSACTION_MODEL=READ_ONLY

Интересно, что транзакция не закрывается 1 раз в сутки, хотя запрос выполняется раз в минуту.
С чём это может быть связано и как сказать серверу закрывать транзакцию в случае прерывания соединения (может, раз в сутки соединение рвётся из-за регламентных работ)?
...
Рейтинг: 0 / 0
link to MSSQL: transaction not closed
    #39654637
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 11.2 появился timeout .

This release allows some Gateways to specify a session idle timeout limit. When a gateway session is idle for more than the specified time limit, the gateway session is terminated automatically with any pending update rolled back (if the gateway has the proper rollback capability).

Осталось найти, как его изменить.
...
Рейтинг: 0 / 0
link to MSSQL: transaction not closed
    #39654779
BTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BTM
Гость
Alexey Kuzmin,

Схема и пользователь RECOVER с таблицей HS_TRANSACTION_LOG созданы на MS SQL базе?
...
Рейтинг: 0 / 0
link to MSSQL: transaction not closed
    #39654872
Alexey Kuzmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть подозрение, что, когда рвётся связь между Oracle и SQL Server, сессия зависает, и на стороне SQL остаётся открытая транзакция. Это происходит раз в сутки. Завтра посмотрю, осталась ли оракловая сессия открытой. Если да, то можно так сделать на стороне Oracle. А если - нет?
...
Рейтинг: 0 / 0
link to MSSQL: transaction not closed
    #39654881
BTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BTM
Гость
Alexey Kuzmin,

У вас в инишнике такие настройки, вы понимаете, что они означают?
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
HS_TRANSACTION_MODEL=READ_ONLY

Почему у вас модель READ_ONLY?
Вы создали на MS SQL базе все необходимое для этих настроек?
В MS SQL в вышеуказанной мной таблице как раз хранится информация по распределенным транзакциям.

Включите Trace_level=ON и посмотрите в логах ORACLE_HOME/dg4msql/log какие ошибки.
...
Рейтинг: 0 / 0
link to MSSQL: transaction not closed
    #39655027
Alexey Kuzmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Линк создавался и обслуживается не нами, мы его менять не можем. Можем только пользоваться. Или создать новый. Но все изменения - только на стороне Oracle.
...
Рейтинг: 0 / 0
link to MSSQL: transaction not closed
    #39655137
BTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BTM
Гость
Вы понимаете, что при тех настройках, которые указаны у вас в файле, если транзакция распределенная, а настроек на удаленной базе нет, то вы хоть тресните, но работать не будет?))
Хотя бы спросите тех, кто обслуживает MS SQL, есть ли там пользователь RECOVER :)
Ну или включите HS_FDS_TRACE_LEVEL=ON и посмотрите, как будет пухнуть .trc файл...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / link to MSSQL: transaction not closed
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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