
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