5

Tôi nhận được vi phạm giao thức và OALL8 là một ngoại lệ không nhất quán khi cố gắng thực thi truy vấn SELECT, nhưng chỉ trên một số bảng của tôi. Lần đầu tiên tôi nhận thấy điều này trong một ứng dụng thử nghiệm mà tôi đã viết mà đã làm một SELECT * FROM SOMETABLE. Nó sẽ vượt qua hàng trăm hồ sơ và sau đó chỉ khóa tôi. Tôi đã thử chạy cùng một truy vấn trong SQLDeveloper của Oracle và sẽ nhận ngoại lệ vi phạm giao thức trên một số bảng. Cuối cùng nó đến một điểm mà nó chỉ ra "OALL8 ở trạng thái không ổn định" cho bất kỳ truy vấn nào.Oracle SqlError: Giao thức vi phạm/OALL8 đang ở trạng thái không nhất quán

Có ai biết tại sao điều này xảy ra và cách khắc phục sự cố không? Trạng thái không nhất quán của tôi ở đâu? SqlDeveloper của Oracle có phải là máy khách độc lập của riêng nó hay nó dựa trên ODAC hoặc Instant Client (được tham chiếu trong PATH envi var) để có mặt?

Điều duy nhất thay đổi gần đây là tôi đã cài đặt ODAC để tôi có thể sử dụng odp.net để thay thế System.Data.OracleClient trong .NET. CNTT là ODAC 11.2.0.3.0 với Công cụ phát triển Oracle cho Visual Studio, 32 bit. Tôi kể từ khi cập nhật biến môi trường PATH của tôi để trỏ đến khách hàng tức thì độc lập của tôi.

  • tức thì Client - 11.2.0.2.0, chạy trên Win XP SP3, 32-bit Oracle DB:

  • Oracle Database 11g Express Edition phiên bản 11.2.0.2.0 - Sản xuất, Chạy trên Windows Server 2003, x64

  • ODAC: 11.2.0.3.0

SqlDeveloper đã được cài đặt trước khi tôi cài đặt ODAC, nhưng bằng cách nào đó SqlDeveloper dường như được trải qua ODAC như khách hàng, mặc dù ODAC không được tham chiếu trong Biến môi trường PATH.

Cập nhật: Khi tôi lần đầu cài đặt ODAC, tất cả các truy vấn của tôi đều hoạt động bình thường. Sau đó, họ ngừng hoạt động sau một ngày, và tôi không thể giải thích tại sao. Tôi đã cố gắng để gỡ bỏ cài đặt ODAC, mà không thành công khi tìm kiếm một. DLL để xóa. Sau đó, tôi đã xóa ORACLE_HOME của mình theo cách thủ công và đã cài đặt lại ODAC và hiện tại nó vẫn hoạt động tốt. Tôi không hiểu tại sao lại như vậy.

Trả lời

0

Nhà phát triển SQL sử dụng ORACLE_HOME và trình điều khiển của nó khi khả dụng. Vấn đề bạn đang thấy trong điều này là ORACLE_HOME không phải là phiên bản tương tự như trình điều khiển JDBC được đóng gói trong SQL Developer.

'khắc phục' cho điều này là để đảm bảo ứng dụng khách được cập nhật với phiên bản sqldev bạn đã cài đặt. Cách dễ nhất để tìm thấy điều này là khi kết nối chạy show jdbc

show jdbc 
-- Database Info -- 
Database Product Name: Oracle 
Database Product Version: Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production 
Database Major Version: 12 
Database Minor Version: 1 
-- Driver Info -- 
Driver Name: Oracle JDBC driver 
Driver Version: 12.2.0.1.0 
Driver Major Version: 12 
Driver Minor Version: 2 
Các vấn đề liên quan