Tôi có một mã rất đơn giản bằng cách sử dụng ADO.NET mà ném ORA-08177 ngoại lệ. Tôi không chắc điều gì xảy ra với điều này. Tôi đang cố gắng này trên một cửa sổ vista máy có oracle 32 bit khách hàng cài đặt. Tùy chọn biên dịch của tôi cho studio trực quan được đặt thành nền tảng x86.ORA-08177: không thể tuần tự hóa truy cập cho giao dịch này
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
Điều quan trọng cần lưu ý: (Tôi không chắc chắn nếu chúng được kết nối) nhưng tôi không gặp phải vấn đề này nếu tôi gỡ cài đặt các bản cập nhật cửa sổ mới nhất từ máy của mình.
Có ai phải đối mặt với điều này hoặc có bất kỳ đầu mối nào về những gì đang xảy ra ở đây không?
Chỉnh sửa: -
Tôi có một số tiến bộ mà tôi đã phát hiện ra rằng sự cố này chỉ xảy ra khi chúng tôi có loại cột blob được đề cập. cho các cột đơn giản, nó hoạt động tốt.
Chi tiết khác (không chắc chắn nếu điều đó tạo ra sự khác biệt)
Tôi đang làm việc trên máy tính Windows Vista 64 bit. Tôi đã cài đặt 32 bit oracle client cho windows vista (từ 64 bit oracle client không hoạt động trên vista). Tôi đang biên soạn dự án của mình cho môi trường x86 (32 bit) trong phòng thu trực quan. Và đây là một ứng dụng giao diện điều khiển và tôi biết rằng không ai khác đang nhấn vào cơ sở dữ liệu tại thời điểm này. do đó không thể có nhiều giao dịch.
Và tôi không thấy vấn đề này nếu tôi gỡ cài đặt bản cập nhật cửa sổ mới nhất. (KB963027, KB967190, KB959426, KB960225, KB960803, KB952004, KB956572, KB958687, KB958690, KB958481, KB958483, KB943729)
Ông có thể xin vui lòng gửi một tập tin dấu vết cho bạn phiên? – Quassnoi
Mức cô lập có thể lập lại được? Tôi tự hỏi nếu nó thực sự cần thiết ... –
Phiên bản Oracle nào? – DCookie