2009-07-21 41 views
8

Tôi có thể đặt câu hỏi sai ở đây, tôi sẵn sàng thay đổi nếu có.ODP.NET có cần thiết cho Oracle 11g Client không?

Tôi có một dự án đang sử dụng nhà cung cấp Microsoft.NET Oracle (kế hoạch của chúng tôi là thay đổi thành ODP nhưng chúng tôi vẫn chưa thực hiện).

Tôi đang cố gắng để có được dự án này để xây dựng trên một cửa sổ 2008 (x64) xây dựng máy chủ. Nó xây dựng tốt nhưng kiểm tra đơn vị của chúng tôi thất bại khi họ nhấn công cụ trên cơ sở dữ liệu Oracle.

Ban đầu tôi đã cài đặt ứng dụng khách 9 bit oracle 9i, đó là những gì chúng tôi hiện đang sử dụng trên các hộp dev winxp và máy chủ xây dựng 2003 trước đó. Nhưng bây giờ điều này nhận được một thông báo như: Cố gắng tải thư viện khách hàng Oracle đã ném BadImageFormatException. Vấn đề này sẽ xảy ra khi chạy ở chế độ 64 bit với các thành phần máy khách Oracle 32 bit được cài đặt.

Chúng tôi đã cố gắng biên dịch sang nền tảng x86 nhưng điều đó không thay đổi thông báo lỗi.

Tôi hiện đã cài đặt ứng dụng khách 11 bit 64 bit nhưng tôi nhận được thông báo nói System.Data.OracleClient yêu cầu phiên bản phần mềm máy khách Oracle 8.1.7 hoặc cao hơn.

Vì vậy, tôi nên sử dụng cài đặt Oracle nào?

Edit:

tôi đã có thể có được điều này để làm việc. Hóa ra đó là thử nghiệm gây ra vấn đề, bằng cách buộc NUnit chạy ở chế độ 32 bit: http://geekswithblogs.net/Lance/archive/2006/12/28/102191.aspx Tôi đã có thể làm cho các bài kiểm tra hoạt động bằng trình điều khiển 32 bit cũ. Điều này sẽ là một câu trả lời crappy cho câu hỏi vì vậy tôi không sử dụng nó nhưng sẽ sẵn sàng trao giải câu trả lời đúng cho bất cứ ai đưa vào một số thông tin tốt về chuyển sang Oracle 64bit trình điều khiển.

Trả lời

9

Khi nói đến Oracle, tôi muốn sử dụng Oracle Instant Client:

  • Bạn không phải cài đặt bất cứ thứ gì trên máy mục tiêu (bao gồm cả hộp dev!).
  • Bạn có thể đảm bảo rằng ứng dụng của bạn sẽ chạy với ứng dụng khách cụ thể mà bạn đã chọn.
  • Bạn thậm chí có thể dễ dàng có nhiều ứng dụng hoạt động với các phiên bản ứng dụng khách khác nhau trên cùng một máy tính.
  • Nhược điểm, nó thêm trọng số đáng kể vào ứng dụng của bạn (tối thiểu ~ 19Mb).

Kiểm tra What is the minimum client footprint required to connect C# to an Oracle database? để biết thêm thông tin. Để biết cách thiết lập dự án Visual Studio sẽ hoạt động trên x86 cũng như máy x64, hãy kiểm tra bài đăng blog của tôi Oracle Instant Client in Visual Studio.

0

Tôi đã tìm thấy nhiều lần rằng lỗi "yêu cầu phiên bản phần mềm máy khách Oracle 8.1.7 hoặc cao hơn" là một lỗi gây hiểu lầm gây hiểu lầm. Từ xa bộ nhớ tôi dường như nhớ rằng điều này thường chỉ ra một vấn đề cho phép tập tin IO. Tôi nghĩ rằng nó có thể là quá trình công nhân ASP.NET (hoặc bất kỳ danh tính một ứng dụng đang chạy dưới) yêu cầu một số loại đọc hoặc viết cho phép vào một thư mục trong hệ thống phân cấp thư mục khách hàng oracle ...

1

Tôi nghĩ rằng thư "System.Data.OracleClient yêu cầu phiên bản phần mềm máy khách Oracle 8.1.7 trở lên" tương tự như "Khách hàng Oracle chưa được cài đặt, chưa cài đặt nhưng không tìm thấy hoặc cài đặt nhưng cần 8.1.7 hoặc cao hơn".

Kiểm tra trên regedit nếu các giá trị là ngay dưới phím:

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraOdac11g_home1 

đâu OraOdac11g_home1 phụ thuộc vào tên Oracle Home để cài đặt của bạn.

Ngoài ra, hãy thử kết nối thông qua Visual Studio để xem liệu có thể.

0

Điều này có thể là nguyên nhân của nhiều nhà oracle trong môi trường. Loại bỏ phiên bản oracle cũ hơn trong hệ thống xây dựng của bạn. thử tạo lại bản dựng với ngôi nhà đơn. Có một số vấn đề với kết nối ODP.NET phiên bản 9i và 10G/11G 9i

1

Tôi gặp sự cố có thể liên quan đến những gì bạn đang thấy.

tôi bước đầu đã có chỉ là khách hàng của Oracle 10g được cài đặt trên máy tính của tôi và số phiên bản phần Net Oracle.DataAccess là 10.2.0.100 - đây là cho Net runtime v1.0.3705

Tôi đã cài đặt ODP.Net và phiên bản thành phần Oracle.DataAccess bây giờ là v2.102.2.20 và chạy trên .Net runtime v2.0.50727 - Tôi không thể tìm thấy tham chiếu về lý do tại sao Oracle đã làm điều này - đó là một cái gì đó để làm với việc đưa số phiên bản phù hợp với thời gian chạy phiên bản

Tôi mất một ngày để giải quyết vấn đề này. Chúng tôi không sử dụng ứng dụng khách 11g và tôi đã không sử dụng ứng dụng khách 8i cho các độ tuổi nên tôi không biết số phiên bản sẽ là gì đối với những khách hàng đó, nhưng tôi sẽ kiểm tra nếu tôi là bạn.

Nói tóm lại, Oracle back-theo dõi các số phiên bản phần mà có thể làm cho thành phần 11g của bạn xuất hiện out-of-date như trái ngược với Oracle linh kiện 8I

3

Tôi đang thêm câu trả lời mới kể từ mùa thu này (2012) Bản Beta Mã ODP được quản lý có sẵn. Xem this link để biết thêm thông tin. Đó là đối với chúng tôi rất ổn định và chúng tôi đang sử dụng nó trong sản xuất, chủ yếu là vì những lý do sau:

  • Không cần cài đặt (trừ khuôn khổ tổ chức nơi đăng ký đơn giản là cần thiết)
  • nó là nhỏ hơn so với phiên bản không được quản lý , dấu chân khoảng 6 MB.
  • Đó là KHÔNG "chút nhạy cảm", tức Bất kỳ CPU cuối cùng sẽ làm việc với ODP :)
  • More trực quan lập bản đồ C# loại < - loại> Oracle (và nó giải quyết một số vấn đề với EF và tạo mô hình từ cơ sở dữ liệu)
  • Hỗ trợ EZCONNECT (tất cả các phiên bản của ODP không được quản lý không), nghĩa là không còn phức tạp tnsnames.ora nữa.

Nhưng đối với chuyển sang 64 bit, tải về trình điều khiển ODP quản lý và thay đổi Oracle.DataAccess tham chiếu đến Oracle.ManagedDataAccess và biên dịch lại :)

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