Slide 1

Slide 1 text

Real Application Clusters Oracle Database Technology Night #82 日下部明 日本オラクル株式会社 2024年9月26日

Slide 2

Slide 2 text

Oracle Real Application Clustersアーキテクチャ振り返り • キャッシュ・コヒーレンス • Oracleインスタンス起動/停止時のクラスタ再構成動作 23ai クラスタ再構成動作の改良 • Smooth Reconfiguration 23ai SEQUENCE ORDER設定時の動作の高速化 Real Application Clusters Copyright © 2024, Oracle and/or its affiliates 2

Slide 3

Slide 3 text

Copyright © 2024, Oracle and/or its affiliates Oracle Real Application Clusters アーキテクチャ振り返り 3

Slide 4

Slide 4 text

物理マシン CPUはメイン・メモリーの一部をキャッシュ・メモリーにコピーする キャッシュ・メモリー CPU 1 SGA DRAM (メイン・メモリー) Copyright © 2024, Oracle and/or its affiliates 4

Slide 5

Slide 5 text

キャッシュ型データベース 物理マシン キャッシュ型データベースはストレージの一部をDRAMにコピーする ノード1 (キャッシュ) データベース (ストレージ上のファイル群) DRAM (キャッシュ・メモリー) キャッシュ・メモリー CPU 1 SGA DRAM (メイン・メモリー) Copyright © 2024, Oracle and/or its affiliates 5

Slide 6

Slide 6 text

キャッシュ型データベース ユーザーからは透過的に複数CPUで処理可能 共有メモリー型マルチ・プロセッサ CPUはキャッシュ一貫性を維持する仕組みを持つ ノード1 (キャッシュ) データベース (ストレージ上のファイル群) DRAM (キャッシュ・メモリー) キャッシュ・メモリー キャッシュ・メモリー キャッシュ一貫性 CPU 1 CPU 2 SGA DRAM (メイン・メモリー) Copyright © 2024, Oracle and/or its affiliates 6

Slide 7

Slide 7 text

Oracle Real Application Clusters DRAM (キャッシュ・メモリー) ユーザーからは透過的に複数CPU/複数ノードで処理可能 共有メモリー型マルチ・プロセッサ RACは共有メモリー型マルチ・プロセッサと同じくキャッシュ一貫性を維持 ノード1 (キャッシュ) ノード2 (キャッシュ) データベース (ストレージ上のファイル群) DRAM (キャッシュ・メモリー) キャッシュ一貫性 キャッシュ・メモリー キャッシュ・メモリー キャッシュ一貫性 CPU 1 CPU 2 SGA DRAM (メイン・メモリー) Copyright © 2024, Oracle and/or its affiliates 7

Slide 8

Slide 8 text

キャッシュ・コヒーレンス・プロトコルのディレクトリ領域 • 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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

ディレクトリ・ベースのキャッシュ・コヒーレンス・プロトコル 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

Slide 12

Slide 12 text

ディレクトリ・ベースのキャッシュ・コヒーレンス・プロトコル 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

Slide 13

Slide 13 text

ディレクトリ・ベースのキャッシュ・コヒーレンス・プロトコル 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

Slide 14

Slide 14 text

あるリソース(データ・ブロック等)のキャッシュ状態を管理するインスタンス リソース・マスター・インスタンス 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

Slide 15

Slide 15 text

あるリソース(データ・ブロック等)のキャッシュ状態を管理するインスタンス リソース・マスター・インスタンス Copyright © 2024, Oracle and/or its affiliates SGA SGA SGA GRD GRD GRD データファイル Oracleインスタンス1 Oracleインスタンス2 Oracleインスタンス3 すべてのOracleインスタンスがほぼ均等に リソース・マスターの役割を分担する 15

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

Copyright © 2024, Oracle and/or its affiliates Smooth Reconfiguration データ・ブロックへのアクセス再開時間の短縮 18

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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で判明している

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

アクセスしようとしたリソースのリソース・マスター再構成をオン・デマンドで実行 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

Slide 24

Slide 24 text

アクセスしようとしたリソースのリソース・マスター再構成をオン・デマンドで実行 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

Slide 25

Slide 25 text

アクセスしようとしたリソースのリソース・マスター再構成をオン・デマンドで実行 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で判明している

Slide 26

Slide 26 text

リカバリ不要なデータ・ブロックへのアクセスが可能になる時点が前倒し 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

Slide 27

Slide 27 text

データ・ブロックへのアクセスが可能になる時点が前倒し 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

Slide 28

Slide 28 text

Copyright © 2024, Oracle and/or its affiliates SEQUENCE RACでのSEQUENCE ORDER設定時の動作の高速化 28

Slide 29

Slide 29 text

SEQUENCE NOORDERの挙動 • 1インスタンス内 • RAC複数インスタンス間 SEQUECE ORDERの挙動 • RAC複数インスタンス間 RACでのSEQUENCE ORDER設定時の動作の高速化 Copyright © 2024, Oracle and/or its affiliates 29

Slide 30

Slide 30 text

• SEQUENCE.NEXTVAL を呼び出すとインクリメント(またはデクリメント)される • 複数のセッション間でSEQUENCE.NEXTVALの値は衝突しない(一意を保証) SEQUENCE の挙動 Copyright © 2024, Oracle and/or its affiliates 呼び出し回数 SEQUENCE.NEXTVALの呼び出し 戻り値 単調増加 (または単調減少) 30

Slide 31

Slide 31 text

• 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

Slide 32

Slide 32 text

複数セッション間で一意を保証するために共有メモリー内で排他制御 1インスタンスでのSEQUENCE.NEXTVAL Copyright © 2024, Oracle and/or its affiliates SGA oracle oracle oracle SEQUENCE 共有メモリー Oracleサーバー・プロセス 呼び出し回数 SEQUENCE.NEXTVALの呼び出し 戻り値 単調増加 (または単調減少) Oracleインスタンス1 32

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

複数セッション間で一意を保証するために共有メモリー内で排他制御 デフォルト設定 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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

複数セッション間で一意を保証するために共有メモリー内と共有メモリー間で排他制御 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

Slide 41

Slide 41 text

複数セッション間で一意を保証するために共有メモリー内と共有メモリー間で排他制御 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

Slide 42

Slide 42 text

Oracle Real Application Clustersアーキテクチャ振り返り • キャッシュ・コヒーレンス • Oracleインスタンス起動/停止時のクラスタ再構成動作 23ai クラスタ再構成動作の改良 • Smooth Reconfiguration 23ai SEQUENCE ORDER設定時の動作の高速化 Real Application Clusters Copyright © 2024, Oracle and/or its affiliates 42

Slide 43

Slide 43 text

ありがとうございました。 Copyright © 2024, Oracle and/or its affiliates 43

Slide 44

Slide 44 text

No content