実践RDB

5.MySQLをWindowsで(2002.01.28)

4.EXCEL+OO4OでOracleへ接続(2001.06.16)

3.PostgreSQL Linux版(2001.04.25)

2.ODBCを使ったAccess2000からOracleへのアクセス(2001.03.03)

1.Oracle8i for Linux (2001.02.24)


6.


5.MySQLをWindowsで(2002.01.28)

 MySQLはかなり以前にFreeBSD環境で使ったことがあります。その後Windows用なども整備されたようなので久方振りに試してみました。因みにMySQLはPostgreSQL同様にフリーのRDBであり、Oracleのようにライセントコストで悩む必要はありません。GUIツールなどもサポートされているようなので、試してみる価値はあるでしょう。尚、PostgreSQLをWindowsで使う場合CYGWIN環境で使うようですが、MySQLは純粋なWindows版が提供され、下記URLで取得できます。

http://www.mysql.com/

 通常のWindowsプログラムと同様にSETUP可能ですが、それだけではデータベースは起動されません。そこでWinMySQLadmin.exeを起動します。次回以降は登録されてDBは自動起動されます。mysql.exeを動かすとsqlの入力モードとなります。例えば下記のような形でDBを作成し、外部CSVデータを取込む事が出来ます。

mysql > create database books;

mysql > use books;

mysql > create table books(
id varchar(11) not null primary key,
title varchar(20)
);

mysql > Load data local infile "c:/test.csv"
into table books
fields terminated by ',';

 JDBCドライバも次のURLから取得可能なようで、時間が取れればこれも試してみたいところです。

http://www.t3-jpn.com/jdbc/jdbcmysql.html


4.EXCEL+OO4OでOracleへ接続(2001.06.16)

 さて前々回はODBCでしたが、今回はOO4O(Oracle Objects for OLE)です。OO4OはOracle社の提供するミドルウェアですが、ActiveXコンポーネントでありDLLにて提供されています。Oracleには標準で付いていますが、ODBC同様にWindows環境に限定される手法となります。Javaの6回目でSWINGでJDBCというのを取り上げていますが、Javaはプラットフォームに限定されない他、JDBCであればドライバの入れ替えだけでOracle以外のDBとの接続も容易なので、現実的な選択肢としてはJDBCが有力です。

 しかし今回の題材であるEXCELで直接繋ぐことが可能であるなど、ちょっとしたデバッグ用などであればOO4Oも便利です。パフォーマンスもODBCよりは良いようです。プログラムの記述はEXCELのマクロつまりVBAなので、VBと基本的には一緒です。

(1) 接続の為の宣言

  Dim OraSession As Object
  Dim OraDatabase As Object
  Dim EmpDynaset As Object

   Set OraSession = CreateObject("OracleInProcServer.XOraSession")
   Set OraDatabase = OraSession.OpenDatabase("Net8Name", "scott/tiger", 0&)
   Set EmpDynaset = OraDatabase.CreateDynaset("select * from emp", 0&)

 上例がDynaset作成の基本例で、Net8NameにはNet8で宣言した接続名が入ります。Dynasetと呼ばれるデータカーソルにデータが格納されます。

(2) データの取出し

  −各フィールド情報の格納

   Dim flds() As Object
   Set flds(Colnum) = EmpDynaset.Fields(Colnum)

  −フィールド情報  

   flds(Colnum).Value を取得します。

  −次のDynasetの取得  

   EmpDynaset.DbMoveNext


3.PostgreSQL Linux版(2001.04.25)

 以前MySQLを試した時はFreeBSDだったので、今回はPostgreSQLをTurboLinux上で試してみました。私は本の付録CDを使いましが下記サイトなどからダウンロード可能です。

http://www.pugly.juice.or.jp/pugly/postgres/postgresql.jar

(1)   group add postgres

adduser postgres

(2)  ソースの展開

     tar zxf postgresql-7.0.2.tar.gz (バージョンによってファイル名は異なる)

(3)  コンフィギュアとmake、インストール

      ./configure --enable-multibyte=EUC_JP

      gmake all

      gmake install

(4)  デーモンの起動とSQLの実行

      postmaster -i & (-iオプションを付けるとソケットでアクセス可能)
      pg_ctl start
      psql dbname -n

    外部PCからのアクセスは /usr/local/pgsql/data/pg_hba.conf を直す必要有り。

 ディレクトリやパスの設定などマシンに固有な点に気を付ければ特に問題なく動かすことは出来ます。SQLでdbをクリエイトして select * from dbname; などとしてdbの稼働を確認して下さい。

 さて動かすだけではおもしろくないので、以前Oracle用に作ったJavaアプレットをPostgreSQL用のJDBCドライバに代えて動かしてみましたが、全く問題はありませんでした。Oracleのライセンス料を考えれば、少なくとも個人ベースでは使う価値がありそうです。


