Slide 1

Slide 1 text

Oracle Database World Tokyo ⽇下部 明 ⽇本オラクル株式会社 クラウドエンジニアリング統括 COE本部 データベース・ソリューション部 プリンシパルクラウドエンジニア 2023年4⽉12⽇ ミッションクリティカルな データベースに必須となる ⾼可⽤性の考え⽅とは

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

Copyright © 2023, Oracle and/or its affiliates 3 ⼊⼒と出⼒の対応関係の定義 SQL 出⼒ SELECT ename, dname, job, empno, hiredate, loc FROM emp, dept WHERE emp.deptno = dept.deptno ORDER BY ename ⼊⼒ 論理データ構造 何を取り出すかの定義であって、どうやって 導出するかのアルゴリズムは記述されていない

Slide 4

Slide 4 text

Copyright © 2023, Oracle and/or its affiliates 4 インターフェースとアルゴリズム実装の分離 SQLの結果集合を導出するアルゴリズムは⾃動⽣成される ⼊⼒ 出⼒ 対応関係の定義 インターフェース SQL実⾏計画 SQL実⾏計画探索 アルゴリズム 全体最適化問題 値の分布統計 物理データ構造 ハードウェア・リソース 論理データ構造

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

Copyright © 2023, Oracle and/or its affiliates 6 インターフェースとアルゴリズム実装の分離 データベース・エンジン実装が⽬指すところ 出⼒ 対応関係の定義 インターフェース SQL実⾏計画 SQL実⾏計画探索 アルゴリズム 全体最適化問題 値の分布統計 物理データ構造 ハードウェア・リソース ⼊⼒ 論理データ構造 論理データ構造の定義と インターフェース(SQL)を変更せずに アルゴリズム実装が改良される

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Copyright © 2023, Oracle and/or its affiliates 12 ⽂脈によって意味が異なる⽤語 サービス / インスタンス / データベース データベース・サーバー (Computeノード) ストレージ サービス クラウドが⽤意する機能のメニュー データベース データの集合 インスタンス サービスを実体化したもの service Oracleインスタンス データベース・サーバー上の Oracleプロセスとメモリーの集合 データベース ストレージ上のファイルの集合 サービス データベースのワークロードを抽 象化した概念 Oracle Databaseの⽂脈 クラウドの⽂脈 例: Oracle Base Database Service

Slide 13

Slide 13 text

Copyright © 2023, Oracle and/or its affiliates 13 Oracleインスタンスとデータベース 「CPU+メモリー」と「ストレージ」をわけて考える データベース ストレージ上のファイルの集合 Oracleインスタンス データベース・サーバー上のOracleプロセスとメモリーの集合 揮発性メモリーに⼀時的に格納(キャッシュ) (再起動などでなくなることを想定) 不揮発性デバイスに永続化 (データの本体なのでなくなると困る) データベース・サーバー (Computeノード) ストレージ

Slide 14

Slide 14 text

Copyright © 2023, Oracle and/or its affiliates 14 ⾼可⽤性を実装する⼿段 各階層で冗⻑性を持たせる データベース ストレージ上のファイルの集合 Oracleインスタンス データベース・サーバー上のOracleプロセスとメモリーの集合 揮発性メモリーに⼀時的に格納(キャッシュ) (再起動などでなくなることを想定) 不揮発性デバイスに永続化 (データの本体なのでなくなると困る) プロセスとメモリーが起動できるOS環境を⽤意 データベース・サーバーのクラスタ構成 データの複製を⽤意 ミラー / バックアップ / レプリケーション データベース・サーバー (Computeノード) ストレージ

Slide 15

Slide 15 text

