2009-04-16 42 views
13

Tại sao Oracle lại cung cấp phiên bản khác (!) Của trình điều khiển JDBC, ví dụ: ojdbc14.jar, cho mỗi (!) phiên bản cơ sở dữ liệu?
Tất cả các tệp đều có kích thước khác nhau và do đó có thể là nội dung khác nhau.oracle jdbc phiên bản trình điều khiển madness

nền:
Chúng tôi nhận được lỗi ngẫu nhiên và dường như không thể sản xuất cho biết "số không hợp lệ" khi lưu dữ liệu (chúng tôi đoán đó là Dấu thời gian). Nhưng nó không phải là bất kỳ tuyên bố cụ thể nào. Hầu hết thời gian, nó tiết kiệm tốt. Chỉ mỗi tháng một lần, một tuyên bố trông vô hại sẽ thất bại.

Vì vậy, tôi đã xem xét kỹ hơn trang web tải xuống của Oracle và nhận thấy rằng không có tệp nào trùng khớp với bất kỳ tệp nào có cùng tên.

Sản phẩm của chúng tôi được chạy trên cơ sở dữ liệu được khách hàng của chúng tôi duy trì, tức là bất kỳ phiên bản và bản vá nào mà khách hàng đang chạy là gì.
Vậy chúng ta sử dụng trình điều khiển nào? Mới nhất (Oracle 11g) - mặc dù thực tế là nó thường là 9i và 10g cơ sở dữ liệu?

Tại sao chúng không liên kết tất cả các phiên bản với cùng một tệp "một trình điều khiển phù hợp với tất cả"?
Hoặc có sự khác biệt nhỏ nào dẫn đến các hiệu ứng như các lỗi ngẫu nhiên của chúng tôi không?

EDIT: tôi đã nhầm lẫn về cơ sở dữ liệu 9i.

+1

"Phiên bản" trong tên tệp của trình điều khiển đề cập đến ** phiên bản Java ** mà chúng được thiết kế cho, chứ không phải phiên bản của trình điều khiển. Tôi đã tạo thói quen lưu tệp jar với phiên bản trình điều khiển được thêm vào khi tải xuống, ví dụ: 'ojdbc6-11.2.0.3.0.jar'. Chỉ cần đi cho các trình điều khiển mới nhất. –

Trả lời

16

xin vui lòng xem ma trận tương thích tại http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#02_02

Ngoài ra hãy nhớ rằng các kiểu dữ liệu timestamp là chỉ có sẵn từ Oracle 10.

+0

Những trình điều khiển "có thể nói chuyện" chỉ là về bất kỳ phiên bản cơ sở dữ liệu hiện đại nào. Vì vậy, bạn đang nói rằng tôi chỉ cần chọn bản phát hành mới nhất và giữ ngón tay của tôi vượt qua rằng nó có tất cả các sửa lỗi tôi cần? ...và tôi đã sai về 9i. Chúng tôi đã nghỉ hưu năm ngoái. – Stroboskop

+0

tốt, tôi nghi ngờ nó là một lỗi trong trình điều khiển jdbc. tôi sẽ kiểm tra mã cho các lỗi đúc số, "số thành chuỗi", "chuỗi đến ngày" và cứ tiếp tục như vậy. Chúng ta đang nói về ORA-01722, số không hợp lệ? Nếu vậy, tôi sẽ kiểm tra các bản ghi gỡ lỗi và không quan tâm đến các xung đột phiên bản trình điều khiển. –

+1

Có, đó là ORA-01722. Chúng tôi sử dụng PreparedStatements, có nghĩa là tất cả các chuyển đổi loại đều do trình điều khiển thực hiện. Và cùng một tuyên bố hoạt động tốt 99,9% thời gian. Tất nhiên chúng tôi đã xem xét mã của chúng tôi trước, nhưng dường như không có gì khác thường. – Stroboskop

2

Khi chúng tôi nâng cấp cơ sở dữ liệu Oracle của chúng tôi từ 8.1.7 đến 10.2.0, Tôi đã có thể sử dụng cùng một trình điều khiển jdbc Oracle (ojdbc14.jar). Vì vậy, trình điều khiển jdbc của họ hỗ trợ khá nhiều phiên bản cùng một lúc. Tất nhiên nó có thể là một số các trình điều khiển được lỗi, nhưng kế hoạch là để hỗ trợ nhiều phiên bản cùng một lúc.

0

Các con số trong ojdbc14.jar, ojdbc5.jar, ojdbc6.jar, ojdbc7.jar và ojdbc8. jar tham khảo phiên bản của trình biên dịch Java đã được sử dụng. Với mỗi phiên bản Java đều có các API JDBC mới, do đó những con số này rất hữu ích để biết những gì mong đợi. Ví dụ trong Java 8, có một phương thức mới executeLargeUpdate trong java.sql.PreparedStatement. Phương thức này sẽ được thực hiện trong ojdbc8.jar nhưng không được thực hiện trong ojdbc7.jar. Ngoài ra nếu thời gian chạy của bạn sử dụng Java 7 thì bạn biết bạn không thể sử dụng ojdbc8.jar nếu không bạn sẽ gặp phải lỗi java.lang.UnsupportedClassVersionError. Đây là những lý do tại sao Oracle bao gồm những con số này trong tên của lọ. Cũng lưu ý rằng nếu bạn muốn biết từ đó Oracle Database phát hành jar đến từ bạn có thể chạy java -jar ojdbc8.jar. Cả Cơ sở dữ liệu và trình điều khiển đều tương thích ngược (tối đa 1 bản phát hành chính), vì vậy, mặc dù được khuyến nghị, bạn không phải sử dụng cùng một phiên bản sản phẩm trên cả hai tầng.

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