SCN与数据恢复关联

Jun 07, 2016 pm 05:37 PM
redo log データ復旧

一、各种SCN简介:如图,控制文件中有系统SCN号,针对每个数据文件还有文件SCN号、结束SCN号(如四个数据文件就有4个对应的文件SCN号、结束SCN号)数据文件头部

一、各种SCN简介:

180920251.jpg

如图,控制文件中有系统SCN号,针对每个数据文件还有文件SCN号、结束SCN号(如四个数据文件就有4个对应的文件SCN号、结束SCN号)

数据文件头部有开始SCN号。都是为了保证数据文件的一致性

正常情况下:系统SCN、文件SCN、文件头部的开始SCN应该一样,结束SCN为null

系统SCN:

SQL> select checkpoint_change# from v$database;


CHECKPOINT_CHANGE#

------------------

           617242


文件SCN:

SQL> select name,checkpoint_change# from v$datafile;


NAME                                               CHECKPOINT_CHANGE#

-------------------------------------------------- ------------------

/u01/app/oracle/oradata/jiagulun/system01.dbf                  617242

/u01/app/oracle/oradata/jiagulun/undotbs01.dbf                 617242

/u01/app/oracle/oradata/jiagulun/sysaux01.dbf                  617242

/u01/app/oracle/oradata/jiagulun/users01.dbf                   617242

/u01/app/oracle/oradata/jiagulun/example01.dbf                 617242

/u01/app/oracle/oradata/jiagulun/data1_01_dbf                  617242


结束SCN:

SQL> select name,last_change# from v$datafile;


NAME                                               LAST_CHANGE#

-------------------------------------------------- ------------

/u01/app/oracle/oradata/jiagulun/system01.dbf

/u01/app/oracle/oradata/jiagulun/undotbs01.dbf

/u01/app/oracle/oradata/jiagulun/sysaux01.dbf

/u01/app/oracle/oradata/jiagulun/users01.dbf

/u01/app/oracle/oradata/jiagulun/example01.dbf

/u01/app/oracle/oradata/jiagulun/data1_01_dbf


数据文件头部开始SCN:

SQL> select name,checkpoint_change# from v$datafile_header;


NAME                                               CHECKPOINT_CHANGE#

-------------------------------------------------- ------------------

/u01/app/oracle/oradata/jiagulun/system01.dbf                  617242

/u01/app/oracle/oradata/jiagulun/undotbs01.dbf                 617242

/u01/app/oracle/oradata/jiagulun/sysaux01.dbf                  617242

/u01/app/oracle/oradata/jiagulun/users01.dbf                   617242

/u01/app/oracle/oradata/jiagulun/example01.dbf                 617242

/u01/app/oracle/oradata/jiagulun/data1_01_dbf                  617242


183112512.jpg

每一条日志都有SCN,每个日志组文件的头部有两个SCN first SCN和next SCN

first SCN:即这个文件组中第一条日志的SCN,等于上一组的next SCN。

next SCN:即这个文件组中最后一条日志的SCN,等于下一组的first SCN。

183534919.jpg



二、SCN如何保证数据库文件一致性(如何确认需要恢复)?

正常关闭:将所有buffer cache脏块写到磁盘,同时更新系统SCN、文件SCN,,数据头部开始SCN,同时结束SCN写上与系统SCN、文件SCN、数据头部开始SCN都一样的时间点(关闭时间)

非正常关闭:结束SCN为null,未正常写上。开启数据库时检测到结束SCN为null,则需要实例恢复。

数据文件丢失:例如当1号DBF文件丢失了,从备份中拷贝一个备份的1号DBF文件过来,此时文件头部的SCN比较旧,与控制文件系统SCN号对比,oracle则发现需要做恢复。则用跑日志将其SCN跑到与控制文件中文件SCN一样。

控制文件丢失:控制文件和数据文件都换成旧的,此时光对比控制文件中的SCN号和数据文件头部的SCN号还不能确认需不需要恢复,oracle还要对比on disk rba scn,如果on disk rba scn比控制文件中的SCN号和数据文件头部的SCN号都新,则要实例恢复。


用SCN号确认使用哪些日志组来恢复实例:

目前系统SCN号为617242:

SQL> select checkpoint_change# from v$database;


CHECKPOINT_CHANGE#

------------------

           617242

此时日志组1first SCN为617242,则需要日志组1恢复即可;