Copyright © 2023, Oracle and/or its affiliates 15 ⾼可⽤性を実装する⼿段 各階層で冗⻑性を持たせる データベース ストレージ上のファイルの集合 Oracleインスタンス データベース・サーバー上のOracleプロセスとメモリーの集合 揮発性メモリーに⼀時的に格納(キャッシュ) (再起動などでなくなることを想定) 不揮発性デバイスに永続化 (データの本体なのでなくなると困る) プロセスとメモリーが起動できるOS環境を⽤意 データベース・サーバーのクラスタ構成 データの複製を⽤意 ミラー / バックアップ / レプリケーション データベース・サーバー (Computeノード) ストレージ

Slide 16

Slide 16 text

Copyright © 2023, Oracle and/or its affiliates 16 Maximum Availability Architecture (MAA) Oracle Databaseの各階層の保護機能の組み合わせ

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

Copyright © 2023, Oracle and/or its affiliates 18 Real Application Clusters (RAC) Shared Everything Cluster

Slide 19

Slide 19 text

Copyright © 2023, Oracle and/or its affiliates 19 全ノードが全データにアクセス可能 RACの物理構成 ストレージ・ネットワーク インターコネクト・ネットワーク パブリック・ネットワーク データベース・クライアント クライアントとの通信 ストレージ・ノード • ストレージ・デバイス コンピュート・ノード • CPU+メモリー • 全ノードが対等な関係 コンピュート・ノード間の通信 全コンピュート・ノードは全ストレージにアクセス可能

Slide 20

Slide 20 text

Copyright © 2023, Oracle and/or its affiliates 20 データ・モデル(スキーマ構造)、トランザクション分離レベルの挙動も同じ クライアントはどのノードに接続してもシングル・インスタンス構成と同じアクセスが可能 ストレージ・ノード • ストレージ・デバイス コンピュート・ノード • CPU+メモリー • 全ノードが対等な関係 インターコネクト・ネットワーク コンピュート・ノード間の通信 全コンピュート・ノードは全ストレージにアクセス可能 パブリック・ネットワーク データベース・クライアント クライアントとの通信 ストレージ・ネットワーク メモリー⼀貫性を全⾃ 動で維持 oracle クライアントが接続した ノードのプロセスがSQL 処理

Slide 21

Slide 21 text

Copyright © 2023, Oracle and/or its affiliates 21 どのノードからも全データに同じようにアクセス可能 - クライアントから⾒るとシングル・インスタンス構成と同じ RAC におけるデータアクセス データベース・クライアント クライアントはどのサーバーに接続しても 同じデータの⾒え⽅、シングルインスタンス と同じトランザクション分離レベル サーバー・ノード間のメモリー ⼀貫性を全⾃動で維持 シングル・インスタンス構成と同じアクセスが可能 • データ・モデル(スキーマ構造)、トランザクション分離レベルの挙動も同じ 並列実⾏プロセスがデータを 分割して並列処理 PX PX PX PX PX PX データベース・クライアント 全ノードを使⽤した1つのSQL処理の並列化が可能 • アプリからは巨⼤な⼀つのデータベースインスタンスに⾒える

Slide 22

Slide 22 text

Copyright © 2023, Oracle and/or its affiliates 22 サーバーがクラッシュしてもクライアントは別ノードに接続すると全データにアクセス可能 クライアントはどのノードに接続してもシングル・インスタンス構成と同じアクセスが可能 ストレージ・ノード • ストレージ・デバイス コンピュート・ノード • CPU+メモリー • 全ノードが対等な関係 全コンピュート・ノードは全ストレージにアクセス可能 パブリック・ネットワーク データベース・クライアント クライアントとの通信 ストレージ・ネットワーク メモリー⼀貫性を全⾃ 動で維持 oracle クライアントが接続した ノードのプロセスがSQL 処理 oracle

Slide 23

Slide 23 text

Copyright © 2023, Oracle and/or its affiliates 23 ユーザーからは透過的に複数CPUで処理可能 RACは共有メモリー型マルチ・プロセッサと同じくキャッシュ⼀貫性を維持 共有メモリー型マルチ・プロセッサ キャッシュ・メモリー キャッシュ・メモリー キャッシュ⼀貫性 CPU 1 CPU 2 SGA DRAM (メイン・メモリー)

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

