こんにちは私はデータベースの再起動後に分散トランザクションへの参加に問題があります。
私の環境:
- SP1を搭載したWindows7x64
- Oracle Database 11g Express Edition
- ODP.NET 4.112.3.0
私のプログラム:
const string connectionString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=LOCALHOST)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE)));User Id=system;Password=sasa;";
static void Main(string[] args)
{
using (TransactionScope scope = new TransactionScope())
{
while (true)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
try
{
connection.Open();
Console.WriteLine("Connection opened");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Thread.Sleep(1000);
}
}
}
アプリケーションの開始後、すべてがうまく機能します。データベースの停止を開始すると、NREが発生し、データベースのシャットダウンが進行中であることを示す例外が発生します。再度開始した後、エラーが発生します-分散トランザクションに参加できません。開いた接続は印刷されなくなります。
出力:
Connection opened
Connection opened
Connection opened
Connection opened
Connection opened
-- here I'm stopping database
ORA-12518: TNS:listener could not hand off client connection
ORA-12528: TNS:listener: all appropriate instances are blocking new connections
-- here database is stopped I suppose
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
-- here I'm starting database again
ORA-12528: TNS:listener: all appropriate instances are blocking new connections
ORA-1033: ORACLE initialization or shutdown in progress
Unable to enlist in a distributed transaction
Unable to enlist in a distributed transaction
Unable to enlist in a distributed transaction
Unable to enlist in a distributed transaction
Unable to enlist in a distributed transaction
...
- その振る舞いの理由は何ですか?
- 何が起こっているのかを診断する方法は?