2.ODBCを使ったAccess2000からOracleへのアクセス(2001.03.03)

 Oracleデータを使う場合通常は何かしらのアプリケーションを作成することとなりますが、単に内容の確認であればSQLplusで出来ます。しかしこれはSQLの知識が必要なので、一般の方向けとは行きません。そんな時に使えるのがAccessです。こう書くと、知らない方は何でRDBもどきのAccessがわざわざ出てくるのか不思議に思われるでしょうが、要はAccessのデータベース機能を使わず、ユーザーインターフェースの所だけ利用させてもらおうという事です。何となくすっきりしない方はVBでも使ってアプリを組めば良いでしょうが、VBだと少なくともプログラミング知識が必要ですが、Accessを使うと殆ど何もしないでOracleにアクセス可能となります。

利用したもの

Access2000
Oracle ODBC driver
Net8の接続定義

 さてNet8の接続定義は事前に行なっておいて下さい。またOracle ODBC driverは各自Oracleサイトからダウンロードするなりして、インストールしておく必要があります。

Access2000では[ファイル]->[新規作成]->で空のデータベースを作ります。続いて[ファイル]->[外部データの取り込み]->[テーブルのリンク]と選択しリンクのダイアログを表示します。このダイアログの一番下[ファイルの種類]ODBC Databaseを選択しデータソースの選択のダイアログを表示します。[コンピュータデータソース]のタブをクリックし、[新規作成]ボタンを押します。データソースの新規作成ダイアログでシステム・ユーザーどちらか使うデータソースを指定し[次へ]ボタンをクリックします。次の画面ではドライバとしてOracle ODBC driverを選択し[次へ]ボタンを押します。もしOracle ODBC driverが一覧に無い場合は当該PCに導入されていません。[完了]ボタンを押すとOracle8 ODBC driverセットアップのダイアログとなります。このダイアログでは各自の必要に応じてパラメタをセットしますが、データベースのサービス名にはNet8で事前設定しておいたものを使います。ここで[OK]ボタンを押せば終わりです。この後Oracleに接続するためのユーザーID・パスワードの画面となりますが、ここではOracle側に実在するIDを入力して下さい。次のテーブルのリンクダイアログに該当IDの持っているデータ一覧が表示されますので、見たいDBを選択して下さい。問題が無ければAccessを表示する形式でOracleの内容が表示されるはずです。


1.Oracle8i for Linux (2001.02.24)

 かなり前にOracle8 for Linuxを試したことがありますが、今回はOracle8i for Linuxです。データベースそのものにJavaVMが搭載されたということですが、取りあえず単にOracleをLinux環境で使いたかったということでの試行です。書籍付録のCDで90日間限定版を用いました。

 書籍の案内ではRedhat Linuxのみ保証ということでしたが、Redhat系のTurbo Linuxでも良いだろうとインストールしたところ、途中でエラーが発生しました。この問題自体は次のURLで何とか解決しました。

http://otndnld.oracle.co.jp/tech/linux_win/htdocs/faq816.html

 しかしその後でもフリーズが発生し、結局諦めてRedhat Linux6.1Jにインストールし直しました。ところがRedhatにしてもフォントセットが足りないような警告メッセージが出てしまい、これが原因かどうかは不明ながらSQLplusの日本語メッセージが化ける現象が発生しています。

 文字化け問題はさておいて、データベースとしては全く問題なく利用できます。付属していたJDBCドライバを用いて外部PCからの接続も問題ありません。OracleからOracle8iへ変わったことの大きな変化は今の段階ではインストーラーの違いが印象的です。JavaベースのGUIを使ったインストーラーとなり、多少動作が重いものの、CUIよりは使い易いでしょう。データベースそのものの本格的試行はこれからですが、導入についてのポイントを下記に挙げてきます。尚、私が導入したのは128MB搭載しているAthlon PCですが、本格的利用であればメモリーはもっと有った方が良いかも知れません。

(1) 導入にはJava実行環境のJREが必要です。私は下記サイトから次のものをダウンロードし解凍し /usr/local に配置しました。

www.blackdown.org

jre_1.1.6-v5-glibc-x86.tar.gz

(2) グループDBAを作り、その中にユーザーora8を用意します。

group add DBA

adduser ora8 -G DBA

(3) jreとOracleを入れる /app のオーナーをora8にします。

chown ora8.DBA jre

chown ora8.DBA app


前ページに戻る---> RETURN