Rainbow Engine

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

OracleDB

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審査用広告コード


-OracleDB

執筆者:


comment

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

関連記事

Tomcatを使ったフォーム認証でユーザ情報をデータベース管理する方法

<目次> (1) Tomcatを使ったフォーム認証でユーザ情報をデータベース管理する方法  (1-1) 前提条件  (1-2) STEP1:context.xmlにコネクションプールを設定  (1-3 …

JavaのJDBC接続でjava.sql.SQLRecoverableException: Closed Connectionが発生した時の解決メモ

(0)目次&概説 (1) エラー事象の概要  (1-1) エラーの発生状況  (1-2) エラーメッセージ全文 (2) エラーの原因 (3) エラーの対処方法  (3-1) エラーの修正内容  (3- …

OracleDBのexpdp/impdpで発生したエラー対処[ORA-39002,ORA-39070,ORA-39087]&[ORA-39083,ORA-01658]

(4) エラー対応  (4-1) エラー1:ORA-39002,ORA-39070,ORA-39087   (4-1-1) 発生状況・エラーメッセージ   (4-1-2) 原因   (4-1-3) 対 …

Oracleデータベースのバックアップをimpdpでリストアする方法

※本記事は「Oracleデータベースのバックアップをexpdpで取得する方法」の続きとなる記事です。 (0)目次&概説 (3) インポート手順(impdp)  (3-1) (事前作業)ロールの付与   …

SQLでCASE文の結果をWHERE句に指定する方法およびコスト面の考察

本記事では、 ・SQLでCASE文の結果をWHERE句に指定する方法について記述します。 ・CASE文を使う場合のコストについて考察します。 (0)目次&概説 (1) NG例 (2) OK例&解説 ( …

  • English (United States)
  • 日本語
Top