Copyright © 2023, Oracle and/or its affiliates 25 データ・モデルとクラスタ・ノード構成が分離されている 現実にあるほとんどのアプリケーション・スキーマは完全には パーティショニングできない。 RACはデータの配置がデータベース・サーバーと結びつい ていない。 シェアード・ナッシング・クラスタはデータがパーティショニング できることを暗黙の前提にしている。 パーティショニングできないアプリケーション・スキーマでも動 作できるようにしたのが”Real Application” Clusters Oracle Real Application Clusters データ・モデル/SQL 抽象 実装 データ構造/クラスタ構成

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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に抽象化されたリソース割り当て • サービスでリソース制御 スケール・アップ スケール・アウト Oracle Computing Unit サービス • データベースのワークロードを抽象化 service

Slide 28

Slide 28 text

Copyright © 2023, Oracle and/or its affiliates 28 ⾼速アプリケーション通知 Fast Application Notification: FAN Oracle ClusterwareからOracleクライアントにメッセージ通知する仕組み Fast Application Notification (FAN) • Oracle Clusterwareからクライアントにイベント通知 Oracle製コネクション・プールがFAN対応 • Universal Connection Pool for Java (UCP) • OCI Session Pool • ODP.NET Unmanaged Driver Fast Connection Failover • DOWNイベントによるコネクション破棄 • 計画停⽌/⾮計画停⽌を区別 • UPイベントによるコネクション作成(UCP) Connection Pool ノード 1 ノード 2 アプリケーション・サーバー Clusterware Clusterware FANイベント FANイベント service service

Slide 29

Slide 29 text

Copyright © 2023, Oracle and/or its affiliates 29 コマンドでサービス停⽌が発⽣する場合プールに論理コネクションが返却されてから物理コネクションを切断 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) サービス停⽌

Slide 30

Slide 30 text

Copyright © 2023, Oracle and/or its affiliates 30 セッションが異常切断されても更新トランザクションを安全に⾃動再実⾏ アプリケーション・コンティニュイティ対応接続ドライバは Oracleサーバーに発⾏した処理を記憶している。 Oracle接続ドライバがセッション切断を検出すると (1) 再接続 (2) トランザクション状態の確認 (3) トランザクション再実⾏ まで⾃動で⾏う。 アプリケーションから⾒るとエラーを検出せずにトランザ クションが完了する。 Oracle製コネクション・プールからコネクションを取り出 してCOMMITしたら返却するコードならコード改修は (ほぼ)不要。 (透過的)アプリケーション・コンティニュイティ (Transparent) Application Continuity (1) 再接続 (2) 状態確認 (3) 再実⾏ Oracleクライアント RAC SELECT INSERT UPDATE COMMIT

Slide 31

Slide 31 text

Copyright © 2023, Oracle and/or its affiliates 31 異常を検出する機能と検出した異常に対処する機能 • FANとAC/TACは組み合わせると都合の良い機能であって、使⽤すること⾃体はそれぞれ独⽴している • 計画停⽌(FAN-FCF)/⾮計画停⽌(TAC)両⽅のOracleインスタンス停⽌をアプリケーションからマスク Fast Application Notification(FAN)と (Transparent) Application Continuity(TAC/AC)は独⽴した別の機能 発⽣した異常を検出 検出した異常に対処 Pool Driver Driver Driver • (Transparent) Application Continuity は切断されたことを検出すると⾃動再接続& ⾃動再実⾏する機能 • ⾮計画停⽌での切断に対処 • 切断検出のきっかけは何でもよい • Fast Connection Failover (FCF)はサービ スが停⽌したことを明⽰的に通知する機能 • 計画停⽌と⾮計画停⽌を区別 • TCPレベルで応答がないケースでもコネクショ ン・プールから障害ノードとのコネクションを削除

Slide 32

Slide 32 text

