Oracle概要



Oracleとは、RDBMS(リレーショナルデータベースマネージメントシステム)です。
一時期流行ったカード型データベース等とは違い、相互のテーブルに
関係をもたせることにより、データの最適化を図っています。
現状は、格納データ量の肥大化、検索スピードの高速化の観点から
ほとんどがRDBMSになっています。
後述のMYSQLもRDBMSです。
ちなみにOracleとは「神託」とか「神命」とかいう意味だそうです。
また、このページのGospel4の由来は、Oracleに対抗してGospel(福音)とつけました。

まぁ、能書きはこれくらいにして....


Oracleは、サーバとクライアントが完全に別れていて、(クラ-サバ時代を引きずっているような)
クライアント自体も結構なプログラムサイズを必要とし、さらにWindows環境で
インストールする場合には、レジストリにまで書き込まれてしまい。トホホとなります。
(最近のバージョンはわかりませんが、Ora8時代には、アンインストールすると
必ず失敗していました。)

保守料が無謀なほど高いです。確かに障害時のリカバー機能等、データの保証性、
大量レコードの処理能力の高さは目を見張るものですが、でたばかりの
新バージョンはバグだらけで、運用担当者泣かせというのも良く聞きます。


普通に接続する場合は、SQL*PLUSを起動すれば良いですが、個人的には、SQLの修正をしやすい
SQLWorkSheetをおすすめします。
注)SQLWorkSheetはそのまま起動すると日本語が文字化けするので、
    $ORACLE_HOME\sysman\config\dbapps.cfgファイルまたはdbappscfg.propertiesに
    以下の記述を追加する必要があります。
      SQLPLUS_NLS_LANG=JAPANESE_JAPAN.JA16SJIS
      SQLPLUS_SYSTEMROOT=C:\\WINNT
    設定後起動すると、日本語で表示され、F5あるいはカミナリマークでSQLが実行されます。

接続名(DB接続サービス名)は $ORACLE_HOME/network/admin/tnsnames.ora に
記述されています。
Net8Assistant等で ビジュアル的に定義することができますが、tnsnames.oraは
テキストベースのファイルなので、1つ目はNet8Assistantで作成するとして、
2つ目以降のDB接続先を定義する場合には、テキストエディタで、コピペする
ほうが早いでしょう。


さて、本題のSQL*PLUS(orSQLWORKSEET)の接続構造ですが、こんな感じです。

SQL*PLUSプログラムを起動 → ログイン情報の入力を要求
ユーザ名+パスワード+TNSサービス名(DB接続サービス名)のログイン情報を指定
TNSサービス名とtnsnames.oraを照合
tnsnames.ora に記述された 接続サーバ+接続ポート+接続ORACLE_SID を使って、DBサーバに
接続を要求
DBサーバ側は、このトライを常に待ち受ける必要があるので、LISTENER(リスナー)という
プロセスを常駐させており、接続要求があったら、DB本体に向けてその接続セッションを
開こうとする
しかしながら、DB本体側は複数の接続要求を処理するのは面倒なので、ディスパッチャという
下僕に仲介をやらせる。
ディスパッチャはリスナーの接続開始要求に答え、この時点で、SQL*PLUSは「接続しました」
と画面表示する。

なお、ディスパッチャは複数存在し、ディスパッチャ同士の横の同期をとりながら、
多くのクライアントからの要求をさばくのに一役買っている。

とまあ、一口に「DBに接続する」といっても結構たいへんなのですねぇ。
ちなみに、接続に失敗した場合は、SQL*PLUS(SQLWORKSEET)が実行された
ディレクトリ直下にsqlnet.logが作成され、接続できなかった理由が記述されます。
また、接続要求をLISTENERが処理した場合には、サーバ側の$ORACLE_HOME/network/log/listener.log
にどのクライアントからのどのサービス名で接続されたかが記録されます。



ブラウザはIE6.0sp2以上、解像度1024*768以上を推奨します。
戻る
gospel4 トップへ