Пожалуйста, ознакомьтесь с некоторыми выводами ниже:
Для первого вопроса: (приложение все еще связано со старым паролем БД)
Если мыПри подключении базы данных с помощью пула соединений менеджер пула соединений будет создавать и поддерживать количество сеансов соединений при первом вызове объекта open
или close
из OracleConnection
.( количество сеансов подключения зависит от размера пула "min" и "max" в строке подключения ).В Oracle, я думаю, вы могли бы проверить активный сеанс, например:
SELECT s.inst_id,
s.sid,
s.serial#,
p.spid,
s.username,
s.program
FROM gv$session s
JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id
WHERE s.type != 'BACKGROUND';
И в соответствии с Oracle doc, эта служба пула соединений закроет сеансы соединения после 3 минут неактивного состояния.[http://docs.oracle.com/html/E10927_01/featConnecting.htm]
- Таким образом, наиболее вероятная причина может заключаться в том, что ваше приложение все еще подключено к базе данных с помощью этого пула и все еще подключено в течение короткого времени, даже после изменения базы данныхпароль.
- Возможна также одна возможность «Oracle Client Cache» в ODP.net.Но не совсем уверен, вы можете проверить по адресу, [http://www.oracle.com/technetwork/issue-archive/2008/08-jul/o48odpnet-098170.html]
Для второго вопроса: (зачем нужен MSDTC)
Если выиспользуете в своем коде соединение с вложенной базой данных, оно будет переведено в DTC.[http://petermeinl.wordpress.com/2011/03/13/avoiding-unwanted-escalation-to-distributed-transactions/] На самом деле была служба Oracle для Microsoft Transaction Server (OraMTS), действующая как ODP.net, DTC и база данных Oracle.
Но вы не сталкивались с этой проблемой (MSDTC) до того, как отключили пул соединений.Похоже, что ваш код повторно использует одно и то же соединение из невыделенного пула соединений, и это может устранить необходимость в продвижении DTC.Был похожий вопрос по StaffOverflow.[ Почему моя транзакция не переходит в DTC? ]