184908561.jpg


试着经过两次日志组切换:

SQL> alter system switch logfile;


System altered.


SQL> alter system switch logfile;


System altered.


此时系统当前最新的文件SCN仍然是617242

SQL> select checkpoint_change# from v$database;


CHECKPOINT_CHANGE#

------------------

           617242

那么这时候数据库实例崩溃使用哪些日志组恢复呢?

185506178.jpg

此时617242在日志组1,按照序列号8-10,日志组3是最新日志,此时需要日志组1、2、3恢复。

日志中active代表组中存在日志对应的脏块还没有写到磁盘中。

执行

SQL> alter system flush buffer_cache;


System altered.

后,日志组active变为inactive:

202439967.jpg

而此时控制文件中的SCN也更新为:

SQL> select checkpoint_change# from v$database;


CHECKPOINT_CHANGE#

------------------

           628825

此时如果数据库实例非正常关闭,则需要日志组3来恢复。


三、总结:

控制文件中系统SCN,文件SCN等于最旧的active日志文件组的first SCN,实例恢复需要active和current日志组。

控制文件中的系统SCN,文件SCN用于确认数据恢复的所需要的重做日志文件组。

确认文件组后根据控制文件中的LRBA地址去跑日志跑到on disk rba地址。

CKPT进程只是将LRBA地址写到控制文件中,而控制文件中的系统SCN,文件SCN和数据头部SCN的更新是当一个日志组由active变为inactive时更新的,结束SCN则是关闭数据库时候更新的。



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 7のシステムレジストリファイルが紛失または破損した場合の対処方法 Windows 7のシステムレジストリファイルが紛失または破損した場合の対処方法 Jul 08, 2023 pm 05:29 PM

Windows 7 を使用している場合、起動時にシステム レジストリ ファイルが見つからない、または破損しているという現象が発生します。この状況を解決するにはどうすればよいですか?まずコンピュータを強制的に再起動し、次に F8 キーを押し、開いたページでセーフ モードを選択します。次に、メニュー バーでコマンド プロンプトを見つけて開き、SFC/SCANNOW コマンドを入力して Enter キーを押すと、システムが自動的にコンピューター 欠落または破損したインストール ファイルを修復します。 Windows 7 システム レジストリ ファイルが紛失または破損した場合の対処方法 1. 最初の電源投入セルフテスト後、すぐに F8 キーを押したまま、矢印キーを使用してセーフ モードを選択し、Enter キーを押します。 2. [スタート] ボタンをクリックし、[コマンド プロンプト] を選択して、管理者として実行します。 3. 最後に、ポップアップ プロンプトに「SFC/」と入力します。

MySQL のバイナリログ、REDO ログ、UNDO ログの使用方法 MySQL のバイナリログ、REDO ログ、UNDO ログの使用方法 Jun 03, 2023 pm 12:59 PM

1. Binlog Binlog は、データベースによって実行された書き込み操作 (クエリを除く) 情報を記録し、バイナリ形式でディスクに保存するために使用されます。 binlog は mysql の論理ログであり、サーバー層によって記録されます。任意のストレージ エンジンを使用する Mysql データベースは binlog ログを記録します。論理ログ: 単純に SQL ステートメントとして理解できます。物理ログ: MySQL のデータはデータ ページに保存され、物理ログはデータ ページの変更を記録します。ここにコード部分を挿入すると、Input を追加することでバイナリログが書き込まれます。 max_binlog_size パラメーターを使用して、各 binlog ファイルのサイズを設定できます。ファイル サイズが指定された値に達すると、

Diskgenius データを回復する方法-diskgenius データ回復チュートリアル Diskgenius データを回復する方法-diskgenius データ回復チュートリアル Mar 06, 2024 am 09:34 AM

多くの友人は、diskgenius データを回復する方法を知りません。そのため、編集者は、diskgenius データ回復に関する関連チュートリアルを共有します。見てみましょう。誰にとっても役に立つと思います。まず、DiskGenius のメイン インターフェイスの上にあるハードディスク パーティション図で、ターゲット パーティションを直接選択して右クリックします。次に、図に示すように、ポップアップ表示されるショートカット メニューで、[削除またはフォーマットされたファイルの回復] メニュー項目を見つけてクリックします。 2 番目のステップでは、回復オプション ウィンドウが表示され、「削除されたファイルの回復」、「完全な回復」、「既知のファイル タイプの追加スキャン」の 3 つのオプションを必ずチェックしてください。ステップ 3: 右側の「ファイルの種類を選択」ボタンをクリックし、ポップアップ ウィンドウで回復する必要があるファイルを指定します。