Copyright © 2023, Oracle and/or its affiliates 32 Oracle Databaseはなぜデータの複製を Oracleソフトウェアでやろうとするのか ミラー / バックアップ / レプリケーション

Slide 33

Slide 33 text

Copyright © 2023, Oracle and/or its affiliates 33 データ消失に備えて異なるハードウェア上にデータを複製する データを複製する⼿段 • ミラー : 継続的なデータの複製 (ローカル・ストレージ) • バックアップ : バックアップ操作をした時点のデータの複製 • レプリケーション : 継続的なデータの複製 (リモート・ストレージ) • (スナップショット) データの複製⼿段

Slide 34

Slide 34 text

Copyright © 2023, Oracle and/or its affiliates 34 ミラー/レプリケーション/バックアップ ストレージ機能でのデータの複製 ストレージ・コントローラ ストレージ・コントローラ リモート・レプリケーション (レプリケーション) • 別のストレージ筐体に書き込みを複製 RAID (ミラー) • 複数のストレージ・デバイスに書き込みを複製 スプリット・ミラー (バックアップ) • ミラーを⼀時的に解除することで その時点のストレージの状態を保持 書き込みデータ

Slide 35

Slide 35 text

Copyright © 2023, Oracle and/or its affiliates 35 データを失う要因はストレージ・デバイスの故障以外にもある ストレージ・デバイスが故障していなくても、格納されてい るファイルのデータが破損している場合がある。 エラー・ログを出⼒するのは、その異常を検出した階層。 異常検出能⼒のない階層はエラー・ログを出⼒できない。 データを破損させた階層が破損させたことを直接ログに記 録していることは期待できない。 ストレージのデータを破損させる要因 • CPU/メモリー故障 • レーザー出⼒不安定 • 電源障害 • ランサムウェア • ... データを失う要因はストレージ・デバイスの故障以外にもある Oracle Database OS Multipath Driver Device Driver Host Bus Adapter Storage Controller Network CPU/Memory ? ERROR ?

Slide 36

Slide 36 text

Copyright © 2023, Oracle and/or its affiliates 36 書き込むデータが意味的に正常なのかはストレージは判別できないのでデータ破損が伝搬する ストレージ機能でのデータの複製 ストレージ・コントローラ ストレージ・コントローラ リモート・レプリケーション (レプリケーション) • 別のストレージ筐体に書き込みを複製 RAID (ミラー) • 複数のストレージ・デバイスに書き込みを複製 スプリット・ミラー (バックアップ) • ミラーを⼀時的に解除することで その時点のストレージの状態を保持 破損データ

Slide 37

Slide 37 text

Copyright © 2023, Oracle and/or its affiliates 37 Oracle Databaseの歴史はデータ破損との闘い Oracle Databaseはなぜデータの複製をOracleソフトウェアでやろうとするのか Oracleインスタンス 破損検査 ↓ 破損伝搬の抑⽌ ↓ ⾃動修復 実装バージョン 機能名 機能 Oracle8 RMAN バックアップ/リストア Oracle9i Data Guard REDO情報を別サーバーに転送 Oracle 10g ASM ストレージの冗⻑化と⾃動修復 Oracle 11g Exadata Oracle専⽤ストレージがデータ構造を検査 Oracle 11g Active Data Guard Data Guard+⾃動修復 Oracle 12c ZDLRA RMANバックアップ+REDO転送 • データ構造がOracle Databaseとして正しいかを検査できるのは Oracle⾃⾝しかない • ある階層から別の階層に移動させるとき検査される • 破損が次の階層に伝搬しない • データの複製がある場合は⾃動修復を試みる

Slide 38

Slide 38 text

Copyright © 2023, Oracle and/or its affiliates 38 Automatic Storage Management (ASM) Stripe And Mirror Everything

Slide 39

Slide 39 text

