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

Oracle Database Technology Night #67 Oracle Database High Availability concept

Oracle Database Technology Night #67 Oracle Database High Availability concept

2023年5月25日開催
Oracle Database Technology Night #67
ミッションクリティカルなデータベースに必須となる高可用性の考え方とは

SQLはデータアクセスを抽象化する
Oracle Databaseへのアクセスは「サービス」で抽象化されている
コンピュート・ノードの可用性はクラスタ構成
Real Application Clusters(RAC)はどのノードに接続しても全データにアクセス可能
コネクションを積極的に制御するFast Application NotificationとTransparent Application Continuityで計画停止/非計画停止両方のデータベース・サーバーの停止の影響を極小化する

ストレージの可用性はデータの複製を作成する
ミラー/バックアップ/レプリケーション
Oracle Databaseはなぜストレージの機能でデータを複製せずに自前のソフトウェアでやろうとするのか

oracle4engineer

May 25, 2023
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. Copyright © 2023, Oracle and/or its affiliates 2 「Oracleインスタンス」と「データベース」 「CPU+メモリー」と「ストレージ」をわけて考える

    データベース ストレージ上のファイルの集合 不揮発性デバイスに永続化 (データの本体なのでなくなると困る) データベース・サーバー (Computeノード) ストレージ Oracleインスタンス データベース・サーバー上のOracleプロセスとメモリーの集合 揮発性メモリーに一時的に格納(キャッシュ) (再起動などでなくなることを想定)
  2. Copyright © 2023, Oracle and/or its affiliates 3 高可用性を実装する手段 各階層で冗長性を持たせる

    データベース ストレージ上のファイルの集合 Oracleインスタンス データベース・サーバー上のOracleプロセスとメモリーの集合 揮発性メモリーに一時的に格納(キャッシュ) (再起動などでなくなることを想定) 不揮発性デバイスに永続化 (データの本体なのでなくなると困る) プロセスとメモリーが起動できるOS環境を用意 データベース・サーバーのクラスタ構成 データの複製を用意 ミラー / バックアップ / レプリケーション データベース・サーバー (Computeノード) ストレージ 後半 前半
  3. Relational DatabaseとSQLのコンセプト • データ操作の抽象化 • Converged Database Oracleクライアントは「サービス」に接続する • サービスという抽象概念が物理構成を隠蔽

    Real Application Clustersアーキテクチャ • Shared Everything データベース・コネクションの制御 • Fast Application Notification / 高速アプリケーション通知 • (Transparent) Application Continuity / (透過的)アプリケーション・コンティニュイティ Oracle Database高可用性アーキテクチャ - コンピュート・ノードの可用性 Copyright © 2023, Oracle and/or its affiliates 5
  4. Copyright © 2023, Oracle and/or its affiliates 6 入力と出力の対応関係の定義 SQL

    出力 SELECT ename, dname, job, empno, hiredate, loc FROM emp, dept WHERE emp.deptno = dept.deptno ORDER BY ename 入力 論理データ構造
  5. Copyright © 2023, Oracle and/or its affiliates 7 入力と出力の対応関係の定義 SQL

    出力 SELECT ename, dname, job, empno, hiredate, loc FROM emp, dept WHERE emp.deptno = dept.deptno ORDER BY ename 入力 論理データ構造 何を取り出すかの定義であって、どうやって 導出するかのアルゴリズムは記述されていない
  6. Copyright © 2023, Oracle and/or its affiliates 8 インターフェースとアルゴリズム実装の分離 SQLの結果集合を導出するアルゴリズムは自動生成される

    入力 出力 対応関係の定義 インターフェース SQL実行計画 SQL実行計画探索 アルゴリズム 全体最適化問題 値の分布統計 物理データ構造 ハードウェア・リソース 論理データ構造
  7. Copyright © 2023, Oracle and/or its affiliates 9 入力 論理データ構造

    インターフェースとアルゴリズム実装の分離 SQLの結果集合を導出するアルゴリズムは自動生成される 出力 対応関係の定義 インターフェース SQL実行計画 SQL実行計画探索 アルゴリズム 全体最適化問題 値の分布統計 物理データ構造 ハードウェア・リソース アプリケーション開発で 注力すべきところ • 論理データ構造 • クエリー
  8. Copyright © 2023, Oracle and/or its affiliates 10 インターフェースとアルゴリズム実装の分離 データベース・エンジン実装が目指すところ

    出力 対応関係の定義 インターフェース SQL実行計画 SQL実行計画探索 アルゴリズム 全体最適化問題 値の分布統計 物理データ構造 ハードウェア・リソース 入力 論理データ構造 論理データ構造の定義と インターフェース(SQL)を変更せずに アルゴリズム実装が改良される
  9. Copyright © 2023, Oracle and/or its affiliates 11 リレーショナル・モデルの操作からはじまったが、他のモデルでも使用されるようになった SQL

    - 抽象化されたデータ操作 データ・モデル • Relational • Text Search • Object Relational • XML • JSON • Spatial • Network • ... ワークロード • オンライン・トランザクション • 分析・集計 • 機械学習 • ...
  10. Copyright © 2023, Oracle and/or its affiliates 12 リレーショナル・モデルの操作からはじまったが、他のモデルでも使用されるようになった SQL

    - 抽象化されたデータ操作 データ・モデル • Relational • Text Search • Object Relational • XML • JSON • Spatial • Network • ... ワークロード • オンライン・トランザクション • 分析・集計 • 機械学習 • ... SQLは抽象データ操作 ↓ 異なる種類のデータ・モデルを操作する実装 異なる種類のワークロードに最適化する実装 ↓ Converged Database
  11. Copyright © 2023, Oracle and/or its affiliates 13 抽象化されたデータ操作 論理データ構造

    user-Bの所有するスキーマ service-A SQL どういうデータを取り出したいかの記述 (「どうやって」の手続き的アルゴリズムの記述ではない) CONNECT user-B/password@host:port/service-A データベース・クライアントは「サービス」に接続する サービス データベースのワークロードを抽象化した概念 「サービス」の解説 Oracle Database Technology Night #52 Oracle Databaseのネットワーク接続
  12. Copyright © 2023, Oracle and/or its affiliates 14 抽象化されたデータ操作 SQL

    どういうデータを取り出したいかの記述 (「どうやって」の手続き的アルゴリズムの記述ではない) CONNECT user-B/password@host:port/service-A データベース・クライアントは「サービス」に接続する サービス データベースのワークロードを抽象化した概念 service-A データベース ストレージ上のファイルの集合 Oracleインスタンス データベース・サーバー上のOracleプロセスとメモリーの集合
  13. Copyright © 2023, Oracle and/or its affiliates 15 抽象化されたデータ操作 SQL

    どういうデータを取り出したいかの記述 (「どうやって」の手続き的アルゴリズムの記述ではない) CONNECT user-B/password@host:port/service-A データベース・クライアントは「サービス」に接続する サービス データベースのワークロードを抽象化した概念 service-A データベース ストレージ上のファイルの集合 Oracleインスタンス データベース・サーバー上のOracleプロセスとメモリーの集合 データベース・クライアントは「サービス」に接続 ↓ サービス(抽象)がデータベース・サーバー側の物理構成(具象)を隠蔽
  14. Copyright © 2023, Oracle and/or its affiliates 16 SQL どういうデータを取り出したいかの記述

    (「どうやって」の手続き的アルゴリズムの記述ではない) CONNECT user-B/password@host:port/service-A データベース・クライアントは「サービス」に接続する サービス データベースのワークロードを抽象化した概念 service-A データベース ストレージ上のファイルの集合 Oracleインスタンス データベース・サーバー上のOracleプロセスとメモリーの集合 Maximum Availability Architecture • サービスが具象レイヤーの構成を隠蔽 • サービスへのアクセスを継続 Maximum Availability Architecture (MAA) 抽象化されたデータ操作を計画停止/非計画停止どちらがあっても継続する
  15. Copyright © 2023, Oracle and/or its affiliates 17 高可用性を実装する手段 各階層で冗長性を持たせる

    データベース ストレージ上のファイルの集合 Oracleインスタンス データベース・サーバー上のOracleプロセスとメモリーの集合 揮発性メモリーに一時的に格納(キャッシュ) (再起動などでなくなることを想定) 不揮発性デバイスに永続化 (データの本体なのでなくなると困る) プロセスとメモリーが起動できるOS環境を用意 データベース・サーバーのクラスタ構成 データの複製を用意 ミラー / バックアップ / レプリケーション データベース・サーバー (Computeノード) ストレージ
  16. Copyright © 2023, Oracle and/or its affiliates 18 文脈によって意味が異なる用語 サービス

    / インスタンス / データベース データベース・サーバー (Computeノード) ストレージ サービス クラウドが用意する機能のメニュー データベース データの集合 インスタンス サービスを実体化したもの service Oracleインスタンス データベース・サーバー上の Oracleプロセスとメモリーの集合 データベース ストレージ上のファイルの集合 サービス データベースのワークロードを抽 象化した概念 Oracle Databaseの文脈 クラウドの文脈 例: Oracle Base Database Service
  17. Copyright © 2023, Oracle and/or its affiliates 20 全ノードが全データにアクセス可能 RACの物理構成

    ストレージ・ネットワーク インターコネクト・ネットワーク パブリック・ネットワーク データベース・クライアント クライアントとの通信 ストレージ・ノード • ストレージ・デバイス コンピュート・ノード • CPU+メモリー • 全ノードが対等な関係 コンピュート・ノード間の通信 全コンピュート・ノードは全ストレージにアクセス可能
  18. Copyright © 2023, Oracle and/or its affiliates 21 ユーザーからは透過的に複数CPUで処理可能 共有メモリー型マルチ・プロセッサ

    RACは共有メモリー型マルチ・プロセッサと同じくキャッシュ一貫性を維持 キャッシュ・メモリー キャッシュ・メモリー キャッシュ一貫性 CPU 1 CPU 2 SGA DRAM (メイン・メモリー)
  19. Copyright © 2023, Oracle and/or its affiliates 22 Oracle Real

    Application Clusters DRAM (キャッシュ・メモリー) ユーザーからは透過的に複数CPUで処理可能 共有メモリー型マルチ・プロセッサ RACは共有メモリー型マルチ・プロセッサと同じくキャッシュ一貫性を維持 ノード1 (キャッシュ) ノード2 (キャッシュ) データベース (ストレージ上のファイル群) DRAM (キャッシュ・メモリー) キャッシュ一貫性 キャッシュ・メモリー キャッシュ・メモリー キャッシュ一貫性 CPU 1 CPU 2 SGA DRAM (メイン・メモリー)
  20. Copyright © 2023, Oracle and/or its affiliates 23 データ・モデル(スキーマ構造)、トランザクション分離レベルの挙動も同じ クライアントはどのノードに接続してもシングル・インスタンス構成と同じアクセスが可能

    ストレージ・ノード • ストレージ・デバイス コンピュート・ノード • CPU+メモリー • 全ノードが対等な関係 インターコネクト・ネットワーク コンピュート・ノード間の通信 全コンピュート・ノードは全ストレージにアクセス可能 パブリック・ネットワーク データベース・クライアント クライアントとの通信 ストレージ・ネットワーク メモリー一貫性を全自 動で維持 oracle クライアントが接続した ノードのプロセスがSQL 処理
  21. Copyright © 2023, Oracle and/or its affiliates 24 どのノードからも全データに同じようにアクセス可能 -

    クライアントから見るとシングル・インスタンス構成と同じ RAC におけるデータアクセス データベース・クライアント クライアントはどのサーバーに接続しても 同じデータの見え方、シングルインスタンス と同じトランザクション分離レベル サーバー・ノード間のメモリー 一貫性を全自動で維持 シングル・インスタンス構成と同じアクセスが可能 • データ・モデル(スキーマ構造)、トランザクション分離レベルの挙動も同じ 並列実行プロセスがデータを 分割して並列処理 PX PX PX PX PX PX データベース・クライアント 全ノードを使用した1つのSQL処理の並列化が可能 • アプリからは巨大な一つのデータベースインスタンスに見える
  22. Copyright © 2023, Oracle and/or its affiliates 25 データ・モデルとクラスタ・ノード構成が分離されている 現実にあるほとんどのアプリケーション・スキーマは完全には

    パーティショニングできない。 RACはデータの配置がデータベース・サーバーと結びつい ていない。 シェアード・ナッシング・クラスタはデータがパーティショニング できることを暗黙の前提にしている。 →ユーザーが自分のデータしか操作しない局所参照性 パーティショニングできないアプリケーション・スキーマでも動 作できるようにしたのが”Real Application” Clusters Oracle Real Application Clusters データ・モデル/SQL 抽象 実装 データ構造/クラスタ構成
  23. Copyright © 2023, Oracle and/or its affiliates 26 Oracle Autonomous

    Database Exadataをベースにして高度な抽象化がなされた自律型データベース・サービス Exadata上のプラガブル・データベース • 指定する変数はOCPU数とストレージ容量のみ • RACノード数はユーザーが指定する変数ではない Oracle Computing Unit (OCPU) • スケールアップかつスケールアウトを抽象化 • OCPU数に比例したCPU時間 • OCPU数に比例したメモリー容量 • OCPU数に比例したストレージ性能 • 1 OCPUは1CPU物理コアに相当 • 無停止でOCPU数(リソース割り当て)を変更 service
  24. Copyright © 2023, Oracle and/or its affiliates 27 Oracle Autonomous

    Database Oracle Computing Unit(OCPU) の1変数にハードウェア・リソースを抽象化 DBサーバー ストレージ Oracle Computing Unit (OCPU) • 1 OCPUは1CPU物理コアに相当 • スケール・アップかつスケール・アウトを抽象化 • OCPU数に比例したCPU時間 • OCPU数に比例したメモリー容量 • OCPU数に比例したストレージ性能 • 無停止でOCPU数(リソース割り当て)を変更 CPU メモリー Autonomous Databaseインスタンス • 1つのプラガブル・データベースのこと • OCPUに抽象化されたリソース割り当て • サービスでリソース制御 スケール・アップ スケール・アウト サービス • データベースのワークロードを抽象化 service
  25. Copyright © 2023, Oracle and/or its affiliates 28 サーバーがクラッシュしてもクライアントは別ノードに接続すると全データにアクセス可能 クライアントはどのノードに接続してもシングル・インスタンス構成と同じアクセスが可能

    ストレージ・ノード • ストレージ・デバイス コンピュート・ノード • CPU+メモリー • 全ノードが対等な関係 全コンピュート・ノードは全ストレージにアクセス可能 パブリック・ネットワーク データベース・クライアント クライアントとの通信 ストレージ・ネットワーク メモリー一貫性を全自 動で維持 oracle クライアントが接続した ノードのプロセスがSQL 処理 oracle
  26. 一時的にパッチ状態が異なるOracleバイナリでRACを稼働させられる RACはローリング・パッチ適用可能 - 全体としてはデータベース・アクセスを維持 Copyright © 2023, Oracle and/or its

    affiliates 29 RU 19.17 RU 19.17 RU 19.17 ノード 1 ノード 2 ノード 3 RU: Release Update 3か月ごとに提供される集積パッチ shutdown (1) ノード1にパッチを適用するためプロセス停止 他のノードがデータベース・アクセスを維持 RU 19.18 RU 19.17 RU 19.17 ノード 1 ノード 2 ノード 3 (2) ノード1にパッチを適用したバイナリでプロセス起動 一時的にパッチ状態が異なるバイナリで稼働可能 startup
  27. Fast Application Notification (FAN) と Transparent Application Continuity (TAC) データベース・コネクションを積極的に制御する

    Copyright © 2023, Oracle and/or its affiliates 31 RU 19.17 RU 19.17 RU 19.17 ノード 1 ノード 2 ノード 3 shutdown Fast Application Notification コネクション・プールが物理コネクションを制御する • 計画停止 - Oracleインスタンスshutdown前に物理 コネクションをアプリケーションから返却されたら切断す る • 非計画停止 - コネクション・プールから該当物理コネク ションを即時破棄 • サービス起動 - 物理コネクションのリバランス Transparent Application Continuity 接続ドライバによる自動再実行 • 非計画停止 - 物理コネクションが異常切断されたら 自動再接続して自動再実行 startup Connection Pool
  28. Copyright © 2023, Oracle and/or its affiliates 32 Fast Application

    Notification: FAN / 高速アプリケーション通知 Oracle ClusterwareからOracleクライアントにメッセージ通知する仕組み Fast Application Notification (FAN) • Oracle Clusterwareからクライアントにイベント通知 Oracle製コネクション・プールがFAN対応 • Universal Connection Pool for Java (UCP) • Oracle Call Interface(OCI) Session Pool • ODP.NET Unmanaged Driver Fast Connection Failover • DOWNイベントによるコネクション破棄 • 計画停止/非計画停止を区別 • UPイベントによるコネクション作成(UCP) Runtime Connection Load Balancing • リクエストを発行するOracleインスタンスを制御 • 物理コネクションのリバランス Connection Pool ノード 1 ノード 2 アプリケーション・サーバー Clusterware Clusterware FANイベント FANイベント service service
  29. Copyright © 2023, Oracle and/or its affiliates 33 Oracleインスタンスの異常停止を検出したらそのインスタンスとの物理コネクションを即時破棄 1.

    OS即時停止 2. 物理コネクションの破棄 FAN対応クライアントと組み合わせたOracleインスタンスの非計画停止 Oracle instance1 Oracle instance2 service1 service1 Oracleクライアント Clusterware Clusterware FANイベント Oracle instance1 Oracle instance2 service1 Clusterware Clusterware Pool Oracleクライアント (3) インスタンス2との物理コ ネクションを即時破棄 (2) DOWN通知 Pool TCPタイムアウトを待たない (1) 異常終了
  30. Copyright © 2023, Oracle and/or its affiliates 34 コマンドでサービス停止が発生する場合プールに論理コネクションが返却されてから物理コネクションを切断 1.

    srvctl relocate service発行 2. 物理コネクションの新規接続と排出 FAN対応クライアントと組み合わせたOracleインスタンスの計画停止 Oracle instance1 Oracle instance2 service1 service1 Oracleクライアント Clusterware Clusterware FANイベント Pool (2) UP通知 Oracle instance1 Oracle instance2 service1 Clusterware Clusterware Pool Oracleクライアント (6) インスタンス1との物理 コネクションはアプリケー ションがプールに返却し たら切断 (1) サービス起動 (4) DOWN通知 (5) 新規の物理コネク ションはインスタンス 2に接続される (3) サービス停止
  31. Copyright © 2023, Oracle and/or its affiliates 35 物理コネクションが異常切断されても更新トランザクションを安全に自動再実行 アプリケーション・コンティニュイティ対応接続ドライバは

    Oracleサーバーに発行した処理を記憶している。 Oracle接続ドライバがセッション切断を検出すると (1) 再接続 (2) トランザクション状態の確認 (3) トランザクション再実行 まで自動で行う。 アプリケーションから見るとエラーを検出せずにトランザ クションが完了する。 Oracle製コネクション・プールからコネクションを取り出 してCOMMITしたら返却するコードならコード改修は (ほぼ)不要。 (Transparent) Application Continuity (透過的)アプリケーション・コンティニュイティ (1) 再接続 (2) 状態確認 (3) 再実行 Oracleクライアント RAC SELECT INSERT UPDATE COMMIT Application Continuityの解説 Oracle Database Technology Night #39 アプリケーション・コンティニュイティ
  32. Copyright © 2023, Oracle and/or its affiliates 36 抽象化されたデータ操作 SQL

    どういうデータを取り出したいかの記述 (「どうやって」の手続き的アルゴリズムの記述ではない) CONNECT user-B/password@host:port/service-A データベース・クライアントは「サービス」に接続する サービス データベースのワークロードを抽象化した概念 service-A データベース ストレージ上のファイルの集合 Oracleインスタンス データベース・サーバー上のOracleプロセスとメモリーの集合 Oracleインスタンスの可用性 • RAC: 全ノードが全データにアクセス可能 • FAN & TAC: 計画停止と非計画停止両方でコネクションを制御
  33. ストレージ上のデータの複製手段 • ミラー • バックアップ • レプリケーション • (スナップショット) Oracle

    Database 高可用性アーキテクチャ - データ保護 Copyright © 2023, Oracle and/or its affiliates 38 Oracle Databaseはなぜ自前で複製しようとするのか • ミラー ASM • バックアップ RMAN • (スナップショット) Flashback • レプリケーション (Active) Data Guard • バックアップ+レプリケーション Zero Data Loss Recovery Appliance
  34. 「バックアップ」という言葉はあいまいに使われている • 「複製されたデータ」を指す • 「データの複製を作る操作」を指す ここではバックアップとは「データの複製を作る操作」を指す データを複製する手段 • バックアップ: バックアップ操作をした時点のデータの複製

    • ミラー: 継続的なデータの複製 (ローカル・ストレージ) • レプリケーション: 継続的なデータの複製 (リモート・ストレージ) • (スナップショット) データの複製手段 Copyright © 2023, Oracle and/or its affiliates 39
  35. ミラー/レプリケーション/バックアップ ストレージ機能でのデータの複製 Copyright © 2023, Oracle and/or its affiliates 40

    ストレージ・コントローラ ストレージ・コントローラ リモート・レプリケーション (レプリケーション) • 別のストレージ筐体に書き込みを複製 RAID (ミラー) • 複数のストレージ・デバイスに書き込みを複製 スプリット・ミラー (バックアップ) • ミラーを一時的に解除することで その時点のストレージの状態を保持 データ
  36. スナップショット - 過去の部分更新を保持して全体イメージを合成 Copyright © 2023, Oracle and/or its affiliates

    41 最新データ 過去データ 更新前の過去データを複製して保持 最新データと過去データを合成 アプリケーションに見せる仮想ストレージ・イメージ 物理ストレージ 最新イメージ 過去イメージ
  37. 物理ストレージが破損すると全イメージが破損する - バックアップに非ず スナップショット - 過去の部分更新を保持して全体イメージを合成 Copyright © 2023, Oracle

    and/or its affiliates 42 最新データ 過去データ 更新前の過去データを複製して保持 最新イメージ 過去イメージ 最新データと過去データを合成 アプリケーションに見せる仮想ストレージ・イメージ 物理ストレージ
  38. 書き込むデータが意味的に正常なのかはストレージは判別できないのでデータ破損が伝搬する ストレージ機能でのデータの複製 Copyright © 2023, Oracle and/or its affiliates 43

    ストレージ・コントローラ ストレージ・コントローラ リモート・レプリケーション (レプリケーション) • 別のストレージ筐体に書き込みを複製 RAID (ミラー) • 複数のストレージ・デバイスに書き込みを複製 スプリット・ミラー (バックアップ) • ミラーを一時的に解除することで その時点のストレージの状態を保持 破損データ
  39. Oracle Databaseの歴史はデータ破損との闘い Oracle Databaseはなぜデータの複製をOracleソフトウェアでやろうとするのか Copyright © 2023, Oracle and/or its

    affiliates 46 Oracleインスタンス 破損検査 ↓ 破損伝搬の抑止 ↓ 自動修復 実装バージョン 機能名 機能 Oracle8 RMAN バックアップ・リストア・リカバリ Oracle9i Database Data Guard REDO情報を別サーバーに転送 Oracle Database 10g ASM ストレージの冗長化+自動修復 Oracle Database 11g Exadata Oracle専用ストレージがデータ構造を検査 Oracle Database 11g Active Data Guard Data Guard+自動修復 (Oracle Database 12c) ZDLRA RMANバックアップ+REDO転送を備えたOracle 専用バックアップ・アプライアンス • データ構造がOracle Databaseとして正しいかを検査できるのは Oracle自身しかない • ある階層から別の階層に移動させるとき検査される • 破損が次の階層に伝搬しない • データの複製がある場合は自動修復を試みる
  40. Oracle Database専用のクラスタ・ボリューム・マネージャ兼クラスタ・ファイルシステム Oracle Automatic Storage Management Copyright © 2023, Oracle

    and/or its affiliates 48 デバイス・ ファイル ファイル構造 Oracle構造 POSIXファイルシステム ボリューム・マネージャ ファイルシステム 表、索引 表領域 ファイル ASM ASM 表、索引 表領域 ボリューム・マネージャ ファイルシステム ファイル 管理者から見た操作の階層はどちらもディレクトリ・ツリーとファイルで同じ RAIDとは異なる実装で • ストレージ・デバイスの障害に対処可能 • データ破損を検出すると自動修復 「ASM」の解説 Oracle Database Technology Night #40 Oracle Databaseのデータ・プロテクション詳解 後半
  41. どのファイルも冗長化して障害に対処する • ファイルを分割しミラーを用意する。 • ミラーは異なる障害グループ(FAILGROUP)のストレージ・デバイスに配置する。 • ストレージ・デバイスが増減しても、再配置して冗長構成を維持する。 ASMのファイル配置コンセプト2 Copyright ©

    2023, Oracle and/or its affiliates 50 ASM上のファイル extent extent extent FAILGROUP 1 FAILGROUP 2 FAILGROUP 3 FAILGROUP n プライマリ・エクステント セカンダリ・エクステント セカンダリ・エクステント FAILGROUP ≒ 1つのストレージ筐体 ASMエクステント 1つのFAILGROUPが停止してもそのエクステントのミラーが他のFAILGROUPにある
  42. Stripe And Mirror Everything (S.A.M.E.) ファイルを分割し、 • すべてのストレージ・デバイスに均等に分散する ⇒Stripe •

    ミラーは異なる障害グループ(FAILGROUP)のストレージ・デバイスに配置する ⇒Mirror そしてストレージ・デバイスが増減してもリバランスすることでStripeとMirrorを維持する ASMのファイル配置コンセプト Copyright © 2023, Oracle and/or its affiliates 51 1 2 3 4 3 6 1 7 5 6 7 8 4 2 8 5 異なるデバイスに ミラーリング すべてのデバイスにストライピング プライマリ・エクステント ASM上のファイル extent extent extent セカンダリ・エクステント ASMエクステント
  43. ASMファイルの破損が検出されるとセカンダリ・エクステントから読み取って処理継続および自動修復 ファイルの破損検出と自動修復 Copyright © 2023, Oracle and/or its affiliates 53

    oracle Oracleサーバー・プロセス SGA 1. プライマリ・エクステントの 破損を検出した 2. セカンダリ・エクステントから読 み取りエラーを返さず処理継続 1 2 3 3 1 1 プライマリ・ エクステント セカンダリ・ エクステント 3. 正常エクステントのデータで 破損個所を修復 ASMディスク・グループ
  44. 「Oracleインスタンス」と「データベース」 Copyright © 2023, Oracle and/or its affiliates 55 アーカイブREDOログ・ファイル

    • オンラインREDOログ・ファイルの バックアップ オンラインREDOログ・ファイル • 更新の履歴 • 1本書き込み完了したら複製 データファイル • 表データの本体 Oracleインスタンス データベース・サーバー上の プロセスとメモリーの集合 データベース ストレージ上のファイルの集合
  45. Copyright © 2023, Oracle and/or its affiliates 56 Oracleサーバー・プロセスがメモリを更新しバックグラウンド・プロセスがファイルに永続化 Oracle

    Databaseアーキテクチャ REDOログ・バッファ (REDOレコード用の書き込みバッファ・メモリー) オンラインREDOログ・ファイル LGWR oracle oracle Oracleサーバー・プロセス ログ・ライター・プロセス データベース・バッファ・キャッシュ (データブロック用のキャッシュ・メモリー) DBWn データベース・ライター・プロセス データファイル SGA oracle Oracleサーバー・プロセスによる SQL処理はメモリーを更新 バックグラウンド・プロセスが ファイルに永続化 OS REDO
  46. データファイルのコピーとREDOログの適用 バックアップおよびリストア・リカバリ Copyright © 2023, Oracle and/or its affiliates 57

    REDOログ・ファイル • 更新の履歴 データファイル • データの本体 用語 意味 バックアップ (主にデータファイル) ファイルのコピーを取得すること リストア バックアップ・ファイルから書き戻すこと リカバリ REDOログをデータ・ブロックに適用すること Oracle Databaseではリストアとリカバリはセット REDOログ・ファイルの情報でデータファイルの内容を破損直前までもどす
  47. バックアップおよびリストア・リカバリ Copyright © 2023, Oracle and/or its affiliates 58 INSERT

    UPDATE DELETE オンラインREDOログ 時間 データベースの更新はオンラインREDOログ・ ファイルに記録される。 時間
  48. バックアップおよびリストア・リカバリ Copyright © 2023, Oracle and/or its affiliates 59 INSERT

    UPDATE DELETE オンラインREDOログ 時間 アーカイブ・REDOログ オンラインREDOログ・ファイルは固定長循環 型なので、書き込み完了したファイルはアーカ イブREDOログ・ファイルにコピーされる。 時間
  49. バックアップおよびリストア・リカバリ Copyright © 2023, Oracle and/or its affiliates 60 INSERT

    UPDATE DELETE 時間 時刻t0 バックアップ (データファイルのコピー) 時間 時刻t0に取得したデータ・ファイルのバックアッ プには最新でも時刻t0までの情報しか含ま れていない。 INSERT UPDATE DELETE
  50. バックアップおよびリストア・リカバリ Copyright © 2023, Oracle and/or its affiliates 61 INSERT

    UPDATE DELETE オンラインREDOログ アーカイブREDOログ 時間 時刻t0 時刻t1 INSERT UPDATE DELETE INSERT UPDATE DELETE バックアップ (データファイルのコピー) 時間 時刻t1にデータファイルの破損を検出した。
  51. バックアップおよびリストア・リカバリ Copyright © 2023, Oracle and/or its affiliates 62 INSERT

    UPDATE DELETE オンラインREDOログ アーカイブREDOログ 時間 時刻t0 時刻t1 データファイル障害発生 INSERT UPDATE DELETE INSERT UPDATE DELETE バックアップ (データファイルのコピー) リストア (データファイルの書き戻し) 時刻t0に取得したデータ・ファイルのバックアッ プには最新でも時刻t0までの情報しか含ま れていない。
  52. バックアップおよびリストア・リカバリ Copyright © 2023, Oracle and/or its affiliates 63 INSERT

    UPDATE DELETE オンラインREDOログ アーカイブREDOログ 時間 時刻t0 時刻t1 データファイル障害発生 INSERT UPDATE DELETE INSERT UPDATE DELETE リカバリ (REDOログの適用) バックアップ (データファイルのコピー) リストア (データファイルの書き戻し) データファイルの状態が 時刻t1まで復元される。
  53. 推奨はRMAN • Oracle付属のバックアップ・ツール • Oracleサーバー・プロセスがデータベースのファイルにア クセスする仕組みを使ってファイルをコピー • Oracleインスタンス管理下で行われる操作 • RMAN以外の方法でコピーするすべての手法

    • Oracleインスタンスがコピーを関知しない • OSのファイル・コピー・コマンド • ストレージ機能のスナップショットやスプリット・ミラー Oracle Databaseの2種類の物理バックアップ手法 Copyright © 2023, Oracle and/or its affiliates 65 oracle rman データファイル (コピー元) バックアップ (コピー先) スナップショット スプリット・ミラー Recovery Manager (RMAN) ユーザー管理バックアップ RMANクライアント Oracleサーバー・ プロセス コピー元ボリューム バックアップ・ボリューム
  54. 確実にリカバリするための"Recovery" Manager • コピー時に破損検査が行われる • 破損が伝搬しない • バックアップしたファイルの破損検査も可能 • 破損領域がそのままコピーされる

    • バックアップも破損している場合がある • 誤った単位でボリュームをコピーしているとリカバリ時に なってはじめてリカバリ不能に気付く ファイル・コピー中のブロック破損検査 Copyright © 2023, Oracle and/or its affiliates 66 oracle rman データファイル (コピー元) バックアップ (コピー先) スナップショット スプリット・ミラー Recovery Manager (RMAN) ユーザー管理バックアップ RMANクライアント Oracleサーバー・ プロセス コピー元ボリューム バックアップ・ボリューム
  55. データベース本体の破損に備えるためのバックアップ データベース本体とバックアップ用ストレージは分ける Copyright © 2023, Oracle and/or its affiliates 67

    オンラインREDOログ・ファイル • 更新の履歴 データファイル • データの本体 アーカイブREDOログ・ファイル • オンラインREDOログ・ファイルの バックアップ データファイル • データファイルの バックアップ データベース本体用ストレージ バックアップ用ストレージ データベース・サーバー ストレージ・ネットワーク
  56. 最新の更新情報はオンラインREDOログ・ファイルにしかない Copyright © 2023, Oracle and/or its affiliates 68 アーカイブREDOログ・ファイル

    • オンラインREDOログ・ファイルの バックアップ データファイル • 表データの本体 Oracleインスタンス データベース・サーバー上の プロセスとメモリーの集合 データベース ストレージ上のファイルの集合 最新の更新情報 オンラインREDOログ・ファイル • 更新の履歴 • 1本書き込み完了したら複製
  57. 書き込み真っ最中のオンラインREDOログ・ファイルは複製できない 「バックアップ」操作で複製できる範囲 Copyright © 2023, Oracle and/or its affiliates 69

    Oracleインスタンス データベース・サーバー上の プロセスとメモリーの集合 データベース ストレージ上のファイルの集合 「バックアップ」操作で複製できる範囲 オンラインREDOログ・ファイル • 更新の履歴 • 1本分書き込み完了したら複製 アーカイブREDOログ・ファイル • オンラインREDOログ・ファイルの バックアップ データファイル • 表データの本体 追記中のオンラインREDOログ・ ファイルは複製できない
  58. データベース本体用ストレージ オンラインREDOログ・ファイルが格納されているストレージが全損すると Copyright © 2023, Oracle and/or its affiliates 70

    INSERT UPDATE DELETE オンラインREDOログ アーカイブREDOログ 時間 時刻t0 時刻t1 ストレージ障害発生 INSERT UPDATE DELETE INSERT UPDATE DELETE リカバリ (REDOログの適用) バックアップ (データファイルのコピー) リストア (データファイルの書き戻し) 最新のトランザクション 情報を失う
  59. プライマリ・データベース用ストレージが全損しても最新のREDO情報が別の場所にある REDO情報が生成されたら即時に別のサーバーに転送:(Active) Data Guard Copyright © 2023, Oracle and/or its

    affiliates 72 オンラインREDOログ・ファイル • 更新の履歴 プライマリ・データベース用ストレージ スタンバイ・データベース用ストレージ プライマリ・データベース・サーバー ネットワーク メモリー(REDOログ・バッファ)上 にREDO情報が生成されたら 転送開始 スタンバイREDOログ・ファイル • プライマリのREDO情報の受信 REDOログ・バッファ スタンバイ・データベース・サーバー
  60. プライマリ・データベースのREDO情報でデータファイルをリカバリし続ける (Active) Data Guard:プライマリ・データベースと全く同じ内容になる Copyright © 2023, Oracle and/or its

    affiliates 73 オンラインREDOログ・ファイル • 更新の履歴 プライマリ・データベース用ストレージ スタンバイ・データベース用ストレージ プライマリ・データベース・サーバー ネットワーク リカバリ継続 スタンバイ・データベース・サーバー REDOログ・バッファ データファイル プライマリと同一内容
  61. (Active) Data Guard:リモートでリストア&リカバリを継続 Copyright © 2023, Oracle and/or its affiliates

    74 INSERT UPDATE DELETE オンラインREDOログ 時間 時刻t0 INSERT UPDATE DELETE INSERT UPDATE DELETE バックアップ (データファイルのコピー) リストア (データファイルの書き戻し) スタンバイ・データベース プライマリ・データベース REDO転送 リカバリ (REDOログの適用) 最新のトランザクション 情報が複製される REDO転送
  62. データ・ブロックの破損が検出されると対向データベースから正常ブロックを取り寄せてリカバリ Active Data Guard自動ブロック・メディア・リカバリ オンライン REDOログ・ ファイル oracle Oracleサーバー・プロセス データファイル

    SGA 1. データ・ブロックの破損を 検出した データベース・ バッファ・ キャッシュ データファイル SGA プライマリ・データベース スタンバイ・データベース 2. 該当データ・ブロックを 取り寄せる 3. リカバリ 4. SQL処理は エラーなく継続 ※スタンバイ・データベースでブロック破損が検出されるとプライマリ・ データベースから該当ブロックを取り寄せてリカバリ Copyright © 2023, Oracle and/or its affiliates 75
  63. ファイルの破損ではなく、SQLが正常に実行されていった後での話 ポイント・イン・タイム・リカバリ 1. 該当データファイルのフル・バックアップからリストアする。 2. リカバリを途中で止める。 ⇒データファイルのサイズが大きいとリストアにかなり時間がかかる。 Flashback 1. 変更前データ・ブロック(UNDO表領域)の情報のバックアップをFast

    Recovery Areaに取り意図的に長時間保持。 2. 変更前データ・ブロックの情報をリストアして過去のデータにアクセスする。 ⇒ポイント・イン・タイムリカバリよりも早い。 過去のある時点のデータにもどしたい Copyright © 2023, Oracle and/or its affiliates 77
  64. ポイント・イン・タイム・リカバリ 0. 戻したい時刻(t1)より前の時刻のフル・バックアップがあることが前提 1. 戻したい時刻(時刻t1)より前(時刻t0)のフル・バックアップからリストアする。 2. リカバリを途中(時刻t1まで)で止める。 ⇒データファイルのサイズが大きいとリストアにかなり時間がかかる。 過去のある時点のデータにアクセスしたい Copyright

    © 2023, Oracle and/or its affiliates 78 オンラインREDOログ アーカイブREDOログ 時間 時刻t0 時刻t2 2.リカバリ (REDOログの適用) 0.バックアップ (データファイルのコピー) 1.リストア (データファイルの書き戻し) 時刻t1 リカバリを時刻t1までで止める 最新データの時刻はt2
  65. 指定した時刻までデータベースの状態を戻す Flashback Database 0. Flashback Databaseを有効にすると、UNDOブロックのバックアップがFast Recovery Areaに取られる 1. 戻したい指定時刻(時刻t1)より前のUNDOブロックをリストア

    2. リカバリを途中(時刻t1まで)で止める。 ⇒データファイル全体をリストアするポイント・イン・タイムリカバリより速いし簡単 Flashback Database Copyright © 2023, Oracle and/or its affiliates 79 オンラインREDOログ アーカイブREDOログ 時間 時刻t0 時刻t2 2.リカバリ (REDOログの適用) 0.Flashback Log (UNDOブロックのバックアップ) 1.リストア (UNDOブロックの書き戻し) 時刻t1 リカバリを時刻t1までで止める 最新データの時刻はt2
  66. Flashback Database/Data Guard/バックアップがカバーする範囲は異なる Copyright © 2023, Oracle and/or its affiliates

    80 INSERT UPDATE DELETE 時刻t1 バックアップ (長期間の過去状態の保存) 時間 INSERT UPDATE DELETE 欠損 (Active) Data Guard (最新状態のデータベースに短時間で切り替え) Flashback Database (比較的短期間の過去に戻す) ~数日 数百~数十日 一般的な「バックアップ」はバックアップ操作をしたときに存在してい たファイルを複製するので最新のREDO情報が複製できない。 アーカイブREDOログ・ファイルと同じ領域にUNDOブロックのバック アップを取得するので容量的にバックアップほどの長期間保持する のは難しい。データベースのファイルが破損していないことが前提。 Data Guardは転送されたREDOでリカバリを継続するので最新 に近い状態のデータベースを維持する。時刻t1より前に戻すには Flashback Databaseと組み合わせる。
  67. Flashback Database/Data Guard/バックアップがカバーする範囲は異なる Copyright © 2023, Oracle and/or its affiliates

    81 INSERT UPDATE DELETE 時刻t1 バックアップ (長期間の過去状態の保存) 時間 INSERT UPDATE DELETE 欠損 (Active) Data Guard (最新状態のデータベースに短時間で切り替え) Flashback Database (比較的短期間の過去に戻す) ~数日 数百~数十日 バックアップ (長期間の過去状態の保存) REDO転送 (最新のREDO) 一般的な「バックアップ」はバックアップ操作をしたときに存在してい たファイルを複製するので最新のREDO情報が複製できない。 Zero Data Loss Recovery Applianceはバックアップ+REDO 転送で最新のREDO情報まで複製できる。 アーカイブREDOログ・ファイルと同じ領域にUNDOブロックのバック アップを取得するので容量的にバックアップほどの長期間保持する のは難しい。データベースのファイルが破損していないことが前提。 Data Guardは転送されたREDOでリカバリを継続するので最新 に近い状態のデータベースを維持する。時刻t1より前に戻すには Flashback Databaseと組み合わせる。
  68. Zero Data Loss Recovery Appliance (ZDLRA) Zero Data Loss Autonomous

    Recovery Service (ZRCV) REDO転送を流用したOracle Database専用バックアップ・アプライアンス
  69. REDO転送の仕組みを流用することで最新の状態までリカバリ可能(Zero Data Loss) Zero Data Loss Recovery Appliance (ZDLRA または

    RA) • Exadataのハードウェアを流用したバックアップ・アプライアンス • Data GuardのREDO転送の仕組みを流用 • バックアップ+REDO転送のOracle Database専用バックアップ・アプライアンス • 最新のREDO情報の複製を持っているため最新の状態までリカバリ可能(Zero Data Loss) • 差分増分Level 1バックアップの断片をつなぎ合わせて最新のフルバックアップ相当をリストア Zero Data Loss Autonomous Recovery Service (ZRCV) • ZDLRAをOracle Cloud Infrastructureのサービスとして提供 • バックアップの容量に比例する課金体系 • REDO転送なし(RCV) • REDO転送あり(ZRCV) • BaseDBとExaDB-Dが対象 • Standard EditionはREDO転送の対象外 • (Autonomous Databaseは今のところ対象外) Oracle Database専用のバックアップ・アプライアンス Copyright © 2023, Oracle and/or its affiliates 83
  70. BaseDBとExa DB-DはZero Data Loss Autonomous Recovery Service (ZRCV)も選択可能 OCI Oracle

    Database関連インスタンスのRMAN自動バックアップ Copyright © 2023, Oracle and/or its affiliates 84 Exadata Database Base Database Autonomous Database Object Storage ※ RMAN自動バックアップを構成する前に Object Storageのbucketを定義する RMAN Zero Data Loss Autonomous Recovery Service RMAN+REDO転送
  71. プライマリ・データベース用ストレージが全損しても最新のREDO情報が別の場所にある REDO転送の仕組みをバックアップ用サーバーにも実装:ZDLRA Copyright © 2023, Oracle and/or its affiliates 85

    オンラインREDOログ・ファイル • 更新の履歴 プライマリ・データベース用ストレージ Zero Data Loss Recovery Appliance RMANバックアップ+Data Guard REDO転送 プライマリ・データベース・サーバー ネットワーク メモリー(REDOログ・バッファ)上 にREDO情報が生成されたら 転送開始 アーカイブREDOログ・ファイル • プライマリのREDO情報の受信 REDOログ・バッファ ※ZDLRAでのREDO転送は非同期(ASYNC)モード
  72. Zero Data Loss Recovery Appliance:データファイルのバックアップ+REDO転送 Copyright © 2023, Oracle and/or

    its affiliates 86 INSERT UPDATE DELETE オンラインREDOログ 時間 時刻t0 INSERT UPDATE DELETE INSERT UPDATE DELETE バックアップ (データファイルのコピー) ZDLRA プライマリ・データベース REDO転送 アーカイブREDOログ 通常のバックアップがカバーできる範囲 (データファイルとアーカイブREDOログ・ファイルのコピー) REDO転送 REDO転送 最新のトランザクション 情報が複製される Zero Data Loss
  73. データファイルのバックアップは1週間が1セット BaseDBとExaDB-DのObject StorageへのRMAN自動バックアップ Copyright © 2023, Oracle and/or its affiliates

    87 日曜 月曜 火曜 水曜 木曜 金曜 土曜 日曜 月曜 日曜日 増分Level 0 (フルバックアップ相当)
  74. データファイルのバックアップは1週間が1セット BaseDBとExaDB-DのObject StorageへのRMAN自動バックアップ Copyright © 2023, Oracle and/or its affiliates

    88 日曜 月曜 火曜 水曜 木曜 金曜 土曜 日曜 月曜 日曜日 増分Level 0 (フルバックアップ相当) 日曜日以外 差分増分Level 1 (前回のバックアップから更新があったデータブロック)
  75. データファイルのバックアップは1週間が1セット BaseDBとExaDB-DのObject StorageへのRMAN自動バックアップ Copyright © 2023, Oracle and/or its affiliates

    89 日曜 月曜 火曜 水曜 木曜 金曜 土曜 日曜 月曜 日曜日 増分Level 0 (フルバックアップ相当) 日曜日以外 差分増分Level 1 (前回のバックアップから更新があったデータブロック) 日曜日 増分Level 0 (フルバックアップ相当)
  76. データファイルのバックアップは1週間が1セット BaseDBとExaDB-DのObject StorageへのRMAN自動バックアップ Copyright © 2023, Oracle and/or its affiliates

    90 日曜 月曜 火曜 水曜 木曜 金曜 土曜 日曜 月曜 日曜日 増分Level 0 (フルバックアップ相当) 日曜日以外 差分増分Level 1 (前回のバックアップから更新があったデータブロック) 日曜日 増分Level 0 (フルバックアップ相当)
  77. フルバックアップ相当のLevel 0をリストアした後差分増分Level 1を順次リストア 差分増分バックアップからのリストア Copyright © 2023, Oracle and/or its

    affiliates 91 日曜 月曜 火曜 水曜 木曜 Level 0 リストア 差分増分Level 1 リストア 差分増分Level 1 リストア 差分増分Level 1 リストア 差分増分Level 1 リストア (最新のバックアップ) 最新のLevel 1をリストアした状態からREDOログ適用
  78. 最新のLevel 0相当の仮想フルバックアップを生成して1回のリストア Zero Data Loss Recovery Appliance (ZDLRA)からのリストア Copyright ©

    2023, Oracle and/or its affiliates 92 日曜 月曜 火曜 水曜 木曜 最新のLevel 1をリストアした状態からREDOログ適用 ※Zero Data Loss Autonomous Recovery Service (ZRCV)を 使用する場合はバックアップは常に差分増分Level 1 差分Level 1のデータブロックの断片をつなぎ合わせて最新のフル バックアップLevel 0相当のデータファイルをZDLRA内で合成 Level 0 リストア (最新のバックアップ)
  79. Flashback Database/Data Guard/バックアップがカバーする範囲は異なる(再掲) Copyright © 2023, Oracle and/or its affiliates

    93 INSERT UPDATE DELETE 時刻t1 バックアップ (長期間の過去状態の保存) 時間 INSERT UPDATE DELETE 欠損 (Active) Data Guard (最新状態のデータベースに短時間で切り替え) Flashback Database (比較的短期間の過去に戻す) ~数日 数百~数十日 バックアップ (長期間の過去状態の保存) REDO転送 (最新のREDO) 一般的な「バックアップ」はバックアップ操作をしたときに存在してい たファイルを複製するので最新のREDO情報が複製できない。 Zero Data Loss Recovery Applianceはバックアップ+REDO 転送で最新のREDO情報まで複製できる。 アーカイブREDOログ・ファイルと同じ領域にUNDOブロックのバック アップを取得するので容量的にバックアップほどの長期間保持する のは難しい。データベースのファイルが破損していないことが前提。 Data Guardは転送されたREDOでリカバリを継続するので最新 に近い状態のデータベースを維持する。時刻t1より前に戻すには Flashback Databaseと組み合わせる。
  80. Copyright © 2023, Oracle and/or its affiliates 94 抽象化されたデータ操作 SQL

    どういうデータを取り出したいかの記述 (「どうやって」の手続き的アルゴリズムの記述ではない) CONNECT user-B/password@host:port/service-A データベース・クライアントは「サービス」に接続する サービス データベースのワークロードを抽象化した概念 service-A データベース ストレージ上のファイルの集合 Oracleインスタンス データベース・サーバー上のOracleプロセスとメモリーの集合 ストレージ上のデータの可用性 • ASM: ミラー • Active Data Guard: レプリケーション • RMAN: バックアップ • Flashback Database: スナップショット
  81. Copyright © 2023, Oracle and/or its affiliates 95 抽象化されたデータ操作 SQL

    どういうデータを取り出したいかの記述 (「どうやって」の手続き的アルゴリズムの記述ではない) CONNECT user-B/password@host:port/service-A データベース・クライアントは「サービス」に接続する サービス データベースのワークロードを抽象化した概念 service-A データベース ストレージ上のファイルの集合 Oracleインスタンス データベース・サーバー上のOracleプロセスとメモリーの集合 データベース・クライアントは「サービス」に接続 ↓ サービス(抽象)がデータベース・サーバー側の物理構成(具象)を隠蔽