1. 程式人生 > >當ORACLE突然斷電,重新啟動過程發生了哪些事?

當ORACLE突然斷電,重新啟動過程發生了哪些事?

一、當我們在進行DML,DDL命令的時候,均會產生兩種不同型別的資料:

1)重做記錄,目的是確保資料庫具有可恢復性

2)被修改的資料塊本身,目的是保證資料庫的永續性。

oracle規定:保證重作記錄先於對應的髒資料塊寫入永久層(也就是資料庫檔案)

那麼,一個更改產生的重作記錄和髒資料塊,DBWn必須在LGWR將重做記錄寫入線上重做日誌之後才可以把對應的髒資料塊寫入磁碟,這樣就會導致資料檔案永遠比線上重做日誌舊。

二、當我們以shutdown  immediate / normal / transactional命令關閉資料庫的時候,資料庫會做三件事:

1)oracle會發起一個完全檢查點,此時任何新的變更將不被允許

2)LGWR將日誌緩衝區中現有的重作記錄寫入線上重做日誌——>清空日誌緩衝區——>停下LGWR——>線上日誌停止更新

3)DBWn將相對應的髒資料庫寫入資料檔案

這時候線上重做日誌和資料檔案達到了同步。

三、對正常關閉的資料庫發出start 命令後,資料庫要在open階段會檢查線上重做日誌和資料檔案是否同步,他們的同步是開啟資料庫的必要條件。

那麼,在資料庫突然斷電的之後,再次開啟資料庫,資料庫進行了什麼操作呢?

SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  167772160 bytes
Fixed Size		    1218316 bytes
Variable Size		   71305460 bytes
Database Buffers	   92274688 bytes
Redo Buffers		    2973696 bytes
Database mounted.
Database opened.
開啟警告檔案進行分析
[[email protected] ~]# more /u01/app/oracle/admin/orcl/bdump/alert_orcl.log 
...........................................
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
starting up 1 shared server(s) ...
Tue Sep  3 17:55:33 2013
ALTER DATABASE   MOUNT
Tue Sep  3 17:55:37 2013
Setting recovery target incarnation to 2
Tue Sep  3 17:55:37 2013
Successful mount of redo thread 1, with mount id 1352977301
Tue Sep  3 17:55:37 2013
Database mounted in Exclusive Mode
Completed: ALTER DATABASE   MOUNT
Tue Sep  3 17:55:37 2013
ALTER DATABASE OPEN
Tue Sep  3 17:55:37 2013
Beginning crash recovery of 1 threads
Tue Sep  3 17:55:37 2013
Started redo scan
Tue Sep  3 17:55:37 2013
Completed redo scan
 91 redo blocks read, 41 data blocks need recovery
Tue Sep  3 17:55:38 2013
Started redo application at
 Thread 1: logseq 124, block 1372
Tue Sep  3 17:55:38 2013
Recovery of Online Redo Log: Thread 1 Group 3 Seq 124 Reading mem 0
  Mem# 0 errs 0: /u01/app/oracle/oradata/orcl/redo03.log
Tue Sep  3 17:55:38 2013
Completed redo application
Tue Sep  3 17:55:38 2013
Completed crash recovery at
 Thread 1: logseq 124, block 1463, scn 1714580
 41 data blocks read, 41 data blocks written, 91 redo blocks read
Tue Sep  3 17:55:38 2013
-----本行書寫錯誤,不用看----Beginning crash recovery of 1 threads
可以看到,ORACLE在open階段,會自動恢復因為突然斷電造成的崩潰:
Beginning crash recovery of 1 threads
檢查REDO日誌,發現有41個數據塊需要恢復,然後開始恢復第3號日誌組中124號日誌的第1372塊,
Completed crash recovery at
 Thread 1: logseq 124, block 1463, scn 1714580
 41 data blocks read, 41 data blocks written, 91 redo blocks read
共恢復了41個數據塊,讀了91個重做日誌塊。

從這個警告日誌中可以看出:

當斷電後啟動資料庫的時候,為了是資料庫能夠開啟,ORACLE自動的進行例項操作同步資料庫檔案。

例項恢復(INSTANCE RECOVERY):在啟動資料庫的時候發現檔案不同步後,自動利用線上日誌中的重作記錄自動對陳舊的資料檔案進行恢復的過程。

