Oracleの様々なプロセス
1. データベース動作イメージ
Oracleを含めたDBMS(データベース管理システム)は、預かっているデータを要求に応じてアプリケーションにデータ返すという動作は同様となります。
ショッピングサイトなどをイメージして頂ければ、アプリケーションとデータベースの連携がよりよく見えてくると思います。ユーザがスポーツ用品というカテゴリを選択した際の内部の動作としては、アプリケーションがデータベースにスポーツ用品関連のデータを要求し、データベースがスポーツ用品データをアプリケーションに返し、その情報をアプリケーションがページに埋め込んでユーザへ返しているのです。
2. アプリケーションとOracleの連携
多くのシステムにおいて、アプリケーションはJDBC(Java Database Connectivity)、ODBC(Open Database Connectivity)、Pro*Cといったものを通してOracleにSQL文を発行します。
例としてアプリケーションがどのようにJDBCを使用するかを以下に示します。JAVAを使用したアプリケーションでは以下のようにしてOracleにSQL文を発行し、結果を受け取っています。
・
・
Connection.conn=DriverManager.getConnection(url,user,pwd); ・・・・・・・(1)
Statement st=conn.createStatement();
ResultSet rs=st.executeQuery("SQL文"); ・・・・・・・・・・・・・・・・・・・・・・・・(2)
・
・ |
※(1)はDBMSへ接続しています。
※(2)はSQL文を発行し、結果を変数に格納しています。
Oracle初心者の中には、SQL*PLUSとJDBCを同様に考えられている方もいらっしゃるかもしれませんが、全く別ものであることを理解しましょう!
3. Oracleのプロセス群
Oracleは複数のプロセスから成り立っています。これは多重処理で処理するために必須といえます。1章で紹介したようにディスクアクセスには非常に時間がかかってしまいます。その間CPUを遊ばせておくのはもったいないので、複数のプロセスを動作させ並列処理を可能にしているのです。
以下にOracleプロセス群を示します。
ora_pmon_ora001
ora_dbw0_ora001
ora_lgwr_ora001
ora_arcl_ora001
ora_arc0_ora001
ora_smon_ora001
oracleora001
|
※各プロセスの詳細については、次項以上もしくは次章以降で解説します。
4. サーバプロセスとバックグランドプロセス
Oracleはサーバープロセスと呼ばれるSQL文を処理するプロセスと、バックグランドプロセスと呼ばれる、主にサーバプロセスを助けるプロセスから構成されています。サーバプロセスは、Oracleクライアントと直接やり取りを行うプロセスです。SQL文要求を受け結果を返すことが役目となります。それに対してバックグランドプロセスはOracleクライアントとはやり取りはせず、裏方として動作します。
以下に、バックグランドプロセスを紹介します。
■データベースライタ(ora_dbwX_XXXXXX)
ディスクへの読み書きを担当するプロセスです。
■ログライタ(ora_lgwr_XXXXXX)
ログ(データ更新履歴)をディスクに書くのが仕事です。
■システムモニタ(ora_smon_XXXXXX)
システム・レベルで様々なクリーン・アップ作業を実行します。
■プロセスモニタ(ora_pmon_XXXXXX)
プロセスを監視し、プロセス障害を見つけた場合には掃除を行います。
■チェックポイント(ora_ckpt_XXXXXX)
チェックポイント情報により制御ファイルおよびデータファイル・ヘッダーを更新します。
■アーカイバ(ora_arcX_XXXXXX)
ログデータをアーカイブします。
■管理性モニタ(ora_mmon_XXXXXX)
自動ワークロード・リポジトリ(AWR)に関連する多数のタスクを実行します。
■リカバラ(ora_reco_XXXXXX)
分散トランザクションに関連する障害が自動的に解決します。
※XXXXXXには、SIDと呼ばれるDBを識別するIDが入ります。
<オラクルデータベース概要(豆知識)>
|
スポンサードリンク
|