Oracle數據庫備份與還原1:RMAN基本用法

1 相關基本概念

歸檔

  1. 歸檔開啓:
    在mount狀態下開啓歸檔:alter database archivelog;
    ps:歸檔有些信息要寫入到controlFile,所以要在mount(加載了controlFile後)修改。
    歸檔是數據庫級變動。
    歸檔開啓後,歸檔日誌不會自動刪除,要注意在rman腳本里刪除,否則引起數據庫hang。

  2. 可通過rman刪除歸檔日誌
    rman>crosscheck archivelog all;
    rman>delete noprompt archivelog until time “sysdate-3”;
    注:用OS命令刪除歸檔日誌不管用,歸檔文件信息仍保存在數據庫中,仍會報空間不足。

  3. 歸檔是切換後的redo日誌會按日期保存起來。
    歸檔日誌不會自動刪除。
    聯機日誌和歸檔日誌構成了持續的、完整的操作日誌,可用來rman恢復。

  4. rman與歸檔的關係:
    開啓歸檔,可以開機下rman全庫備份。否則,只能停機備份。
    因爲備份會持續區間,不同的數據文件可能checkpoint scn不一致,需要歸檔日誌的協助。

控制文件

Oracle重要的保存元數據的文件,二進制。爲了防止損壞和丟失,一般在不同盤保存多分。進入mount階段的必備文件。
控制文件裏中保存的信息:
1.數據庫名、id
2.表空間名
3.數據文件
4.日誌文件
5.數據庫checkpoint信息
6.rman元數據庫

scn

Oracle數據庫內部時間戳。

  1. 數據文件:裏有scn和stop scn。scn表checkpoint時的scn,stop表數據庫正常關閉是的scn。沒有關閉是最大值,0xffff.ffffffff。
  2. 日誌文件:包括First_change#(Low SCN)和Next_change#(Next SCN),表日誌文件對應的活動區間。
  3. 控制文件:數據庫的checkpoint scn。
  4. 數據塊:保存有最近修改數據塊的scn,增量備份中用來判定是否屬於增量。

2 基本操作

2.1 登陸

rman target user/pwd@dbname 

恢復管理器: Release 11.2.0.1.0 - Production on 星期四 11月 28 19:45:03 2019
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
連接到目標數據庫: ORCL (DBID=1464394244)
	rman>connect target user/pwd@dbname 
執行OS命令 ,不退出RMAN
	rman>host "dir";
執行rman腳本文件。
	rman target user/pwd@dbname cmdfile=e:\oracle_backup\database_backup.rman

這個方法很重要,自動備份腳本就是通過這種方式執行的。
ps:RMAN的使用風格與sqlplus類似。
爲便於記憶,總結RMAN命令的風格:

  1. 一般格式:參數名+空格+參數值
  2. 不一般格式:如果參數名包含2個單詞,爲:參數名1 2+=號+參數名.
  3. 每個命令用分號分隔;
  4. 如果限定參數,放在命令與操作對象之間。如增量備份:backup incremental level=1 database;

2.2 查看及配置參數

rman>  show all;
db_unique_name 爲 ORCL 的數據庫的 RMAN 配置參數爲:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'e:/oracle_backup/%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'E:\ORACLE\PRODUCT\11.2.0\DBHOME_2\DATABASE\SNCFORCL.ORA'; # default

查看單個參數

RMAN> show retention policy;

2.3 配置參數

rman> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;
舊的 RMAN 配置參數:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;
新的 RMAN 配置參數:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
已成功存儲新的 RMAN 配置參數

2.4 備份

最簡單的,全庫備份

