Oracle、Oracle AI Databaseの新しいThin Goドライバをリリース (2026/08/28)
Oracle、Oracle AI Databaseの新しいThin Goドライバをリリース (2026/08/28)
https://medium.com/oracledevs/oracle-releases-new-thin-go-driver-for-oracle-ai-database-a9c61c7cea62
Oracleの新しいThinピュアなGoドライバを使用して、CGOなしのGoまたはOracle Clientインストールを使用してOracle AI Databaseアプリケーションおよびエージェントを開発します。
投稿者:Paul Parkinson

Oracle AI Database Driver for Go(go-oracledbとして公開)は、Go開発者にOracle AI Databaseへの公式なネイティブGoパスを提供します。Goの標準database/sqlドライバインターフェースを実装し、Oracle AI Database 19c以降をサポートし、CGOやOracleクライアントライブラリを必要とせずにTCPまたはTCPS経由で接続します。
直接的なメリットは、運用上の簡素化です。ビルド依存関係の削減、コンテナの再現性の向上、クロスプラットフォームGoデプロイメントへの容易な移行などが挙げられます。長期的なメリットとしては、マイクロサービス、自動化、AIサービス、クラウドネイティブバックエンド向けの、Oracleが所有するGoドライバとパブリックAPIの方向性が確立されることが挙げられます。
ドライバのソースコード全体は、Oracle AI Database Driver for Go のGitHubリポジトリで入手できます。そのexamplesディレクトリには、一般的な接続およびデータベース操作のための実行可能なサンプルが用意されています。
主なポイント
go-oracledbdatabase/sqlは、Goの標準パッケージ向けにOracleが開発したネイティブGoドライバです。- これにより、CGOおよびOracleクライアントライブラリの実行時要件が不要になります。
- 現在の
v26.0.0-betaリリースは評価には役立ちますが、チームは本番環境への導入前に必要な機能を検証する必要があります。 - ベクトル、OSON、REF CURSOR、Oracleオブジェクト型、セッションレストランザクション、トークン認証に関する進行中の作業は、方向性を示すものであり、成果物の納品を保証するものではありません。
Oracle AI Database Driver for Goとは何ですか?
Oracle AI Database Driver for Goは、Go のdatabase/sql/driverインターフェースをネイティブに実装したものです。モジュール名は github.com/oracle/go-oracledb/v26で、登録されたドライバ名は oracledbです。アプリケーションは、使い慣れたsql.DB 、コンテキスト認識クエリ、プリペアドステートメント、トランザクション、および接続プーリングを引き続き使用できます。
Oracle固有の公開APIは、github.com/oracle/go-oracledb/v26/oracleを通じて公開されます。内部ドライバツリーより下のパッケージは実装の詳細であり、アプリケーションの依存関係にすべきではありません。
リリース状況: pkg.go.dev には現在 v26.0.0-beta が掲載されています。本番環境で使用する前に、公式リポジトリでドライバの最新のリリース状況とサポート機能リストを確認してください。
GoからOracle AIデータベースに接続する
標準のGoモジュールワークフローに従ってモジュールをインストールします。
go get github.com/oracle/ go -oracledb/v26@latest認証情報はソース管理外に保管してください。この例では、完全なドライバ DSN を ORACLE_DATABASE_DSNから読み込み、標準の Go 接続プールを開き、接続性を検証し、 DUALにクエリを実行します。
import (
"context"
"database/sql"
"fmt"
"log"
"os"
"time" _ "github.com/oracle/go-oracledb/v26"
)func main() {
dsn := os.Getenv("ORACLE_DATABASE_DSN")
if dsn == "" {
log.Fatal("ORACLE_DATABASE_DSN が必要です")
} db, err := sql.Open("oracledb", dsn)
if err != nil {
log.Fatal(err)
}
defer db.Close() ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel() if err := db.PingContext(ctx); err != nil {
log.Fatal(err)
} var value int
if err := db.QueryRowContext(ctx, "select 1 from dual").Scan(&value); err != nil {
log.Fatal(err)
}
fmt.Println(value)
}
Easy Connect DSNは、一般的に次のような構造になっています。
export ORACLE_DATABASE_DSN= 'app_user/<password>@tcps://db.example.com:1521/my_service?transport_connect_timeout=10'Native Goがデプロイメントを変更する理由
Go開発チームは、シンプルなビルド、再現可能なコンテナ、クロスコンパイル、そして小さなデプロイメント成果物といった点を最適化することが多いです。ネイティブGoデータベースドライバもこのモデルに沿っており、アプリケーションはビルド時にCツールチェーンを必要としず、実行時にOracleクライアントライブラリも必要としません。
このドライバは、現在のJava、Python、Node.js向けOracleドライバでおなじみの動作パターンを採用しています。つまり、デフォルトのシン・スタイルパスで直接接続し、アプリケーションとデータベース間の外部コンポーネントを削減します。Goサービスの場合、これにより開発者のラップトップ、CI/CDジョブ、コンテナ、および社内運用ツールを簡素化できます。
Oracle AI DatabaseのGo向けドライバを比較する

現在のドライバーの能力
現在公開されているREADMEファイルには、以下の基礎知識が記載されています。
- ユーザー名とパスワードによる認証。
- Easy ConnectおよびTNS Connectの記述子。
- TCPおよびTCPS接続。
- SQL文とトランザクション。
- 入力、出力、および PL/SQL の入出力バインドには、. を使用します
sql.Out。 - インバンド通知。
- JSON は
string、BLOB は[]byte、CLOB は またはstringとして返されます[]byte。 - DSNプロパティ、環境変数、フラグ、またはOracleコネクタによる設定。
- Oracleとドライバのエラーコード
oracle.SQLError。
注目すべき機能
公開リポジトリには、Oracleの高度な機能に関するプルリクエストが多数存在します。これらは開発シグナルであり、リリースを確約するものではありません。本番環境での作業を計画する前に、リポジトリでこれらのステータスを確認してください。

まとめ
Oracle AI Database Driver for Goは、Goエコシステムにとって重要な一歩です。これは、Oracle AI Databaseへの公式なネイティブGoルートを提供し、標準的なGoデータベースAPIに準拠し、CGOとOracleクライアントライブラリという2つの一般的なデプロイメント依存関係を排除します。
そのアーキテクチャは既に魅力的です。構成要素が少なく、Go言語特有のAPIを備え、Oracleがロードマップを策定しています。ベータ版を評価するチームは、本番環境への導入前に、現在の機能範囲を自社のGoサービス要件と照らし合わせて検証できます。
よくある質問
go-oracledbはOracle Instant Clientを必要としますか?
いいえ。Go言語でネイティブに実装されているため、Oracleクライアントライブラリは必要ありません。
Go言語のdatabase/sqlパッケージと連携できますか?
はい。ドライバは標準database/sql/driverインターフェースを実装し、名前を登録しますoracledb。
コメント
コメントを投稿