總結:在資料庫強制關閉之後再開啟,會做一下步驟

1.管理員發出startup命令

2.開啟引數檔案,啟動例項

3.開啟控制檔案

4.檢查線上重做日誌和資料檔案是否同步,結果為不同步

5.對已經提交事務實施前滾,對沒有寫如資料檔案的髒塊寫進資料檔案。

6.開啟資料庫,可以接受客戶請求

7.對沒有提交的事務實施回滾,將相當於sql命令中的rollback,將相對應的已經寫入資料檔案的塊給修改掉,完成之後資料檔案中不會存在由於上一次強制關閉而留下的,未提交的髒資料塊。

相關推薦

ORACLE突然斷電重新啟動過程發生哪些

一、當我們在進行DML,DDL命令的時候,均會產生兩種不同型別的資料: 1)重做記錄,目的是確保資料庫具有可恢復性 2)被修改的資料塊本身,目的是保證資料庫的永續性。 oracle規定:保證重作記錄先於對應的髒資料塊寫入永久層(也就是資料庫檔案) 那麼,一個更改產生的重作記

2017年我的身邊發生那些

編程 frame ceo 賬號 核心 繼續 列表 href 運行 不知不覺,運營獨具.NET跨平臺特色的微信公眾號:dotNet跨平臺至今已經整整三年光景了,這三年裏微軟開源.NET也滿三周年了。三年時間說長不長,說短也不短了,然而我還是保持著每天三篇的更新 ,或有感而原創

從小公司進入大廠我都做對哪些

故事得從19年的那個秋天說起,同事小麗給俺發了條訊息:“俺物件進城了。”“納尼?!你物件從鄉下來了?”“不是,俺物件去大公司了。”“哦哦,這麼個意思啊,你物件真棒!考官都問什麼了,我看看......” 於是俺也蠢蠢欲動,開啟了大廠面試的征程,下面是俺的經驗,可以給諸位借鑑借鑑。 日常準備 鍛鍊身體 騷年

解決tomcat非正常關閉後重新啟動時提示埠號被佔用問題

問題描述:今天在做一個租車系統的android專案,該專案是cs架構的,伺服器端用的是三大框架整合json來實現的,遇到一個很小的小問題,卻花了我好長的時間去解決。 就是當tomcat啟動後,由於某種原因,eclipse強行停止掉,然後重啟eclipse,在重啟tomcat

Ubuntu和Win7雙系統ubuntu被刪重新啟動之後顯示no such partition

div cmd命令 class ubuntu 終端 oot windows7 data- 重新啟動 準備一張windows7的系統安裝盤。從光盤啟動電腦,在光盤啟動完畢之後。按shift+F10,調出cmd命令終端,在終端輸入:bootrec/fixmbr OK。重新啟

突然斷電怎麽找回編輯中的文檔。

關閉 exc xls tin 一份 編輯 用戶名 顯示 文件夾 相信很多朋友都會遇到,在寫材料或者在處理數據時,突然間斷電或者電腦死機重啟,碼了半天的字、整理了半天的數據也許就這麽沒了,有時候電腦重啟的時候再打開word或者excel或者可以看到恢復的提示,但是有的時候沒有

安裝oracle 11g時啟動服務出現錯誤找不到OracleMTSRecoveryService的解決方法

是否 卸載 名稱 window7 ntc oca 高級 很多 bho 很多人在安裝orcl數據庫時,出現很多報錯,我也不例外,因上次數據庫出現問題,無法修復,只能從新安裝,無奈的是,安裝時報啟動服務出現錯誤,找不到OracleMTSRecoveryService錯MMP,心

Hadoop-hdfs的設計理念blocknamenodedatanode啟動過程心跳機制安全模式

