2009-03-24 32 views
8

Là một phần của việc nâng cấp JRun, chúng tôi đang chuyển từ 1,4 JVM sang 1,6 JVM. Bây giờ tôi nhận được một lỗi db oracle thực sự kỳ lạ: "OALL8 đang ở trong một trạng thái không nhất quán". Tôi đã ghim xuống vấn đề để chèn các truy vấn không sử dụng các biến liên kết ở tất cả - tất cả các tham số nội dòng. Nếu tôi chạy truy vấn mà không có bất kỳ biến liên kết nào, tôi nhận được lỗi ở trên. Ngay sau khi tôi thay thế một trong các giá trị mã hóa cứng bằng biến liên kết - mọi thứ đều hoạt động mà không có lỗi.Oracle: OALL8 đang ở trạng thái không nhất quán

Bit lạ khác là sau khi thực hiện truy vấn, trên thực tế, nó được cam kết với cơ sở dữ liệu. Tôi có thể kết nối từ một phiên khác và xem hàng được chèn. Tôi đã thử gói truy vấn trong một giao dịch và có vẻ như thành công khi hành vi không thay đổi từ truy vấn mà không có giao dịch rõ ràng.

Sau đây là các chi tiết liên quan:

Java Version: 1.6.0_12-b04
Virtual Machine Version: 11,2-b01 (HotSpot Server)
Oracle Server: 10.2.0.4
Oracle Chủ đầu tư: 11,1. 0,7.0 đến ojdbc6.jar

Cập nhật: Tôi đang sử dụng cfqueryparam - chúng được gọi là biến liên kết trong thế giới oracle. Trong khi điều đó giải quyết được vấn đề ngay lập tức, chúng tôi có một cơ sở mã kế thừa khá lớn mà chúng tôi không thể thực sự trải qua tất cả để cập nhật các truy vấn như là một phần của việc nâng cấp từ CF7 lên CF8.

Mặc dù tôi đã ghim xuống một tình huống cụ thể không thành công (và đóng gói nó trong một thử nghiệm mxunit) - điều đó không có nghĩa là không có khu vực nào khác có thể là vấn đề. Tôi thực sự muốn có một giải pháp tại chỗ loại bỏ lỗi OALL8 thay vì mã hóa xung quanh nó.

Cập nhật 2: Sau khi kiểm tra với DBA của chúng tôi, anh đã đặt tham số có tên CURSOR_SHARING thành SIMILAR. Mặc định của Oracle là EXACT. Điều gì đang xảy ra là khi ColdFusion đưa ra câu truy vấn để được thực thi, Oracle đang chuyển tất cả các giá trị theo nghĩa đen thành ràng buộc các biến và dường như là ColdFusion khó hiểu. Việc chuyển cài đặt trở về EXACT cho phép các truy vấn theo nghĩa đen hoạt động tốt.

Cập nhật 3: Oracle cuối cùng đã phát hành cho chúng tôi bản vá lỗi ngoài băng cho JDBC. Nó đã được xác định là một lỗi JDBC. Các trình điều khiển mới nhất nên bao gồm nó khi chúng được cập nhật cuối cùng. Nếu bạn có hỗ trợ, bạn cũng có thể yêu cầu bản vá thông qua hệ thống TAR của họ.

Trả lời

8

Vì vậy, ... sử dụng các biến liên kết?

Bạn nên sử dụng chúng (thông qua cfqueryparam) để bảo mật, và nếu nó giải quyết được vấn đề đó thậm chí còn nhiều lý do hơn để làm như vậy.


Nếu bạn quan tâm đến những gì các lỗi thực tế có nghĩa là, Google có plentyofresults, gợi ý rằng nó là một lỗi với trình điều khiển JDBC, và thậm chí gợi ý một patch is available.


Nhưng tôi không thấy câu hỏi thực tế trong bài đăng của bạn ...?

+5

Trớ trêu thay trang này là một trong 10 kết quả hàng đầu trên google. –

0

Nếu bạn chạy ứng dụng trong WebLogic, bạn nên sao chép ojdbc.jar để cài đặt thư mục "weblogic81 \ server \ lib", bao gồm các tập tin cùng tên.

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