12月 13, 2021

The Geek Diary

次の例では、最も基本的なレベルでのOracle database操作について説明します。 これは、ユーザーと関連するサーバー・プロセスが、ネットワークを介して接続された別のコンピュータ上にあるOracle database構成を示しています。

oracle databaseでのsql問合せの実行方法

1. Oracle Databaseがインストールされているノード上でインスタンスが起動しました(多くの場合、ホストまたはデータベース・サーバーと呼ばれます)。

2. ユーザーは、ユーザープロセスを生成するアプリケーションを開始します。 アプリケーションは、サーバーへの接続を確立しようとします。 (接続は、ローカル、クライアント/サーバー、または中間層からの三層接続である可能性があります。)

3. サーバーは、適切なOracle Net Servicesハンドラを持つリスナーを実行します。 リスナーは、アプリケーションからの接続要求を検出し、ユーザープロセスの代わりに専用サーバープロセスを作成します。

4. ユーザーはDML型SQL文を実行し、トランザクションをコミットします。 たとえば、ユーザーはテーブル内の顧客の住所を変更し、変更をコミットします。

5. サーバー-プロセスはこの文を受信し、共有プール(SGAコンポーネント)で、同一のSQL文を含む共有SQL領域がないかどうかを確認します。 共有SQL領域が見つかった場合、サーバー・プロセスは、ユーザーの要求されたデータに対するユーザーのアクセス権限をチェックし、既存の共有SQL領域を使用して文 共有SQL領域が見つからない場合は、文の解析と処理が可能になるように、新しい共有SQL領域が文に割り当てられます。

6. サーバープロセスは、実際のデータファイル(テーブル)またはデータベースバッファキャッシュに格納されている値から、必要なデータ値を取得します。

7. サーバー・プロセスは、SGA内のデータを変更します。 トランザクションがコミットされているため、ログライタプロセス(LGWR)はすぐにトランザクションをredoログファイルに記録します。 データベースライタプロセス(DBWn)は、変更されたブロックを効率的にディスクに永続的に書き込みます。

8. トランザクションが成功すると、サーバープロセスはネットワーク経由でアプリケーションにメッセージを送信します。 成功しない場合は、エラーメッセージが送信されます。

9. この手順全体を通して、他のバックグラウンドプロセスが実行され、介入が必要な条件を監視します。 さらに、データベースサーバは、他のユーザのトランザクションを管理し、同じデータを要求するトランザクション間の競合を防止します。

コメントを残す

メールアドレスが公開されることはありません。