2009-08-20 43 views
29

Có cách nào để giữ cho Oracle SQL Developer không đóng các kết nối DB của tôi hoặc để tăng thời gian chờ không? Đôi khi trong một truy vấn SQL Dev dài chạy sẽ chỉ đóng kết nối, để lại truy vấn của tôi chạy trên máy chủ nhưng tôi không có kết quả. Nếu tôi RDP vào máy chủ và chạy SQL Dev tại địa phương nó dường như không bao giờ có vấn đề này.Làm thế nào tôi có thể giữ cho Oracle SQL Developer đóng kết nối DB?

+0

Câu hỏi liên quan với giải pháp cho Nhà phát triển SQL 4: http://stackoverflow.com/questions/12999811/when-sql-developer-is-idle-i-lose-my-connection – Vadzim

Trả lời

7

Điều này không có vẻ giống như một vấn đề với nhà phát triển SQL, tôi đã không bao giờ bắt gặp nó. Bạn có chắc chắn nó không phải cái gì khác, giống như mạng của bạn? Điều gì sẽ xảy ra nếu bạn kết nối từ SQL cộng với từ máy tính của bạn.

+0

Loại cuối đánh dấu câu trả lời này, nhưng có nó là một vấn đề mạng. –

+0

@KevinBabcock Sự cố mạng bạn đang gặp phải ở đây là gì? – theCodeMachine

+0

Tôi có Toad và Oracle SQL Developer, Oracle SQL Developer luôn ngắt kết nối và cố gắng kết nối, rất khó chịu, trong khi đó Toad giữ kết nối cả ngày. Bây giờ tôi phải để lại Toad vì lý do kinh doanh: ( –

26

Tôi không có câu trả lời cho điều này, nhưng tôi đang gặp phải vấn đề tương tự.

Tường lửa giữa Nhà phát triển SQL và cơ sở dữ liệu của tôi tự động đóng các phiên "không hoạt động". Một truy vấn chạy dài là theo tường lửa một phiên không hoạt động, vì vậy ông đóng nó. Tôi chưa tìm thấy cách làm cho SQL Developer gửi các gói tin qua kết nối với một truy vấn chạy dài, sao cho tường lửa không đóng kết nối. Và tôi không biết liệu điều này có thể xảy ra hay không.

Vì vậy, tôi không nghĩ đó là vấn đề về Nhà phát triển SQL, mà là sự cố tường lửa.

- CẬP NHẬT

Có một phần mở rộng cho SQL Developer cho phép bạn để giữ cho các kết nối đang hoạt động: http://sites.google.com/site/keepaliveext/

Nó không hoàn toàn hoàn thành được nêu (ví dụ như thông báo bạn nhận được trạng thái thời gian chờ cùng không vấn đề thời gian chờ bạn đã chỉ định) nhưng nó là lừa. Tôi đã không, tuy nhiên, thử nghiệm nó so với SQL Developer trước khi phát hành mới nhất, nhưng nó đã làm việc với 2.2.x SQL Developer

- CẬP NHẬT

Đối với SQL Developer 4+ bạn có thể sử dụng: http://scristalli.github.io/SQL-Developer-4-keepalive/

+0

Tôi đã thử nghiệm phần mở rộng còn sống. http://sites.google.com/site/keepaliveext/ nó hoạt động chính xác như mong đợi, cảm ơn! –

+0

Dường như không làm việc trên 4.0 – ATorras

+3

Phiên bản làm việc cho Nhà phát triển SQL 4.0: https://bitbucket.org/scristalli/sql-developer-4-keepalive/overview –

8

Cũng giống như vấn đề với tường lửa đối với tôi.

Bạn có thể có một số may mắn khi đặt tham số EXPIRE_TIME trong tệp SQLNET.ORA của máy chủ. Từ tài liệu:

Sử dụng tham số SQLNET.EXPIRE_TIME để chỉ định khoảng thời gian, tính bằng phút, để gửi đầu dò để xác minh rằng kết nối máy khách/máy chủ đang hoạt động. Đặt giá trị lớn hơn 0 đảm bảo rằng các kết nối không được mở vô thời hạn, do một kết thúc máy khách bất thường. Nếu đầu dò tìm thấy kết nối bị ngắt kết nối hoặc kết nối không còn được sử dụng nữa, nó sẽ trả về lỗi, làm cho quá trình máy chủ thoát. Tham số này chủ yếu dành cho máy chủ cơ sở dữ liệu, thường xử lý nhiều kết nối tại một thời điểm.

10g Documentation on EXPIRE_TIME

+0

Tôi đã thử nghiệm thành công hiệu quả của tham số này.Cảm ơn! –

5

Là một giải pháp tạm thời với nó, ở bên cạnh 'Data Grid' bạn sẽ thấy tab 'DBMS Output', rẽ ra DBMS ON và thiết lập tần số bỏ phiếu để một thời gian dễ chịu .

+0

Nice suggesion ... I không hoàn toàn biết những gì bạn có ý nghĩa bởi "Data Grid" nhưng tôi thấy điều này dưới 'View> Dmbs Output' (ALT, V, D) –

11

Đây là một tiện ích mở rộng Keep Connection Active khác có thể được sử dụng. (Phần mở rộng được đề cập ở trên chứa một số vấn đề được giải quyết trong phần mở rộng này.)

http://sites.google.com/site/keepconnext/

+1

Làm việc trên một cổng gần như hoàn chỉnh, chi tiết ở đây: http: // sites. google.com/site/keepconnext/ –

2

DBA của chúng tôi dường như đã tìm thấy một giải pháp cho điều này:

2.2. Nếu có tường lửa hiện diện giữa thể hiện OC4J & Cơ sở dữ liệu Tường lửa có thể thả các kết nối jdbc không hoạt động đến máy chủ cơ sở dữ liệu. Tuy nhiên, cá thể OC4J không thể phát hiện ra rằng tường lửa đã hết thời gian kết nối với cơ sở dữ liệu. Oracle Net có thể được định cấu hình với Phát hiện kết nối chết (SQLNET.EXPIRE_TIME) để khắc phục sự cố này. Đặt EXPIRE_TIME trên máy chủ cơ sở dữ liệu thành một giá trị nhỏ hơn thời gian chờ kết nối tường lửa để DCD giữ kết nối với cơ sở dữ liệu còn sống. Xem chú thích 151972.1 "Phát hiện kết nối chết (DCD) đã giải thích". Vì đây là một thiết lập được cấu hình trên máy chủ cơ sở dữ liệu, không phải trên trung gian, nó sẽ áp dụng cho tất cả các kết nối cơ sở dữ liệu (OCI và JDBC mỏng). Giải pháp thay thế: - Tắt hoặc tăng tham số thời gian chờ của tường lửa. hoặc - Định cấu hình cài đặt thời gian Keepalive TCP trên cơ sở dữ liệu và trên các máy chủ trung gian đến giá trị nhỏ hơn thời gian chờ kết nối tường lửa. Sau khi thiết lập thời gian TCP Keepalive, các máy sẽ gửi liên tục một gói tin rỗng sau các phút được chỉ định để giữ cho các kết nối còn sống. Khi gói tin được gửi mỗi lần bên trong thời gian chờ tường lửa nhàn rỗi, kết nối sẽ không bị đóng.

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