Bronze DBA Oracle Database Fundamentals 勉強内容

こんにちは。エンジニアのS.Sです。
今回は、Bronze DBA Oracle Database Fundamentalsの試験に向けて、勉強したので、共有したいと思います。

Oracle Enterprise Manager Database Express(EM Express)

GUI操作でデータベースを管理でき、パフォーマンス監視、構成管理、診断、チューニングが出来る。
EM ExpressはOracleに同梱されており、インストール不要だが、EM ExpressからOracleを起動させることはできない。
パフォーマンスモニタリングとチューニング:データベースのパフォーマンスをリアルタイムで監視し、問題の診断とチューニングを行うことができます。
構成管理:データベースのインスタンス、スキーマ、セキュリティ設定などの構成を管理する機能を提供します。
バックアップとリカバリ:データベースのバックアップをスケジュールし、必要に応じてリカバリを実行する機能を備えています。
ユーザーとセキュリティの管理:ユーザーアカウントの作成、ロールと権限の割り当て、セキュリティポリシーの管理が可能です。
ストレージ管理:データベースのストレージ構造を管理し、データファイル、テーブルスペース、およびその他のストレージ要素を監視します。
SQLモニタリング:実行中のSQLクエリをモニタリングし、パフォーマンスの問題を特定するのに役立ちます。

SQL*Plusについて

SQL* Plus を 起動 する 方法 は 次 の とおり です。
・$ sqlplus
・$ sqlplus ユーザー 名/ パスワード
・$ sqlplus /nolog /nolog オプション を 使用 する と、 データベース に 接続 せ ず に SQL* Plus を 起動 でき ます。
SQL* Plus の CONNECT コマンド を 実行 する と、 データベース に 接続 でき ます。
nolog オプション
sqlplus /nolog を実行すると、SQLPlusはユーザー名やパスワードを求めずに起動します。
このモードでは、データベースに接続していないため、データベース操作を直接実行することはできません。
nolog オプションは、スクリプト内で接続情報を露出させたくない場合や、特定のコマンドを実行する前に環境を設定したい場合に有用です。

CONNECT コマンド
SQLPlus内でデータベースに接続するには、CONNECT コマンドを使用します。このコマンドの一般的な形式は
CONNECT username/password@database
です。
例えば、CONNECT scott/tiger@orcl は、ユーザー名 scott、パスワード tiger を使用して orcl というデータベースに接続します。
CONNECT コマンドは、SQL*Plusが nolog オプションで起動された後や、他のユーザーに切り替える必要がある場合に使用されます。

リスナー

Oracleデータベースのリスナー(Listener)は、Oracleデータベースサーバー上で動作する重要なコンポーネントです。リスナーの主な役割は、Oracleデータベースへのネットワーク接続を管理することです。以下がその主な機能です。
クライアント接続の管理:リスナーは、クライアントからの接続要求を受け取り、それらを適切なデータベースサービスに割り当てます。
セッション情報の管理:接続されたセッションの情報を保持し、データベースサービスへのルーティングを行います。
サービス登録:データベースインスタンスは、起動時にリスナーに自身の存在を登録します。これにより、リスナーはクライアントに対して、利用可能なデータベースサービスの情報を提供できます。
負荷分散とフェイルオーバー:複数のデータベースインスタンスや複製された環境がある場合、リスナーは負荷分散やフェイルオーバー機能を提供し、高可用性を保証します。
リスナーは、Oracle Net Servicesの一部として機能し、TCP/IPを含む様々なネットワークプロトコルをサポートします。
リスナーの設定は、一般的にはlistener.oraファイルで行われ、Oracleデータベースの管理者によって管理されます。
リスナーの状態は、lsnrctlコマンドを使用して監視や制御が行われます。
Oracle Database(OracleDB)のインスタンスとは、Oracle Databaseを実行するためのメモリ構造とバックグラウンドプロセスの集合体です。
データベースのサーバー上で実行される主要なコンポーネントであり、データベースファイルとは別に存在します。
インスタンスが起動すると、データベースは使用可能な状態になります。インスタンスとデータベースファイルの組み合わせが、実際のOracle Databaseシステムを構成します。
具体的には、以下のような要素から構成されています。
SGA(System Global Area): SGAは、データベースのメモリ構造の中心部分で、データベースの操作に必要なデータや制御情報を格納します。
これには、データベースバッファキャッシュ、共有プール、大規模プールなどが含まれます。SGAはインスタンスが起動するときに割り当てられ、全てのデータベースプロセスが共有するメモリ領域です。
PGA(Program Global Area): PGAは、個々のデータベースサーバープロセスのためのメモリ領域で、セッション固有のデータやプロセス固有のデータ(例えば、ソートやハッシュ操作のための作業領域)が含まれます。
PGAはサーバープロセスごとに割り当てられ、そのプロセス専用のものです。

