데이터 베이스 MySQL 튜토리얼 SCN与数据恢复关联

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 Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

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의 binlog, redo 로그 및 undo 로그를 사용하는 방법 MySQL의 binlog, redo 로그 및 undo 로그를 사용하는 방법 Jun 03, 2023 pm 12:59 PM

1. Binlog Binlog는 데이터베이스에서 수행되는 쓰기 작업(쿼리 제외) 정보를 기록하고 이를 바이너리 형식으로 디스크에 저장하는 데 사용됩니다. Binlog는 mysql의 논리적 로그이며 서버 계층에 의해 기록됩니다. 모든 스토리지 엔진을 사용하는 MySQL 데이터베이스는 binlog 로그를 기록합니다. 논리적 로그: 간단히 SQL 문으로 이해될 수 있습니다. 물리적 로그는 MySQL의 데이터가 데이터 페이지에 저장되고, 물리적 로그는 여기에 코드 조각을 삽입하여 입력을 추가하여 기록됩니다. 파일 크기가 지정된 값에 도달하면 max_binlog_size 매개변수를 통해 각 binlog 파일의 크기를 설정할 수 있습니다.

diskgenius 데이터를 복구하는 방법-diskgenius 데이터 복구 튜토리얼 diskgenius 데이터를 복구하는 방법-diskgenius 데이터 복구 튜토리얼 Mar 06, 2024 am 09:34 AM

많은 친구들이 diskgenius 데이터를 복구하는 방법을 모르므로 아래 편집자가 diskgenius 데이터 복구에 대한 관련 튜토리얼을 공유해 보겠습니다. 모두에게 도움이 될 것입니다. 먼저 DiskGenius 메인 인터페이스 위의 하드 디스크 파티션 다이어그램에서 대상 파티션을 직접 선택하고 마우스 오른쪽 버튼을 클릭할 수 있습니다. 그런 다음 나타나는 바로가기 메뉴에서 그림과 같이 "삭제 또는 포맷된 파일 복구" 메뉴 항목을 찾아 클릭하세요. 두 번째 단계에서는 복구 옵션 창이 나타나고 "삭제된 파일 복구", "전체 복구" 및 "알려진 파일 형식에 대한 추가 검사"의 세 가지 옵션을 확인하십시오. 3단계: 오른쪽의 "파일 형식 선택" 버튼을 클릭하고 팝업 창에서 복구해야 하는 파일을 지정합니다.

PHP 매개변수 누락 문제에 대한 솔루션 PHP 매개변수 누락 문제에 대한 솔루션 Mar 11, 2024 am 09:27 AM

PHP 매개변수 손실 문제에 대한 해결 방법 PHP 프로그램을 개발하는 과정에서 매개변수 손실 문제가 종종 발생합니다. 이는 프런트엔드에서 전달된 불완전한 매개변수, 백엔드에서 매개변수를 받는 잘못된 방법 등으로 인해 발생할 수 있습니다. 이 기사에서는 특정 코드 예제와 함께 PHP에서 매개변수 누락 문제에 대한 몇 가지 솔루션을 제공합니다. 1. 프런트엔드 매개변수 전달 문제 GET 메소드를 사용하여 매개변수를 전달하는 경우 매개변수가 URL 매개변수 형식으로 요청된 URL에 추가됩니다. 백엔드에서 매개변수를 수신할 때

ThinkPHP6 데이터 백업 및 복구: 데이터 보안 보장 ThinkPHP6 데이터 백업 및 복구: 데이터 보안 보장 Aug 13, 2023 am 08:28 AM

ThinkPHP6 데이터 백업 및 복구: 데이터 보안 보장 인터넷의 급속한 발전으로 인해 데이터는 매우 중요한 자산이 되었습니다. 따라서 데이터 보안이 매우 중요합니다. 웹 애플리케이션 개발에서 데이터 백업 및 복구는 데이터 보안을 보장하는 중요한 부분입니다. 이 기사에서는 데이터 보안을 보장하기 위해 데이터 백업 및 복구에 ThinkPHP6 프레임워크를 사용하는 방법을 소개합니다. 1. 데이터 백업 데이터 백업은 어떤 방식으로든 데이터베이스에 데이터를 복사하거나 저장하는 것을 말합니다. 이렇게 하면 데이터가

MySQL에서 redo 로그와 binlog의 차이점은 무엇입니까? MySQL에서 redo 로그와 binlog의 차이점은 무엇입니까? Jun 03, 2023 pm 06:53 PM

머리말 MySQL에는 6가지 유형의 로그 파일이 있습니다. 즉, 리두 로그(redolog), 롤백 로그(undolog), 바이너리 로그(binlog), 오류 로그(errorlog), 느린 쿼리 로그(slowquerylog), 일반 쿼리 로그(generallog) ), 릴레이 로그(relaylog). 1. 리돌로그란 무엇인가요? Redo Log 파일이라고도 알려진 Redolog는 트랜잭션 작업의 변경 사항을 기록하는 데 사용되며 트랜잭션 제출 여부에 관계없이 데이터 수정 후의 값을 기록합니다. Redolog 파일은 데이터베이스 정전, Inn 등 인스턴스 및 미디어 오류(mediafailure)가 발생하는 경우 유용할 수 있습니다.

Laravel에서 데이터 복구를 위해 미들웨어를 사용하는 방법 Laravel에서 데이터 복구를 위해 미들웨어를 사용하는 방법 Nov 02, 2023 pm 02:12 PM

Laravel은 효율적이고 안전하며 확장 가능한 웹 애플리케이션을 구축할 수 있는 빠르고 쉬운 방법을 제공하는 인기 있는 PHP 웹 애플리케이션 프레임워크입니다. Laravel 애플리케이션을 개발할 때 데이터 복구 문제, 즉 데이터 손실이나 손상이 발생한 경우 데이터를 복구하고 애플리케이션의 정상적인 작동을 보장하는 방법을 고려해야 하는 경우가 많습니다. 이 글에서는 Laravel 미들웨어를 사용하여 데이터 복구 기능을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 라라란 무엇인가?

하드 드라이브 섹터 손상 문제를 처리하는 방법 하드 드라이브 섹터 손상 문제를 처리하는 방법 Feb 19, 2024 am 11:03 AM

깨진 하드 디스크 섹터를 해결하는 방법 깨진 하드 디스크 섹터는 데이터 손실을 일으키고 컴퓨터 성능에 영향을 미칠 수 있는 일반적인 하드웨어 오류입니다. 불량 하드 드라이브 섹터의 문제를 이해하고 해결하는 것은 매우 중요합니다. 이 기사에서는 하드 디스크 섹터의 ​​개념을 소개하고 하드 디스크 섹터 불량의 일반적인 원인과 해결 방법에 대해 논의합니다. 1. 하드디스크 섹터란 무엇입니까? 불량 하드디스크 섹터 문제를 해결하는 방법을 소개하기 전에 먼저 하드디스크 섹터가 무엇인지부터 알아보겠습니다. 하드 디스크 섹터는 하드 드라이브에서 읽고 쓸 수 있는 가장 작은 공간입니다.

See all articles