Copyright © 2023, Oracle and/or its affiliates 39 デバイス・ ファイル Oracle Database専⽤のクラスタ・ボリューム・マネージャ兼クラスタ・ファイルシステム Oracle Automatic Storage Management ファイル構造 Oracle構造 POSIXファイルシステム ボリューム・マネージャ ファイルシステム 表、索引 表領域 ファイル ASM ASM 表、索引 表領域 ボリューム・マネージャ ファイルシステム ファイル 管理者から⾒た操作の階層はどちらもディレクトリ・ツリーとファイルで同じ RAIDとは異なる実装で • ストレージ・デバイスの障害に対処可能 • データ破損を検出すると⾃動修復

Slide 40

Slide 40 text

Copyright © 2023, Oracle and/or its affiliates 40 どのファイルへのアクセスもストレージの性能を最⼤限引き出す ファイルを分割し、すべてのストレージ・デバイスに均等に分散する。 ストレージ・デバイスが増減しても、再配置して均等を維持する。 ASMのファイル配置コンセプト1 ASM上のファイル extent extent extent ASMエクステント

Slide 41

Slide 41 text

Copyright © 2023, Oracle and/or its affiliates 41 どのファイルも冗⻑化して障害に対処する • ファイルを分割しミラーを⽤意する。 • ミラーは異なる障害グループ(FAILGROUP)のストレージ・デバイスに配置する。 • ストレージ・デバイスが増減しても、再配置して冗⻑構成を維持する。 ASMのファイル配置コンセプト2 ASM上のファイル extent extent extent FAILGROUP 1 FAILGROUP 2 FAILGROUP 3 FAILGROUP n プライマリ・エクステント セカンダリ・エクステント セカンダリ・エクステント FAILGROUP ≒ 1つのストレージ筐体 ASMエクステント 1つのFAILGROUPが停⽌してもそのエクステントのミラーが他のFAILGROUPにある

Slide 42

Slide 42 text

Copyright © 2023, Oracle and/or its affiliates 42 Stripe And Mirror Everything (S.A.M.E.) ファイルを分割し、 • すべてのストレージ・デバイスに均等に分散する ⇒Stripe • ミラーは異なる障害グループ(FAILGROUP)のストレージ・デバイスに配置する ⇒Mirror そしてストレージ・デバイスが増減してもリバランスすることでStripeとMirrorを維持する ASMのファイル配置コンセプト 1 2 3 4 3 6 1 7 5 6 7 8 4 2 8 5 異なるデバイスに ミラーリング すべてのデバイスにストライピング プライマリ・エクステント ASM上のファイル extent extent extent セカンダリ・エクステント ASMエクステント

Slide 43

Slide 43 text

Copyright © 2023, Oracle and/or its affiliates 43 ストレージ・デバイスが増減してもStripe And Mirror Everything (S.A.M.E.)を維持する ストレージ・デバイスが故障して使⽤できなくなったらASMディスク・グループから削除 ⇒エクステントを失うので既存ストレージ・デバイスにエクステントを追加して冗⻑性(2重化および3重化)を回復 ASMディスク・グループにストレージ・デバイスを追加 ⇒既存ストレージ・デバイスのエクステントを追加ストレージ・デバイスに移し替えてストライプ性能向上 リバランスはオンラインで⾏われる 動的リバランス 異なるデバイスに ミラーリング すべてのデバイスにストライピング 削除 追加

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

Copyright © 2023, Oracle and/or its affiliates 45 データベースのバックアップ・リストア・リカバリ

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

Copyright © 2023, Oracle and/or its affiliates 47 Oracleサーバー・プロセスがメモリを更新しバックグラウンド・プロセスがファイルに永続化 REDOログ・バッファ オンラインREDOログ・ファイル LGWR oracle oracle Oracleサーバー・プロセス ログ・ライター・プロセス データベース・バッファ・キャッシュ DBWn データベース・ライター・プロセス データファイル SGA oracle Oracleサーバー・プロセスに よるSQL処理はメモリを更新 バックグラウンド・プロセスが ファイルに永続化 OS Oracle Databaseアーキテクチャ

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