SGAについて

バックグラウンドプロセス: これらはデータベースの管理とメンテナンスを行うためのシステムプロセスです。
例えば、DBWR(データベースライター)、LGWR(ログライター)、CKPT(チェックポイントプロセス)、SMON(システムモニタ)、PMON(プロセスモニタ)などがあります。
データベースバッファキャッシュ: これは、ブロックの読み出しと書き込みの性能を向上させるためのメモリー領域です。
ディスク上のデータベースデータをキャッシュするためのSGAの一部です。データベースバッファキャッシュにより、ディスクI/Oの回数が減り、パフォーマンスが向上します。
データの読み込み: データベースがデータを読む際、まずバッファキャッシュをチェックします。必要なデータがキャッシュにあれば、データファイルのアクセスを避けて高速にデータを読むことができます。
データの更新: データベースでデータが更新されると、まずバッファキャッシュ内の対応するデータが変更されます。この時点では、ディスク上のデータベースファイルはまだ変更されていません。
遅延書込みの実行: バッファキャッシュ内の変更されたデータは、直ちにディスクに書き戻されるわけではありません。
メモリー上のブロックだけが更新されます。データファイル内のブロックは、データベースライタ(DBWn)により後で更新されます(遅延書込み)。
REDOログバッファの役割
変更の記録: データベース内で行われる各種の変更(データの更新、挿入、削除など)は、まずREDOログバッファに記録されます。これにより、データベースがクラッシュした場合にも、これらの変更を回復するための情報が保持されます。
整合性の保証: REDOログは、データベースが正しい順序でトランザクションを再実行し、データベースの整合性を維持するのに役立ちます。
REDOログバッファのプロセス
データの変更: データベースでデータが変更されると、これらの変更に関する情報がREDOログバッファに書き込まれます。
ログライター(LGWR)プロセス: REDOログバッファに書き込まれた情報は、ログライター(LGWR)プロセスによって定期的にディスク上のREDOログファイルに書き込まれます。
この書き込みは、トランザクションのコミット時、バッファが一定の閾値に達した時、またはタイムアウトなどの特定のイベントが発生した時に行われます。
回復時の使用: システム障害やインスタンスのクラッシュが発生した場合、REDOログファイルは、データベースが最後の一貫した状態に回復するのを助けます。
システムはREDOログを使用して、障害発生時点までのすべてのトランザクションを再適用し、データの整合性を保ちます。
データベースバッファキャッシュとREDOログバッファの動き
データベースバッファキャッシュ:
データベースで行われるデータの変更(挿入、更新、削除など)は、まずデータベースバッファキャッシュに反映されます。
これにより、頻繁なディスクへの書き込みを避け、パフォーマンスを向上させることができます。
変更は適切なタイミングで遅延書き込み(Delayed Write)を使用してディスクに書き戻されます。
REDOログバッファ:
同時に、データベースバッファキャッシュで行われた変更に対応するREDOエントリがREDOログバッファにも記録されます。
REDOログバッファに記録されたエントリは、ログライター(LGWR)プロセスによって定期的にディスク上のREDOログファイルに書き込まれます。
これにより、システム障害やクラッシュが発生した場合にデータベースを安全に回復するための情報が確保されます。
共有プール: これには、SQL文やPL/SQLプログラムのパースと実行に必要な情報(例えば、共有SQLエリア)が格納されます。
ライブラリキャッシュ(Library Cache):
ライブラリキャッシュは、SQL文やPL/SQLプログラムなどの実行プランとパース情報を格納します。
このキャッシュは、同一のSQL文やPL/SQLが複数回実行される場合、再パスを回避することによってパフォーマンスを向上させます。
SQL文の再利用(SQL文のキャッシュとして機能)により、パース時間の削減とCPUリソースの節約が可能になります。
データディクショナリキャッシュ(Data Dictionary Cache):
データディクショナリキャッシュは、データベースのメタデータ、つまりテーブル、インデックス、ビューなどの構造に関する情報を保持します。
データベース操作中に頻繁に参照されるメタデータをメモリ上に保持することで、ディスクI/Oの回数を減らし、全体的なパフォーマンスを向上させます。

