ORA-08177 例外をスローする ADO.NET を使用した非常に単純なコードがあります。これの何が問題なのかわかりません。Oracle 32ビットクライアントがインストールされているWindows Vistaマシンでこれを試しています。Visual Studio のコンパイル オプションは x86 プラットフォームに設定されています。
Dim connection As OracleConnection = Nothing
Dim transaction As OracleTransaction = Nothing
Try
connection = New OracleConnection("Data Source=ora10;User Id=userid;Password=passwd;")
connection.Open()
transaction = connection.BeginTransaction(IsolationLevel.Serializable)
Dim inputStream As New System.IO.FileStream("Dummy.xls", IO.FileMode.Open)
Dim fileLength As Integer = CType(inputStream.Length, Integer)
Dim input(fileLength) As Byte
Try
inputStream.Read(input, 0, fileLength)
Finally
If inputStream IsNot Nothing Then inputStream.Close()
End Try
Dim deleteSql As String = "DELETE FROM TABLE1 WHERE Version = 'v1' "
Dim cmd As New OracleCommand(deleteSql, connection, transaction)
cmd.ExecuteNonQuery()
Dim insertQuery As String = "INSERT INTO TABLE1 (VERSION, DATA) VALUES (:VERSION, :DATA) "
Dim insertCmd As OracleCommand = New OracleCommand(insertQuery, connection, transaction)
insertCmd.Parameters.Clear()
insertCmd.CommandType = Data.CommandType.Text
insertCmd.Parameters.AddWithValue(":VERSION", "v1")
insertCmd.Parameters.AddWithValue(":DATA", input)
insertCmd.ExecuteNonQuery()
transaction.Commit()
Catch
If transaction IsNot Nothing Then transaction.Rollback()
Throw
Finally
If transaction IsNot Nothing Then transaction.Dispose()
If connection IsNot Nothing AndAlso connection.State <> ConnectionState.Closed Then connection.Close()
End Try
注意すべき重要なこと: (それらが接続されているかどうかはわかりません) しかし、マシンから最新の Windows 更新プログラムをアンインストールすると、この問題に直面することはありません。
誰かがこれに直面したか、ここで何が起こっているかについての手がかりを持っていますか?
編集:-
この問題は、問題の BLOB 列タイプがある場合にのみ発生することがわかったところ、いくつかの進歩があります。単純な列の場合は正常に機能します。
その他の詳細(それが違いを生むかどうかはわかりません)
私は64ビットのWindows Vistaビジネスマシンで作業しています。Windows Vista 用の 32 ビット Oracle クライアントをインストールしました (64 ビット Oracle クライアントは Vista では動作しないため)。Visual Studio で x86 (32 ビット環境) 用にプロジェクトをコンパイルしています。これはコンソール アプリケーションであり、現時点で誰もデータベースにアクセスしていないことがわかっています。したがって、複数のトランザクションはあり得ません。
また、最新の Windows Update をアンインストールすると、この問題は発生しません。(KB963027、KB967190、KB959426、KB960225、KB960803、KB952004、KB956572、KB958687、KB958690、KB958481、KB958483、KB943729)