rman> backup database;
啓動 backup 於 25-11月-19
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在啓動全部數據文件備份集
通道 ORA_DISK_1: 正在指定備份集內的數據文件
輸入數據文件: 文件號=00006 名稱=E:\ORACLE\ORADATA\ORCL\TS_INDEX_01.DBF
輸入數據文件: 文件號=00007 名稱=E:\ORACLE\ORADATA\ORCL\TS_INDEX_02.DBF
輸入數據文件: 文件號=00008 名稱=E:\ORACLE\ORADATA\ORCL\TS_DATA_01.DBF
輸入數據文件: 文件號=00009 名稱=E:\ORACLE\ORADATA\ORCL\TS_DATA_02.DBF
輸入數據文件: 文件號=00010 名稱=E:\ORACLE\ORADATA\ORCL\TS_DATA_03.DBF
輸入數據文件: 文件號=00011 名稱=E:\ORACLE\ORADATA\ORCL\TS_DATA_04.DBF
輸入數據文件: 文件號=00012 名稱=E:\ORACLE\ORADATA\ORCL\TS_DATA_05.DBF
輸入數據文件: 文件號=00013 名稱=E:\ORACLE\ORADATA\ORCL\DFXTBLA_01.DBF
輸入數據文件: 文件號=00014 名稱=E:\ORACLE\ORADATA\ORCL\DFXIDXA_01.DBF
輸入數據文件: 文件號=00015 名稱=E:\ORACLE\ORADATA\ORCL\TS_DATA_06.DBF
輸入數據文件: 文件號=00016 名稱=E:\ORACLE\ORADATA\ORCL\TS_DATA_07.DBF
輸入數據文件: 文件號=00017 名稱=E:\ORACLE\ORADATA\ORCL\TS_DATA_08.DBF
輸入數據文件: 文件號=00022 名稱=E:\ORACLE\ORADATA\ORCL\DFXTBLA_02.DBF
輸入數據文件: 文件號=00018 名稱=E:\ORACLE\ORADATA\ORCL\TS_DATA_09.DBF
輸入數據文件: 文件號=00003 名稱=E:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
輸入數據文件: 文件號=00002 名稱=E:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
輸入數據文件: 文件號=00019 名稱=E:\ORACLE\ORADATA\ORCL\TS_GOLDENGATE_01.DBF
輸入數據文件: 文件號=00001 名稱=E:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
輸入數據文件: 文件號=00004 名稱=E:\ORACLE\ORADATA\ORCL\USERS01.DBF
輸入數據文件: 文件號=00021 名稱=D:\ORADATAIDX_DATA01.DBF
輸入數據文件: 文件號=00005 名稱=E:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF
輸入數據文件: 文件號=00020 名稱=E:\ORACLE\ORADATA\ORCL\APPADMINISTRATORORKXBARIII_DATA.DBF
通道 ORA_DISK_1: 正在啓動段 1 於 25-11月-19
通道 ORA_DISK_1: 已完成段 1 於 25-11月-19
段句柄=E:\ORACLE_BACKUP\05UHOHAH_1_1 標記=TAG20191125T111529 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:01:18:16
通道 ORA_DISK_1: 正在啓動全部數據文件備份集
通道 ORA_DISK_1: 正在指定備份集內的數據文件
備份集內包括當前控制文件
備份集內包括當前的 SPFILE
通道 ORA_DISK_1: 正在啓動段 1 於 25-11月-19
通道 ORA_DISK_1: 已完成段 1 於 25-11月-19
段句柄=E:\ORACLE_BACKUP\06UHOLTB_1_1 標記=TAG20191125T111529 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:01
完成 backup 於 25-11月-19

可以看到分配的通道、要備份的數據文件、控制文件、參數文件和備份文件名。

還可以單獨備份表空間和數據文件。

RMAN> backup datafile 23;

啓動 backup 於 28-11月-19
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=70 設備類型=DISK
通道 ORA_DISK_1: 正在啓動全部數據文件備份集
通道 ORA_DISK_1: 正在指定備份集內的數據文件
輸入數據文件: 文件號=00023 名稱=E:\ORACLE\ORADATA\ORCL\TS_ONLY1.DBF
通道 ORA_DISK_1: 正在啓動段 1 於 28-11月-19
通道 ORA_DISK_1: 已完成段 1 於 28-11月-19
段句柄=E:\ORACLE\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2019_11_28\O1_MF_NNNDF_TAG20191128T195316_GXZF9DLG_.BKP 標記=TAG2019
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:01
完成 backup 於 28-11月-19

啓動 Control File and SPFILE Autobackup 於 28-11月-19
段 handle=E:\ORACLE_BACKUP\C-1464394244-20191128-05 comment=NONE
完成 Control File and SPFILE Autobackup 於 28-11月-19

2.5 還原

用備份集中的文件覆蓋損壞的問題。
需要將數據庫切換到mount狀態下。
數據庫啓停操作可直接在RMAN中執行。

RMAN> shutdown immediate;

數據庫已關閉
數據庫已卸裝
Oracle 實例已關閉

RMAN> startup mount;

已連接到目標數據庫 (未啓動)
Oracle 實例已啓動
數據庫已裝載

系統全局區域總計    2137886720 字節

Fixed Size                     2177456 字節
Variable Size               1392510544 字節
Database Buffers             738197504 字節
Redo Buffers                   5001216 字節

以還原數據文件爲例:

RMAN>	restore datafile 7;
啓動 restore 於 28-11月-19
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=63 設備類型=DISK

通道 ORA_DISK_1: 正在開始還原數據文件備份集
通道 ORA_DISK_1: 正在指定從備份集還原的數據文件
通道 ORA_DISK_1: 將數據文件 00023 還原到 E:\ORACLE\ORADATA\ORCL\TS_ONLY1.DBF
通道 ORA_DISK_1: 正在讀取備份片段 E:\ORACLE\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2019_11_28\O1_MF_NNNDF_TAG20191128T195316_GXZF9DLG_.BKP
通道 ORA_DISK_1: 段句柄 = E:\ORACLE\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2019_11_28\O1_MF_NNNDF_TAG20191128T195316_GXZF9DLG_.BKP 標記 = TAG20191128T195316
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:01
完成 restore 於 28-11月-19

注意:restore會自動用備份集中的文件還原,相當於數據文件的物理覆蓋,前邊講數據文件裏邊有一致性校驗的scn,很可能備份的數據文件和當前數據庫的scn、其他數據文件的scn不一致。
因此需要後續的recover。

2.6 恢復

根據還原的數據文件scn,找到其後發生的歸檔日誌和聯機日誌,進行實物重做。確保恢復到數據庫損壞前提交的事務。

RMAN> recover datafile 23;

啓動 recover 於 28-11月-19
使用通道 ORA_DISK_1

正在開始介質的恢復
介質恢復完成, 用時: 00:00:00

完成 recover 於 28-11月-19

3 總結

這是最簡單的RMAN上手指南,演示了備份、還原的一個簡單流程。
其中的原理需要結合Oracle原理才能理解掌握。
如歸檔、如scn、如怎麼用scn找到恢復後要重做的那部分事務。這個得自己慢慢學習了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章