sql >> Databasteknik >  >> RDS >> Oracle

Hur man ansluter till Oracle in go

Om du fortfarande är intresserad har jag arbetat med Go och Oracle på Windows i några månader nu. Min favoritförare hittills är go-oci8. Den är mycket snabbare än goracle och verkar vara mer aktiv.

Vissa av våra applikationer måste distribueras på datorer som vi inte har tillgång till. Båda inbyggda SQL-drivrutinerna kompileras med applikationen utan behov av någon extern konfiguration, så det är ett stort plus. Datorn kommer fortfarande att behöva Oracle-klienten installerad, men det är det enda externa beroendet.

Jag kommer inte säga att go-oci8 är produktionsklar än, men den är tillräckligt stabil när du känner till dess begränsningar. Ett exempel är att den får panik när den körs på flera goroutiner samtidigt, så om du behöver det kanske du vill använda en mutex.

Jag har i princip följt denna handledning för att installera den:https://gist.github.com/mnadel/8678269

Det svåraste var att skapa oci8.pc korrekt. Min är:

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}

Vissa saker kan vara överflödiga, jag kanske försöker förbättra det på en ren maskin.

En viktig sak att tänka på är att du ska använda samma arkitektur för Go och Oracle-klienten. Så om du vill använda 64-bitarsversionen av Go behöver du också 64-bitarsversionen av Oracle. Jag har både 32- och 64-bitarsversioner av båda, och medan 64-bitars är min standard använder jag bat-filer för att ändra nödvändiga sökvägar och miljövariabler när jag behöver bygga en 32-bitarsversion.

Det kan vara värt att investera lite tid för att få det att fungera, du kommer förmodligen få mycket bättre prestanda än att använda ODBC. Jag har använt det med något hög datavolym (frågor som hämtar 5+ miljoner rader) och det fungerar mycket bra.




  1. Vad är skillnaden mellan att använda en korskoppling och att sätta ett kommatecken mellan de två tabellerna?

  2. Hierarkiska frågor i SQL Server 2005

  3. Postgres 9.1 vs Mysql 5.6 InnoDB?

  4. hur man hittar index på en tabell i oracle