Copyright © 2023, Oracle and/or its affiliates 54 バックアップおよびリストア・リカバリ INSERT UPDATE DELETE オンラインREDOログ アーカイブREDOログ 時間 時刻t0 データファイル障害発⽣ INSERT UPDATE DELETE INSERT UPDATE DELETE リカバリ (REDOログの適⽤) バックアップ (データファイルのコピー) リストア (データファイルの書き戻し) データファイルの状態が 時刻t1まで復元される。 時刻t1

Slide 55

Slide 55 text

Copyright © 2023, Oracle and/or its affiliates 55 Recovery Manager (RMAN) 破損検査付きバックアップおよびリストア・リカバリ

Slide 56

Slide 56 text

Copyright © 2023, Oracle and/or its affiliates 56 推奨はRMAN • Oracle付属のバックアップ・ツール • Oracleサーバー・プロセスがデータベースのファイルにア クセスする仕組みを使ってファイルをコピー • Oracleインスタンス管理下で⾏われる操作 • RMAN以外の⽅法でコピーするすべての⼿法 • Oracleインスタンスがコピーを関知しない • OSのファイル・コピー・コマンド • ストレージ機能のスナップショットやスプリット・ミラー Oracle Databaseの2種類の物理バックアップ⼿法 oracle rman データファイル (コピー元) バックアップ (コピー先) スナップショット スプリット・ミラー Recovery Manager (RMAN) ユーザー管理バックアップ RMANクライアント Oracleサーバー・ プロセス コピー元ボリューム バックアップ・ボリューム

Slide 57

Slide 57 text

Copyright © 2023, Oracle and/or its affiliates 57 確実にリカバリするための"Recovery" Manager • コピー時に破損検査が⾏われる • 破損が伝搬しない • バックアップしたファイルの破損検査も可能 • 破損領域がそのままコピーされる • バックアップも破損している場合がある • 誤った単位でボリュームをコピーしているとリカバリ時に なってはじめてリカバリ不能に気付く ファイル・コピー中のブロック破損検査 oracle rman データファイル (コピー元) バックアップ (コピー先) スナップショット スプリット・ミラー Recovery Manager (RMAN) ユーザー管理バックアップ RMANクライアント Oracleサーバー・ プロセス コピー元ボリューム バックアップ・ボリューム

Slide 58

Slide 58 text

Copyright © 2023, Oracle and/or its affiliates 58 データベース本体の破損に備えるためのバックアップ データベース本体とバックアップ⽤ストレージは分ける オンラインREDOログ・ファイル • 更新の履歴 データファイル • データの本体 アーカイブREDOログ・ファイル • オンラインREDOログ・ファイルの バックアップ データファイル • データファイルの バックアップ データベース本体⽤ストレージ バックアップ⽤ストレージ データベース・サーバー ストレージ・ネットワーク

Slide 59

Slide 59 text

Copyright © 2023, Oracle and/or its affiliates 59 最新の更新情報はオンラインREDOログ・ファイルにしかない アーカイブREDOログ・ファイル • オンラインREDOログ・ファイルの バックアップ データファイル • 表データの本体 Oracleインスタンス データベース・サーバー上の プロセスとメモリーの集合 データベース ストレージ上のファイルの集合 最新の更新情報 オンラインREDOログ・ファイル • 更新の履歴 • 1本書き込み完了したら複製

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

Copyright © 2023, Oracle and/or its affiliates 61 データベース本体⽤ストレージ オンラインREDOログ・ファイルが格納されているストレージが全損すると INSERT UPDATE DELETE オンラインREDOログ アーカイブREDOログ 時間 時刻t0 時刻t1 ストレージ障害発⽣ INSERT UPDATE DELETE INSERT UPDATE DELETE リカバリ (REDOログの適⽤) バックアップ (データファイルのコピー) リストア (データファイルの書き戻し) 最新のトランザクション 情報を失う