( hdfs的設計理念     硬體故障是常態而非例外。HDFS例項可能包含數百或數千臺伺服器計算機,         每臺計算機都儲存檔案系統資料的一部分。事實上,存在大量元件並且每個   

電腦突然斷電導致vmware中的虛擬機器的.vmx檔案丟失,從而打不開虛擬機器

電腦突然斷電,導致虛擬機器打不開,經查是因為缺少虛擬機器的配置檔案.vmx 這是一個虛擬機器的配置檔案。 .encoding = "GBK" config.version = "8" virtualHW.version = "14" pciBridge0.present

Oracle刪除後重新安裝的方法

 很多朋友只用了oracle的刪除,但很多情況下,他會發現重新安裝時,點了下一步安裝介面就消失了,往往無奈下只好重灌系統,其實只是你資料庫沒刪乾淨,刪乾淨就不會出現這種情況了。    實現方法:    1、 開始->設定->控制面板->管理工具->服務 停止所有Oracle服

linux下關閉防火牆重新啟動的情況

問題描述:我用systemctl stop firewalld 命令關閉了防火牆後無法啟動(報錯 unit is masked) 解決方法 :先解鎖  命令 systemctl unmask firewalld,然後在執行啟動命令  systemctl start fire

Android啟動service下載失敗後stopService重新啟動service下載出現問題

   在Android啟用service後臺下載,使用非同步執行緒進行下載,下載失敗時,關掉service。在重新下載時,重新啟動service,啟動新的非同步執行緒進行下載;因為上一次下載失敗只是啟動了停止了service,但上一個非同步執行緒任務還在繼續執行,此時又有

ssm框架中專案啟動過程以及web.xml配置詳解

本篇主要在基於SSM的框架,深入講解web.xml的配置 web.xml        每個javaEE專案中都會有,web.xml檔案是用來初始化配置資訊:比如Welcome頁面、servlet、servlet-mapping、filter、listener、啟動載入級

android-安裝應用直接“開啟”home鍵返回桌面再次點選應用圖示重新啟動MAIN_action的Activity

今天測試MM偶爾發現了這麼個神奇的現象:給測試MM發了個應用安裝包,MM安裝後開啟應用,進入主介面後,點選home鍵返回了桌面,然後從桌面再點選應用圖示再次開啟應用,這時候神奇的事情發生了~~~竟然打開了應用的登入介面(MAIN_action的Activity)

關於應用記憶體資料回收後重新啟動

情景: 小米手機在執行中更改許可權後,再次進入應用後,位於前臺的activity還是之前開啟的那個,但是會重新從onCreate開始載入,有時會出現不可預料之錯。 於是,找原因,發現application也重新進入onCreate了。 最後,在application中o

打開瀏覽器在地址欄輸入URL回車出現網頁內容。整個過程發生什麽?其中的原理是什麽?

nbsp article tps blog 斷開 其中 過程 art 域名解析 域名解析成IP地址; 與目的主機進行TCP連接(三次握手); 發送與收取數據(瀏覽器與目的主機開始HTTP訪問過程); 與目的主機斷開TCP連接(四次揮手); 更多請看: https://b

oracle基本操作自己親手做過

第一部分: --建立表空間(其中TWC.DBF不需要我們手工建立) -----建立了一個大小為20M的表空間,自動增長以5M的大小,可以無限制增加下去, ------只要你的磁碟夠大 create tablespace tian datafile   'D:\

混合雲架構備受青睞但是實施過程要避開哪些坑?

混合雲已經逐漸成為系統架構設計師的架構設計選擇而變得越來越流行,為什麼架構師會越來越多地選擇混合雲架構呢? 公有云的優勢 回答這個問題之前,我們先從公有云的優勢入手進行逐步分析,現在各種企業都在越來越多地使用公有云了,使用公有云主要是基於以下幾個需求: 1、對於業務快速響應的需求 現代企業的業務往往

PostgreSQL啟動過程中的那些十六:啟動程序二

       這節主要討論啟動程序到了StartupXLOG。根據情況,如果需要就排除系統故障引起的資料庫不一致狀態,做相應的REDO或UNDO,然後建立一個檢查點,把所有共享記憶體磁碟緩衝和提交資料緩衝寫並檔案同步到磁碟、把檢查點插入xlog檔案、更新控制檔案,使資料庫達

ubuntu 17.10安裝後重新啟動卡在ubuntuLogo啟動畫面問題

我裝的是win+ubuntu雙系統,用U盤安裝時也卡在了下面這個畫面,好不容易它進去了,讓我安裝成功了ubuntu,重啟後進入了啟動選擇頁後選擇了ubuntu後又就一直卡在了下面這個畫面。(截圖不了,所以就拿了 http://chenrudan.github.io/blog/