|
|
|
link to MSSQL: transaction not closed
|
|||
|---|---|---|---|
|
#18+
Всем - здравствуйте! Для мониторинга процесса выгрузки данных из Oracle DB в MSSQL мы используем db-link. При этом, каждый раз при запросе на MSSQL открывается транзакция. Механизм мониторинга такой: есть файл со списком скриптов, которые выполняются на целевой БД. Один из скриптов использует тот самый dblink. Процесс крутится в цикле и ежеминутно дёргает скрипты из конфига. Но на MSSQL транзакция остаётся открытой до тех пор. пока не прибиваем процесс. Можно ли как-то сделать, чтобы в DB-link не открывалась транзакция в MSSQL? Или - закрывалась каким-нибудь следующим запросом. Спасибо заранее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2018, 08:35 |
|
||
|
link to MSSQL: transaction not closed
|
|||
|---|---|---|---|
|
#18+
Что за линк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2018, 15:05 |
|
||
|
link to MSSQL: transaction not closed
|
|||
|---|---|---|---|
|
#18+
Проблема так и остаётся. Задача: нужно, чтобы после запроса соединение с удалённой БД закрывалось, не оставляя открытой транзакцию. Линк такой: 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)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2018, 08:30 |
|
||
|
link to MSSQL: transaction not closed
|
|||
|---|---|---|---|
|
#18+
Alexey Kuzmin, Alexey KuzminUSING dwh1; dwh = Показывайте, как у вас dwh1 настроено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2018, 09:12 |
|
||
|
link to MSSQL: transaction not closed
|
|||
|---|---|---|---|
|
#18+
И больше подробностей. Версия Oracle, какой драйвер используется, настройки odbc/jdbc/jtds, винда или nix и т.п. Будет легче помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2018, 09:21 |
|
||
|
link to MSSQL: transaction not closed
|
|||
|---|---|---|---|
|
#18+
Извините за задержку с ответом: была другая срочная задача. 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 Как посмотреть, какой драйвер используется? К сожалению, больших подробностей я не знаю: в данном случае, я - пользователь системы, которая была кем-то настроена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2018, 03:23 |
|
||
|
link to MSSQL: transaction not closed
|
|||
|---|---|---|---|
|
#18+
Смотрите конфигурации 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2018, 07:30 |
|
||
|
link to MSSQL: transaction not closed
|
|||
|---|---|---|---|
|
#18+
Alexey Kuzmin, Название намекает на Database Gateway Installation Также имеет смысл почитать Database Gateway for SQL Server User's Guide ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2018, 12:31 |
|
||
|
link to MSSQL: transaction not closed
|
|||
|---|---|---|---|
|
#18+
В $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 - нет. В общем, пока непонятно, как оно настроено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2018, 04:11 |
|
||
|
link to MSSQL: transaction not closed
|
|||
|---|---|---|---|
|
#18+
Вернулся. В файле /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 раз в сутки, хотя запрос выполняется раз в минуту. С чём это может быть связано и как сказать серверу закрывать транзакцию в случае прерывания соединения (может, раз в сутки соединение рвётся из-за регламентных работ)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 05:10 |
|
||
|
link to MSSQL: transaction not closed
|
|||
|---|---|---|---|
|
#18+
В 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). Осталось найти, как его изменить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 06:38 |
|
||
|
link to MSSQL: transaction not closed
|
|||
|---|---|---|---|
|
#18+
Alexey Kuzmin, Схема и пользователь RECOVER с таблицей HS_TRANSACTION_LOG созданы на MS SQL базе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 12:09 |
|
||
|
link to MSSQL: transaction not closed
|
|||
|---|---|---|---|
|
#18+
Есть подозрение, что, когда рвётся связь между Oracle и SQL Server, сессия зависает, и на стороне SQL остаётся открытая транзакция. Это происходит раз в сутки. Завтра посмотрю, осталась ли оракловая сессия открытой. Если да, то можно так сделать на стороне Oracle. А если - нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 13:50 |
|
||
|
link to MSSQL: transaction not closed
|
|||
|---|---|---|---|
|
#18+
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 какие ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 14:02 |
|
||
|
link to MSSQL: transaction not closed
|
|||
|---|---|---|---|
|
#18+
Спасибо. Линк создавался и обслуживается не нами, мы его менять не можем. Можем только пользоваться. Или создать новый. Но все изменения - только на стороне Oracle. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 16:11 |
|
||
|
link to MSSQL: transaction not closed
|
|||
|---|---|---|---|
|
#18+
Вы понимаете, что при тех настройках, которые указаны у вас в файле, если транзакция распределенная, а настроек на удаленной базе нет, то вы хоть тресните, но работать не будет?)) Хотя бы спросите тех, кто обслуживает MS SQL, есть ли там пользователь RECOVER :) Ну или включите HS_FDS_TRACE_LEVEL=ON и посмотрите, как будет пухнуть .trc файл... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 18:35 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39654621&tid=1883899]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
170ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 495ms |

| 0 / 0 |
