2012-08-28 27 views
6

Tôi đang cố gắng chèn một lượng lớn dữ liệu nhị phân vào cơ sở dữ liệu Oracle (11g) từ xa bằng Entity Framework (ODP.Net). Nó hoạt động tốt cho các tệp thực sự nhỏ (< 5 KB), nhưng đối với những tệp lớn hơn (ví dụ: 44 KB), tôi gặp lỗi: "ORA-03135: liên hệ bị mất kết nối"."ORA-03135: kết nối bị mất liên lạc" khi chèn tập tin lớn

Tôi không nghĩ rằng nó đã hết thời gian, vì ngoại lệ xảy ra trong vòng một giây sau khi thực hiện lệnh.

tôi đã cố gắng thiết lập cả những điều sau đây trong chuỗi kết nối của tôi, nhưng không có kết quả:

  • Validate Connection=true
  • Pooling=false

Tôi cũng nhìn vào tập tin listener.log trên máy từ xa. Nó cho thấy các kết nối được thực hiện, nhưng không có dấu hiệu của trường hợp ngoại lệ hoặc chấm dứt kết nối.

Tôi đang sử dụng các bản sửa lỗi hoặc phương pháp khắc phục được đề xuất.

Edit:

Cùng SQL hoạt động làm việc khi truy cập vào một thể hiện của Oracle trên mạng nội bộ.

+0

Có lẽ không phải vậy, nhưng tôi có "ORA-03135: kết nối mất liên lạc" trên đồ vật lạ khi kết nối không bị mất rằng Oracle không còn có thể nuốt câu lệnh SQL được gửi. Tôi đã nhận nó trên các truy vấn rất lớn (> 2000 dòng mã). Có lẽ tôi đang gửi cho bạn đúng hướng nhưng tôi nghĩ sau 4 giờ không có câu trả lời tôi ít nhất có thể cho bạn biết rằng mảnh kinh nghiệm của riêng tôi. Đối với tôi, có vẻ như thông báo luôn xuất hiện khi trình phân tích cú pháp của lệnh SQL bị lỗi trong nền. – hol

+0

Có thể đáng để kiểm tra nhật ký cảnh báo trên máy từ xa để xem có báo cáo lỗi hay không. Nếu không, nó có thể chỉ ra vấn đề đang ở cuối khách hàng, không phải máy chủ. Ngoài ra, có bất kỳ tường lửa nào trên đường đi hay bất kỳ thứ gì khác ở cấp mạng có thể có các nhật ký mà bạn có thể kiểm tra? –

+0

Nhật ký mạng sẽ hữu ích. Tường lửa không được bật và đó là máy chủ Windows lưu trữ Oracle. Tôi không chắc nơi lưu lượng truy cập TCP được đăng nhập trên máy Windows, nhưng tôi có thể phải tìm ra điều đó. –

Trả lời

3

Đây có thể là vấn đề phức tạp với nhiều nguyên nhân và giải pháp có thể khác nhau. Bắt đầu từ đây:

http://www.dba-oracle.com/t_ora_03135_connection_lost_contact.htm

Answer: The oerr utility shows this for the ORA-03135 error:

ORA-03135: connection lost contact

Cause: 1) Server unexpectedly terminated or was forced to terminate. or 2) Server timed out the connection.

Action: 1) Check if the server session was terminated. 2) Check if the timeout parameters are set properly in sqlnet.ora.

The ORA-03135 error is common when connecting remotely when a firewall terminates the connection.

One solution for the ORA-03135 error is to increase the value of the sqlnet.ora expire_time parameter in the sqlnet.ora file or to check for a expire parameter in a SQL*Plus profile.

To diagnose the ORA-03135 error, start by checking to see if the OS PID still exists, using the ps –ef|grep syntax.

Check to see if there is a Network Address Translation (NAT) between the client and server

In Windows, check to see if a Windows firewall is checking for your local connections:

Windows XP -> Control panel -> security -> Tab "Advanced"

Also, setting the parameters sqlnet.inbound_connect_timeout and inbound_connect_timeout_listenername to 0 can stop the ORA-03135 error.

Cũng như trên, kiểm tra cơ sở dữ liệu log cảnh báo cho các lỗi xảy ra tại cùng một thời điểm với giảm kết nối. Đôi khi nó có thể được gây ra bởi một ora-600 hoặc ora-7445, ví dụ. Nó sẽ không xuất hiện trong nhật ký người nghe vì bạn chỉ gặp lỗi này sau khi bắt tay xong.

+0

Tôi đã không xem xét vấn đề này trong một thời gian, nhưng vì các phương pháp khắc phục sự cố được nêu ở đây trông khá hoàn chỉnh, tôi đánh dấu nó là câu trả lời. –

0

Tình trạng này thường do kết nối đã ngắt kết nối/cũ cũ được lấy từ hồ bơi kết nối. Nếu bạn nhận được ngoại lệ này sau khi Pooling = false, hầu hết các tường lửa có thể chặn kết nối do tcp thời gian chờ nhàn rỗi. Đảm bảo giá trị thời gian chờ nhàn rỗi tcp lớn hơn thời gian thực hiện lệnh dự kiến ​​

Các vấn đề liên quan