【Oracle】基本的なアーキテクチャのまとめ【備忘録】

アーキテクチャとは?

「アーキテクチャとはソフトウェアの内部構造」です。

システムを構築する時は、必ず何かしらの「目的」があります。

例えばカラオケをするシステム、写真を加工するシステムなど。

その目的を実現するための内部構造をアーキテクチャと言います。

 

 

一般的な企業では業務にデータ処理は欠かせない

一般的な企業はたくさんのデータを持っていて、データを処理することで業務を遂行しています。

逆に言うとデータが全くないと何をしていいのやら分からなくなると思います。

その「データ処理」はRDBMSが中心的な役割を果たしています。

 

RDBMS ← Relational Database Management System(関係データベース管理システム)

 

Oracle のアーキテクチャに関する知識が必要な理由

Oracleは柔軟に「システム設計」や「物理設計」が行えます。

例えば以下の項目についてチューニングできます。

  • データベースを構成するファイルのサイズ
  • 初期起動プロセス数
  • 最大プロセス数
  • 処理に利用されるメモリのサイズ

などです。

 

柔軟な設計ができるということは、時にはパフォーマンスを最大化することができる反面、チューニングの結果パフォーマンスが落ちることも考えられます。

そのために各項目をチューニングすることにより、得られる効果を知っておく必要があります。

だからこそ Oracle のアーキテクチャの知識が必要になります。

 

 

データベースとインスタンス

  • データベース ← データファイルや制御ファイルなどのデータを格納するファイル群
  • インスタンス ← SGA(System Global Area:システムグローバル領域)と呼ばれるメモリ領域とバックグラウンドプロセス群から構成される

 

通常は「データベース」「インスタンス」は1対1で構成されます。

 

 

データベース

データベースは以下のファイルで構成されています。

  • 1つ以上のデータファイル
  • 2つ以上のREDOログファイル
  • 1つ以上の制御ファイル

 

データファイル

データファイルには以下のデータが格納されます。

  • ユーザーが作成した「テーブル」や「索引」などのデータ
  • UNDOデータ(過去のデータ)
  • 一時データ(一時作業に使われるデータ)
  • システムの管理データ

 

REDOログファイル

REDOログファイルにはデータベースの更新履歴が書き込まれます。

Oracleは複数のREDOログファイルをローテーションして更新履歴を書き込むので、1つのデータベースに対して最低でも2つのREDOログファイルが必要です。

 

制御ファイル

制御ファイルには、データファイルやREDOログファイルの格納場所(パス)や、各ファイルの最終更新時刻などの制御情報が保存されます。

 

 

インスタンス

インスタンスは以下の2つで構成されます。

  • SGA(System Global Area:システムグローバル領域)と呼ばれるメモリ領域
  • バックグラウンドプロセス

 

SGA(System Global Area)

以下より構成されるプロセス間で共有するメモリ領域です。

  • データベースバッファキャッシュ
  • REDOログバッファ
  • 共有プール
  • ラージプール
  • Javaプール

 

バックグラウンドプロセス

インスタンスの起動に合わせて起動する一組のプロセス群です。

主にプロセスの監視やファイルへのデータ書き出しなど裏方的な処理をしています。

 

バックグラウンドプロセスのプロセス名には「ora_」が付いています。

 

SQL*PlusなどクライアントがOracleを使用する仕組み

SQL*Plus などのクライアントがOracleを使用する場合は、初めにインスタンスに接続します。

 

インスタンスは複数起動していることがありますが、インスタンスにはそれぞれ「SID」という識別子が設定されているので、SIDで接続するインスタンスを指定します。

 

1台のDBサーバーに2つのデータベース「TEST」「PROD」が存在する場合、「TEST」と「PROD」という2つのインスタンスが存在することになります。

 

 

インスタンスへのアクセス

SQL*Plusからインスタンスへ接続するコマンド

$ sqlplus /nolog ← SQL*Plusを起動します。

 

SQL> connect / as sysdba ← SYSDBA権限でデータベースに接続します。

 

 

インスタンスの起動

インスタンスが起動していない場合は以下のコマンドでインスタンスを起動します。

SQL> STARTUP

 

 

クライアントアプリケーションとサーバープロセスとリスナー

  • クライアントアプリケーション ← Oracle利用者が実際に起動しSQLを発行する
  • サーバープロセス ← 発行されたSQLを処理する
  • リスナー ← クライアントアプリケーションから送信されたインスタンスへの接続要求を受け付けるプロセス

 

リスナー

リスナーはクライアントアプリケーションがネットワーク経由でインスタンスへの接続要求を受け付けるプロセスです。

そのため、クライアントアプリケーションがネットワーク経由でインスタンスに接続する場合は、インスタンスが起動しているサーバー上に「リスナー」が起動している必要があります。

接続を受け付けたリスナーは、接続後の処理をサーバープロセスに引き継ぎます。

 

クライアントアプリケーションとサーバープロセスは接続することを「セッションが確立する」と言います。

 

ローカル接続しかしない場合はリスナーを起動する必要はありません。

 

 

 

現在勉強している本

インフラという業務の宿命なのか?それとも単純に私がいろんな仕事をしたがる性格なのか分かりませんが、現在は Oracle の勉強をしています。(本音を言えばPythonでプログラムを作っている方が楽しいですが・・・)

職場の DB のスペシャリスト達からも太鼓判を押された Oracle の仕組みが理解できる技術本です。

 

プロとしてのOracleアーキテクチャ入門【第2版】(12c、11g、10g 対応) 図解と実例解説で学ぶ、データベースの仕組み (Oracle現場主義)

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

コメントを残す

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