Slide 62

Slide 62 text

Copyright © 2023, Oracle and/or its affiliates 62 (Active) Data Guard 最新のREDO情報をリモート・データベースに転送

Slide 63

Slide 63 text

Copyright © 2023, Oracle and/or its affiliates 63 プライマリ・データベース⽤ストレージが全損しても最新のREDO情報が別の場所にある REDO情報が⽣成されたら即時に別のサーバーに転送︓(Active) Data Guard オンラインREDOログ・ファイル • 更新の履歴 プライマリ・データベース⽤ストレージ スタンバイ・データベース⽤ストレージ プライマリ・データベース・サーバー ネットワーク メモリー(REDOログ・バッファ)上 にREDO情報が⽣成されたら 転送開始 スタンバイREDOログ・ファイル • プライマリのREDO情報の受信 REDOログ・バッファ スタンバイ・データベース・サーバー

Slide 64

Slide 64 text

Copyright © 2023, Oracle and/or its affiliates 64 プライマリ・データベースのREDO情報でデータファイルをリカバリし続ける (Active) Data Guard︓プライマリ・データベースと全く同じ内容になる オンラインREDOログ・ファイル • 更新の履歴 プライマリ・データベース⽤ストレージ スタンバイ・データベース⽤ストレージ プライマリ・データベース・サーバー ネットワーク リカバリ継続 スタンバイ・データベース・サーバー REDOログ・バッファ データファイル プライマリと同⼀内容

Slide 65

Slide 65 text

Copyright © 2023, Oracle and/or its affiliates 65 (Active) Data Guard︓リモートでリストア&リカバリを継続 INSERT UPDATE DELETE オンラインREDOログ 時間 時刻t0 INSERT UPDATE DELETE INSERT UPDATE DELETE バックアップ (データファイルのコピー) リストア (データファイルの書き戻し) スタンバイ・データベース プライマリ・データベース REDO転送 リカバリ (REDOログの適⽤) 最新のトランザクション 情報が複製される REDO転送

Slide 66

Slide 66 text

Copyright © 2023, Oracle and/or its affiliates 66 Flashback Database 過去のある時点の状態に戻したい

Slide 67

Slide 67 text

Copyright © 2023, Oracle and/or its affiliates 67 ポイント・イン・タイム・リカバリ 1. 該当データファイルのアクセスしたい時刻(時刻t1)より前(時刻t0)のフル・バックアップからリストアする。 2. リカバリを途中(時刻t1)で⽌める。 ⇒データファイルのサイズが⼤きいとリストアにかなり時間がかかる。 過去のある時点のデータにアクセスしたい オンラインREDOログ アーカイブREDOログ 時間 時刻t0 時刻t2 リカバリ (REDOログの適⽤) バックアップ (データファイルのコピー) リストア (データファイルの書き戻し) 時刻t1 リカバリを時刻t1までで⽌める 最新データの時刻はt2

Slide 68

Slide 68 text

Copyright © 2023, Oracle and/or its affiliates 68 指定した時刻までデータベースの状態を戻す Flashback Database 0. Flashback Databaseを有効にすると、UNDOブロックのバックアップがFast Recovery Areaに取られる 1. 戻したい指定時刻(時刻t1)より前のUNDOブロックをリストア 2. REDOを適⽤して指定時刻(時刻t1)までロールフォワード ⇒データファイル全体をリストアするポイント・イン・タイムリカバリより速いし簡単 Flashback Database オンラインREDOログ アーカイブREDOログ 時間 時刻t0 時刻t2 リカバリ (REDOログの適⽤) Flashback Log (UNDOブロックのバックアップ) リストア (UNDOブロックの書き戻し) 時刻t1 リカバリを時刻t1までで⽌める 最新データの時刻はt2

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

Copyright © 2023, Oracle and/or its affiliates 70 Zero Data Loss Recovery Appliance (ZDLRA) RMANバックアップ + Data GuardのREDO転送