PHPパラメータ欠落問題の解決策 PHPパラメータ欠落問題の解決策 Mar 11, 2024 am 09:27 AM

PHP パラメータ消失の問題の解決策 PHP プログラムの開発過程では、フロントエンドから渡されたパラメータが不完全であったり、バックエンドからパラメータを受け取る方法が間違っていたりすることが原因で、パラメータ消失の問題が頻繁に発生します。この記事では、PHP でパラメーターが欠落している問題に対するいくつかの解決策と、具体的なコード例を紹介します。 1. フロントエンドパラメータの受け渡しの問題 GET メソッドを使用してパラメータを渡す GET メソッドを使用してパラメータを渡すと、パラメータは URL パラメータの形式で要求された URL に追加されます。バックエンドでパラメータを受信する場合

ThinkPHP6 データのバックアップとリカバリ: データのセキュリティの確保 ThinkPHP6 データのバックアップとリカバリ: データのセキュリティの確保 Aug 13, 2023 am 08:28 AM

ThinkPHP6 データのバックアップとリカバリ: データのセキュリティの確保 インターネットの急速な発展に伴い、データは非常に重要な資産になりました。したがって、データのセキュリティは非常に重要です。 Web アプリケーション開発では、データのバックアップとリカバリはデータのセキュリティを確保するための重要な部分です。この記事では、ThinkPHP6 フレームワークを使用してデータのバックアップと復元を行い、データのセキュリティを確保する方法を紹介します。 1. データのバックアップ データのバックアップとは、データベース内のデータを何らかの方法でコピーまたは保存することを指します。この方法では、データが

MySQL の REDO ログと binlog の違いは何ですか? MySQL の REDO ログと binlog の違いは何ですか? Jun 03, 2023 pm 06:53 PM

MySQL には、REDO ログ (redolog)、ロールバック ログ (undolog)、バイナリ ログ (binlog)、エラー ログ (errorlog)、スロー クエリ ログ (slowquerylog)、一般的なクエリ ログ (generallog) の 6 種類のログ ファイルがあります。 )、リレーログ (relaylog)。 1.リドログとは何ですか? Redolog (REDO ログ ファイルとも呼ばれます) は、トランザクション操作の変更を記録するために使用されます。データ変更後の値が記録されます。トランザクションが送信されたかどうかに関係なく記録されます。 Redolog ファイルは、データベースの停電やインなど、インスタンスやメディアに障害が発生した場合 (メディア障害) に役立ちます。

Laravelでデータ復元用のミドルウェアを使用する方法 Laravelでデータ復元用のミドルウェアを使用する方法 Nov 02, 2023 pm 02:12 PM

Laravel は、効率的で安全かつスケーラブルな Web アプリケーションを構築するための多くの高速かつ簡単な方法を提供する、人気のある PHP Web アプリケーション フレームワークです。 Laravel アプリケーションを開発する場合、多くの場合、データ回復の問題、つまり、データの損失または損傷が発生した場合にデータを回復し、アプリケーションの通常の動作を保証する方法を考慮する必要があります。この記事では、Laravelミドルウェアを使用してデータ回復機能を実装する方法と、具体的なコード例を紹介します。 1. ララとは何ですか?

ハードドライブのセクター破損の問題に対処する方法 ハードドライブのセクター破損の問題に対処する方法 Feb 19, 2024 am 11:03 AM

壊れたハードディスク セクタを解決するにはどうすればよいですか? 壊れたハードディスク セクタは一般的なハードウェア障害であり、データ損失を引き起こし、コンピュータのパフォーマンスに影響を与える可能性があります。不良ハードドライブセクターの問題を理解し、解決することは非常に重要です。この記事では、ハードディスク セクタの概念を紹介し、不良ハードディスク セクタの一般的な原因と解決策について説明します。 1. ハードディスクのセクターとは何ですか?ハードディスクの不良セクタの問題を解決する方法を紹介する前に、まずハードディスクのセクタとは何かを理解しましょう。ハードディスク セクタは、ハード ドライブ上で読み取りおよび書き込み可能な最小単位であり、ハード ドライブ上のスペースの小さなセクションです。

See all articles