oracle中scn(系統改變號)

系統scn: ? ? ? ? ? ? ? ? select checkpoint_change# from v$database;

文件scn: ? ? ? ? ? ? ? ? select name,checkpoint_change# from v$datafile;

結束scn: ? ? ? ? ? ? ? ? select name,last_change# from v$datafile;

數據文件頭部scn: ? ? select name,checkpoint_change# from v$datafile_header;

系統scn、文件scn、結束scn,這三者是在控制文件中,數據文件頭部scn在數據文件上。

? ? ?數據庫正常運行,系統scn、文件scn、數據文件頭部scn(也稱為開始scn),這三者是相同的,而結束scn是空,即無窮大(因為正常運行,還未關閉啊),這是正常運行的情況,那么當正常關閉時,四者的scn號是相同的。假如發生非正常關閉,結束scn是空值,那么下次啟動數據庫,oracle發現結束scn是空值,就知道上次是非正常關閉,所以就要進行實例恢復了。實例恢復需要的是redo log,那么oracle是如何確定使用哪個redo log?以及確定之后又該從該redo log哪里進行恢復的呢?下面做個實驗。。。

? ? 當前數據庫的系統scn號:

這是redo log的一些信息:

? ? ? 我們主要關注第一次改變編號和狀態,我們可以看見,第3號日志組,序列號36的FIRST_CHANGE#和當前數據庫的系統scn號一致,為什么呢,FIRST_CHANGE#又是什么呢?從查詢結果我們可以看出,1號日志組是最舊的,2號次之,3號是最新的,這是從FIRST_CHANGE#可以看出來的,有FRIST就應該有NEXT啊,其實不難理解,下一個日志組的FIRST_CHANGE#其實就是這當前日志組的NEXT。所以例如1號日知組,FIRST_CHANGE#是1372964,NEXT是1395875。FIRST_CHANGE#的意義是該日志文件的第一條日志內容的scn號,NEXT就是該日志文件的最后一條內容的scn號了。那么如果此時數據庫崩潰,數據文件的scn號是1398359,而3號日志文件的FIRST_CHANGE#也是1398359,且當3號日志組的狀態是current,恢復就只要恢復3號日志組文件的內容就可以了,因為其他日志文件所記錄的內容已寫入到數據文件中。

? ? ? 還有一種情況,如果三個日志組的狀態是active、active、current,那么數據文件的scn號就會和比較舊的active的日志組的FIRST_CHANGE#一致,這時如果崩潰后恢復,那么三個日志組都會用到。

? ? ? 結論:現在可以理解了,scn號的目的是為了保證數據庫狀態的一致性,而scn和redo log的FIRST_CHANGE#作用是,當實例恢復的時候,確定了該跑哪個日志組,才能將臟塊重現在buffer cache中。而確定日志組后,又該從該日志組的哪條日志開始,就要從控制文件的LRBA中獲取了(在我的上一個隨筆檢查點隊列中有描述)。

轉載于:https://www.cnblogs.com/oraclelike/p/6155512.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457414.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457414.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457414.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

sicktim571操作手冊_SICK激光傳感器TIM310操作說明書

SICK激光傳感器TIM310操作說明書最近更新時間:2015/1/23 13:31:29提 供 商:資料大小:1.2MB文件類型:PDF 文件下載次數:709次資料類型:瀏覽次數:5192次相關產品:詳細介紹:…

Tengine 安裝配置全過程

在先前的文章中介紹過Tengine,先前只是使用了運維人員配置好的內容,未自己進行過安裝配置。周末閑來無事,對于Tengine進行了嘗試性的安裝。記錄下面方便以后再做改進。Tengine官網上有個非常簡單的教程,中間并未涉及到一些常用的設…

【Go】sync.WaitGroup 源碼分析

