Rainbow Planet (GT×IT×SP×SA)

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

01_IT技術 (Technology)

OracleDBのメディア障害やインスタンス障害からの復旧について

投稿日:2019年5月19日 更新日:

(0)目次&概説

(1) 障害復旧について
 (1-1) インスタンス障害
 (1-2) メディア障害
  (1-2-1) 制御ファイル
  (1-2-2) REDOログファイル
  (1-2-3) データベースファイル

(1) 障害復旧について

(1-1) インスタンス障害

サーバー電源障害やバックグラウンドプロセスの異常停止などによりインスタンスが強制停止した場合の対処についてです。基本のアプローチとして、データベースの再起動を行います。再起動を行うと自動的にSMONプロセスによるインスタンスリカバリが行われます。

①リカバリ地点の確認
SMONプロセスが制御ファイルのSCNとデータファイルのSCNを比較し、リカバリを開始する地点を決定します。SCN(※注)はバッファキャッシュの内容をデータファイルに書き出すタイミングで更新されます(チェックポイントイベントが引き金)。この直後はメモリ上の情報と、ディスク上のデータファイルの情報は同期が取れていますので、インスタンス障害の復旧にはチェックポイント以降のREDOログのみがあればOK)。
(※注)SCNは「System Change Number」の略でトランザクションのCOMMIT時、タイムアウト時など、特定の条件を満たす時に採番される管理番号です。

②ロールフォワードの実行
リカバリ開始地点のSCN以降のREDOログをデータファイルに適用していき、最新のSCNまでロールフォワードを行います。また、この間にロールバック用のUNDOデータも作成します。

③ロールバックの実行
前の手順にて作成したUNDOデータを用いて、未COMMITの取引をロールバックします。

目次にもどる

(1-2) メディア障害

OracleDBにおけるメディア障害はデータベースファイル(データファイル/REDOログ/制御ファイル)の一部消失やディスク障害を指します。

(1-2-1) 制御ファイルの可用性UP

制御ファイルの可用性を高める方法として、多重化を実施する事により、破損時にバックアップをコピーするのみで復旧が可能となります。しかし、多重化している場合であっても制御ファイルが1つでも破損すると動作停止するためにミラーリング等のHW観点の冗長化も検討があるとより万全となります。

(1-2-2) REDOログファイルの可用性UP

REDOログの可用性を高める方法として、以下の方法があります。
・REDOロググループの追加
REDOログは最低2グループ必要で、ログスイッチの待機(CKPTとARCN完了待ち)を防止するには3グループ以上が望ましい。
・REDOログメンバーの追加
Oracleはどれか一つのREDOログメンバーに書き込みが出来れば動作停止しないため、REDOログのグループに2つ以上のREDOログメンバを持たせ「多重化」を行います。

(備考)
Oracleの「データファイル」は「データそのもの」が保存され、「REDOログ」は「データの変更履歴」が保存されています。

(1-2-3) データベースファイルの可用性UP

データベースファイルの破損に対する可用性を高める方法としてARCHIVELOGモードで運用する方法があります。
・ARCHIVELOGモード
インスタンス障害&メディア障害にも対応可能です。データベースがオープン状態でもバックアップが可能。またリストアの際は、障害が発生した特定のデータベースファイルのリストアのみで良い。

・NOARCHIVELOGモード
インスタンス障害のみに対応可能(※古いアーカイブログをバックアップしないため、CKPT以前のデータは復旧できない)。バックアップを取得するには、データベースを停止する必要あり。またリストア時にはデータベース全体のバックアップが必要(一貫性バックアップ)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-01_IT技術 (Technology)

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Microsoft Azureとは?概要や特徴および利用方法についての解説

(0)目次&概説 (1) Azureとは?  (1-1) IaaSとは?  (1-2) PaaSとは?  (1-3) IDaaSとは? (2) Azureのデータセンター  (2-1) Azureのデ …

システム開発におけるデータモデリングの方法とER図描画ツール紹介

(0)目次&概説 (1) 項目を洗い出す  (1-1) 現行システムが存在する場合  (1-2) 新規システムを開発する場合 (2) エンティティを定義する  (2-1) エンティティの作成  (2- …

PythonにOpenCVを導入して画像を読込み&表示&拡大縮小してみる

(0)目次&概説 (1) OpenCVとは (2) OpenCVのインストール  (2-1) インストール資源の入手  (2-2) インストール時の注意事項  (2-3) インストールの実行 (3) …

ディープラーニング入門でニューラルネットワークを用いてAND回路を学習させるプログラムをJavaで作成

ニューラルネットワークでAND回路を学習させるJavaプログラムを作成したので、その解説を行います。 (0)目次&概説 (1) ニューラルネットワークの概要  (1-1) ニューラルネットワークとは? …

EclipseでJavaプロジェクトを別サーバにエクスポートする方法

(0)目次&概説 (1) プロジェクトのエクスポートの手順  (1-1) プロジェクトのエクスポート@転送元サーバ  (1-2) インポート先サーバへ転送  (1-3) プロジェクトのインポート@転送 …

Top