[RMAN]使用RMAN備份將資料庫不完全恢復到指定時間點
RMAN作為Oracle強大的備份恢復工具,可以協助我們恢復資料庫到指定時間點,這便是Oracle不完全恢復的一種體現,通過這種方法可以找回我們曾經丟失的資料。這裡以找回誤TRUNCATE表資料為例給大家演示一下RMAN的不完全恢復功能。
1.調整資料庫為歸檔模式
[email protected] /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Oct 19 22:10:38 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
[email protected]> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 73
Current log sequence 77
[email protected]> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
[email protected]> startup mount;
ORACLE instance started.
Total System Global Area 536870912 bytes
Fixed Size 1220460 bytes
Variable Size 318767252 bytes
Database Buffers 209715200 bytes
Redo Buffers 7168000 bytes
Database mounted.
[email protected]> alter database archivelog;
Database altered.
[email protected]> alter database open;
Database altered.
2.使用RMAN對資料庫進行備份
1)備份資料庫
[email protected] /home/oracle$ rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on Wed Oct 19 22:16:17 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: ORA10G (DBID=4067278754)
RMAN> backup database;
Starting backup at 20111019 22:16:35
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=214 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00010 name=/oracle/ora10gR2/oradata/ora10g/tbs_perf_01.dbf
input datafile fno=00003 name=/oracle/ora10gR2/oradata/ora10g/sysaux01.dbf
input datafile fno=00001 name=/oracle/ora10gR2/oradata/ora10g/system01.dbf
input datafile fno=00002 name=/oracle/ora10gR2/oradata/ora10g/undotbs01.dbf
input datafile fno=00005 name=/home/oracle/tbs_sec_d_01.dbf
input datafile fno=00004 name=/oracle/ora10gR2/oradata/ora10g/tbs_local_01.dbf
input datafile fno=00008 name=/oracle/ora10gR2/oradata/ora10g/tbs01.dbf
input datafile fno=00009 name=/oracle/ora10gR2/oradata/ora10g/tbs_secooler_01.dbf
input datafile fno=00016 name=/u01/app/oracle/oradata/PROD/disk1/INDX_01.dbf
input datafile fno=00017 name=/u01/app/oracle/oradata/PROD/disk1/TOOLS_01.dbf
input datafile fno=00007 name=/oracle/ora10gR2/oradata/ora10g/undotbs_guarantee.dbf
input datafile fno=00006 name=/oracle/ora10gR2/oradata/ora10g/users.dbf
channel ORA_DISK_1: starting piece 1 at 20111019 22:16:36
channel ORA_DISK_1: finished piece 1 at 20111019 22:17:41
piece handle=/oracle/ora10gR2/flash_recovery_area/ORA10G/backupset/2011_10_19/o1_mf_nnndf_TAG20111019T221636_79xpy532_.bkp tag=TAG20111019T221636 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:05
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00011 name=/u01/app/oracle/oradata/PROD/disk1/DATA01_01.dbf
input datafile fno=00012 name=/u01/app/oracle/oradata/PROD/disk2/DATA01_02.dbf
input datafile fno=00013 name=/u01/app/oracle/oradata/PROD/disk3/DATA01_03.dbf
input datafile fno=00014 name=/u01/app/oracle/oradata/PROD/disk4/DATA01_04.dbf
input datafile fno=00015 name=/u01/app/oracle/oradata/PROD/disk5/DATA01_05.dbf
channel ORA_DISK_1: starting piece 1 at 20111019 22:17:42
channel ORA_DISK_1: finished piece 1 at 20111019 22:17:45
piece handle=/oracle/ora10gR2/flash_recovery_area/ORA10G/backupset/2011_10_19/o1_mf_nnndf_TAG20111019T221636_79xq067w_.bkp tag=TAG20111019T221636 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 20111019 22:17:45
Starting Control File and SPFILE Autobackup at 20111019 22:17:45
piece handle=/db_backup/rman_backup/c-4067278754-20111019-00 comment=NONE
Finished Control File and SPFILE Autobackup at 20111019 22:17:48
2)檢視備份資訊
RMAN> list backup;
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -----------------
48 Full 1.10G DISK 00:00:57 20111019 22:17:33
BP Key: 47 Status: AVAILABLE Compressed: NO Tag: TAG20111019T221636
Piece Name: /oracle/ora10gR2/flash_recovery_area/ORA10G/backupset/2011_10_19/o1_mf_nnndf_TAG20111019T221636_79xpy532_.bkp
List of Datafiles in backup set 48
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- ----------------- ----
1 Full 6494715 20111019 22:16:36 /oracle/ora10gR2/oradata/ora10g/system01.dbf
2 Full 6494715 20111019 22:16:36 /oracle/ora10gR2/oradata/ora10g/undotbs01.dbf
3 Full 6494715 20111019 22:16:36 /oracle/ora10gR2/oradata/ora10g/sysaux01.dbf
4 Full 6494715 20111019 22:16:36 /oracle/ora10gR2/oradata/ora10g/tbs_local_01.dbf
5 Full 6494715 20111019 22:16:36 /home/oracle/tbs_sec_d_01.dbf
6 Full 6494715 20111019 22:16:36 /oracle/ora10gR2/oradata/ora10g/users.dbf
7 Full 6494715 20111019 22:16:36 /oracle/ora10gR2/oradata/ora10g/undotbs_guarantee.dbf
8 Full 6494715 20111019 22:16:36 /oracle/ora10gR2/oradata/ora10g/tbs01.dbf
9 Full 6494715 20111019 22:16:36 /oracle/ora10gR2/oradata/ora10g/tbs_secooler_01.dbf
10 Full 6494715 20111019 22:16:36 /oracle/ora10gR2/oradata/ora10g/tbs_perf_01.dbf
16 Full 6494715 20111019 22:16:36 /u01/app/oracle/oradata/PROD/disk1/INDX_01.dbf
17 Full 6494715 20111019 22:16:36 /u01/app/oracle/oradata/PROD/disk1/TOOLS_01.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -----------------
49 Full 1.02M DISK 00:00:01 20111019 22:17:43
BP Key: 48 Status: AVAILABLE Compressed: NO Tag: TAG20111019T221636
Piece Name: /oracle/ora10gR2/flash_recovery_area/ORA10G/backupset/2011_10_19/o1_mf_nnndf_TAG20111019T221636_79xq067w_.bkp
List of Datafiles in backup set 49
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- ----------------- ----
11 Full 6494738 20111019 22:17:42 /u01/app/oracle/oradata/PROD/disk1/DATA01_01.dbf
12 Full 6494738 20111019 22:17:42 /u01/app/oracle/oradata/PROD/disk2/DATA01_02.dbf
13 Full 6494738 20111019 22:17:42 /u01/app/oracle/oradata/PROD/disk3/DATA01_03.dbf
14 Full 6494738 20111019 22:17:42 /u01/app/oracle/oradata/PROD/disk4/DATA01_04.dbf
15 Full 6494738 20111019 22:17:42 /u01/app/oracle/oradata/PROD/disk5/DATA01_05.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -----------------
50 Full 6.83M DISK 00:00:00 20111019 22:17:45
BP Key: 49 Status: AVAILABLE Compressed: NO Tag: TAG20111019T221745
Piece Name: /db_backup/rman_backup/c-4067278754-20111019-00
Control File Included: Ckp SCN: 6494743 Ckp time: 20111019 22:17:45
SPFILE Included: Modification time: 20111019 22:11:53
3.模擬資料庫故障——表的誤TRUNCATE
1)連線到資料庫的sec使用者
[email protected] /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Oct 19 22:20:57 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
[email protected]> conn sec/oracle_1
Connected.
2)檢視T表中的資料行數
[email protected]> select count(*) from t;
COUNT(*)
----------
1000
此時T表中包含1000條資料。
3)檢視當前時間,以便後續使用RMAN進行恢復
[email protected]> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
[email protected]> select sysdate from dual;
SYSDATE
-------------------
2011-10-19 22:21:38
4)這裡模擬對T表的誤刪除(DDL型別的TRUNCATE方法)
[email protected]> truncate table t;
Table truncated.
[email protected]> select sysdate from dual;
SYSDATE
-------------------
2011-10-19 22:22:05
[email protected]> select count(*) from t;
COUNT(*)
----------
0
4.使用RMAN恢復到故障發生之前的時間點
我們這裡恢復的時間點的目標是T表被刪除之前的2011-10-19 22:21:38時刻。
【重要提醒】在使用RMAN完成基於時間點的不完全恢復之前,最好對現場做一個備份,我們這裡只需要備份資料庫的控制檔案和日誌檔案即可。當恢復結束後不滿足我們要求時,可以恢復控制檔案和日誌檔案後重新進行恢復。
1)將資料庫啟動到mount狀態
[email protected]> conn / as sysdba
Connected.
[email protected]> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
[email protected]> startup mount;
ORACLE instance started.
Total System Global Area 536870912 bytes
Fixed Size 1220460 bytes
Variable Size 318767252 bytes
Database Buffers 209715200 bytes
Redo Buffers 7168000 bytes
Database mounted.
2)使用RMAN指令碼恢復資料庫到指定時間點
(1)恢復指令碼如下
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
sql 'alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"';
set until time = '2011-10-19 22:21:38';
restore database;
recover database;
alter database open resetlogs;}
(2)恢復過程記錄
RMAN> run {
2> allocate channel c1 type disk;
3> allocate channel c2 type disk;
4> sql 'alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"';
5> set until time = '2011-10-19 22:21:38';
6> restore database;
7> recover database;
8> alter database open resetlogs;}
using target database control file instead of recovery catalog
allocated channel: c1
channel c1: sid=211 devtype=DISK
allocated channel: c2
channel c2: sid=210 devtype=DISK
sql statement: alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"
executing command: SET until clause
Starting restore at 20111019 22:31:04
channel c1: starting datafile backupset restore
channel c1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /oracle/ora10gR2/oradata/ora10g/system01.dbf
restoring datafile 00002 to /oracle/ora10gR2/oradata/ora10g/undotbs01.dbf
restoring datafile 00003 to /oracle/ora10gR2/oradata/ora10g/sysaux01.dbf
restoring datafile 00004 to /oracle/ora10gR2/oradata/ora10g/tbs_local_01.dbf
restoring datafile 00005 to /home/oracle/tbs_sec_d_01.dbf
restoring datafile 00006 to /oracle/ora10gR2/oradata/ora10g/users.dbf
restoring datafile 00007 to /oracle/ora10gR2/oradata/ora10g/undotbs_guarantee.dbf
restoring datafile 00008 to /oracle/ora10gR2/oradata/ora10g/tbs01.dbf
restoring datafile 00009 to /oracle/ora10gR2/oradata/ora10g/tbs_secooler_01.dbf
restoring datafile 00010 to /oracle/ora10gR2/oradata/ora10g/tbs_perf_01.dbf
restoring datafile 00016 to /u01/app/oracle/oradata/PROD/disk1/INDX_01.dbf
restoring datafile 00017 to /u01/app/oracle/oradata/PROD/disk1/TOOLS_01.dbf
channel c1: reading from backup piece /oracle/ora10gR2/flash_recovery_area/ORA10G/backupset/2011_10_19/o1_mf_nnndf_TAG20111019T221636_79xpy532_.bkp
channel c2: starting datafile backupset restore
channel c2: specifying datafile(s) to restore from backup set
restoring datafile 00011 to /u01/app/oracle/oradata/PROD/disk1/DATA01_01.dbf
restoring datafile 00012 to /u01/app/oracle/oradata/PROD/disk2/DATA01_02.dbf
restoring datafile 00013 to /u01/app/oracle/oradata/PROD/disk3/DATA01_03.dbf
restoring datafile 00014 to /u01/app/oracle/oradata/PROD/disk4/DATA01_04.dbf
restoring datafile 00015 to /u01/app/oracle/oradata/PROD/disk5/DATA01_05.dbf
channel c2: reading from backup piece /oracle/ora10gR2/flash_recovery_area/ORA10G/backupset/2011_10_19/o1_mf_nnndf_TAG20111019T221636_79xq067w_.bkp
channel c2: restored backup piece 1
piece handle=/oracle/ora10gR2/flash_recovery_area/ORA10G/backupset/2011_10_19/o1_mf_nnndf_TAG20111019T221636_79xq067w_.bkp tag=TAG20111019T221636
channel c2: restore complete, elapsed time: 00:00:08
channel c1: restored backup piece 1
piece handle=/oracle/ora10gR2/flash_recovery_area/ORA10G/backupset/2011_10_19/o1_mf_nnndf_TAG20111019T221636_79xpy532_.bkp tag=TAG20111019T221636
channel c1: restore complete, elapsed time: 00:00:53
Finished restore at 20111019 22:31:58
Starting recover at 20111019 22:31:58
starting media recovery
media recovery complete, elapsed time: 00:00:01
Finished recover at 20111019 22:32:00
database opened
released channel: c1
released channel: c2
5.驗證恢復成果
[email protected] /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Oct 19 22:35:37 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
[email protected]>
[email protected]>
[email protected]> conn sec/oracle_1
Connected.
[email protected]> select count(*) from t;
COUNT(*)
----------
1000
至此,曾經因TRUNCATE導致T表資料丟失的故障已被成功恢復。
6.小結
Oracle的RMAN工具非常強大,這裡只是給出了不完全恢復的一個常見用法。在日常定製Oracle資料庫備份恢復策略的時候RMAN是我們不可或缺的好幫手。
是否採取RMAN做不完全恢復需要仔細斟酌,結合新版本的閃回功能,不完全恢復的場景不是很多,即便是使用也建議在測試環境中輔助完成。 如果是在海量資料的環境中,往往RMAN的作用更是微弱,畢竟恢復時間和成本非常的高。因此選用適合的備份恢復策略尤為重要。
相關推薦
[RMAN]使用RMAN備份將資料庫不完全恢復到指定時間點
RMAN作為Oracle強大的備份恢復工具,可以協助我們恢復資料庫到指定時間點,這便是Oracle不完全恢復的一種體現,通過這種方法可以找回我們曾經丟失的資料。這裡以找回誤TRUNCATE表資料為例給大家演示一下RMAN的不完全恢復功能。 1.調整資料庫為歸檔模式[emai
ARCHIVELOG模式下使用者管理的不完全恢復—基於時間點的不完全恢復
基於時間點的恢復主要使用於以下情況:誤刪除表、誤截斷表、提交了錯誤的資料。(從oracle 10g利用閃回更easy!) 首先關閉資料庫執行一個冷全備份(冷備份的時候使用者u1的t表中是有3條記錄的。) [sql] view plai
RMAN備份恢復之不完全恢復
ORACLE不完全恢復 基於時間的不完全恢復 恢復要求:a、資料庫開啟歸檔切要有最近的有效rman全備。b、要有需要恢復到的準確時間點。 1、 做一個rman全備 RMAN>backup database; 2、 構建幾個狀態 在資料庫裡建立scott.t1並插入資料記錄狀態為a,記錄時間t1。 在資料
RMAN不完全恢復方法(恢復到資料庫某一時間點)
RMAN不完全恢復方法 試驗目的:利用RMAN完成對資料庫的不完全恢復(將資料庫恢復到某個時間點) 試驗步驟: 1.RMAN備份資料庫:backup database; 2. 記錄當前時間: SQL> select to_c
RMAN備份與恢復之基於時間點的不完全恢復
一 不完全恢復講解 在上一篇文章(RMAN備份與恢復之UNDO表空間丟失)中,我們講到UNDO表空間丟失怎麼處理。UNDO表空間是不可離線的,同樣,SYSTEM表空間也是不可離線的,所以SYSTEM表空間丟失的處理辦法和UNDO表空間丟失的處理辦法類似,在
Oracle 基於 RMAN 的不完全恢復(incomplete recovery by RMAN)
引用自:https://blog.csdn.net/leshami/article/details/9253867 Oracle 資料庫可以實現資料庫不完全恢復與完全恢復。完全恢復是將資料庫恢復到最新時刻,也就是無損恢復,保證資料庫無丟失的恢復。而不完全恢復則是根據需要特意將資料庫恢復到某個過去
恢復到特定點(時間點、scn、日誌序列號),rman不完全恢復
將資料庫、表空間、資料檔案等恢復至恢復備份集儲存時間中的任何一個時間點/SCN/日誌序列(一般是日誌挖掘找到誤操作點),但須謹慎,操作前一定需要做好備份,具備條件的情況下最好先恢復到異機,避免業務停機時間。 前提:已經有資料庫備份 (作者已經提前準備了備份,這裡不進行備
RMAN全庫【完全恢復/不完全恢復】brief版
一 完全恢復 1.資料庫全庫【完全恢復】 $ rman target / 登入rman工具,如果使用了catalog,則登陸方法rman target sys/[email protected
基於時間不完全恢復之rman篇
SQL> select sysdate from dual; SYSDATE ------------------- 2013-07-31 22:36:51 run{ sql 'alter session nls_date_format="yyyy-mm-dd hh
20121225_不完全恢復記錄(rman)
restore controlfile from '/orabak/AutoCtl_SGERP5_20121222_c-3580899532-20121222-00'; oracle:srvctl add database -d sgerp5 -o /u01/app/pro
實現多次不完全恢復(RAC環境需要將另一節點關閉)
chang hang startup 節點 lec star med immediate 關閉 #查看以resetlogs打開的歷史SQL> SELECT a.INCARNATION#,a.RESETLOGS_CHANGE#,to_char(a.RESETLOGS_T
ARCHIVELOG模式下使用者管理的不完全恢復—基於備份控制檔案的不完全恢復
基於備份控制檔案的恢復只要適用於以下情況:表空間被意外刪除;所有控制檔案全部損壞。 先關閉資料庫,執行一次全庫冷備份。 [sql] view plain copy print ?
mysql 開發進階篇系列 43 邏輯備份與恢復(基於時間和位置的不完全恢復)
一. 概述 在上篇講到了邏輯備份,使用mysqldump工具來備份一個庫,並使用完全恢復還原了資料庫。在結尾也講到了誤操作是不能用完全恢復的。解決辦法是:我們需要恢復到誤操作之前的狀態,然後跳過誤操作語句。再恢復後面執行的語句,完成我們的恢復,這種恢復叫“不完全恢復”。在mysql 中,不完
(2.7)備份與還原--在完全恢復模式下事務日誌的角色
ges 需要 很多 對數 for 事情 mage .com .html 簡介 生產環境下的數據是如果可以寫在資產負債表上的話,我想這個資產所占的數額一定不會小。而墨菲定律(事情如果有變壞的可能,無論這種可能性有多小,它總會發生)仿佛是給DBA量身定做的。在上篇文章介
oracle 歸檔模式下刪除current日誌不完全恢復
com variable file end mounted 啟動數據庫 lte status archive 歸檔模式 SYS@orcl> archive log list Database log mode Archive Mode Automat
在異機實現 Oracle 不完全恢復
otg art set med resetlogs 和數 to_date 數據庫 over 1、將數據庫完全備份集和歸檔日誌備份集傳到執行恢復的 Oracle 服務器# 傳到中轉服務器 scp -P 2222 database.20181030.5* 218.17.56.5
ARCHIVELOG模式下使用者管理的不完全恢復—基於SCN的不完全恢復
當用戶執行不完全恢復時,如果能夠確定恢復點所對應的SCN值,那麼可以使用這種方法恢復! 首先關閉資料庫執行一個冷全備份 [sql] view plain copy print ?
ARCHIVELOG模式下使用者管理的不完全恢復—基於取消的不完全恢復
基於取消的恢復只要適用於以下情況: 歸檔日誌丟失導致完全恢復失敗; 丟失了資料檔案和未歸檔的重做日誌(聯機重做日誌); 先關閉資料庫,執行一次全庫冷備份。 [sql] view plain copy pri
異機環境不完全恢復
1.已備份的介質 [[email protected] bak_dir]# tree . ├── 2016_12_28 --控制檔案 spfile檔案 │
node 使用 sequelize 操作資料庫不完全指北
開始步驟 npm init -y 安裝依賴 npm i sequelize mysql2 standard --save 連線資料庫 建立連線 新建一個 db.js