Oracleの利用

Updated 1998/02/01

By PCDN 福岡寿和


Oracle用ミドルウェアを選ぶ

Oracleと接続するためのミドルウェアの候補としては

  1. Oracle7.x/8.0---SQL*Net V2.x---ODBC---VB
  2. Oracle7.x/8.0---SQL*NET V2.x---ODBC---RDO---VB
  3. Oracle7.x/8.0---SQL*NET V2.x---ODBC---DAO---VB
  4. Oracle7.x/8.0---SQL*NET V2.x---OracleObjectForOLE---VB
  5. Oracle8.0--------Oracle NET8---ODBC---VB
  6. Oracle8.0--------Oracle NET8---ODBC---RDO---VB
  7. Oracle8.0--------Oracle NET8---ODBC---DAO---VB
  8. Oracle8.0--------Oracle NET8---OracleObjectsForOLE---VB
などがあげらます。しかし、ベストチョイスといえるのは、
Oracle Objects for OLE

です。ODBCの影響を回避して、Oracleの機能をフルに活用するためには、これ以外の組み合わせは考えられません。

過去の開発では、Oracle GLUEを使っていた時期もありますが、WindowsもVisual Basicも32bitに移行し、コンポーネントの接続もAPIからOLEに移行した今となっては、Oracleとの接続もOracle GLUEからOralce Object for OLEに移行することが筋と言うものです。GLUEが継続しないことに対し、Oracleに文句を言うことの方が筋違いです。

なお、Oracle7 Server/Oracle 8 Enterprise EditionがUNIXだとしても、クライアントがWindowsの場合は、Oracle7 Workgroup ServerまたはOracle8の最新版を購入しておくと良いでしょう。クライアントに必要なSQL*NetやOracle Objects for OLE(こちらは、再配布はライセンスフリーですが)が入っているし、UNIXのOracle7/8にも使うことができるGUIベースの管理ツールも付いています(Oracle Enterprise Managerを使う機会は少ないでしょうが)。
そして、Oracle7 Workgroup Server/Oracle8をテスト環境用としてセットアップしておけば、UINIXマシンがない場合(エンドユーザーへ搬入後など)でもソフトの開発・維持・テストができます

SQL*Netの設定

SQL*Netの設定は、Windows版のSQL*Netを購入すれば、SQL*Net Easy ConfigurationというソフトがCD-ROMがあるので、これを使って簡単に設定できます。UNIX版しか知らないOracleユーザーや昔からのユーザーの中には、.ora関係の定義ファイルを直接編集しなければと思うかもしれませんが、今は、SQL*Net Easy Configurationを使うのが正しい方法です。
SQL*Net Easy Configurationで、プロトコル、データベース別名、サーバ名(TCP/IPならば、HOST名)、インスタンス名(orclなど)を設定すれば、ソフトからは、データベース別名を指定するだけで、希望のOracleと接続できます。

Oracle Objects for OLEの利用

Oracle Objects for OLEの正体は、インプロセスOLEサーバです。よって、ただ単にファイルをコピーしても使えません。しかし、OracleのCD-ROMからインストールすれば、自動的にレジストリへの登録されます。この登録さえ完了していれば、Visual BasicからOracle Objects for OLEを使うことは比較的簡単です。

Oracle Objects for OLEの開発を紹介した書籍は殆どありませんが、Oracle Objects for OLEの文法は実質DAOと同じですので、AccessやVBのヘルプを参照すればなんとかなります。

Oracle Object for OLEを使う場合の唯一のハードルがインプロセスOLEサーバとしてVisual Basicとどう接続するかもしれません。
しかし、これは

Set gobjSession = CreateObject("OracleInProcServer.XOraSession")

というのを呪文のように唱えるだけです。

ちなみに、Oracle Objects for OLEは、インプロセスOLEサーバであるのでVisual Basic以外にもExcelや一太郎からでも使えます。

DAO1.xとoo4o Ver2.xの違い

Oracle Objects for OLEは、Access2.0時代のDAO1.xの使い方を元にしています。ですから、DAO1.xと比較すれば、Oracle Objects for OLEの敷居が思った以上に低いことが判ると思います。
DAO 1.x oo4o
Dim dbsLocal As Database Dim objDb As Object
Dim dynLocal As Dynaset Dim objDs As Object
Dim objSes As Object
Set objSes = CreateObject("OracleInProcServer.XOraSession")
Set dbsLocal=OpenDatabase("BIBLIO.MDB") Set objDb=objSes.DbOpenDatabase("oracle.world","scott/tiger",0&)
Set dynLocal=dbsLocal.CreateDynaset("SELECT * FROM Publishers",dbReadOnly) Set objDs=objDb.DbCreateDynaset("SELECT * FROM Publishers",ORADYN_READONLY)
If dynLocal.Eof Then
  dynLocal.AddNew
Else
  dynLocal.Edit
End If
dynLocal("Title")="はじめてのSQL"
dynLocal.Update
If objDs.Eof Then
  objDs.DbAddNew
Else
  objDs.DbEdit
End If
objDs("Title")="はじめてのSQL"
objDs.DbUpdate
dynLocal.AddNew objDs.DbAddNew
dynLocal.Close Set ObjDs=Nothing
dbsLocal.Close Set ObjDb=Nothing

Netwareとの共存

Oracleユーザーの中には、Oracle7 Server for Netwareを使っている人もいると思います。または、ユーザー先の環境がNetwareなのでfor NTを使えないところもあるかもしれません。もちろん、サーバ側を同じプラットフォームにすることは重要ですが、クライアントからみれば、

とすれば、for NTとfor Netwareの違いは見えなくなります。
流通している情報量を比較すれば、圧倒的にTCP/IPベースのOracleの情報なので、上記構成を一考してみてもよいと思います。

ライセンスについて

ライセンスについては、Oracle Objects for OLEとVisual Basic 4.0/5.0については、開発環境数分のライセンスが必要です。Oracle7/8(のクライアントライセンス)とSQL*Netについては、実行環境数分のライセンスが必要です。

Oracle関連の書籍

Oracleは、いろいろ書籍が出版されているので、情報収集の面で有利なRDBMSです。
参考までに、実際に私が購入した書籍の中から使用頻度の高いものをピックアップしてみました。

Oracleの全般的な知識を得るには
UNIXデータベース Oracle7実践Q&A
Oracleの実践的知識を得るには
Oracleプロフェッショナル・テクニック
Oracleデータベースチューニング
Oracleのストアードプロシジャの知識を得るには
オラクルPL/SQLプログラミング基礎編
オラクルPL/SQLプログラミング応用編
Oracleの管理を考えるには
Oracleデータベース バックアップ&リカバリー

RDBMSの利用 | Oracle WorkGroup
Visual Basic 開発者の手引き | Visual Basic WorkGroup
int21 ホームページ | PCDN ホームページ



Copyright (c) 1997-1998 int21 Corporation All Rights Reserved.
For questions or comments, please send mail to: pcdn@int21.co.jp