PGAについて

個々のデータベースプロセスが専用に使用するメモリ領域。プロセスやセッション固有の情報を扱います。他のプロセスとは共有されず、ソート処置などプロセス専用の作業用メモリー領域として使用されます。

インスタンス起動からデータベースオープンまで

1. インスタンスの起動

  • パラメータファイルの読み込み: インスタンスが起動する際、まず最初に行われるのは、パラメータファイル(init.oraまたはspfile.ora)の読み込みです。このファイルにはデータベースの構成に関するパラメータが含まれています。

  • SGAの割り当てと初期化: 初期化パラメータファイルに基づき、System Global Area(SGA)が割り当てられ、初期化されます。SGAにはデータベースバッファキャッシュ、共有プール、REDOログバッファなどが含まれます。

  • バックグラウンドプロセスの開始: インスタンスは、DBWR(データベースライター)、LGWR(ログライター)、PMON(プロセスモニタ)、SMON(システムモニタ)などのバックグラウンドプロセスを起動します。これらのプロセスは、データベースの運用と整合性を維持するために重要です。

2. データベースのマウント

  • 制御ファイルの読み込み: データベースがマウントされるとき、制御ファイルが読み込まれます。制御ファイルには、データベースの構造情報、データファイルとREDOログファイルの位置などの重要なメタデータが含まれています。

  • データベースのマウント: この段階では、データベースはまだユーザーにアクセス可能ではありませんが、データベース自体がインスタンスに接続され、データベースの物理構造が認識されます。

3. データベースのオープン

  • REDOログの確認: データベースをオープンする前に、REDOログが確認されます。これは、データベースが前回正常にシャットダウンされたかどうかを判断し、必要に応じて回復処理を行うためです。

  • データファイルのアクセス: データファイルがオンラインになり、データベースが完全にアクセス可能な状態になります。

  • ユーザーへのアクセス許可: この段階で初めて、ユーザーはデータベースにアクセスし、トランザクションを開始することができます。

オープン状態になって初めて、ユーザーからのアクセスが出来るようになります。

各ファイル障害の挙動

初期化パラメータファイルの障害

  • 障害: 初期化パラメータファイル(init.oraまたはspfile.ora)が読み込めない、または破損している場合。

  • 結果: インスタンスは起動できず、データベースは完全にアクセス不能な状態になります。インスタンス起動前のシャットダウン状態に留まります。

制御ファイルの障害

  • 障害: データベースのマウント中に制御ファイルが読み込めない、または破損している場合。

  • 結果: データベースはノーマウント状態になり、したがってオープンもされません。インスタンスは起動処理が停止される。

REDOログファイルの障害

  • 障害: データベースのオープン中にREDOログファイルが読み込めない、または破損している場合。

  • 結果: データベースはオープンされず、障害が解決されるまでアクセス不能な状態になります。データベースはマウント状態に留まります。

データファイルの障害

  • 障害: データファイルが読み込めない、または破損している場合。

  • 結果: 障害が発生したデータファイルに依存するテーブルスペースまたはデータベース全体がアクセス不能になります。データベースはマウントされた状態、または制限付きオープン状態に戻ります。

データファイル(Data Files)

  1. 概要: データファイルは、実際のデータベースデータ(テーブル、インデックス、ビューなど)を格納するファイルです。

  2. 用途: データベースのすべてのユーザーデータとシステムデータがこのファイルに格納されます。

  3. 特徴:

    • データファイルは、テーブルスペースと呼ばれる論理的なストレージユニットに関連付けられています。

    • 各データファイルは特定のテーブルスペースに属し、一つのテーブルスペースは複数のデータファイルを持つことができます。

    • データファイルの構成(ファイル名、ファイル番号など)は制御ファイルによって管理されています。

REDOログファイル(REDO Log Files)

  1. 概要: REDOログファイルは、データベースのすべての変更(挿入、更新、削除など)を記録するファイルです。

  2. 用途:REDOログは、インスタンスが異常終了した場合(例えば、システムクラッシュや電源障害)の不整合が発生した場合の障害復旧(インスタンスリカバリ)に使用されます。
    また、データファイルが破損した場合の障害復旧(メディアリカバリ)にも使用されます。

  3. 特徴:

    • トランザクションがコミットされる際、その変更はREDOログに記録されます。

    • REDOログは循環的に使用され、一定の数(通常は最低二つ)のREDOログファイル群で構成されます。

  4. 更新処理の再実行:

    • 失われた更新を復元するため、REDOログファイルに記録されたデータベースの更新履歴をもとに、更新処理を「ロールフォワード」として再実行します。

    • ロールフォワードは、データベースを最後の一貫した状態に戻した後、障害発生前までの全ての変更を適用するプロセスです。

  5. REDOログファイルの多重化

