【保存版】Oracle OO4O(Oracle Objects for OLE)とは?サポート終了とADOへの移行ガイド

OracleをWindowsアプリケーションから操作するためのライブラリとして長らく使われていた OO4O(Oracle Objects for OLE)
本記事では、その特徴、対応バージョン、サポート終了の背景、そして推奨される移行方法(ADOへの移行)について詳しく解説します。


■ OO4O(Oracle Objects for OLE)とは?

Oracle Objects for OLE(OO4O)は、MicrosoftのOLE(Object Linking and Embedding)技術に基づいたCOM(Component Object Model)ベースのAPIです。
主にVB6やVBA(Access, Excel)などからOracleに接続・操作するために使われていました。

▼ 主な特徴

  • Windows専用(32bit環境中心)
  • Oracle用に最適化された専用オブジェクト群(OraSession, OraDatabase など)
  • PL/SQLブロックの直接実行が簡単
  • ADOよりも高速なケースもある(特に古いOracleバージョンで)

■ 対応していたOracleバージョン

Oracleバージョン 対応状況
Oracle 8i 完全対応
Oracle 9i 完全対応
Oracle 10g 対応あり
Oracle 11g 非推奨だが同梱(32bitのみ)
Oracle 12c以降 非サポート(完全廃止)

Oracle 11g(32bit)が事実上の最後の対応バージョンとされています。


■ なぜOO4Oは廃止されたのか?

  • 64bit環境に対応していない(32bitオンリー)
  • COMベースの古い技術(OLE/ActiveX)によるセキュリティリスク
  • MicrosoftのVB6/VBA戦略の変化
  • OracleがODP.NETやODBC、ADO.NET、JDBCなどのモダンなAPIを推奨

■ OO4OからADOへの移行方法

OO4Oを使っていたコードは、原則としてADO(ActiveX Data Objects)Oracle Provider for OLE DBへ移行します。

▼ OO4Oでの接続例

Dim OraSession As Object
Dim OraDatabase As Object

Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.Open
Database("ORCL", "user/password", 0) 

▼ ADOでの接続例(Microsoft OLE DB Provider for Oracle)

Dim conn As Object
Set conn = CreateObject("ADODB.Connection")

conn.Open "Provider=MSDAORA;Data Source=ORCL;User ID=user;Password=password;"

※ Oracle公式は MicrosoftのMSDAORAの使用を非推奨としており、代わりに以下のプロバイダを推奨しています。

Provider=OraOLEDB.Oracle;

▼ SELECTの例(ADO)

Dim rs As Object
Set rs = CreateObject("ADODB.Recordset")

rs.Open "SELECT * FROM employees", conn
Do Until rs.EOF
    Debug.Print rs.Fields(0).Value
    rs.MoveNext
Loop
rs.Close

■ ADO移行時の注意点

  • OO4O特有のオブジェクト(OraDatabaseなど)は全てADOオブジェクトに置き換えが必要
  • 配列型やPL/SQLプロシージャの呼び出し方法が異なる
  • Oracle Providerを使用するには、Oracle Clientが正しくインストールされている必要あり

■ まとめ

項目 OO4O ADO + Oracle Provider
サポート Oracle 11g(32bit)まで 以降推奨
技術基盤 COM/OLE COM(ADO)
推奨 ×(廃止) 〇(移行推奨)

OO4Oは歴史的に重要なライブラリでしたが、現在では移行が必須です。
今後の保守性やセキュリティを考慮し、ADOやODP.NETへの早期の移行をおすすめします。


■ 関連キーワード

  • Oracle OO4O 廃止
  • OO4O Oracle 11g
  • Oracle VBA 接続方法
  • Oracle OLEDB ADO 移行
  • Access VBA Oracle 接続 2025