oracle備份恢復的大致原理!
講課時隨手記錄的一個大致過程!
[@more@]SQL> create table t2(id int) tablespace users;
表已建立。
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
704959
SQL> select group#,status,sequence# ,archived,thread#,first_change# from v$log;
GROUP# STATUS SEQUENCE# ARC THREAD# FIRST_CHANGE#
---------- ---------------- ---------- --- ---------- -------------
1 ACTIVE 89 YES 1 704431
4 CURRENT 90 NO 1 704878
SQL> insert into t2 values(1);
已建立 1 行。
SQL> select start_scnb from v$transaction;
START_SCNB
----------
704941
SQL> commit;
提交完成。
SQL> alter system switch logfile;
系統已更改。
SQL> select group#,status,sequence# ,archived,thread#,first_change# from v$log;
GROUP# STATUS SEQUENCE# ARC THREAD# FIRST_CHANGE#
---------- ---------------- ---------- --- ---------- -------------
1 CURRENT 91 NO 1 705008
4 ACTIVE 90 YES 1 704878
SQL> select sequence#,first_change#,next_change# last_change# from v$archived_lo
g where sequence#=90;
SEQUENCE# FIRST_CHANGE# LAST_CHANGE#
---------- ------------- ------------
90 704878 705008
SQL> select group#,status,sequence# ,archived,thread#,first_change# from v$log;
GROUP# STATUS SEQUENCE# ARC THREAD# FIRST_CHANGE#
---------- ---------------- ---------- --- ---------- -------------
1 CURRENT 91 NO 1 705008
4 ACTIVE 90 YES 1 704878
SQL> insert into t2 values(2);
已建立 1 行。
SQL> commit;
提交完成。
SQL> alter system switch logfile;
系統已更改。
SQL> select group#,status,sequence# ,archived,thread#,first_change# from v$log;
GROUP# STATUS SEQUENCE# ARC THREAD# FIRST_CHANGE#
---------- ---------------- ---------- --- ---------- -------------
1 ACTIVE 91 YES 1 705008
4 CURRENT 92 NO 1 705056
SQL> insert into t2 values(3);
已建立 1 行。
SQL> select start_scnb from v$transaction;
START_SCNB
----------
705049
SQL> select start_scnb from v$transaction;
START_SCNB
----------
705049
SQL> select sequence#,first_change#,next_change# last_change# from v$archived_lo
g where sequence#=91;
SEQUENCE# FIRST_CHANGE# LAST_CHANGE#
---------- ------------- ------------
91 705008 705056
SQL> select group#,status,sequence# ,archived,thread#,first_change# from v$log;
GROUP# STATUS SEQUENCE# ARC THREAD# FIRST_CHANGE#
---------- ---------------- ---------- --- ---------- -------------
1 ACTIVE 91 YES 1 705008
4 CURRENT 92 NO 1 705056
SQL> insert into t2 values(4);
已建立 1 行。
SQL> select start_scnb from v$transaction;
START_SCNB
----------
705049
SQL> commit;
提交完成。
SQL> select group#,status,sequence# ,archived,thread#,first_change# from v$log;
GROUP# STATUS SEQUENCE# ARC THREAD# FIRST_CHANGE#
---------- ---------------- ---------- --- ---------- -------------
1 ACTIVE 91 YES 1 705008
4 CURRENT 92 NO 1 705056
SQL> insert into t2 values(5);
已建立 1 行。
SQL> select start_scnb from v$transaction;
START_SCNB
----------
705175
SQL> select group#,status,sequence# ,archived,thread#,first_change# from v$log;
GROUP# STATUS SEQUENCE# ARC THREAD# FIRST_CHANGE#
---------- ---------------- ---------- --- ---------- -------------
1 ACTIVE 91 YES 1 705008
4 CURRENT 92 NO 1 705056
SQL> alter system switch logfile;
系統已更改。
SQL> select group#,status,sequence# ,archived,thread#,first_change# from v$log;
GROUP# STATUS SEQUENCE# ARC THREAD# FIRST_CHANGE#
---------- ---------------- ---------- --- ---------- -------------
1 CURRENT 93 NO 1 705195
4 ACTIVE 92 YES 1 705056
SQL> select sequence#,first_change#,next_change# last_change# from v$archived_lo
g where sequence#=92;
SEQUENCE# FIRST_CHANGE# LAST_CHANGE#
---------- ------------- ------------
92 705056 705195
SQL> insert into t2 values(6);
已建立 1 行。
SQL> select start_scnb from v$transaction;
START_SCNB
----------
705175
SQL> select group#,status,sequence# ,archived,thread#,first_change# from v$log;
GROUP# STATUS SEQUENCE# ARC THREAD# FIRST_CHANGE#
---------- ---------------- ---------- --- ---------- -------------
1 CURRENT 93 NO 1 705195
4 ACTIVE 92 YES 1 705056
SQL> commit;
提交完成。
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 163577856 bytes
Fixed Size 1247876 bytes
Variable Size 83887484 bytes
Database Buffers 75497472 bytes
Redo Buffers 2945024 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 1 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 1: 'E:ORACLEPRODUCT10.2.0ORADATATESTSYSTEM01.DBF'
SQL> select status from v$instance;
STATUS
------------
MOUNTED
SQL> alter database open;
alter database open
*
第 1 行出現錯誤:
ORA-01113: 檔案 1 需要介質恢復
ORA-01110: 資料檔案 1: 'E:ORACLEPRODUCT10.2.0ORADATATESTSYSTEM01.DBF'
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
705539
SQL> select file#,checkpoint_change# from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 703270
3 703270
4 703270
10 703270
11 703270
SQL> select group#,status,sequence# ,archived,thread#,first_change# from v$log;
GROUP# STATUS SEQUENCE# ARC THREAD# FIRST_CHANGE#
---------- ---------------- ---------- --- ---------- -------------
4 INACTIVE 92 YES 1 705056
1 CURRENT 93 NO 1 705195
SQL> select sequence#,first_change#,next_change# from v$archived_log where seque
nce#>80 and sequence#<=100;
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#
---------- ------------- ------------
81 656053 656078
82 656078 656103
83 656103 656138
84 656138 676584
85 676584 701337
86 701337 704009
87 704009 704175
88 704175 704431
89 704431 704878
90 704878 705008
91 705008 705056
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#
---------- ------------- ------------
92 705056 705195
已選擇12行。
SQL> recover datafile 1;
ORA-00279: 更改 703270 (在 09/11/2008 09:15:38 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:ORACLEPRODUCT10.2.0ARCHIVELOGARC86_664888560_1
ORA-00280: 更改 703270 (用於執行緒 1) 在序列 #86 中
指定日誌: {
ORA-00308: 無法開啟歸檔日誌
'E:ORACLEPRODUCT10.2.0ARCHIVELOGARC86_664888560_1'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
SQL> recover datafile 1;
ORA-00279: 更改 703270 (在 09/11/2008 09:15:38 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:ORACLEPRODUCT10.2.0ARCHIVELOGARC86_664888560_1
ORA-00280: 更改 703270 (用於執行緒 1) 在序列 #86 中
指定日誌: {
E:oracleproduct10.2.0flash_recovery_areaTESTARCHIVELOG2008_09_11O1_MF_1_
86_4DJX0JH4_.ARC
ORA-00279: 更改 704009 (在 09/11/2008 09:27:43 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:ORACLEPRODUCT10.2.0ARCHIVELOGARC87_664888560_1
ORA-00280: 更改 704009 (用於執行緒 1) 在序列 #87 中
ORA-00278: 此恢復不再需要日誌檔案
'E:oracleproduct10.2.0flash_recovery_areaTESTARCHIVELOG2008_09_11O1_MF_1
_86_4DJX0JH4_.ARC'
指定日誌: {
ORA-00308: 無法開啟歸檔日誌
'E:ORACLEPRODUCT10.2.0ARCHIVELOGARC87_664888560_1'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
SQL> recover datafile 1;
ORA-00279: 更改 704009 (在 09/11/2008 09:27:43 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:ORACLEPRODUCT10.2.0ARCHIVELOGARC87_664888560_1
ORA-00280: 更改 704009 (用於執行緒 1) 在序列 #87 中
指定日誌: {
ORA-00308: 無法開啟歸檔日誌
'E:ORACLEPRODUCT10.2.0ARCHIVELOGARC87_664888560_1'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
SQL> recover datafile 1;
ORA-00279: 更改 704009 (在 09/11/2008 09:27:43 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:ORACLEPRODUCT10.2.0ARCHIVELOGARC87_664888560_1
ORA-00280: 更改 704009 (用於執行緒 1) 在序列 #87 中
指定日誌: {
ORA-00279: 更改 704175 (在 09/11/2008 09:29:02 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:ORACLEPRODUCT10.2.0ARCHIVELOGARC88_664888560_1
ORA-00280: 更改 704175 (用於執行緒 1) 在序列 #88 中
ORA-00278: 此恢復不再需要日誌檔案
'E:ORACLEPRODUCT10.2.0ARCHIVELOGARC87_664888560_1'
指定日誌: {
auto
ORA-00308: 無法開啟歸檔日誌
'E:ORACLEPRODUCT10.2.0ARCHIVELOGARC88_664888560_1'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
ORA-00308: 無法開啟歸檔日誌
'E:ORACLEPRODUCT10.2.0ARCHIVELOGARC88_664888560_1'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
SQL> recover datafile 1;
ORA-00279: 更改 704175 (在 09/11/2008 09:29:02 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:ORACLEPRODUCT10.2.0ARCHIVELOGARC88_664888560_1
ORA-00280: 更改 704175 (用於執行緒 1) 在序列 #88 中
指定日誌: {
auto
ORA-00279: 更改 704431 (在 09/11/2008 09:38:10 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:ORACLEPRODUCT10.2.0ARCHIVELOGARC89_664888560_1
ORA-00280: 更改 704431 (用於執行緒 1) 在序列 #89 中
ORA-00278: 此恢復不再需要日誌檔案
'E:ORACLEPRODUCT10.2.0ARCHIVELOGARC88_664888560_1'
ORA-00279: 更改 704878 (在 09/11/2008 09:43:32 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:ORACLEPRODUCT10.2.0ARCHIVELOGARC90_664888560_1
ORA-00280: 更改 704878 (用於執行緒 1) 在序列 #90 中
ORA-00278: 此恢復不再需要日誌檔案
'E:ORACLEPRODUCT10.2.0ARCHIVELOGARC89_664888560_1'
ORA-00279: 更改 705008 (在 09/11/2008 09:48:11 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:ORACLEPRODUCT10.2.0ARCHIVELOGARC91_664888560_1
ORA-00280: 更改 705008 (用於執行緒 1) 在序列 #91 中
ORA-00278: 此恢復不再需要日誌檔案
'E:ORACLEPRODUCT10.2.0ARCHIVELOGARC90_664888560_1'
已應用的日誌。
完成介質恢復。
SQL> select file#,checkpoint_change# from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 705538
3 703270
4 703270
10 703270
11 703270
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
705539
SQL> alter database open;
alter database open
*
第 1 行出現錯誤:
ORA-01113: 檔案 3 需要介質恢復
ORA-01110: 資料檔案 3: 'E:ORACLEPRODUCT10.2.0ORADATATESTSYSAUX01.DBF'
SQL> recover database;
ORA-00279: 更改 703270 (在 09/11/2008 09:15:38 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:ORACLEPRODUCT10.2.0ARCHIVELOGARC86_664888560_1
ORA-00280: 更改 703270 (用於執行緒 1) 在序列 #86 中
指定日誌: {
auto
ORA-00279: 更改 704009 (在 09/11/2008 09:27:43 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:ORACLEPRODUCT10.2.0ARCHIVELOGARC87_664888560_1
ORA-00280: 更改 704009 (用於執行緒 1) 在序列 #87 中
ORA-00278: 此恢復不再需要日誌檔案
'E:ORACLEPRODUCT10.2.0ARCHIVELOGARC86_664888560_1'
ORA-00279: 更改 704175 (在 09/11/2008 09:29:02 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:ORACLEPRODUCT10.2.0ARCHIVELOGARC88_664888560_1
ORA-00280: 更改 704175 (用於執行緒 1) 在序列 #88 中
ORA-00278: 此恢復不再需要日誌檔案
'E:ORACLEPRODUCT10.2.0ARCHIVELOGARC87_664888560_1'
ORA-00279: 更改 704431 (在 09/11/2008 09:38:10 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:ORACLEPRODUCT10.2.0ARCHIVELOGARC89_664888560_1
ORA-00280: 更改 704431 (用於執行緒 1) 在序列 #89 中
ORA-00278: 此恢復不再需要日誌檔案
'E:ORACLEPRODUCT10.2.0ARCHIVELOGARC88_664888560_1'
ORA-00279: 更改 704878 (在 09/11/2008 09:43:32 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:ORACLEPRODUCT10.2.0ARCHIVELOGARC90_664888560_1
ORA-00280: 更改 704878 (用於執行緒 1) 在序列 #90 中
ORA-00278: 此恢復不再需要日誌檔案
'E:ORACLEPRODUCT10.2.0ARCHIVELOGARC89_664888560_1'
ORA-00279: 更改 705008 (在 09/11/2008 09:48:11 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:ORACLEPRODUCT10.2.0ARCHIVELOGARC91_664888560_1
ORA-00280: 更改 705008 (用於執行緒 1) 在序列 #91 中
ORA-00278: 此恢復不再需要日誌檔案
'E:ORACLEPRODUCT10.2.0ARCHIVELOGARC90_664888560_1'
已應用的日誌。
完成介質恢復。
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
705539
SQL> select file#,checkpoint_change# from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 705538
3 705538
4 705538
10 705538
11 705538
SQL> alter database open;
資料庫已更改。
SQL> select *from t2;
ID
----------
1
2
3
4
5
6
已選擇6行。
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
705540
SQL> select file#,checkpoint_change# from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 705540
3 705540
4 705540
10 705540
11 705540
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/19602/viewspace-1010546/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE備份&恢復案例(轉)Oracle
- Oracle 備份 與 恢復 概述Oracle
- Oracle 備份恢復之 FlashbackOracle
- ORACLE本地磁碟備份恢復Oracle
- 備份與恢復oracle_homeOracle
- oracle 增量備份恢復驗證Oracle
- Oracle 備份和恢復介紹Oracle
- ORACLE備份&恢復案例三(轉)Oracle
- ORACLE備份&恢復案例二(轉)Oracle
- ORACLE DG從庫 Rman備份恢復Oracle
- Oracle 12c 備份與恢復Oracle
- Oracle 備份恢復篇之RMAN catalogOracle
- RAC備份恢復之Voting備份與恢復
- 【ASK_ORACLE】Oracle 12c之CDB與PDB的備份與恢復(二)備份恢復之前你需要知道的Oracle
- 備份與恢復:polardb資料庫備份與恢復資料庫
- MySQL備份與恢復——基於Xtrabackup物理備份恢復MySql
- oracle冷備恢復Oracle
- 備份和恢復
- mydumper備份恢復
- Mysql備份恢復MySql
- GitLab的備份與恢復Gitlab
- DB的備份與恢復
- 詳解叢集級備份恢復:物理細粒度備份恢復
- MySQL備份與恢復——基於MyDumper/MyLoader 邏輯備份恢復MySql
- Oracle邏輯備份與恢復選項說明Oracle
- oracle drop table purge無備份bbed恢復(3/3)Oracle
- oracle drop table purge無備份bbed恢復(1/3)Oracle
- oracle drop table purge無備份bbed恢復(2/3)Oracle
- Oracle 11g R2 備份與恢復Oracle
- GitLab的自動備份、清理備份與恢復Gitlab
- Mysql備份與恢復(1)---物理備份MySql
- MySQL 備份與恢復MySql
- redis 備份和恢復Redis
- RMAN備份恢復技巧
- Jenkins備份與恢復Jenkins
- KunlunDB備份和恢復
- Grafana 備份恢復教程Grafana
- rman 增量備份恢復
- Postgresql 備份與恢復SQL