REDOログファイルの多重化とは、REDOログのコピーを複数作成し、それらを異なる物理的な場所(ディスク、ストレージデバイス)に保存することを指します。この目的は、データベースの耐障害性を高めることです。

  1. 目的:

    • データベースのREDOログファイルが破損した場合や読み取り不可能になった場合でも、他のコピーからデータを回復できるようにするためです。

  2. 方法:

    • 少なくとも二つのREDOグループを設定します。複数のメンバー(REDOログファイルのコピー)を持ち、多重化されたメンバーの組をグループと言います。

ログスイッチ

ログスイッチは、Oracle Databaseが現在使用中のREDOグループを切り替えるプロセスです。

  1. プロセス:

    • データベースは、現在アクティブなREDOグループがいっぱいになると、次の利用可能なロググループに自動的に切り替えます(ログスイッチ)。

  2. 頻度:

    • ログスイッチの頻度は、REDOログのサイズとデータベースのトランザクション量に依存します。

  3. 重要性:

    • ログスイッチにより、REDOログは循環的に使用されます。これにより、常に最新のトランザクションデータがログに記録され、古いデータはアーカイブ(オプション)されるか上書きされます。

制御ファイル(Control Files)

  1. 概要: 制御ファイルは、データベースの構造に関するメタデータを含む非常に重要なバイナリファイルです。

  2. 用途: データベースの物理的構造に関する情報を保持し、データベースの起動と正常な運用に必要です。

  3. 特徴:

    • 制御ファイルには、データファイルとREDOログファイルの位置、データベースのバックアップ情報、データベースのSCN(System Change Number)などが記録されています。

    • 制御ファイルは多重化(複数のコピーを保持)することが推奨され、データベースの整合性に不可欠です。

表領域

Oracle Databaseにおける表領域は、データベース内のデータの論理的な格納場所を提供する重要な概念です。表領域は、データベースの物理的なストレージ構造(データファイル)と論理的な構造(表、索引など)を結びつける役割を果たします。

表領域の基本

  1. 定義:

    • 表領域は、データベースオブジェクト(表、索引、ビューなど)の論理的な集合です。

  2. 物理的構造:

    • 物理的には、一つ以上のデータファイルによって構成されます。これらのファイルは実際のデータを格納します。

  3. 用途:

    • データの管理と組織化を容易にするため、関連するデータを特定の表領域にグループ化することができます。

表領域内のデータはセグメント、エクステント、ブロックという階層構造で管理されます。これらの概念は、データの物理的な格納と管理において重要な役割を果たします。

セグメント(Segment)

  1. 定義: セグメントは、特定のデータベースオブジェクト(例えば、テーブル、インデックス)に対応するデータの集合です。

  2. 特徴:

    • セグメントは一つ以上のエクステントから構成されます。

    • 例えば、テーブルのセグメントにはそのテーブルの全データが含まれ、インデックスのセグメントにはインデックスのエントリが含まれます。

エクステント(Extent)

  1. 定義: エクステントは、連続したデータブロックの集合です。これはセグメントの成長に応じて確保されます。

  2. 特徴:

    • セグメントが成長すると、新しいエクステントが割り当てられます。

    • 各エクステントは、サイズが一定で連続したデータブロックを含みます。

ブロック(Block)

  1. 定義: ブロックは、Oracle Databaseの最小のデータ格納単位です。

  2. 特徴:

    • ブロックはデータファイル内の特定のサイズの領域で、固定データを格納するためには4KB〜32KBまでのサイズがあります。

    • 各ブロックには、実際のデータレコードや必要なメタデータが格納されます。

階層構造の関係

  • 表領域は、一つまたは複数のデータファイルから構成されます。

  • それぞれのデータファイルは、データブロックに分割されています。

  • データブロックはエクステントにグループ化され、複数のエクステントがセグメントを形成します。

  • セグメントは、特定のデータベースオブジェクト(テーブルやインデックス)に割り当てられます。

表領域の種類

