Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Oracle Database入門 - アーキテクチャ編

Oracle Database入門 - アーキテクチャ編

11月21日開催 Oracle DBaseCampで発表した資料です。
アーカイブ動画:https://youtu.be/D0zr8Xiof1Q

oracle4engineer

November 21, 2023
Tweet

More Decks by oracle4engineer

Other Decks in Education

Transcript

  1. Oracle Database入門
    -アーキテクチャ編-

    View full-size slide

  2. 1. Oracle Databaseの概要
    • Oracle Databaseの内部構造
    • プロセス
    • メモリー
    • ファイル群
    • Oracle Databaseの処理の仕組み
    • Oracle Databaseへの接続の仕組み
    • 処理の流れ
    2. メモリー設定の考え方
    3. ファイル群の詳細
    Agenda
    Copyright © 2023, Oracle and/or its affiliates
    2

    View full-size slide

  3. Copyright © 2023, Oracle and/or its affiliates
    3
    Oracle Databaseの概要
    Oracle Databaseの内部構造
    Oracle Databaseの処理の仕組み

    View full-size slide

  4. • クライアントはSQLを使ってデータベースに処理を要求
    • Oracle Databaseはクライアントの要求に従ってデータ処理を実行
    • データはストレージに格納され、Oracle Databaseによって管理される
    Oracle Databaseの処理の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    4
    クライアント
    SQL*Plus(SQL実行ツール)
    から接続(主に開発・管理)
    アプリケーションサーバー上の
    プログラムから接続
    Oracle Database
    ストレージ
    サーバー
    クライアントからのリクエストに従い、
    ディスクからデータを読み込み、
    データを検索、変更する。
    データを
    格納
    データの
    取り出し
    SQL
    処理実行 (検索・更新)

    View full-size slide

  5. • Oracle Databaseを構成するコンポーネント
    • Oracleインスタンス:Oracleサーバー上で確保されるメモリー+プロセス
    • Oracleデータベース:ストレージ内に格納されたデータ(ファイル群)
    Oracle Databaseの内部構造
    Copyright © 2023, Oracle and/or its affiliates
    5
    ファイル群
    メモリー
    プロセス群
    Oracleインスタンス:
    ・データを操作するOracleの「エンジ
    ン」部分
    ・データを検索、更新する際に必要
    なメモリー領域+書込みなどを行う
    プロセス群で構成
    Oracle
    データベース
    Oracleデータベース:
    ・データの格納先
    ・データの種類によっていくつかのファ
    イルが存在する
    Oracle
    インスタンス

    View full-size slide

  6. • Oracle Databaseを構成するコンポーネント
    • Oracleインスタンス:Oracleサーバー上で確保されるメモリー+プロセス
    • Oracleデータベース:ストレージ内に格納されたデータ(ファイル群)
    Oracle Databaseの内部構造
    Copyright © 2023, Oracle and/or its affiliates
    6
    Oracleインスタンス
    SGAと呼ばれる共有メモリー領域と
    一連のバックグランド・プロセスで構成
    Oracleデータベース
    ディスク上に配置された、データを
    格納する一連のファイル
    ファイル群
    メモリー
    プロセス群
    データの格納先
    読み込み 書き込み
    キャッシュ → 検索/更新 等

    View full-size slide

  7. プロセス群→メモリー→ファイル
    Oracle Databaseのプロセスの種類
    • リスナー・プロセス:Oracle Databaseへの接続リクエストを転送
    • サーバー・プロセス:ユーザ毎に起動され、リクエストされた処理を実行
    • バックグラウンド・プロセス:ディスクへの変更反映などの内部処理を実行
    Oracle Databaseのプロセス
    Copyright © 2023, Oracle and/or its affiliates
    7
    SGA
    PGA
    リスナー
    プロセス
    PGA
    サーバー
    プロセス
    PGA
    サーバー
    プロセス
    PGA
    PGA
    サーバー
    プロセス
    ユーザごとに起動され、ユーザー
    からリクエストされた処理を実行
    (フォアグラウンド・プロセス)
    接続要求を
    サーバープロセスへ転送
    ユーザーの処理とは非同期に
    内部作業を行うプロセス群
    ユーザー
    プロセス
    サーバー
    プロセス
    キャッシュ → 検索/更新 等
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス

    View full-size slide

  8. 参考)主なバッググラウンド・プロセス
    Copyright © 2023, Oracle and/or its affiliates
    8
    種類 概要
    データベース・ライター
    (DBWn)
    データベース・バッファ・キャッシュ上で更新されたデータを定期的にデータ・ファイルに書き込む(バッファキャッシュとデータファイルを同期する)
    ログ・ライター
    (LGWR)
    REDOログ・バッファ上のREDOログ・エントリを定期的にREDOログ・ファイルに書き込む(COMMIT時など)
    チェックポイント
    (CKPT)
    チェックポイント発生時にDBWnにデータベース全てのデータ・ファイルと制御ファイルを更新をするように指示を送る。
    システム・モニター
    (SMON)
    インスタンス障害後、再起動の際に自動的にインスタンス・リカバリを行う
    プロセス・モニター
    (PMON)
    サーバー・プロセスの監視を行い、ユーザ・プロセス障害時にクリーンアップを行う
    (ロックの解放、ロールバックなど)
    アーカイバ・プロセス
    (ARCn)
    REDOログが一杯になるか、オンラインREDOログの切替えが発生した場合に、REDOログ・ファイルをアーカイブ記憶域にコピーする。
    SGA
    DBWn LGWR SMON PMON ARCn
    CKPT ...
    Oracle Database データベース・リファレンス 19c 第IV部 付録F バックグラウンド・プロセス

    View full-size slide

  9. • Oracle Databaseのメモリーの種類
    • システム・グローバル領域(SGA): 表や実行計画をキャッシュし、ユーザー間で共有することによってディスクI/Oを減らし、効率を上げ
    るためのメモリー領域
    • プログラム・グローバル領域(PGA): プロセスごとに確保される領域
    Oracle Databaseのメモリー
    Copyright © 2023, Oracle and/or its affiliates
    9
    SGA
    リスナー
    プロセス
    PGA
    サーバー
    プロセス
    PGA
    サーバー
    プロセス
    PGA
    PGA
    サーバー
    プロセス
    ユーザー
    プロセス
    キャッシュ → 検索/更新 等
    サーバー
    プロセス
    プロセス群→メモリー→ファイル
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス

    View full-size slide

  10. システム・グローバル領域(SGA)
    データベース・バッファ・キャッシュ データベースから取得されたデータ・ブロック(表、索引など)をキャッシュする領域
    REDOログ・バッファ ディスク(REDOログ・ファイル)に書き込むまでREDO情報をキャッシュ(インスタンス・リカバリに使用)する領域
    共有プール 一度実行されたSQL文の解析に使うデータや実行計画、およびユーザ間で共有される様々な構造をキャッシュする領
    域(ライブラリ・キャッシュ、データ・ディクショナリ・キャッシュ)
    ラージ・プール 共有サーバー接続、パラレル問合せ、Recovery Manager (RMAN)などが利用する領域
    Javaプール データベース内でJavaを実行する場合に使用する領域
    Streamプール Oracle Streams、Advanced Queuing(AQ)、Data Pump、Oracle GoldenGate等で使用する領域
    IM列ストア Oracle Database In-MemoryのIM列ストアを格納する領域
    参考)Oracle Databaseのメモリー
    Copyright © 2023, Oracle and/or its affiliates
    10
    PGA
    サーバー
    プロセス
    SGA
    データベース・
    バッファ・
    キャッシュ
    REDOログ・
    バッファ
    共有プール ラージ・
    プール
    Java
    プール
    Stream
    プール
    IM列
    ストア
    検索対象
    データ・ブロック
    変更履歴
    A → B
    COMMIT
    SQL文
    実行計画

    View full-size slide

  11. プログラム・グローバル領域(PGA)
    セッション情報 ※1 セッションの対するユーザーの権限に関する情報
    カーソル状態 セッションで使用している様々なカーソルの処理段階を示す
    スタック空間 セッション変数が入っている空間
    ソート領域 データのソート処理に使用。この領域のサイズを超える処理は一時表領域を利用
    SORT_AREA_SIZE, HASH_AREA_SIZE, BITMAP_MERGE_AREA_SIZE, CREATE_BITMAP_AREA_SIZE
    参考)Oracle Databaseのメモリー
    Copyright © 2023, Oracle and/or its affiliates
    11
    PGA
    サーバー
    プロセス
    PGA
    サーバー
    プロセス
    ※1: データベース・セッションは、データベースに対する現在のユーザー・ログインの状況を示す、データベース・インスタンス・メモリー内の論理エンティティ
    SGA
    データベース・
    バッファ・
    キャッシュ
    REDOログ・
    バッファ
    共有プール ラージ・
    プール
    Java
    プール
    Stream
    プール
    IM列
    ストア
    検索対象
    データ・ブロック
    変更履歴
    A → B
    COMMIT
    SQL文
    実行計画

    View full-size slide

  12. Oracle Databaseのファイル群
    • データファイル: ユーザーが利用するデータ(表など)を格納
    • REDOログ・ファイル: 変更履歴(DML、DDLなど)を格納
    • 制御ファイル: データベース構造、変更反映状況などの制御情報を格納
    • その他
    Oracle Databaseのファイル群
    Copyright © 2023, Oracle and/or its affiliates
    12
    SGA
    PGA
    サーバー
    プロセス
    PGA
    サーバー
    プロセス
    PGA
    PGA
    サーバー
    プロセス
    キャッシュ → 検索/更新 等
    サーバー
    プロセス
    データ・ファイル REDOログ・
    ファイル
    制御ファイル
    プロセス群→メモリー→ファイル
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス

    View full-size slide

  13. • データベースの内部構造
    • メモリー:SGA / PGA
    • プロセス:サーバー・プロセス / バックグラウンド・プロセス
    • ファイル群:データ・ファイル / 制御ファイル / REDOログ・ファイル
    Oracle Databaseの内部構造
    Copyright © 2023, Oracle and/or its affiliates
    13
    13
    制御ファイル
    データ・ファイル REDOログ・
    ファイル
    データベース・
    バッファ・キャッシュ
    REDOログ・バッファ 共有プール
    SGA
    ファイル群
    Oracleインスタンス
    Oracleデータベース
    PGA
    サーバー
    プロセス
    PGA
    サーバー
    プロセス
    PGA
    PGA
    サーバー
    プロセス
    サーバー
    プロセス
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス

    View full-size slide

  14. 1. Oracle Databaseの概要
    • Oracle Databaseの内部構造
    • プロセス
    • メモリー
    • ファイル群
    • Oracle Databaseの処理の仕組み
    • Oracle Databaseへの接続の仕組み
    • 処理の流れ
    2. メモリー設定の考え方
    3. ファイル群の詳細
    Agenda
    Copyright © 2023, Oracle and/or its affiliates
    14

    View full-size slide

  15. • SQL実行ツール:SQL*Plus、SQL Developer
    • アプリケーション:Java、.NET等
    Oracle Databaseのクライアント
    Copyright © 2023, Oracle and/or its affiliates
    15
    アプリケーション
    サーバー
    SQL*Plus SQL Developer
    Oracle標準のSQL実行ツール
    クライアント
    SGA
    PGA PGA PGA
    PGA
    サーバー
    プロセス
    PGA
    PGA
    サーバー
    プロセス
    サーバー
    プロセス
    データ・ファイル REDOログ・
    ファイル
    制御ファイル
    リスナー
    プロセス
    Oracle Database
    アプリケーション
    SQL
    バックグラウンド・
    プロセス
    バックグラウンド・
    プロセス
    バックグラウンド・
    プロセス

    View full-size slide

  16. • クライアントは接続するデータベースの情報を設定ファイルに記述
    • 接続時には、リスナーを経由してデータベースに接続
    Oracle Databaseへの接続の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    16
    クライアント
    SGA
    PGA
    サーバー
    プロセス
    PGA
    PGA
    サーバー
    プロセス
    サーバー
    プロセス
    データ・ファイル REDOログ・
    ファイル
    制御ファイル
    リスナー
    プロセス
    Oracle Database
    クライアントとOracle Databaseの接続
    ユーザー
    プロセス
    ①接続要求

    プロセス
    生成

    接続確立
    接続設定ファイル
    ORACLE_HOME\network\admin\tnsnames.ora
    orcl=
    (DESCRIPTION=
    (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.10)(PORT=1521))
    (CONNECT_DATA=
    (SERVICE_NAME=orcl.pub01.vcn01.oraclevcn.com))
    )
    CONNECT ユーザー名/パスワード@orcl
    SQL*Plus
    PGA PGA PGA
    バックグラウンド・
    プロセス
    バックグラウンド・
    プロセス
    バックグラウンド・
    プロセス

    View full-size slide

  17. • クライアントは接続するデータベースの情報を設定ファイルに記述
    • 接続時には、リスナーを経由してデータベースに接続
    Oracle Databaseへの接続の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    17
    SQL Developer
    クライアント
    SGA
    PGA
    サーバー
    プロセス
    PGA PGA PGA
    データ・ファイル REDOログ・
    ファイル
    制御ファイル
    リスナー
    プロセス
    Oracle Database
    クライアントとOracle Databaseの接続
    ユーザー
    プロセス
    ①接続要求

    プロセス
    生成

    接続確立
    CONNECT ユーザー名/パスワード@orcl
    Oracleデータベース
    クライアントからの接続の流れ
    ① クライアント側がHOST名(IPアドレス)、ポート番号、サービス名などを指定し、リスナーに接続を要求する
    ② リスナーは接続を確立し、サーバー・プロセスを生成して、接続アドレスを渡す
    ③ 以後、ユーザー・プロセスとサーバ・プロセスが直接やり取り行う。
    Oracleインスタンス

    View full-size slide

  18. • クライアント側に Oracle Clientをインストールすることで、Oracle Net Servicesもインストールされる
    • Oracle Net Servicesにて以下の機能を提供
    • プロトコルの差異を吸収 / ネットワーク暗号化 / グローバリゼーション・サポート / キャラクタ・セットの変換 etc.
    Oracle Net Services (SQL*Net)
    Copyright © 2023, Oracle and/or its affiliates
    18
    SGA
    PGA
    サーバー
    プロセス
    PGA
    PGA
    サーバー
    プロセス
    サーバー
    プロセス
    データ・ファイル REDOログ・
    ファイル
    制御ファイル
    リスナー
    プロセス
    Oracle Database
    アプリケーション
    サーバー
    SQL*Plus SQL Developer
    Oracle標準のSQL実行ツール
    クライアント
    アプリケーション
    SQL
    Oracle Net Services
    Oracle Net Services
    クライアントとOracle Database間はOracle Net Servicesを介して通信をおこなう
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス

    View full-size slide

  19. 参考)代表的なアプリケーション開発言語とミドルウェアの関係
    Pro*C
    Pro*COBOL
    Visual Basic/ASP/Access .VB.NET/ASP.NET/C#
    OLE DB
    ODBC OLE DB
    .NET Bridge
    .NET Framework (ADO.NET)
    ADO
    ODP.NET
    unmanaged
    ODBC
    SQLLIB
    C
    (OCI)
    COM
    JDK
    JDBC
    Thick
    (Type2)
    JDBC
    Thin
    (Type4)
    C/COBOL
    クライアント側
    サーバー側
    Oracle Net Services (Oracle Call Interface :OCI)
    Java
    ミドルウェア
    開発・実行環境、APIなど
    Windows系OS 環境固有 ※
    ※ Windows以外の環境でODBCドライバが
    利用されていることもあります
    ODP.NET
    managed
    その他の主要な開発言語
    (JavaScript, PHP etc.)の
    ドライバーもこちら
    Python
    Oracle Net Services
    python-
    oracledb
    New:
    2022/5/26
    OCI
    Copyright © 2023, Oracle and/or its affiliates
    19

    View full-size slide

  20. 1. Oracle Databaseの概要
    • Oracle Databaseの内部構造
    • プロセス
    • メモリー
    • ファイル群
    • Oracle Databaseの処理の仕組み
    • Oracle Databaseへの接続の仕組み
    • 処理の流れ
    2. メモリー設定の考え方
    3. ファイル群の詳細
    Agenda
    Copyright © 2023, Oracle and/or its affiliates
    20

    View full-size slide

  21. Oracle Databaseの処理の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    21
    3パターンの処理の仕組みとバックグラウンド・プロセスの動き
    DBWn
    クライアント
    Ⓐ SELECT A
    FROM 表1;
    Ⓑ UPDATE 表1
    A⇒B;
    Ⓒ COMMIT;
    ユーザー
    プロセス
    サーバー
    プロセス
    制御ファイル
    データ・ファイル REDOログ・ファイル
    LGWR
    CKPT
    REDOログ・
    バッファ
    共有プール データベース・
    バッファ・キャッシュ

    View full-size slide

  22. Oracle Databaseの処理の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    22
    Ⓐ問い合わせ処理の仕組み
    DBWn
    クライアント
    ユーザー
    プロセス
    制御ファイル
    データ・ファイル REDOログ・ファイル
    LGWR
    CKPT
    SELECT A
    FROM 表1;
    UPDATE 表1
    A⇒B;
    COMMIT;
    REDOログ・
    バッファ
    共有プール データベース・
    バッファ・キャッシュ
    サーバー
    プロセス

    View full-size slide

  23. Oracle Databaseの処理の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    23
    Ⓐ問い合わせ処理の仕組み
    DBWn
    クライアント
    ユーザー
    プロセス
    制御ファイル
    データ・ファイル REDOログ・ファイル
    LGWR
    CKPT

    SELECT A
    FROM 表1;
    UPDATE 表1
    A⇒B;
    COMMIT;
    REDOログ・
    バッファ
    共有プール データベース・
    バッファ・キャッシュ
    サーバー
    プロセス

    View full-size slide

  24. Oracle Databaseの処理の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    24
    Ⓐ問い合わせ処理の仕組み
    DBWn
    クライアント
    ユーザー
    プロセス
    共有プール
    制御ファイル
    データ・ファイル REDOログ・ファイル
    LGWR
    CKPT

    SQL文
    解析情報
    実行計画
    データ・ディクショナリ

    SELECT A
    FROM 表1;
    UPDATE 表1
    A⇒B;
    COMMIT;
    REDOログ・
    バッファ
    データベース・
    バッファ・キャッシュ
    サーバー
    プロセス

    View full-size slide

  25. Oracle Databaseの処理の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    25
    Ⓐ問い合わせ処理の仕組み
    DBWn
    クライアント
    ユーザー
    プロセス
    共有プール データベース・
    バッファ・キャッシュ
    REDOログ・
    バッファ
    制御ファイル
    データ・ファイル REDOログ・ファイル
    LGWR
    CKPT

    SQL文
    解析情報
    実行計画
    データ・ディクショナリ

    A

    A
    SELECT A
    FROM 表1;
    UPDATE 表1
    A⇒B;
    COMMIT;
    サーバー
    プロセス

    View full-size slide

  26. Oracle Databaseの処理の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    26
    Ⓐ問い合わせ処理の仕組み
    DBWn
    クライアント
    ユーザー
    プロセス
    共有プール データベース・
    バッファ・キャッシュ
    REDOログ・
    バッファ
    制御ファイル
    データ・ファイル REDOログ・ファイル
    LGWR
    CKPT

    SQL文
    解析情報
    実行計画
    データ・ディクショナリ

    A

    A

    SELECT A
    FROM 表1;
    UPDATE 表1
    A⇒B;
    COMMIT;
    サーバー
    プロセス

    View full-size slide

  27. Oracle Databaseの処理の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    27
    Ⓑ更新処理の仕組み(問合せ処理からの継続)
    DBWn
    クライアント
    ユーザー
    プロセス
    制御ファイル
    データ・ファイル REDOログ・ファイル
    LGWR
    CKPT
    SELECT A
    FROM 表1;
    UPDATE 表1
    A⇒B;
    COMMIT;

    REDOログ・
    バッファ
    共有プール データベース・
    バッファ・キャッシュ
    サーバー
    プロセス

    View full-size slide

  28. Oracle Databaseの処理の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    28
    Ⓑ更新処理の仕組み(問合せ処理からの継続)
    DBWn
    クライアント
    ユーザー
    プロセス
    共有プール データベース・
    バッファ・キャッシュ
    REDOログ・
    バッファ
    制御ファイル
    データ・ファイル REDOログ・ファイル
    LGWR
    CKPT
    SQL文
    解析情報
    実行計画
    データ・ディクショナリ

    A
    A
    SELECT A
    FROM 表1;
    UPDATE 表1
    A⇒B;
    COMMIT;

    サーバー
    プロセス

    View full-size slide

  29. Oracle Databaseの処理の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    29
    Ⓑ更新処理の仕組み(問合せ処理からの継続)
    DBWn
    クライアント
    ユーザー
    プロセス
    共有プール データベース・
    バッファ・キャッシュ
    REDOログ・
    バッファ
    制御ファイル
    データ・ファイル REDOログ・ファイル
    LGWR
    CKPT
    SQL文
    解析情報
    実行計画
    データ・ディクショナリ

    A
    A
    SELECT A
    FROM 表1;
    UPDATE 表1
    A⇒B;
    COMMIT;
    変更履歴
    A→B
    変更前データ
    A


    B

    サーバー
    プロセス

    View full-size slide

  30. Oracle Databaseの処理の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    30
    Ⓑ更新処理の仕組み(問合せ処理からの継続)
    DBWn
    クライアント
    ユーザー
    プロセス
    共有プール データベース・
    バッファ・キャッシュ
    REDOログ・
    バッファ
    制御ファイル
    データ・ファイル REDOログ・ファイル
    LGWR
    CKPT
    SQL文
    解析情報
    実行計画
    データ・ディクショナリ

    A
    A
    SELECT A
    FROM 表1;
    UPDATE 表1
    A⇒B;
    COMMIT;
    変更履歴
    A→B
    B
    変更前データ
    A



    結果(更新しました)

    サーバー
    プロセス

    View full-size slide

  31. Oracle Databaseの処理の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    31
    Ⓒコミット処理(更新処理からの継続)
    DBWn
    クライアント
    ユーザー
    プロセス
    共有プール データベース・
    バッファ・キャッシュ
    REDOログ・
    バッファ
    制御ファイル
    データ・ファイル REDOログ・ファイル
    CKPT
    SQL文
    解析情報
    実行計画
    データ・ディクショナリ
    A
    A
    SELECT A
    FROM 表1;
    UPDATE 表1
    A⇒B;
    COMMIT;
    変更履歴
    A→B
    B
    変更前データ
    A
    LGWR
    A→B

    SCN割り当て
    ※ SCN: システム変更番号
    サーバー
    プロセス

    View full-size slide

  32. Oracle Databaseの処理の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    32
    Ⓒコミット処理(更新処理からの継続)
    DBWn
    クライアント
    ユーザー
    プロセス
    共有プール データベース・
    バッファ・キャッシュ
    REDOログ・
    バッファ
    制御ファイル
    データ・ファイル REDOログ・ファイル
    CKPT
    SQL文
    解析情報
    実行計画
    データ・ディクショナリ
    A
    A
    SELECT A
    FROM 表1;
    UPDATE 表1
    A⇒B;
    COMMIT;
    変更履歴
    A→B
    B
    変更前データ
    A
    LGWR
    A→B

    ②完了
    サーバー
    プロセス

    View full-size slide

  33. Oracle Databaseの処理の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    33
    その他、バックグラウンド・プロセスが非同期で実行
    クライアント
    ユーザー
    プロセス
    共有プール データベース・
    バッファ・キャッシュ
    REDOログ・
    バッファ
    制御ファイル
    データ・ファイル REDOログ・ファイル
    CKPT
    A
    B
    SELECT A
    FROM 表1;
    UPDATE 表1
    A⇒B;
    COMMIT;
    B
    変更前データ
    A
    LGWR
    A
    DBWn
    ファイル・ヘッダー
    の更新
    サーバー
    プロセス
    A→B

    View full-size slide

  34. Oracle Databaseの処理の仕組み
    Copyright © 2023, Oracle and/or its affiliates
    34
    3パターンの処理の仕組みとバックグラウンド・プロセスの動き
    DBWn
    クライアント
    ① SELECT A
    FROM 表1;
    ② UPDATE 表1
    A⇒B;
    ③ COMMIT;
    ユーザー
    プロセス
    共有プール
    制御ファイル
    データ・ファイル REDOログ・ファイル
    LGWR
    CKPT
    REDOログ・
    バッファ
    データベース・
    バッファ・キャッシュ
    サーバー
    プロセス

    View full-size slide

  35. 1. Oracle Databaseの概要
    • Oracle Databaseの内部構造
    • プロセス
    • メモリー
    • ファイル群
    • Oracle Databaseの処理の仕組み
    • Oracle Databaseへの接続の仕組み
    • 処理の流れ
    2. メモリー設定の考え方
    3. ファイル群の詳細
    Agenda
    Copyright © 2023, Oracle and/or its affiliates
    35

    View full-size slide

  36. Copyright © 2023, Oracle and/or its affiliates
    36
    メモリー設定の考え方

    View full-size slide

  37. メモリー管理の重要性
    メモリー不足は深刻なパフォーマンス劣化を引き起こす
    処理傾向に応じて、各メモリーコンポーネントに必要なメモリー領域を割り当てる必要がある
    Oracle Databaseのメモリー管理
    Copyright © 2023, Oracle and/or its affiliates
    37
    SGA
    PGA
    サーバー
    プロセス
    データベース・
    バッファ・
    キャッシュ
    REDOログ・
    バッファ
    共有プール ラージ・
    プール
    Java
    プール
    Stream
    プール
    IM列
    ストア
    PGA
    サーバー
    プロセス
    【PGAが不足すると...】
    メモリー内でソート処理ができ
    ず、ディスク・ソートが発生する
    ためソート、結合などの処理速
    度が大きく低下
    【データベース・バッファ・キャッシュが不足する
    と...】
    一度キャッシュしたブロックをファイルに書き出し、
    次回アクセス時、再度ディスクからブロックを読
    み 込む必要がある
    【共有プールが不足すると...】
    一度読み込んだデータ・ディクショナリ 情報や、一度立てた実行計
    画がフラッシュ(消去)されるため、 何度もデータ・ディクショナリの情
    報をディスクから読んだり 実行計画を使いまわせず、再解析する
    必要がある

    View full-size slide

  38. システム・グローバル領域(SGA)
    データベース・バッファ・キャッシュ データベースから取得されたデータ・ブロック(表、索引など)をキャッシュする領域
    REDOログ・バッファ ディスク(REDOログ・ファイル)に書き込むまでREDO情報をキャッシュ(インスタンス・リカバリに使用)する領域
    共有プール 一度実行されたSQL文の解析に使うデータや実行計画、およびユーザ間で共有される様々な構造をキャッシュする領
    域(ライブラリ・キャッシュ、データ・ディクショナリ・キャッシュ)
    ラージ・プール 共有サーバー接続、パラレル問合せ、Recovery Manager(RMAN)などが利用する領域
    Javaプール データベース内でJavaを実行する場合に使用する領域
    Streamプール Oracle Streams、Advanced Queuing(AQ)、Data Pump、Oracle GoldenGate等で使用する領域
    IM列ストア Oracle Database In-MemoryのIM列ストアを格納する領域
    参考)Oracle Databaseのメモリー
    Copyright © 2023, Oracle and/or its affiliates
    38
    PGA
    サーバー
    プロセス
    SGA
    データベース・
    バッファ・
    キャッシュ
    REDOログ・
    バッファ
    共有プール ラージ・
    プール
    Java
    プール
    Stream
    プール
    IM列
    ストア
    検索対象
    データ・ブロック
    変更履歴
    A → B
    COMMIT
    SQL文
    実行計画
    再掲

    View full-size slide

  39. プログラム・グローバル領域(PGA)
    セッション情報 ※1 セッションの対するユーザーの権限に関する情報
    カーソル状態 セッションで使用している様々なカーソルの処理段階を示す
    スタック空間 セッション変数が入っている空間
    ソート領域 データのソート処理に使用。この領域のサイズを超える処理は一時表領域を利用
    SORT_AREA_SIZE, HASH_AREA_SIZE, BITMAP_MERGE_AREA_SIZE, CREATE_BITMAP_AREA_SIZE
    参考)Oracle Databaseのメモリー
    Copyright © 2023, Oracle and/or its affiliates
    39
    PGA
    サーバー
    プロセス
    PGA
    サーバー
    プロセス
    ※1: データベース・セッションは、データベースに対する現在のユーザー・ログインの状況を示す、データベース・インスタンス・メモリー内の論理エンティティ
    SGA
    データベース・
    バッファ・
    キャッシュ
    REDOログ・
    バッファ
    共有プール ラージ・
    プール
    Java
    プール
    Stream
    プール
    IM列
    ストア
    検索対象
    データ・ブロック
    変更履歴
    A → B
    COMMIT
    SQL文
    実行計画
    再掲

    View full-size slide

  40. (参考)手動メモリー管理 手動共有メモリー管理 自動共有メモリー管理 自動メモリー管理
    参考)メモリーの管理方法
    Copyright © 2023, Oracle and/or its affiliates
    40
    SGA
    sga_target
    (共有メモリーサイズ)
    共有プール
    shared_pool_size
    Javaプール
    java_pool_size
    ラージプール
    large_pool_size
    REDOログ・バッファ
    log_buffer_size
    バッファキャッシュ
    db_block_buffers
    PGA
    pga_aggregate_target
    PGA
    pga_aggregate_target
    memory_target
    SGA+PGA
    共有プール
    shared_pool_size
    Javaプール
    java_pool_size
    ラージプール
    large_pool_size
    REDOログ・バッファ
    log_buffer_size
    バッファキャッシュ
    db_block_buffers
    sort_area_size
    hash_area_size
    bitmap_merge_area_size
    create_bitmap_area_size
    再掲

    View full-size slide

  41. • 自動メモリー管理:SGAとインスタンスPGAのサイズを自動
    的に調整する。
    • SGAとPGAの合計としたいサイズをMEMORY_TARGETに設
    定する。
    • 事実上、データベースが使用するすべてのメモリー領域が
    自動的に調整され、メモリーサイズ調整に関わる運用負
    荷を大幅に軽減。
    • 自動共有メモリー管理:SGAの各コンポーネントに割り当て
    るメモリーサイズを自動調整する。
    • SGA_TARGETにSGA全体のサイズを指定する。
    • 自動PGAメモリー管理:各プロセスのPGAを自動調整する
    機能。
    • PGA_AGGREGATE_TARGETにPGAの全体の合計サイズの
    目標値を設定する。
    メモリーサイズの自動調整機能
    Copyright © 2023, Oracle and/or its affiliates
    41
    PGA
    SGA
    サーバー搭載メモリー
    自動PGAメモリー管理
    pga_aggregate_target
    自動共有メモリー管理
    sga_target
    ソート領域
    共有プール
    DBバッファー
    自動メモリー管理
    MEMORY_TARGET
    Oracleデータベースインスタンスが自動的に管理及びチューニングできる機能

    View full-size slide

  42. 自動共有メモリー管理 によるメモリー割り当て
    Oracle Databaseが自動で、細かいメモリー割り当てを実行
    適切なメモリーの割り当て
    Copyright © 2023, Oracle and/or its affiliates
    42
    PGA
    SGA
    その他
    OS利用
    サーバー搭載メモリー
    pga_aggregate_target
    sga_target
    ソート領域
    共有プール
    DBバッファー
    【例えば、OLTP系の処理】
    • 少量の行しかアクセスしない
    • 大量のユーザーが同時に実行
    • 同じSQL文を実行
    • SGA(共有メモリー)を大きめに設定
    • 実行計画の再利用
    【例えば、DWH系の処理】
    • 大量のデータにアクセスし、一括処理
    • ユーザー数は少ない
    • PGA(ソート領域)を大きめに設定
    • メモリーを使ったソート処理
    CPU
    CPU
    時間
    時間
    SGA
    PGA
    サーバー
    プロセス 共有プール
    SQL文
    実行計画
    ソート領域

    View full-size slide

  43. 1. Oracle Databaseの概要
    • Oracle Databaseの内部構造
    • プロセス
    • メモリー
    • ファイル群
    • Oracle Databaseの処理の仕組み
    • Oracle Databaseへの接続の仕組み
    • 処理の流れ
    2. メモリー設定の考え方
    3. ファイル群の詳細
    Agenda
    Copyright © 2023, Oracle and/or its affiliates
    43

    View full-size slide

  44. Copyright © 2023, Oracle and/or its affiliates
    44
    ファイル群の詳細

    View full-size slide

  45. • データベース・ファイルの種類
    • データ・ファイル:ユーザが利用するデータ(表など)を格納
    • REDOログ・ファイル:変更履歴(DML,DDLなど)を格納
    • 制御ファイル:データベース構造、変更反映状況などの制御情報を格納
    Oracle Databaseのファイル群
    Copyright © 2023, Oracle and/or its affiliates
    45
    45
    SGA
    ファイル群
    PGA
    サーバー
    プロセス
    PGA
    サーバー
    プロセス
    PGA
    PGA
    サーバー
    プロセス
    サーバー
    プロセス
    初期化
    パラメータ・ファイル
    アラート・
    ログファイル
    アーカイブREDO
    ログファイル
    制御ファイル
    データ・ファイル REDOログ・
    ファイル
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス

    View full-size slide

  46. 1. Oracle Databaseを構成するファイル群
    2. その他、直接Oracle Databaseを構成するファイル群ではないが、運用管理上必要となるファイル群
    Oracle Databaseを構成するファイル
    Copyright © 2023, Oracle and/or its affiliates
    46
    種類 概要
    データファイル ユーザが利用するデータ(表など)を格納
    制御ファイル データベースの制御情報を格納(データ・ファイルの書き込みタイミング、RMANのリポジトリ etc.)
    REDOログファイル 変更履歴(DML,DDLなど)を格納
    ファイルの分類
    種類 概要
    アーカイブREDOログファイル 循環して利用されるREDOログ・ファイルの古い変更履歴のコピー(アーカイブ)
    初期化パラメータ・ファイル Oracleインスタンスの構成(メモリー、プロセスなど)を記述したファイル
    データベースを起動する際に読み込み、記述されたパラメータ設定を元にインスタンスを起動
    アラート・ログ・ファイル Oracleデータベース稼働中の様々な情報(エラーメッセージ、管理作業)を記録

    View full-size slide

  47. データ格納先のファイルを「表領域」という単位で管理
    • 表領域は表の論理的な格納先
    • データは物理的にはデータ・ファイルに格納される
    • 表領域は1つ以上のデータ・フィルから構成される
    データベースには、目的ごとに複数の表領域を作成
    • アプリケーション単位(売り上げアプリケーション用/人事アプリケーション用等) • メンテナンス単位(バックアップ単位など)
    • ディスクI/Oの分散を考慮して配置
    データ・ファイルと表領域
    Copyright © 2023, Oracle and/or its affiliates
    47
    表領域 HR 表領域 Sales 表領域: 表の論理格納先
    表などのスキーマ・オブジェクトをまとめて管理する
    論理グループ
    データ・ファイル データ・ファイル
    データ・ファイル: データの格納先
    表などのスキーマ・オブジェクトのデータをまとめて格納
    対応付け
    1
    ..
    n
    ※ bigfile表領域の場合の対応付けは 1:1

    View full-size slide

  48. データベースが動作する為に、内部的に使用する表領域
    ・ SYSTEM表領域: 内部表(データ・ディクショナリ)などを格納する表領域
    ・ SYSAUX表領域: オプションの機能が仕様するデータを格納する内部使用領域
    ・ USERS表領域: ユーザー表用に用意されているデフォルト表領域
    ・ TEMP表領域: ソートなどで一時的に使用するデータを置く表領域
    ・ UNDO表領域: データの変更(DML)時、変更前データを置く表領域
    参考)Oracle Databaseの事前定義表領域
    Copyright © 2023, Oracle and/or its affiliates
    48
    クライアント
    ユーザー
    プロセス
    共有プール データベース・
    バッファ・キャッシュ
    REDOログ・
    バッファ
    制御ファイル
    UNDO
    REDOログ・
    ファイル
    SQL文
    解析情報
    実行計画
    A
    サーバー
    プロセス
    変更履歴
    A→B
    B
    変更前データ
    A
    SYSAUX SYSTEM USERS
    TEMP
    A
    B
    DBWn
    データ・
    ディクショナリ
    ディスク・
    ソート

    View full-size slide

  49. smallfile表領域(デフォルト)
    • 複数のデータファイルを束ねて利用可能
    (最大1023 個まで)
    bigfile表領域(10g〜)
    • 単一の非常に大きなデータファイルのみで構成
    • ファイル管理が簡素化できる
    • ローカル管理表領域かつ自動セグメント領域管理で
    あること
    • Oracle Automatic Storage Management (ASM) 上での
    利用を推奨
    参考)bigfile表領域
    Copyright © 2023, Oracle and/or its affiliates
    49
    CREATE BIGFILE TABLESPACE XXX ……
    【参考】物理データベースの制限
    Oracle Databaseのデータファイルの制限:
    • 1つのデータファイルあたり 2^22 -1 = 4,194,303 block
    → smallfile表領域では、ブロック・サイズが 8k の場合、1つのデータファ
    イルに 32 GB のデータを格納できる
    それ以上の容量の表領域を作成したい場合は複数のデータファイ
    ルを束ねる必要がある
    → bigfile表領域では、ブロックサイズが 8k の場合、32TB までデータを
    格納できる
    ※ Oracle Base Database ServiceのUSERS表領域は smallfile表領域のため、
    大量データの格納するには独自の bigfile表領域を用意すべき
    db_block_size データファイルの最大サイズ
    2k byte 約 8 G byte ( 8,589,932,544 byte)
    4k byte 約 16 G byte ( 17,179,865,088 byte)
    8k byte 約 32 G byte ( 34,359,730,176 byte)
    16k byte 約 64 G byte ( 68,719,460,352 byte)

    View full-size slide

  50. 制御ファイル
    Copyright © 2023, Oracle and/or its affiliates
    50
    データベース情報:データベース名、識別子
    データ・ファイル情報:データ・ファイル名、現在の状態
    REDOログ・ファイル情報:REDOログ・ファイルの名前と場所、最新の
    REDOログファイルの情報、アーカイブ情報等
    その他:チェックポイント情報、バックアップ情報(RMANリポジトリ)
    データベースに関わる様々な管理情報を格納
    制御ファイル
    • データベースがオープンされる前に参照され、制御ファイル情報をもとにREDOログファイル、データファイルが利用可能に
    される。
    • データベースの構造に関する情報を格納
    • データベースの名前
    • REDOログファイルおよびデータ・ファイルの名前と場所、ステータス
    • チェックポイント情報:メモリー上の情報をいつ、どこまでファイルに反映したか等
    • 重要なファイルの為、多重化を推奨。

    View full-size slide

  51. データベースの変更履歴(REDOデータ)を記録するファイル
    • データベースへの変更履歴(REDOデータ)を格納
    • 障害時の復旧に使用
    • 全てのオラクルデータベースには2つ以上のREDOログファイルがある。
    • ファイルは循環運用される
    • 書き込みタイミング
    • COMMIT時
    • REDOログ・バッファがいっぱいになった時
    • データベース・ライターが書き込む前など
    REDOログ・ファイル
    51
    50 51 52
    REDOログファイル
    ログスイッチ ログスイッチ
    循環して上書き
    Copyright © 2023, Oracle and/or its affiliates

    View full-size slide

  52. • 一連のREDOデータを保管するために、上書きされる前にREDOデータをコピーして生成されるファイルのこと。
    • データベースを最新状態に復旧するために必要。
    • アーカイブログファイルを出力する運用モードをARCHIVELOGモードと呼ぶ。
    • アーカイバプロセス(ARCn)により出力される。
    アーカイブREDOログ・ファイル
    Copyright © 2023, Oracle and/or its affiliates
    52
    50 51 52
    REDOログファイル
    50
    ログスイッチ ログスイッチ
    50
    50
    50
    REDOログを上書き前に
    アーカイブする アーカイブ・
    REDOログ・ファイル
    いっぱいになったREDOログファイルのオフラインコピー
    アーカイバ
    プロセス 50→53
    ログスイッチ

    View full-size slide

  53. データベース・インスタンスに、メモリー割り当て、制限、デフォルト値、必要なファイルやディレクトリなどを指定
    • データベースは、インスタンスを起動するために、インスタンス構成パラメータ(初期化パラメータ)を
    以下のいずれかのファイルより読み込む
    • デフォルトでは $ORACLE_HOME/dba (Windowsの場合は $ORACLE_HOME\database) ディレクトリに存在
    • 初期化パラメータ SPFILE に指定していれば、SPFILE はサーバー上のどこでも配置できる
    PFILEとSPFILEの相互変換
    SPFILE利用時のパラメータの動的な変更
    【補足】初期化パラメータ
    Copyright © 2023, Oracle and/or its affiliates
    53
    初期化パラメータ・ファイル(PFILE): テキスト形式(テキスト・エディターで変更可能)
    パラメータ変更にはインスタンスの再起動が必要
    サーバー・パラメータ・ファイル(SPFILE): バイナリ形式(テキスト・エディターで変更不可)
    動的にパラメータ値を変更可能
    Database Configuration Assistant (DBCA)はPFILEからSPFILEを作成
    CREATE SPFILE='/u01/oracle/dbs/test_spfile.ora'
    FROM PFILE='/u01/oracle/dbs/test_init.ora';
    CREATE PFILE='/u01/oracle/dbs/test_init.ora'
    FROM SPFILE ='/u01/oracle/dbs/test_spfile.ora ';
    ALTER SYSTEM SET SEC_MAX_FAILED_LOGIN_ATTEMPTS=3
    COMMENT='Reduce from 10 for tighter security.'
    SCOPE=SPFILE;
    SCOPE=SPFILE SPFILEにのみ変更が適用。次回インスタンス起動時に有効
    SCOPE=MEMORY 現行インスタンスに即時適用。次回インスタンス起動時には変更が無視
    SCOPE=BOTH SPFILEと現行インスタンスに即時適用。次回インスタンス起動時も有効

    View full-size slide

  54. データベース操作中に発生したエラー・メッセージと例外についての
    重要な情報が記録される
    • 発生したすべての内部エラー(ORA-00600)、ブロック破損エラー(ORA-
    01578)およびデッドロック・エラー(ORA-00060)
    • いくつかのCREATE、ALTERおよびDROP文などの管理操作、
    およびSTARTUP、SHUTDOWNおよびARCHIVELOG文
    • 共有サーバーとディスパッチャ・プロセスの機能に関係するメッセージと
    エラー
    • マテリアライズド・ビューの自動リフレッシュ中に発生したエラー
    • データベースとインスタンスの起動時点でデフォルト以外の値があったす
    べての初期化パラメータの値
    アラート・ログ・ファイルは、その他のログファイルを含むすべての診断
    データとともに、自己診断リポジトリ(ADR: Automatic Diagnostic
    Repository)に格納されます。
    • 初期化パラメータ: diagnostic_dest の場所にADRは配置
    【補足】アラート・ログ・ファイル
    Copyright © 2023, Oracle and/or its affiliates
    54
    Starting ORACLE instance (normal) (OS id: 9554)
    2023-11-16T01:23:36.767912+00:00
    ****************************************************
    Sys-V shared memory will be used for creating SGA
    ****************************************************
    2023-11-16T01:23:36.769447+00:00
    **********************************************************************
    【略】
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.17.0.0.0.
    ORACLE_HOME: /u01/app/oracle/product/19.0.0.0/dbhome_1
    System name: Linux
    Node name: test02
    Release: 4.14.35-2047.510.5.5.el7uek.x86_64
    Version: #2 SMP Fri Jan 28 08:33:42 PST 2022
    Machine: x86_64
    Using parameter settings in server-side spfile +DATA/cdb03_q9k_sjc/spfile.ora
    System parameters with non-default values:
    processes = 200
    cpu_count = 2
    _enable_NUMA_support = FALSE
    use_large_pages = "ONLY"
    pga_aggregate_limit = 3328M
    【略】
    2023-11-16T01:23:37.847680+00:00
    ============================================================
    NOTE: PatchLevel of this instance 0
    ============================================================
    Starting background process PMON
    2023-11-16T01:23:38.635099+00:00
    PMON started with pid=2, OS id=10322
    【略】

    View full-size slide

  55. Copyright © 2023, Oracle and/or its affiliates
    55
    まとめ

    View full-size slide

  56. • データベースの内部構造
    • メモリー:SGA / PGA
    • プロセス:サーバー・プロセス / バックグラウンド・プロセス
    • ファイル群:データ・ファイル / 制御ファイル / REDOログ・ファイル
    Oracle Databaseの内部構造
    56 Copyright © 2023, Oracle and/or its affiliates
    制御ファイル
    データ・ファイル REDOログ・
    ファイル
    データベース・
    バッファ・キャッシュ
    REDOログ・バッファ 共有プール
    SGA
    ファイル群
    Oracleインスタンス
    Oracleデータベース
    PGA
    サーバー
    プロセス
    PGA
    サーバー
    プロセス
    PGA
    PGA
    サーバー
    プロセス
    サーバー
    プロセス
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス
    PGA
    バックグラウンド・
    プロセス

    View full-size slide