Slide 71

Slide 71 text

Copyright © 2023, Oracle and/or its affiliates 71 REDO転送の仕組みを流⽤することで最新の状態までリカバリ可能 Zero Data Loss Recovery Appliance (ZDLRA または RA) • Data GuardのREDO転送の仕組みを流⽤ • バックアップ+REDO転送のOracle Database専⽤バックアップ・アプライアンス • ほぼ最新のREDO情報の複製を持っているため最新の状態までリカバリ可能 • ハードウェアはExadataを流⽤ Oracle Database専⽤のバックアップ・アプライアンス

Slide 72

Slide 72 text

Copyright © 2023, Oracle and/or its affiliates 72 プライマリ・データベース⽤ストレージが全損しても最新のREDO情報が別の場所にある REDO転送の仕組みをバックアップ⽤サーバーにも実装︓ZDLRA オンラインREDOログ・ファイル • 更新の履歴 Zero Data Loss Recovery Appliance RMANバックアップ+Data Guard REDO転送 プライマリ・データベース・サーバー ネットワーク メモリー(REDOログ・バッファ)上 にREDO情報が⽣成されたら 転送開始 アーカイブREDOログ・ファイル • プライマリのREDO情報の受信 REDOログ・バッファ ※ZDLRAでのREDO転送は⾮同期(ASYNC)モード

Slide 73

Slide 73 text

Copyright © 2023, Oracle and/or its affiliates 73 Zero Data Loss Recovery Appliance︓バックアップ+REDO転送 INSERT UPDATE DELETE オンラインREDOログ 時間 時刻t0 INSERT UPDATE DELETE INSERT UPDATE DELETE バックアップ (データファイルのコピー) ZDLRA プライマリ・データベース REDO転送 アーカイブREDOログ 通常のバックアップがカバーできる範囲 (データファイルとアーカイブREDOログ・ファイルのコピー) REDO転送 REDO転送 最新のトランザクション 情報が複製される Zero Data Loss

Slide 74

Slide 74 text

Copyright © 2023, Oracle and/or its affiliates 74 Flashback Database/Data Guard/バックアップがカバーする範囲は異なる 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と組み合わせる。

Slide 75

Slide 75 text

Copyright © 2023, Oracle and/or its affiliates 75 REDO転送の仕組みを流⽤することで最新の状態までリカバリ可能 Zero Data Loss Recovery Appliance (ZDLRA または RA) • Data GuardのREDO転送の仕組みを流⽤ • バックアップ+REDO転送のOracle Database専⽤バックアップ・アプライアンス • ほぼ最新のREDO情報の複製を持っているため最新の状態までリカバリ可能 • ハードウェアはExadataを流⽤ Zero Data Loss Autonomous Recovery Service (ZRCV) • ZDLRAをOracle Cloud Infrastructureのサービスとして提供 • バックアップの容量に⽐例する課⾦体系 • REDO転送なし(RCV) • REDO転送あり(ZRCV) Oracle Database専⽤のバックアップ・アプライアンス

Slide 76

Slide 76 text

Copyright © 2023, Oracle and/or its affiliates 76 SQL どういうデータを取り出したいかの記述 (「どうやって」の⼿続き的アルゴリズムの記述ではない) CONNECT user-B/password@host:port/service-A データベース・クライアントは「サービス」に接続する サービス データベースのワークロードを抽象化した概念 service-A データベース ストレージ上のファイルの集合 Oracleインスタンス データベース・サーバー上のOracleプロセスとメモリーの集合 Maximum Availability Architecture • サービスが具象レイヤーの構成を隠蔽 • サービスへのアクセスを継続 Maximum Availability Architecture (MAA) 抽象化されたデータ操作を計画停⽌/⾮計画停⽌どちらがあっても継続する

Slide 77

Slide 77 text

Oracle Database World Tokyo ご清聴ありがとうございました