SYSTEM表領域

  1. 概要:

    • SYSTEM表領域は、Oracleデータベースを作成する際に自動的に作成される最初の表領域です。

    • この表領域は、データベースの中核的なシステムデータとデータディクショナリを格納します。

  2. データディクショナリ:

    • データディクショナリには、テーブル、ビュー、インデックスなどのオブジェクトに関するメタデータが含まれます。

    • これはデータベースの構造と定義に関する情報を提供し、データベース管理に不可欠です。

  3. 重要性:

    • SYSTEM表領域はデータベースの基盤であり、その整合性と安定性はデータベース全体の運用に直接影響します。

SYSAUX表領域

  1. 概要:

    • SYSAUX表領域は、SYSTEM表領域からいくつかの非コア機能を分離したものです。

  1. 用途:

    • SYSAUX表領域は、パフォーマンス統計、ワークスペースマネージャ、自動セグメント管理など、さまざまな補助的なデータベース機能をサポートします。

  2. コンポーネント:

    • この表領域には、AWR(自動ワークロードリポジトリ)などのコンポーネントが含まれます。

表領域の作成

表領域を作成するときは、CREATE TABLESPACEコマンドを使用します。以下に基本的な例を示します。
CREATE TABLESPACE tablespace_name 
DATAFILE 'file_path' SIZE 100M 
AUTOEXTEND ON NEXT 10M MAXSIZE 500M;
このコマンドは、指定した名前(tablespace_name)で新しい表領域を作成し、特定のパス(file_path)にデータファイルを配置します。初期サイズは100MBで、必要に応じて最大500MBまで自動拡張されます。

表領域の拡張

既存の表領域にデータファイルを追加したり、既存のデータファイルのサイズを変更することで表領域を拡張できます。

  • 新しいデータファイルの追加:

ALTER TABLESPACE tablespace_name 
ADD DATAFILE 'new_file_path' SIZE 100M;

  • データファイルのサイズ変更:

ALTER DATABASE 
DATAFILE 'file_path' 
RESIZE 200M;

表領域の削除

表領域を削除するには、DROP TABLESPACEコマンドを使用します。これは表領域とその内容(データファイル)を削除します。
このコマンドは、指定された表領域とその中のすべてのデータファイルを削除します。
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
空の表領域を削除
DROP TABLESPACE tablespace_name
表領域に格納されているオブジェクトと表領域を削除
DROP TABLESPACE tablespace_name INCLUDING CONTENTS

Bigfile 表領域

  1. 概要: Bigfile表領域は、単一の大きなデータファイルを使用する表領域です。これは特に大規模なデータベース環境に適しています。

  2. 特徴:

    • 一つのBigfile表領域は、一つのデータファイルのみを持ちます。

    • データファイルの追加は出来ません。

Smallfile 表領域

  1. 概要: Smallfile表領域は、複数の小さなデータファイルを使用する伝統的な表領域です。これは一般的なデータベース環境で広く使用されています。

  2. 特徴:

    • Smallfile表領域は、複数のデータファイルを持つことができます。

    • データファイルの追加が可能。

UNDO表領域

  1. 概要:

    • UNDO表領域は、トランザクションによって行われた変更を元に戻す(UNDO)ための情報を格納する専用の表領域です。

  2. 主な用途:

    • トランザクションのロールバック: トランザクションが失敗した場合や、明示的にロールバックされた場合に、元の状態に戻すために使用されます。

    • 一貫性のある読み取り: クエリが実行される間、トランザクションによって変更されたデータの元の状態を提供するために使用されます。

    • リカバリ: データベースがクラッシュした後のリカバリプロセスにおいても重要な役割を果たします。

  3. 管理:

    • データベースは、UNDO表領域を自動的に管理し、必要に応じてUNDOデータUNDOセグメントに格納します。

一時表領域

  1. 概要:

    • 一時表領域は、データベースの一時的な作業(例えば、大規模なソート操作や複雑なクエリ処理)に使用される表領域です。

  2. 主な用途:

    • 一時的なデータの格納: ソート操作、集計処理、一時的なテーブルの作成などに使用されます。

  3. 特徴:

    • 一時表領域は、通常、データの永続的な保存を必要としない作業に使用されます。

    • セッションが終了すると、一時表領域に格納されたデータは自動的に消去されます。

    • PGAに展開できない場合は、一時表領域に作成された一時セグメントに展開される。

    • 一時領域は、1つ以上の一時ファイルから構成されます。

エンジニアファーストの会社 株式会社CRE-CO S.S


この記事が気に入ったらサポートをしてみませんか?