Nếu bạn vẫn quan tâm, tôi đã làm việc với Go và Oracle trên Windows trong vài tháng nay. Trình điều khiển yêu thích của tôi cho đến nay là go-oci8. Nó nhanh hơn nhiều so với goracle và dường như hoạt động tích cực hơn.
Một số ứng dụng của chúng tôi cần được triển khai trên các máy tính mà chúng tôi không có quyền truy cập. Cả hai trình điều khiển SQL gốc đều được biên dịch với ứng dụng mà không cần bất kỳ cấu hình bên ngoài nào, vì vậy đó là một điểm cộng rất lớn. Máy tính vẫn cần cài đặt ứng dụng khách Oracle, nhưng đó là phần phụ thuộc bên ngoài duy nhất.
Tôi sẽ không nói go-oci8 đã sẵn sàng sản xuất, nhưng nó đủ ổn định khi bạn biết những hạn chế của nó. Một ví dụ là nó hoảng sợ khi chạy trên nhiều goroutines đồng thời, vì vậy nếu cần, bạn có thể muốn sử dụng mutex.
Về cơ bản tôi đã làm theo hướng dẫn này để cài đặt nó: https://gist.github.com/mnadel/8678269
Phần khó nhất là tạo oci8.pc corretly. Của tôi là:
prefix=/devel/target/1.0
exec_prefix=${prefix}
libdir=C:/oracle/instantclient_12_1_64/sdk/lib/msvc
includedir=C:/oracle/instantclient_12_1_64/sdk/include
oralib=C:/oracle/instantclient_12_1_64/sdk/lib/msvc
orainclude=C:/oracle/instantclient_12_1_64/sdk/include
gcclib=c:/MinGW_64/mingw64/lib
gccinclude=c:/MinGW_64/mingw64/lib
glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums
Name: oci8
Version: 12.1
Description: oci8 library
Libs: -L${oralib} -L${gcclib} -loci
Libs.private:
Cflags: -I${orainclude} -I${gccinclude}
Một số thứ có thể không hoạt động, tôi có thể cố gắng cải thiện nó trên một máy sạch.
Một điều quan trọng cần lưu ý là bạn nên sử dụng cùng một kiến trúc cho Go và ứng dụng khách Oracle. Vì vậy, nếu bạn muốn sử dụng phiên bản 64 bit của Go, bạn cũng sẽ cần phiên bản 64 bit của Oracle. Tôi có cả hai phiên bản 32 và 64 bit và mặc định 64 bit, tôi sử dụng tệp bat để thay đổi các đường dẫn và biến môi trường cần thiết khi tôi cần tạo phiên bản 32 bit.
Có thể đáng đầu tư một chút thời gian để làm cho nó hoạt động, bạn có thể sẽ nhận được hiệu suất tốt hơn nhiều so với sử dụng ODBC. Tôi đã và đang sử dụng nó với khối lượng dữ liệu hơi cao (các truy vấn tìm nạp hơn 5 triệu hàng) và nó hoạt động rất tốt.