重建控制檔案時,與資料檔案相關的Checkpoint資訊來自何處
背景: 關閉資料庫,啟動資料庫到Mount狀態,查詢此時資料檔案頭,控制檔案中記錄的各資料檔案的Checkpoint; 再次關閉資料庫,備份所有資料檔案; 然後開啟資料庫,執行各種操作,如:強制執行檢查點; 再次關閉資料庫,用備份的資料檔案恢復現在的資料檔案,重建控制檔案(重建控制檔案分為兩種情況 1. Noresetlogs ——> 檢視此時的資料檔案頭,控制檔案記錄的各資料檔案的Checkpoint) 2. Resetlogs ——> 檢視此時的資料檔案頭,控制檔案記錄的各資料檔案的Checkpoint) 與之前的Checkpoint比較。 問題: 1. Noresetlogs 重建控制檔案,此時控制檔案中記錄的Checkpoint資訊由何處得來? 2. Resetlogs 重建控制檔案,此時控制檔案中記錄的Checkpoint資訊由何處得來? 實驗步驟: Resetlogs的情況: SQL> shutdown immediate 資料庫已經關閉。 已經解除安裝資料庫。 ORACLE 例程已經關閉。 SQL> startup mount ORACLE 例程已經啟動。 Total System Global Area 101784276 bytes Fixed Size 453332 bytes Variable Size 75497472 bytes Database Buffers 25165824 bytes Redo Buffers 667648 bytes 資料庫裝載完畢。 SQL> select checkpoint_change# 2 from v$datafile; CHECKPOINT_CHANGE# ------------------ 306219 306219 306219 306219 SQL> select checkpoint_change# 2 from v$datafile_header; CHECKPOINT_CHANGE# ------------------ 306219 306219 306219 306219 SQL> shutdown immediate ORA-01109: 資料庫未開啟 已經解除安裝資料庫。 ORACLE 例程已經關閉。 ——備份所有資料檔案 SQL> startup ORACLE 例程已經啟動。 Total System Global Area 101784276 bytes Fixed Size 453332 bytes Variable Size 75497472 bytes Database Buffers 25165824 bytes Redo Buffers 667648 bytes 資料庫裝載完畢。 資料庫已經開啟。 SQL> alter system checkpoint; 系統已更改。 SQL> alter system checkpoint; 系統已更改。 SQL> alter system checkpoint; 系統已更改。 SQL> alter system checkpoint; 系統已更改。 SQL> shutdown immediate 資料庫已經關閉。 已經解除安裝資料庫。 ORACLE 例程已經關閉。 ——用備份的資料檔案代替當前的資料檔案。 SQL> startup nomount ORACLE 例程已經啟動。 Total System Global Area 101784276 bytes Fixed Size 453332 bytes Variable Size 75497472 bytes Database Buffers 25165824 bytes Redo Buffers 667648 bytes ——重建控制檔案Resetlogs情況: SQL> @d:ora90adminiceudumpcontrol.sql 控制檔案已建立 SQL> select checkpoint_change# 2 from v$datafile; CHECKPOINT_CHANGE# ------------------ 306219 306219 306219 306219 SQL> select checkpoint_change# 2 from v$datafile_header; CHECKPOINT_CHANGE# ------------------ 306219 306219 306219 306219 SQL> alter database open; alter database open * ERROR 位於第 1 行: ORA-01589: ??????????? RESETLOGS ? NORESETLOGS ?? SQL> alter database open resetlogs; 資料庫已更改。 ——由於此時控制檔案中記錄的各資料檔案的Checkpoint和各資料檔案頭記錄的Checkpoint一致, ——且各資料檔案的Checkpoint和其Stop Checkpoint一致,故可以直接開啟資料庫,不用Recover。 ——只不過Open的時候要Resetlogs而已。 SQL> alter system checkpoint; 系統已更改。 SQL> alter system checkpoint; 系統已更改。 SQL> alter system checkpoint; 系統已更改。 |
Noresetlogs的情況:
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
SQL> select checkpoint_change#
2 from v$datafile;
CHECKPOINT_CHANGE#
------------------
306340
306340
306340
306340
SQL> select checkpoint_change#
2 from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
306340
306340
306340
306340
SQL> alter database backup controlfile to trace;
——備份控制檔案
資料庫已更改。
SQL> shutdown immediate
ORA-01109: 資料庫未開啟
已經解除安裝資料庫。
ORACLE 例程已經關閉。
——備份所有的資料檔案
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> alter system checkpoint;
系統已更改。
SQL> alter system checkpoint;
系統已更改。
SQL> alter system checkpoint;
系統已更改。
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
——用備份的資料檔案恢復當前的所有資料檔案
SQL> startup nomount
ORACLE 例程已經啟動。
Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> @d:ora90adminiceudumpcontrol.sql
——重建控制檔案,用Noresetlogs
控制檔案已建立
SQL> select checkpoint_change#
2 from v$datafile;
CHECKPOINT_CHANGE#
------------------
306454
306454
306454
306454
——當前控制檔案中記錄的各資料檔案的Checkpoint。
SQL> select checkpoint_change#
2 from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
306340
306340
306340
306340
——當前各資料檔案頭記錄的各自的Checkpoint,與備份時的Checkpoint相等.
——但是與當前控制檔案記錄的Checkpoint不等。
SQL> alter session set nls_language=american;
Session altered.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: 'D:ORA90ORADATAICESYSTEM01.DBF'
——控制檔案記錄的各資料檔案的Checkpoint與各資料檔案頭記錄的Checkpoint不等,故要恢復。
SQL> recove datafile 1;
SP2-0734: unknown command beginning "recove dat..." - rest of line ignored.
SQL> recover datafile 1;
Media recovery complete.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 2 needs media recovery
ORA-01110: data file 2: 'D:ORA90ORADATAICEUNDOTBS01.DBF'
SQL> recover database;
Media recovery complete.
SQL> alter database open;
Database altered.
結論:
1. 用Noresetlogs重建控制檔案時,控制檔案中的各資料檔案的Checkpoint來自Online logs中的Current log頭。(可以用Alter session set events ‘immediate trace name redohdr level 3’;來驗證)
2. 用Resetlogs重建控制檔案時,控制檔案中的各資料檔案的Checkpoint來自各資料檔案頭。
其實這也比較好理解,不Resetlogs的話,當前Online log中肯定是含有最新的Checkpoint,一旦Resetlogs,說明當前Online log 不可用,也就只好從各資料檔案頭來讀取相應的Checkpoint了。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18921899/viewspace-1016842/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 控制檔案及引數檔案何時自動備份Oracle
- css檔案與資源路徑相關CSS
- MongoDB與MMAPV1相關的資料檔案簡述MongoDB
- 檔案與資料
- Oracle資料檔案和臨時檔案的管理Oracle
- 利用VS(Visual Studio)自帶的工具檢視DLL檔案相關資訊
- Controlfile 重建控制檔案 noresetlogs, resetlogs..
- 技術分享 | OceanBase 資料處理之控制檔案
- linux檔案相關命令 透過檔案獲取父資料夾名稱Linux
- 2.5.10.2 關於資料庫時區檔案資料庫
- 關於Docx動態控制word模板檔案的資料
- 與控制檔案有關的恢復
- 【/proc/檔案淺析】另類辦法恢復資料檔案和控制檔案
- [20190410]dg建立臨時表檔案資料檔案.txt
- 新建的表空間(或資料檔案)丟失以及控制檔案丟失,有新建表空間(或資料檔案)前的控制文
- 使用資料流的思想處理檔案
- 清除Oracle控制檔案中的歸檔資訊v$archived_logOracleHive
- 與控制檔案有關的恢復(二)
- oracle快速拿到重建控制檔案語句的方法二Oracle
- 資料檔案合併與拆分
- 網站檔案修改資料庫,安全高效地修改網站資料庫中的檔案資訊網站資料庫
- 檢視織夢CMS原始碼中的資料庫相關檔案原始碼資料庫
- 關於丟失表空間資料檔案的處理方式
- git的gitignore檔案排除資料夾和檔案Git
- 分享下 PHP 使用 getID3 來獲取音訊、視訊等媒體檔案相關資訊PHP音訊
- java檔案相關(檔案追加內容、檔案內容清空、檔案內容讀取)Java
- linux組資訊檔案Linux
- 檔案屬性資訊
- 2.5.10.3 指定資料庫時區檔案資料庫
- 分享下 PHP 使用 getID3 來獲取音訊、影片等媒體檔案相關資訊PHP音訊
- 控制檔案損壞處理
- Excel檔案 利用MySQL/Python 實現自動處理資料的功能ExcelMySqlPython
- ASP.NET Core 中的檔案提供程式 遍歷資料夾讀取檔案資訊ASP.NET
- spring boot配置檔案相關Spring Boot
- Linux檔案管理相關命令Linux
- 實驗七 檔案相關
- 檔案管理系統助力檔案資訊化建設
- MySQL 磁碟空間滿導致表空間相關資料檔案損壞故障處理MySql
- hadoop 資料夾檔案的建立與刪除Hadoop