WaitGroup sync.WaitGroup 用于等待一組 goroutine 返回,如: var wg sync.WaitGroup{}func do() {time.Sleep(time.Second)fmt.Println("done")wg.Done() }func main() {go do()go do()wg.Add(2)wg.Wait()fmt.Println("main done"…

什么是響應式設計?為什么要做響應式設計?響應式設計的基本原理是什么?...

頁面的設計和開發應當根據用戶行為以及設備環境(系統平臺、屏幕尺寸、屏幕定向等)進行相應的響應和調整。具體的實踐方式由多方面組成,包括彈性網格和布局、圖片、css media query的使用等。無論用戶正在使用筆記本還是iPad,我們的…

三個數相減的平方公式_快收好這份小學數學公式大全!孩子遇到數學難題時肯定用得上...

必背定義、定理公式1.三角形的面積=底高2 公式 S= ah22.正方形的面積=邊長邊長公式 S= aa3.長方形的面積=長寬公式 S= ab4.平行四邊形的面積=底高公式 S= ah5.梯形的面積&#xff1d…

Eclipse 控制console

http://blog.csdn.net/leidengyan/article/details/5686691

【Go】sync.RWMutex源碼分析

RWMutex 讀寫鎖相較于互斥鎖有更低的粒度,它允許并發讀,因此在讀操作明顯多于寫操作的場景下能減少鎖競爭的次數,提高程序效率。 type RWMutex struct {w Mutex // held if there are pending writerswriterSem uint32 // sem…

add.attribute向前端傳_前端知識-概念篇

1、一次完整的HTTP事務是怎樣的一個過程?基本流程:a. 域名解析b. 發起TCP的3次握手c. 建立TCP連接后發起http請求d. 服務器端響應http請求,瀏覽器得到html代碼e. 瀏覽器解析html代碼,并請求html代碼中的資源f. 瀏覽器對頁面進行渲…

【數據庫】一篇文章搞懂數據庫隔離級別那些事(LBCC,MVCC)

MySQL 事務 文章比較長,建議分段閱讀 后續如果有改動會在 Junebao.top 之前對事務的了解僅限于知道要么全部執行,要么全部不執行,能背出 ACID 和隔離級別,知其然但不知其所以然,現在覺得非常有必要系統學一下&#xff…

AFNetworking網絡請求與圖片上傳工具(POST)

AFNetworking網絡請求與圖片上傳工具&#xff08;POST&#xff09; .h文件 #import <Foundation/Foundation.h>/** 成功Block */ typedef void(^SuccessBlockType) (id responsData); /** 失敗Block */ typedef void(^FaileBlockType) (NSError *error);interface NetD…

api商品分享源碼_SSM框架高并發和商品秒殺項目高并發秒殺API源碼免費分享

前言&#xff1a;一個整合SSM框架的高并發和商品秒殺項目,學習目前較流行的Java框架組合實現高并發秒殺API源碼獲取&#xff1a;關注頭條號轉發文章之后私信【秒殺】查看源碼獲取方式&#xff01;項目的來源項目的來源于國內IT公開課平臺,質量沒的說,很適合學習一些技術的基礎,…

Golang 定時任務 github/robfig/cron/v3 使用與源碼解析

Cron 源碼閱讀 robfig/cron/v3 是一個 Golang 的定時任務庫&#xff0c;支持 cron 表達式。Cron 的源碼真實教科書級別的存在&#xff08;可能是我菜 …&#xff09;,真的把低耦合高內聚體現地淋漓盡致&#xff0c;另外其中涉及的裝飾器模式&#xff0c;并發處理等都很值得學習…

修改 cmd 字體為 Consolas

windows 下的 cmd 窗口默認的字體有點難看&#xff0c;長時間使用操作 node.js 有點小疲勞&#xff0c;可以修改注冊表替換字體為 Consolas&#xff0c;并且可以全屏 cmd 窗口&#xff0c;代碼如下&#xff1a; Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Conso…

mac下安裝前端模板引擎Jinja2

在mac本上安裝Jinja2&#xff0c;搜索網上介紹的經驗&#xff0c;都是說使用easy_install或者pip安裝&#xff0c;比如 #sudo easy_install Jinja2 #sudo pip install Jinja2 也有直接使用 #easy_install Jinja2的&#xff0c;但是我使用上述命令安裝總是不成功&#xff0c;提示…

為什么要用python不用origin_Python告訴你為什么百度已死

Python3爬蟲百度一下&#xff0c;坑死你&#xff1f;一、寫在前面這個標題是借用的路人甲大佬的一篇文章的標題(百度一下&#xff0c;坑死你)&#xff0c;而且這次的爬蟲也是看了這篇文章后才寫出來的&#xff0c;感興趣的可以先看下這篇文章。前段時間有篇文章《搜索引擎百度已…

關于 HTTP 的一切(HTTP/1.1,HTTP/2,HTTP/3,HTTPS, CORS, 緩存 ,無狀態)

HTTP 為什么會出現 HTTP 協議&#xff0c;從 HTTP1.0 到 HTTP3 經歷了什么&#xff1f;HTTPS 又是怎么回事&#xff1f; HTTP 是一種用于獲取類似于 HTML 這樣的資源的 應用層通信協議&#xff0c; 他是萬維網的基礎&#xff0c;是一種 CS 架構的協議&#xff0c;通常來說&…

AS 2.0新功能 Instant Run

Instant Run上手作為一個Android開發者&#xff0c;很多的時候我們需要花大量的時間在bulid&#xff0c;運行到真機&#xff08;虛擬機&#xff09;上&#xff0c;對于ios上的Playground羨慕不已&#xff0c;這種情況將在Android Studio 2.0有了很大改善&#xff0c;使用instan…

爬蟲cookie過期_python instagram 爬蟲

葉湘倫&#xff1a;【文字篇】如何系統地自學 Python&#xff1f;?zhuanlan.zhihu.com直接介紹一下具體的步驟以及注意點&#xff1a;instagram 爬蟲注意點instagram 的首頁數據是 服務端渲染的&#xff0c;所以首頁出現的 11 或 12 條數據是以 html 中的一個 json 結構存在的…

php 無限循環

<?php header("Content-type:text/html;charsetutf-8"); $arr array( array(1, 0, 語文), array(2, 1, 數學), array(3, 0, 英文), array(4, 3, 美術), ); function xunhuan($pid 0) { global $arr; foreach ($arr as $value) { if ($value[1] $pid) { ech…

MySQL InnoDB 是如何存儲數據的

InnoDB 是怎么存儲數據的 本文是《MySQL 是怎樣運行的 —— 從根兒上理解 MySQL》讀書總結&#xff0c;強烈推薦這本書&#xff1b; CSDN 不能顯示 SVG&#xff0c;可能有圖片加載不出來&#xff0c;可以到 我的博客 上看。 數據目錄 眾所周之&#xff0c;MySQL 的數據是存儲在…