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

Oracle Database 23ai 新機能#4 Real Application Clu...

Oracle Database 23ai 新機能#4 Real Application Clusters

2024年9月26日開催 Oracle Database Technology Night#82 Real Application ClustersのOracle Database 23ai新機能を紹介した資料です。

oracle4engineer

October 02, 2024
Tweet

Video

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. Oracle Real Application Clustersアーキテクチャ振り返り • キャッシュ・コヒーレンス • Oracleインスタンス起動/停止時のクラスタ再構成動作 23ai クラスタ再構成動作の改良

    • Smooth Reconfiguration 23ai SEQUENCE ORDER設定時の動作の高速化 Real Application Clusters Copyright © 2024, Oracle and/or its affiliates 2
  2. Oracle Real Application Clusters DRAM (キャッシュ・メモリー) ユーザーからは透過的に複数CPU/複数ノードで処理可能 共有メモリー型マルチ・プロセッサ RACは共有メモリー型マルチ・プロセッサと同じくキャッシュ一貫性を維持 ノード1

    (キャッシュ) ノード2 (キャッシュ) データベース (ストレージ上のファイル群) DRAM (キャッシュ・メモリー) キャッシュ一貫性 キャッシュ・メモリー キャッシュ・メモリー キャッシュ一貫性 CPU 1 CPU 2 SGA DRAM (メイン・メモリー) Copyright © 2024, Oracle and/or its affiliates 7
  3. キャッシュ・コヒーレンス・プロトコルのディレクトリ領域 • RACはディレクトリ型のキャッシュ・コヒーレンス・プロトコル • そのディレクトリ領域は共有メモリー領域であるSystem Global Areaにある • Global Resource

    Directory (GRD) • メタ・データを大域的に管理する • Global Cache Service (GCS) : データ・ブロックのキャッシュ状態管理 • Global Enqueue Service (GES) : ロック(Enqueue)状態管理 Global Resource Directory (GRD) Copyright © 2024, Oracle and/or its affiliates SGA GRD データベース・バッファ・キャッシュ データ・ブロック本体を格納するキャッシュ領域 Global Resource Directory(GRD) リソースをどのOracleインスタンスがどのロック・モードで キャッシュしているかを格納する領域 8
  4. ディレクトリ・ベースのキャッシュ・コヒーレンス・プロトコル Cache Fusion Copyright © 2024, Oracle and/or its affiliates

    Oracleクライアント SGA oracle Requester (0) キャッシュ・ミス発生 GRD • アクセスしたいデータ・ブロックにキャッシュ・ミスしたインスタンス • データ・ブロックの転送を依頼する(Requester)インスタンス 9
  5. ディレクトリ・ベースのキャッシュ・コヒーレンス・プロトコル Cache Fusion Copyright © 2024, Oracle and/or its affiliates

    Oracleクライアント SGA oracle Requester Master (1)転送依頼 SGA LMS GRD GRD • アクセスしたいデータ・ブロックにキャッシュ・ミスしたインスタンス • データ・ブロックの転送を依頼する(Requester)インスタンス • 該当データブロックのリソース・マスター・インスタンスに(1)転送依頼 • 該当データ・ブロックのキャッシュ状態を管理する(Master)インスタンス 10
  6. ディレクトリ・ベースのキャッシュ・コヒーレンス・プロトコル Cache Fusion Copyright © 2024, Oracle and/or its affiliates

    Oracleクライアント SGA oracle Requester Master (1)転送依頼 SGA LMS GRD GRD SGA Holder LMS GRD • アクセスしたいデータ・ブロックにキャッシュ・ミスしたインスタンス • データ・ブロックの転送を依頼する(Requester)インスタンス • 該当データブロックのリソース・マスター・インスタンスに(1)転送依頼 • 該当データ・ブロックのキャッシュ状態を管理する(Master)インスタンス • 最新のデータ・ブロックを保持するホルダー・インスタンスに(2)転送指示 (2)転送指示 • 該当データ・ブロックの最新状態を保持(Holder)するインスタンス 11
  7. ディレクトリ・ベースのキャッシュ・コヒーレンス・プロトコル Cache Fusion Copyright © 2024, Oracle and/or its affiliates

    Oracleクライアント SGA oracle Requester Master (1)転送依頼 SGA LMS GRD GRD SGA Holder LMS GRD • アクセスしたいデータ・ブロックにキャッシュ・ミスしたインスタンス • データ・ブロックの転送を依頼する(Requester)インスタンス • 該当データブロックのリソース・マスター・インスタンスに(1)転送依頼 • 該当データ・ブロックのキャッシュ状態を管理する(Master)インスタンス • 最新のデータ・ブロックを保持するホルダー・インスタンスに(2)転送指示 • 該当データ・ブロックの最新状態を保持(Holder)するインスタンス • Requesterに該当データ・ブロックを(3)転送 (2)転送指示 (3)転送 12
  8. ディレクトリ・ベースのキャッシュ・コヒーレンス・プロトコル Cache Fusion Copyright © 2024, Oracle and/or its affiliates

    Oracleクライアント SGA oracle Requester Master (1)転送依頼 SGA LMS GRD GRD SGA Holder LMS GRD • アクセスしたいデータ・ブロックにキャッシュ・ミスしたインスタンス • データ・ブロックの転送を依頼する(Requester)インスタンス • 該当データブロックのリソース・マスター・インスタンスに(1)転送依頼 • 該当データ・ブロックのキャッシュ状態を管理する(Master)インスタンス • 最新のデータ・ブロックを保持するホルダー・インスタンスに(2)転送指示 • 該当データ・ブロックの最新状態を保持(Holder)するインスタンス • Requesterに該当データ・ブロックを(3)転送 (2)転送指示 (3)転送 キャッシュ・ミスしたブロックを取得するのに 最大3ホップ 13
  9. あるリソース(データ・ブロック等)のキャッシュ状態を管理するインスタンス リソース・マスター・インスタンス Copyright © 2024, Oracle and/or its affiliates SGA

    SGA SGA GRD GRD GRD Master# = f(DBA) データファイル Oracleインスタンス1 Oracleインスタンス2 Oracleインスタンス3 Data Block Addressからリソース・マスター・インスタンスが一意に定まる 14
  10. あるリソース(データ・ブロック等)のキャッシュ状態を管理するインスタンス リソース・マスター・インスタンス Copyright © 2024, Oracle and/or its affiliates SGA

    SGA SGA GRD GRD GRD データファイル Oracleインスタンス1 Oracleインスタンス2 Oracleインスタンス3 すべてのOracleインスタンスがほぼ均等に リソース・マスターの役割を分担する 15
  11. GRD reconfiguration Oracleインスタンスの起動/停止でリソース・マスターの組み換えが発生 Copyright © 2024, Oracle and/or its affiliates

    SGA SGA SGA GRD GRD GRD Oracleインスタンス1 Oracleインスタンス2 Oracleインスタンス3 起 動 停 止 リソース・マスターの分担 Global Resource Directoryの再構成(reconfiguration) • リソース状態の変化にはリソース・マスターへのアクセスが必要 • そのためreconfiguration中のリソースへのアクセスが待たされる 16
  12. GRD reconfiguration とデータ・ブロックのリカバリ RAC Oracleインスタンスの異常終了からのリカバリ Copyright © 2024, Oracle and/or

    its affiliates SGA SGA SGA GRD GRD GRD Oracleインスタンス1 Oracleインスタンス2 Oracleインスタンス3 停 止 リソース・マスターの分担 リカバリ処理 rollforward ↓ rollback Global Resource Directoryの再構成(reconfiguration) • リソース状態の変化にはリソース・マスターへのアクセスが必要 • そのためreconfiguration中のリソースへのアクセスが待たされる 17
  13. GRD reconfigurationと1st pass log readが完了するまでデータ・ブロックにアクセスできない 21cまでのRAC Oracleインスタンスの異常終了からのリカバリ Copyright © 2024,

    Oracle and/or its affiliates 1st pass log read reconfiguration 21cまで データ・ブロック GRD リカバリ必要なデータ・ブロックの特定 全リソース・マスターの再構成完了 オンラインREDOログ・ファイルを読むと データ・ブロックごとにどのSCNで rollforward完了か特定できる 19
  14. GRD reconfigurationと1st pass log readが完了するまでデータ・ブロックにアクセスできない 21cまでのRAC Oracleインスタンスの異常終了からのリカバリ Copyright © 2024,

    Oracle and/or its affiliates 1st pass log read recovery claim locking reconfiguration 21cまで データ・ブロック GRD リカバリ不要なデータ・ブロックにアクセスできる リカバリ必要なデータ・ブロックの特定 全リソース・マスターの再構成完了 オンラインREDOログ・ファイルを読むと データ・ブロックごとにどのSCNで rollforward完了か特定できる 両方完了するまでデータ・ブロックにアクセスできない • 全リソース・マスターの再構成完了 • リカバリ必要なデータ・ブロックの特定 20
  15. GRD reconfigurationと1st pass log readが完了するまでデータ・ブロックにアクセスできない 21cまでのRAC Oracleインスタンスの異常終了からのリカバリ Copyright © 2024,

    Oracle and/or its affiliates 1st pass log read 2nd pass log read (rollforward) recovery claim locking reconfiguration rollback rollforward on-demand rollback 21cまで データ・ブロック GRD リカバリ必要なデータ・ブロックにアクセスできる リカバリ不要なデータ・ブロックにアクセスできる リカバリ必要なデータ・ブロックの特定 全リソース・マスターの再構成完了 オンラインREDOログ・ファイルを読むと データ・ブロックごとにどのSCNで rollforward完了か特定できる 両方完了するまでデータ・ブロックにアクセスできない • 全リソース・マスターの再構成完了 • リカバリ必要なデータ・ブロックの特定 21 データ・ブロックごとにどのSCNでrollforward完了か 1st pass log readで判明している
  16. アクセスしようとしたリソースのリソース・マスター再構成をオン・デマンドで実行 23ai Smooth Reconfiguration Copyright © 2024, Oracle and/or its

    affiliates 1st pass log read on-demand reconfiguration データ・ブロック GRD 全リソース・マスターの再構成完了 リカバリ必要なデータ・ブロックの特定 オンラインREDOログ・ファイルを読むと データ・ブロックごとにどのSCNで rollforward完了か特定できる 23ai 22
  17. アクセスしようとしたリソースのリソース・マスター再構成をオン・デマンドで実行 23ai Smooth Reconfiguration Copyright © 2024, Oracle and/or its

    affiliates 1st pass log read on-demand reconfiguration recovery claim locking データ・ブロック GRD 全リソース・マスターの再構成完了 リカバリ必要なデータ・ブロックの特定 オンラインREDOログ・ファイルを読むと データ・ブロックごとにどのSCNで rollforward完了か特定できる 23ai を待たずに1st pass log readが完了した時点で recovery claim lockingできる 23
  18. アクセスしようとしたリソースのリソース・マスター再構成をオン・デマンドで実行 23ai Smooth Reconfiguration Copyright © 2024, Oracle and/or its

    affiliates 1st pass log read on-demand reconfiguration recovery claim locking データ・ブロック GRD 全リソース・マスターの再構成完了 リカバリ必要なデータ・ブロックの特定 オンラインREDOログ・ファイルを読むと データ・ブロックごとにどのSCNで rollforward完了か特定できる リカバリ不要なデータ・ブロックにアクセスできる 23ai を待たずに1st pass log readが完了した時点で recovery claim lockingできる 24
  19. アクセスしようとしたリソースのリソース・マスター再構成をオン・デマンドで実行 23ai Smooth Reconfiguration Copyright © 2024, Oracle and/or its

    affiliates 1st pass log read 2nd pass log read (rollforward) on-demand reconfiguration rollback rollforward on-demand rollback recovery claim locking データ・ブロック GRD 全リソース・マスターの再構成完了 リカバリ必要なデータ・ブロックの特定 オンラインREDOログ・ファイルを読むと データ・ブロックごとにどのSCNで rollforward完了か特定できる リカバリ不要なデータ・ブロックにアクセスできる 23ai 25 リカバリ必要なデータ・ブロックにアクセスできる データ・ブロックごとにどのSCNでrollforward完了か 1st pass log readで判明している
  20. リカバリ不要なデータ・ブロックへのアクセスが可能になる時点が前倒し 23ai Smooth Reconfiguration Copyright © 2024, Oracle and/or its

    affiliates 1st pass log read 2nd pass log read (rollforward) on-demand reconfiguration rollback rollforward on-demand rollback 23ai recovery claim locking データ・ブロック GRD 1st pass log read 2nd pass log read (rollforward) recovery claim locking reconfiguration rollback rollforward on-demand rollback 21cまで データ・ブロック GRD リカバリ不要なデータ・ブロックにアクセスできる リカバリ必要なデータ・ブロックにアクセスできる 前倒し 26
  21. データ・ブロックへのアクセスが可能になる時点が前倒し 23ai RAC Smooth Reconfiguration Copyright © 2024, Oracle and/or

    its affiliates 23ai 19c 19c recovery 23ai 19c SQL Exec/sec 処理再開までの時間が1/6 リカバリ完了までの時間が3/4 23ai recovery ※ RAC開発部門によるテスト例 時間 27
  22. SEQUENCE NOORDERの挙動 • 1インスタンス内 • RAC複数インスタンス間 SEQUECE ORDERの挙動 • RAC複数インスタンス間

    RACでのSEQUENCE ORDER設定時の動作の高速化 Copyright © 2024, Oracle and/or its affiliates 29
  23. • SEQUENCE.NEXTVAL を呼び出すとインクリメント(またはデクリメント)される • 複数のセッション間でSEQUENCE.NEXTVALの値は衝突しない(一意を保証) • 内部的に排他制御が行われている • RACにおけるノード間排他制御の性能ペナルティを軽減するためにCACHEとNOORDER/ORDERの属性がある •

    CREATE SEQUENCEしたときのデフォルト設定は CACHE 20 NOORDER CREATE SEQUENCE sq1 [CACHE 20 NOORDER]; SEQUENCE の挙動 Copyright © 2024, Oracle and/or its affiliates 呼び出し回数 SEQUENCE.NEXTVALの呼び出し 戻り値 単調増加 (または単調減少) 31
  24. 複数セッション間で一意を保証するために共有メモリー内で排他制御 1インスタンスでのSEQUENCE.NEXTVAL Copyright © 2024, Oracle and/or its affiliates SGA

    oracle oracle oracle SEQUENCE 共有メモリー Oracleサーバー・プロセス 呼び出し回数 SEQUENCE.NEXTVALの呼び出し 戻り値 単調増加 (または単調減少) Oracleインスタンス1 32
  25. CACHEした値を採番している間は共有メモリー内で排他制御 デフォルト設定 CACHE 20 NOORDERの動作 Copyright © 2024, Oracle and/or

    its affiliates CACHE 20 SEQUENCE.NEXTVAL戻り値 1 20 21 • CACHEブロックを割り当てる排他制御トランザクションが発生する • REDOログに記録される 33
  26. CACHEした値を採番している間は共有メモリー内で排他制御 デフォルト設定 CACHE 20 NOORDERの動作 Copyright © 2024, Oracle and/or

    its affiliates CACHE 20 SEQUENCE.NEXTVAL戻り値 1 20 21 • CACHEブロックを割り当てる排他制御トランザクションが発生する • REDOログに記録される • CACHEした値の区間内でのNEXTVALはSGA内のメモリー上での排他制御 • REDOログに記録されない 34
  27. CACHEした値を採番している間は共有メモリー内で排他制御 デフォルト設定 CACHE 20 NOORDERの動作 Copyright © 2024, Oracle and/or

    its affiliates CACHE 20 CACHE 20 SEQUENCE.NEXTVAL戻り値 1 20 21 40 • CACHEブロックを割り当てる排他制御トランザクションが発生する • REDOログに記録される • CACHEした値の区間内でのNEXTVALはSGA内のメモリー上での排他制御 • REDOログに記録されない • CACHEブロックを割り当てる排他制御トランザクションが発生する • REDOログに記録される 35
  28. 複数セッション間で一意を保証するために共有メモリー内で排他制御 デフォルト設定 CACHE 20 NOORDERの動作 Copyright © 2024, Oracle and/or

    its affiliates SGA oracle oracle oracle SEQUENCE 共有メモリー Oracleサーバー・プロセス 呼び出し回数 SEQUENCE.NEXTVALの呼び出し 戻り値 単調増加 (または単調減少) Oracleインスタンス1 1 20 21 40 CACHE 20 CACHE 20 1.CACHEブロック割り当てトランザクション 2.CACHE内採番 36
  29. 1つのOracleインスタンス内でのみ単調増加、CACHEブロックを割り当てるときのみインスタンス間排他制御 RAC複数インスタンスでのCACHE NORDER設定のSEQUENCE.NEXTVAL Copyright © 2024, Oracle and/or its affiliates

    SGA oracle oracle oracle SEQUENCE 共有メモリー Oracleサーバー・プロセス 呼び出し回数 NORDER設定のSEQUENCE.NEXTVALの呼び出し 戻り値 Oracleインスタンス1内で単調増加(単調減少) 共有メモリー内で排他制御 Oracleインスタンス1 CACHE 20 37
  30. 1つのOracleインスタンス内でのみ単調増加、CACHEブロックを割り当てるときのみインスタンス間排他制御 RAC複数インスタンスでのCACHE NORDER設定のSEQUENCE.NEXTVAL Copyright © 2024, Oracle and/or its affiliates

    SGA oracle oracle oracle SEQUENCE 共有メモリー Oracleサーバー・プロセス 呼び出し回数 NORDER設定のSEQUENCE.NEXTVALの呼び出し 戻り値 Oracleインスタンス1内で単調増加(単調減少) 共有メモリー内で排他制御 SGA oracle oracle oracle SEQUENCE Oracleインスタンス1 Oracleインスタンス2 CACHE 20 38
  31. 1つのOracleインスタンス内でのみ単調増加、CACHEブロックを割り当てるときのみインスタンス間排他制御 RAC複数インスタンスでのCACHE NORDER設定のSEQUENCE.NEXTVAL Copyright © 2024, Oracle and/or its affiliates

    SGA oracle oracle oracle SEQUENCE 共有メモリー Oracleサーバー・プロセス 呼び出し回数 NORDER設定のSEQUENCE.NEXTVALの呼び出し 戻り値 Oracleインスタンス1内で単調増加(単調減少) 共有メモリー内で排他制御 SGA oracle oracle oracle SEQUENCE Oracleインスタンス1 Oracleインスタンス2 CACHE 20 CACHE 20 Oracleインスタンス2内で単調増加(単調減少) 共有メモリー内で排他制御 CACHEブロックを割り当てるときインスタンス間排他制御トランザクション 39
  32. 複数セッション間で一意を保証するために共有メモリー内と共有メモリー間で排他制御 RAC複数インスタンスでのORDER設定のSEQUENCE.NEXTVAL Copyright © 2024, Oracle and/or its affiliates SGA

    oracle oracle oracle SEQUENCE 共有メモリー Oracleサーバー・プロセス 呼び出し回数 ORDER設定のSEQUENCE.NEXTVALの呼び出し 戻り値 SGA oracle oracle oracle SEQUENCE 全Oracleインスタンスにわたって単調増加(単調減少) インスタンス間で排他制御が毎回発生する Oracleインスタンス1 Oracleインスタンス2 40
  33. 複数セッション間で一意を保証するために共有メモリー内と共有メモリー間で排他制御 RAC複数インスタンスでのORDER設定のSEQUENCE.NEXTVALの動作高速化 Copyright © 2024, Oracle and/or its affiliates SGA

    oracle oracle oracle SEQUENCE 共有メモリー Oracleサーバー・プロセス SGA oracle oracle oracle SEQUENCE Oracleインスタンス1 Oracleインスタンス2 23ai 排他制御の内部動作の改良による従来比 シーケンスにアクセスするノード数 待機時間 スループット 1 1/3 ~1.4倍 8 1/2 ~2倍 ※ RAC開発部門によるテスト例 41
  34. Oracle Real Application Clustersアーキテクチャ振り返り • キャッシュ・コヒーレンス • Oracleインスタンス起動/停止時のクラスタ再構成動作 23ai クラスタ再構成動作の改良

    • Smooth Reconfiguration 23ai SEQUENCE ORDER設定時の動作の高速化 Real Application Clusters Copyright © 2024, Oracle and/or its affiliates 42