使用RMAN工具-RMAN詳解

forrest_itpub發表於2016-12-11
Oracle 11g 權威指南》 
第21章 使用RMAN工具

21.2 RMAN資料檔案庫/恢復目錄/控制檔案

RMAN透過啟用作業系統程式將資料備份到磁碟或者磁帶上。
為了完成對目標資料庫的備份,RMAN需要得到目標資料庫的相關資訊並進行儲存。
Oracle將關於目標資料庫後設資料的集合稱為RMAN的資料檔案庫。

在RMAN的資料檔案庫中儲存資料有兩種方法:
1. 恢復目錄(Recovery Catalog)
  恢復目錄是建立在RMAN目錄資料庫(亦稱為恢復目錄資料庫)上的一種儲存物件。
RMAN目錄資料庫是一個具有特別RMAN目錄表的Oracle資料庫(注意不是目標資料庫),儲存備份的後設資料。
當使用恢復目錄時,可以建立備份指令碼並儲存在目錄資料庫中以便後用,並且可以將恢復目錄作為中心源,儲存多個目標資料庫的備份與恢復資訊。
2. 目標資料庫的控制檔案
  如果使用RMAN而沒有恢復目錄(也就是沒有為RMAN建立目錄資料庫),那麼,就需要把RMAN要用到的關於目標資料庫的大部分必要資訊都存放在目標資料庫的控制檔案中。
此時,目標資料庫的控制檔案就是RMAN的資料檔案庫。
  要支援該方法必須透過管理目標資料庫的控制檔案來實現。在init.ora或spfile.ora中的引數CONTROL_FILE_RECORD_KEEP_TIME決定了RMAN使用的資訊在控制檔案中保留的時間,
其值預設7天,可長達365天。
SQL> show parameter CONTROL_FILE_RECORD_KEEP_TIME;
NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time     integer 7

Oracle,建議將RMAN備份資訊儲存在目錄資料庫中,而不是控制檔案中,這樣能發揮RMAN工具的全部功能。

RMAN恢復目錄被設定成為中央儲存區,用於儲存多個資料庫的RmAN資訊。
與使用控制檔案作為資料檔案庫不同,恢復目錄可以支援多個Oracle資料庫或一個企業環境。這樣就集中了RMAN資訊的位置,而不是讓這些資訊分散在每個目標資料庫的控制檔案中。

21.3 建立恢復目錄

恢復目錄存在於RMAN的目錄資料庫中,類似於標準的資料庫目錄,主要包含如下幾個部分的資訊:
· 備份和恢復資訊,可以是多個目標資料庫;
· RMAN指令碼,可以儲存和複用;
· 關於資料檔案和日誌檔案的備份資訊;
· 關於目標資料庫的物理組成或計劃的資訊。

建立恢復目錄的具體步驟
1. 建立恢復目錄資料庫
  建立恢復目錄前,必須首先為RMAN建立一個資料庫。 為了資料庫的安全,建議將恢復目錄資料庫建立在與目標資料庫獨立的另外一臺Oracle伺服器上。
可以按照下面的配置建立一個執行超過一年的RMAN恢復目錄資料庫:
· SYSTEM表空間:100MB
· UNDO表空間:20MB
· TEMP表空間:20MB
· 日誌檔案設定:3個日誌檔案組,每組兩個成員,大小為20MB
· RECOVERY_CATALOG表空間:表空間可以命名為CATTBS,大小為50MB

我在centhost3上為centhost2:/orcl建立一個資料庫orclrman

2. 建立儲存目錄的使用者
在規劃的目錄資料庫上建立目錄 (centhost3:1521/ORCLRMAN)
[laolv@centhost3 ~]$ sqlplus "sys/forrest@ORCLRMAN as sysdba"
SQL*Plus: Release 12.1.0.2.0 Production on Tue Dec 6 22:35:01 2016
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>
SQL> select NAME from v$datafile;
NAME
--------------------------------------------------------------------------------
/opt/oracle/oradata/ORCLRMAN/datafile/o1_mf_system_d452wdy3_.dbf
/opt/oracle/oradata/ORCLRMAN/datafile/o1_mf_sysaux_d452p7sv_.dbf
/opt/oracle/oradata/ORCLRMAN/datafile/o1_mf_undotbs1_d45319t8_.dbf
/opt/oracle/oradata/ORCLRMAN/datafile/o1_mf_users_d45318p8_.dbf
SQL>create tablespace cattbs datafile '/opt/oracle/oradata/ORCLRMAN/cattbsfile1.dbf' size 1000M autoextend on next 50M;
SQL>create user rman identified by forrest default tablespace cattbs temporary tablespace temp;

3. 為RMAN使用者授權
grant connect,resource,recovery_catalog_owner to rman;
alter user rman quota unlimited on cattbs;

4. 連線到恢復目錄資料庫
[laolv@centhost3 admin]$ rman
Recovery Manager: Release 12.1.0.2.0 - Production on Tue Dec 6 23:16:18 2016
Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
RMAN> connect catalog rman/forrest@orclrman;
connected to recovery catalog database

5. 建立恢復目錄
可以使用rman使用者的預設表空間,也可以明確指定表空間。
RMAN> connect catalog rman/forrest@orclrman;
connected to recovery catalog database
RMAN> create catalog tablespace cattbs;
recovery catalog created
RMAN>

21.4 RMAN與資料庫的連線

RMAN與資料庫的連線分為兩種
    一種:與目標資料庫的連線,也就是RMAN將要對其實施備份與恢復操作的資料庫;
    一種:與恢復目錄資料庫,存放RMAN的備份與恢復資訊。

21.4.1 與目標資料庫的連線

  1.本地連線
 rman target /
 rman target / nocatlog

  2.遠端連線
 rman target sys/passwd@網路連線串 [nocatlog]
   或者進入rman環境後,再進行連線,例如:
 RMAN>connect target sys/passwd@網路連線串 [nocatlog]

 注意:如果連線串後新增了nocatalog引數,則表示RMAN沒有建立恢復目錄(連線),此時,將使用目標資料庫的控制檔案替代恢復目錄。 (那麼我的理解是:rman連線到目標資料庫時沒有加nocatlog選項, 則表示連到目標資料庫的同時 也 與目標資料庫的恢復目錄有建立連線)

示例 1:連線到目標資料庫
[laolv@centhost3 admin]$ cat tnsnames.ora 
# tnsnames.ora Network Configuration File: /opt/oracle/product/12.1.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCLRMAN =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.147)(PORT = 1521))
ORCLRMAN =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.147)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orclrman)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.146)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )


[laolv@centhost3 admin]$ rman
Recovery Manager: Release 12.1.0.2.0 - Production on Tue Dec 6 23:38:34 2016
Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
RMAN> connect target sys/forrest@orcl
connected to target database: ORCL (DBID=1429293327)
RMAN> 

21.4.2 與恢復目錄資料庫的連線

示例 2:連線到恢復目錄資料庫
RMAN> 
RMAN> connect catalog rman/forrest@orclrman
connected to recovery catalog database
RMAN> 

21.5 註冊資料庫

目標資料庫如何在恢復目錄中進行註冊
恢復目錄中註冊目標資料庫:將目標資料庫的控制檔案轉移到恢復目錄中。

示例 3:“註冊目標資料庫” 和 “同步恢復目錄和目標資料庫的控制檔案”
註冊目標資料庫
[laolv@centhost3 admin]$ rman
Recovery Manager: Release 12.1.0.2.0 - Production on Tue Dec 6 23:52:04 2016
Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
RMAN> connect target sys/forrest@orcl
connected to target database: ORCL (DBID=1429293327)
RMAN> connect catalog rman/forrest@orclrman
connected to recovery catalog database
RMAN>
RMAN> register database;
database registered in recovery catalog
starting full resync of recovery catalog
full resync complete
RMAN>
如果目標資料庫的表空間和資料檔案等發生變化,則會帶動目標資料庫的控制檔案被改寫,此時,可以執行如下命令進行恢復目錄與目標資料庫控制檔案同步
RMAN> resync catalog;
starting full resync of recovery catalog
full resync complete
RMAN>

21.6 通道分配

21.6.1 通道概述

通道分配是實現RMAN與目標資料庫連線的方法,也 確定I/O裝置型別的方法。
每分配一個通道,RMAN就會啟動一個伺服器會話,由伺服器會話來完成資料庫的備份和恢復操作。

21.6.12RUN命令介紹

在rman命令中,run{命令;}會被優先執行。
使用run命令的常用語句有:ALLOCATE,BACKUP,EXECUTE,SCRIPT,RESTORE,RECOVER,SQL,HOST等。
例如執行一個資料庫備份的命令
RMAN>RUN{
allocate channel ch1 device type disk rate 200k;
allocate channel ch2 device type disk rate 500k;
backup
(tablespace system channel ch1)
(tablespace users channel ch2)
}

21.6.3自動通道配置

無論在RUN的內部還是外部執行BACKUP,RESTORE,DELETE命令,如果沒有手動定義通道,則RMAN會使用自動通道配置。
自動通道的定義語法:
CONFIGURE DEVICE TYPE sbt/disk PARALLELISM n - - 指定自動通道個數
CONFIGURE DEFAULT DEVICE TYPE TO sbt/disk - - 預設裝置
- - 自動通道的引數配置
CONFIGURE CHANNEL DEVICE TYPE - - 通道的引數配置
CONFIGURE CHANNEL n DEVICE - -特定通道的引數配置
自動通道的命名規則: ora_devicetype_n
CONFIGURE CHANNEL DEVICE TYPE disk MAXPIECESIZE=2M;
CONFIGURE CHANNEL 5 DEVICE disk MAXPIECESIZE=5M;

21.6.4 手動通道配置

RUN
{
ALLOCATE CHANNEL 通道名稱 DEVICE TYPE 裝置型別
BACKUP ...
}

在RMAN外使用BACKUP命令時,RMAN會自動使用自動通道;
在RUN內使用RESTORE命令,但未手動定義通道,RMAN也會自動使用自動通道;
在RUN內使用RESTORE命令,同時定義了手動通道,RMAN會使用手動定義通道;

使用3個通道同時備份3個資料檔案
RUN
{
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
ALLOCATE CHANNEL c2 DEVICE TYPE disk;
ALLOCATE CHANNEL c3 DEVICE TYPE disk;
BACKUP DATAFILE 1,2,3;
}

分別使用了3個BACKUP命令備份3個資料檔案,這樣同一時間只有一個檔案進行備份,只啟用了一個通道,所以只使用了一個通道
RUN
{
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
ALLOCATE CHANNEL c2 DEVICE TYPE disk;
ALLOCATE CHANNEL c3 DEVICE TYPE disk;
BACKUP DATAFILE 1,;
BACKUP DATAFILE 2;
BACKUP DATAFILE 3;
}

21.6.5顯示通道配置引數

RMAN> show all;
RMAN configuration parameters for database with db_unique_name ORCL are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
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 RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/opt/oracle/product/12.1.0/dbhome_1/dbs/snapcf_orcl.f'; # default

21.6.6設定通道控制引數

1. FILESPERSET
用於限制BACKUP時備份集(Backup Set)的檔案個數。
RMAN>backup {datafile 2,3,4 FILESPERSET=2 CHANNEL ORA_DISK_1};

2.MAXPIECESIZE
設定備份集中的每一個備份片檔案的大小
CONFIGURE CHANNEL DEVICE TYPE disk MAXPIECESIZE=2M;
CONFIGURE CHANNEL 5 DEVICE disk MAXPIECESIZE=5M;

3.FORMAT引數
用於設定備份檔案的儲存目錄及檔案的名稱格式。
CONFIGURE CHANNEL DEVICE TYPE disk FORMAT='/u01/oracle/backup/%U';
BACKUP TABLESPACE SYSTEM FORMAT='/u01/oracle/backup/%U';

4.MAXSETSIZE
用於BACKUP,CONFIGURE命令中設定備份片的大小。
BACKUP DATABASE MAXSETSIZE=100M;

5.RATE引數
用於設定通道的I/O限制。
CONFIGURE CHANNEL 1 DEVICE TYPE sbt RATE 200K;

6.CONNECT引數
RMAN允許同時連線到多個不同的資料庫例項,可以使用CONNECT引數。
CONFIGURE CHANNEL 1 DEVICE TYPE DISK CONNECT='sys/passwd@orcl1';
CONFIGURE CHANNEL 2 DEVICE TYPE DISK CONNECT='sys/passwd@orcl2';
CONFIGURE CHANNEL 3 DEVICE TYPE DISK CONNECT='sys/passwd@orcl3';

21.7使用BACKUP生成備份集

21.7.1 備份集和備份片

備份集,包括一個或多個資料檔案或歸檔日誌。 一個備份集由許多備份片組成,每個備份片是一個單獨的輸出檔案。  
備份集中的資料檔案必須是一特定格式儲存的,而且在這些檔案可以使用之前,必須使用RESTORE命令進行處理。

21.7.2 BACKUP語法

RMAN>BACKUP <level> (<backup type> <option>);

Option是可選項,主要引數如下
Tag
Format
Include current controlfile:表示備份控制檔案
Fileperset
Channel
Delete [all] input:表示備份結束時是否刪除歸檔日誌。
Maxsetsize :備份集的最大size
Skip [offline,readonly,inaccessible] : 備份時,可以跳過一些特殊屬性的表空間。

21.7.3備份檔案的儲存格式

FORMAT格式由兩部分組成,即路徑名稱和檔案儲存格式(即檔名稱格式)。
Oracle 11g中,如果進行備份時沒有使用FORMAT指定路徑和名稱格式,則預設backup鎖產生的備份集將儲存在FLASH_RECOVERY_AREA閃回目錄中,而RMAN會自動使用%U來確保檔名稱不重複。
%a,活動ID 
%c,在多重備份中,備份片的複製數,最大256 
不是多重備份時,用於備份集為1,用於代理副本複製為0 
%d,資料庫名 
%D,公曆某月的日期(只有day部分),格式DD 
%e,歸檔日誌序號 
%f,絕對檔案號 
%F,由DBID(資料庫ID),日月年,序號組成 
形式為c-IIIIIIIIII-YYYYMMDD-QQ,c為固定 
IIIIIIIIII表示DBID,連線RMAN時指定target,會顯示DBID 
YYYYMMDD為生成備份時的公曆時間,比如20081122 
QQ表示為16進位制序號,00到FF 
%h,歸檔日誌執行緒號 
%I,DBID 
%M,公曆月份,格式MM 
%N,表空間名 
%n,資料庫名,如果資料庫名不滿8字元,將在右邊自動填充'x' 
比如,庫名為test,結果將是testxxxx 
%p,備份集中的備份片號,從1開始,步進1 
Note: If you specify PROXY, then the %p variable must be included in the 
FORMAT string either explicitly or implicitly within %U. 
%s,備份集號,此號記錄在控制檔案中,每次備份會自動增加 
重建控制檔案將會初始化為1 
%t,備份集時間戳,秒為單位 
%T,公曆年月日,格式YYYYMMDD 
%u,8字元名稱,利用備份集或副本複製號+備份生成時間,由系統透過某種演算法得出 
%U,許多FORMAT的預設值,由系統生成的唯一名稱,對於副本複製和備份集的含義不同 
對於備份集的備份片來說,等同於%u_%p_%c 
對於資料檔案副本複製,等同data-D-%d_id-%I_TS-%N_FNO-%f_%u 
對於歸檔日誌副本複製,等同arch-D_%d-id-%I_S-%e_T-%h_A-%a_%u 
對於控制檔案副本複製,等同cf-D_%d-id-%I_%u 
%Y,公曆年,格式YYYY 
%%,表示一個百分號字元'%' 

BACKUP TABLESPACE SYSTEM FORMAT='/u01/oracle/backup/%U'; - - 在backup語句中定義
RUN{
ALLOCATE CHANNEL ch1 DEVICE TYPE disk FORMAT='/u01/oracle/backup/%U';
backup database
}; - - 在手工分配通道時進行定義
CONFIGURE CHANNEL DEVICE TYPE disk FORMAT='/u01/oracle/backup/%U'; - - 在configure通道時進行定義
RMAN使用FORMAT的優先順序:BACKUP,ALLOCATE CHANNEL,CONFIGURE CHANNEL

BACKUP備份例項

1)備份整個資料庫
RMAN>BACKUP DATABASE;
RMAN>BACKUP DATABASE FORMAT 'd:/orcl_backup/%U';
RMAN>RUN{
ALLOCATE CHANNEL ch1 DEVICE TYPE disk;
backup database format 'db_%u_%d_%s';
backup format 'log_t%t_s%s_p%p'(archivelog all);
};

2)備份資料庫,同時備份歸檔日誌
RMAN>BACKUP DATABASE PLUS ARCHIVELOG;

3)備份表空間
RMAN>BACKUP TABLESPACE USERS;
RMAN>BACKUP FILESPERSET=3 TABLESPACE USERS,SYSTEM FORMAT 'd:/orcl_backup/%U';
RMAN>RUN{
ALLOCATE CHANNEL ch1 DEVICE TYPE disk;
ALLOCATE CHANNEL ch2 DEVICE TYPE disk FORMAT 'd:/orcl_backup/%U';;
backup (TABLESPACE USERS,SYSTEM FILESPERSET 2)
};

4)備份控制檔案
- - 開啟控制檔案的自動備份,語法如下:
RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;
如果開啟了制檔案的自動備份,則執行BACKUP和COPY命令時,會自動備份控制檔案。

手工備份控制檔案:
RMAN>BACKUP CURRENT CONTROLFILE;
RMAN>BACKUP CURRENT CONTROLFILE TAG='sunday_backup';

5)可以在備份表空間時,同時備份控制檔案
RMAN>BACKUP TABLESPACE USERS INCLUDING CURRENT CONTROLFILE; 

6)備份歸檔日誌
RMAN>BACKUP ARCHIVELOG [ALL,DELETE INPUT,DELETE ALL INPUT]; - - ALL:全部歸檔日誌檔案; DELETE INPUT:備份結束後刪除歸檔日誌; DELETE ALL INPUT:備份結束後刪除所有的歸檔日誌目錄檔案
BACKUP ... PLUG ARCHIVELOG - - 備份其他物件時,同時備份歸檔日誌。

21.7.5 BACKUP的冷備份和熱備份

1)冷備份:目標資料庫執行在非歸檔模式下,此時需要關閉例項,然後進入MOUNT狀態。
RMAN>RUN{
ALLOCATE CHANNEL ch1 DEVICE TYPE disk FORMAT 'd:/orcl_backup/%U';
ALLOCATE CHANNEL ch2 DEVICE TYPE disk FORMAT 'd:/orcl_backup/%U';
shutdown immediate;
startup mount;
backup database;
backup current controlfile;
alter database open;
};

2)熱備份:資料庫執行在歸檔模式下,此時可以直接使用backup進行備份。
RMAN>RUN{
ALLOCATE CHANNEL ch1 DEVICE TYPE disk FORMAT 'd:/orcl_backup/%U';
ALLOCATE CHANNEL ch2 DEVICE TYPE disk FORMAT 'd:/orcl_backup/%U';
backup database plus archivelog including current controlfile;
}

21.8 使用COPY與back as copy

RMAN中的backup命令生成的是備份集,檔案中的資料是以RMAN的專有格式進行儲存的,在進行資料庫恢復時需要進行重建(restore)操作。
RMAN的copy命令生成的資料庫檔案、歸檔日誌或控制檔案的實際副本,並不是以特定的RMAN的專有格式儲存的,進行資料庫恢復時可以直接使用。

RMAN生成的copy命令生成的備份檔案,稱之為影像副本,影像副本在資料庫恢復時有速度與效率上的優勢,但是影像副本只能儲存在磁碟上,而且不能被壓縮,要求比備份集大得多的空間。

RMAN>COPY <input file> TO <location> <option>;
可以備份以下檔案:
資料檔案datafile;
archivelog;
current controlfile;
datafilecopy:備份使用copy命令備份的資料檔案
cntrolefilecopy;
backup set:備份使用backup名令備份的檔案。

例項:
run
{
allocate channel ch1 device type disk;
copy datafile 1 to 'd:\data\image\system01.dbf';
     current controlfile to 'd:\data\image\contol01.dbf';
}

21.8.3 backup as copy命令

oracle 11g有一個BACKUP AS COPY 命令:在不規定獨立檔案的前提下,可以完成整個資料庫、表空間、多重表空間、資料檔案、控制檔案以及歸檔日誌的影像副本備份。
可以使用BACKUP AS COPY命令輕鬆地完成整個資料庫影像副本的複製,預設存放的路徑仍然是資料庫的閃回區域:
RMAN> backup as copy tag '1209_imagebackup_orcl' database;

Starting backup at 09-DEC-16
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00011 name=/opt/oracle/oradata/orcl/pdborcl/example01.dbf
output file name=/opt/oracle/fast_recovery_area/ORCL/29A27C8F580F36CAE0539201A8C03661/datafile/o1_mf_example_d4m6h841_.dbf tag=1209_IMAGEBACKUP_ORCL RECID=7 STAMP=930101976
備份集是存在目標資料庫所在的主機所掛載的磁碟上的
……
channel ORA_DISK_1: starting datafile copy
input datafile file number=00010 name=/opt/oracle/oradata/orcl/pdborcl/SAMPLE_SCHEMA_users01.dbf
output file name=/opt/oracle/fast_recovery_area/ORCL/29A27C8F580F36CAE0539201A8C03661/datafile/o1_mf_users_d4m6v22q_.dbf tag=1209_IMAGEBACKUP_ORCL RECID=11 STAMP=930102114
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 12/09/2016 01:41:47
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 618659840 bytes disk space from 4781506560 limit


DB_RECOVERY_FILE_DEST指定的備份目錄/opt/oracle/fast_recovery_area 存放的備份資料,已經快達到了DB_RECOVERY_FILE_DEST_SIZE指定的大小4560M,
不能分配此刻備份時需要存放備份需要請求的空間,導致
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 618659840 bytes disk space from 4781506560 limit

21.9 備份

21.9.1 壓縮備份

在oracle 11g中,可以使用RMAN的壓縮備份功能。 壓縮備份只能針對備份集,而不能針對影像副本。 
可以壓縮的物件包括database,tablespace,datafile備份集。
RMAN>BACKUP AS COMPRESSED BACKUPSET database;

也可以為壓縮備份配置一個預設的裝置及其他控制引數,同樣是使用CONGIGURE命令。 凡是使用指定裝置的備份集都將被壓縮,知道配置被更改。
RMAN>configure device type disk backup type to compressed backupset;
壓縮的:未壓縮的,一般是以接近5:1的比例壓縮。

21.9.3 檢視備份資訊

1.LIST命令
LIST用於查詢RMAN資料檔案並獲取BACKUP命令、COPY命令和資料庫實體的有關資料,資料庫實體是物理資料庫的一個單獨版本。
LIST的輸出顯示CHANGE,CROSSCHECK和DELETE命令已經使用過得檔案。

LIST命令使用by backup和by file選項顯示備份資訊。  
另外兩個選項:SUMMARY和VERBOSE,用於精簡或擴充套件輸出欄位。
RMAN> list backupset by backup summary;
List of Backups
===============
Key     TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
342     B  F  A DISK        06-DEC-16       1       1       NO         TAG20161206T225453
RMAN> list backupset by file; - - 該命令輸出三類不同檔案:資料檔案、歸檔日誌檔案、控制檔案
List of Control File Backups
============================
CF Ckp SCN Ckp Time  BS Key  S #Pieces #Copies Compressed Tag
---------- --------- ------- - ------- ------- ---------- ---
6313624    06-DEC-16 342     A 1       1       NO         TAG20161206T225453
List of SPFILE Backups
======================
Modification Time BS Key  S #Pieces #Copies Compressed Tag
----------------- ------- - ------- ------- ---------- ---
04-DEC-16         342     A 1       1       NO         TAG20161206T225453

LIST與backup組合,可以有如下的命令:
LIST BACKUP;
LIST BACKUP BY FILE;
LIST BACKUP OF DATABASE ARCHIVELOG ALL;
LIST BACKUP  SUMMARY;
LIST BACKUP  OF DATTABASE;
LIST BACKUP TAG 'FULL_BACKUP';
LIST BACKUP LIKE '/ora11g/backup/%';

LIST也可以與COPY組合,產生以下命令:
LIST COPY;
LIST COPY OF DATABASE;
LIST COPY OF CONTROLFILE;
……


RMAN> list copy of database;
List of Datafile Copies
=======================
Key     File S Completion Time Ckp SCN    Ckp Time       
------- ---- - --------------- ---------- ---------------
1198    1    A 09-DEC-16       6366221    09-DEC-16      
        Name: /opt/oracle/fast_recovery_area/ORCL/datafile/o1_mf_system_d4m6s3b6_.dbf
        Tag: 1209_IMAGEBACKUP_ORCL
……
1200    10   A 09-DEC-16       1917927    19-JAN-16      
        Name: /opt/oracle/fast_recovery_area/ORCL/29A27C8F580F36CAE0539201A8C03661/datafile/o1_mf_users_d4m6v22q_.dbf
        Tag: 1209_IMAGEBACKUP_ORCL
        Container ID: 3, PDB Name: PDBORCL
1196    11   A 09-DEC-16       1917927    19-JAN-16      
        Name: /opt/oracle/fast_recovery_area/ORCL/29A27C8F580F36CAE0539201A8C03661/datafile/o1_mf_example_d4m6h841_.dbf
        Tag: 1209_IMAGEBACKUP_ORCL
        Container ID: 3, PDB Name: PDBORCL
RMAN> list copy of controlfile;
specification does not match any control file copy in the repository
RMAN> list copy;
specification does not match any control file copy in the repository
List of Datafile Copies
=======================
Key     File S Completion Time Ckp SCN    Ckp Time       
------- ---- - --------------- ---------- ---------------
1198    1    A 09-DEC-16       6366221    09-DEC-16      
        Name: /opt/oracle/fast_recovery_area/ORCL/datafile/o1_mf_system_d4m6s3b6_.dbf
        Tag: 1209_IMAGEBACKUP_ORCL
……
List of Archived Log Copies for database with db_unique_name ORCL
=====================================================================
Key     Thrd Seq     S Low Time 
------- ---- ------- - ---------
294     1    207     A 19-NOV-16
        Name: /opt/oracle/fast_recovery_area/ORCL/archivelog/2016_11_19/o1_mf_1_207_d301n963_.arc
……

2.REPORT命令
REPORT命令用於查詢RMAN資料檔案庫,獲得需要備份和不需要備份的檔案,以及資料庫物理模式等資訊。
REPORT命令從RMAN的資料檔案庫中生成更加詳細地資訊。
RMAN>report need backup
RMAN>report obsolete ;-- 廢棄的; 老式的,已過時的; [生]已廢退的;  得到的結果可以刪除
RMAN>report schema

刪除

帶delete引數的change 命令刪除備份集,從備份介質+從控制檔案和恢復目錄中刪除。 
 change backupset 117,118 delete; 
 change backuppiece 1304 delete; 
 change archivelog until logseq =544 delete; 

恢復目錄的記錄刪除 

1. $ORACLE_HOME/rdbms/admin/prgrmanc.sql 指令碼定期刪除恢復目錄中具有DELETED狀態的記錄 

2. 要刪除舊的對應物記錄incarnation.必須從DBINC 表中刪除這些對應物,使用RC_DATABASE_INCARNATION 檢視來確定要刪除的對應物。記錄要刪除的每個對應物的DBINC_KEY 
隨後啟動SQL*Plus,執行delete from dbinc where dbinc_key=2; 

刪除示例: 
1、刪除陳舊備份 
當使用RMAN執行備份操作時,RMAN會根據備份冗餘策略確定陳舊備份。 
RMAN> delete obsolete; 

2、刪除EXPIRED備份 
執行crosscheck命令核對備份集,那麼會將該備份集標記為EXPIRED狀態。為了刪除相應的備份記錄,可以執行delete expired backup命令。 
RMAN> delete expired backup; 
3、刪除EXPIRED副本 
RMAN> delete expired copy; 
4、刪除特定備份集 
RMAN> delete backupset 19; 
5、刪除特定備份片 
RMAN> delete backuppiece 'd:\backup\DEMO_19.bak'; 
6、刪除所有備份集 
RMAN> delete backup; 
7、刪除特定映像副本 
RMAN> delete datafilecopy 'd:\backup\DEMO_19.bak'; 
8、刪除所有映像副本 
RMAN> delete copy; 
9、在備份後刪除輸入物件 
RMAN>BACKUP ARCHIVELOG [ALL,DELETE INPUT,DELETE ALL INPUT]; - - ALL:全部歸檔日誌檔案; DELETE INPUT:備份結束後刪除歸檔日誌; DELETE ALL INPUT:備份結束後刪除所有的歸檔日誌目錄檔案
RMAN> backup archivelog all delete input; 
RMAN> backup backupset 22 format = ''d:\backup\%u.bak'' delete input; 



RMAN> list backup of database;
specification does not match any backup in the repository
RMAN> list backupset;
List of Backup Sets
===================
BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
342     Full    17.23M     DISK        00:00:20     06-DEC-16      
        BP Key: 344   Status: AVAILABLE  Compressed: NO  Tag: TAG20161206T225453
        Piece Name: /opt/oracle/fast_recovery_area/ORCL/autobackup/2016_12_06/o1_mf_s_929919293_d4fnb3lc_.bkp
  SPFILE Included: Modification time: 04-DEC-16
  SPFILE db_unique_name: ORCL
  Control File Included: Ckp SCN: 6313624      Ckp time: 06-DEC-16
……
RMAN> list copy;
specification does not match any control file copy in the repository
List of Datafile Copies
=======================
Key     File S Completion Time Ckp SCN    Ckp Time       
------- ---- - --------------- ---------- ---------------
1198    1    A 09-DEC-16       6366221    09-DEC-16      
        Name: /opt/oracle/fast_recovery_area/ORCL/datafile/o1_mf_system_d4m6s3b6_.dbf
        Tag: 1209_IMAGEBACKUP_ORCL
……
List of Archived Log Copies for database with db_unique_name ORCL
=====================================================================
Key     Thrd Seq     S Low Time 
------- ---- ------- - ---------
409     1    246     A 06-DEC-16
        Name: /opt/oracle/fast_recovery_area/ORCL/archivelog/2016_12_07/o1_mf_1_246_d4fzv5hw_.arc

RMAN> delete datafilecopy all;
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=40 device type=DISK
List of Datafile Copies
=======================
……
1196    11   A 09-DEC-16       1917927    19-JAN-16      
        Name: /opt/oracle/fast_recovery_area/ORCL/29A27C8F580F36CAE0539201A8C03661/datafile/o1_mf_example_d4m6h841_.dbf
        Tag: 1209_IMAGEBACKUP_ORCL
Do you really want to delete the above objects (enter YES or NO)? yes
deleted datafile copy
datafile copy file name=/opt/oracle/fast_recovery_area/ORCL/datafile/o1_mf_sysaux_d4m6q1s1_.dbf RECID=8 STAMP=930102050
……

物理rm所有的了,去需要去RMAN中刪除:

RMAN> delete backupset;
using channel ORA_DISK_1
List of Backup Pieces
BP Key  BS Key  Pc# Cp# Status      Device Type Piece Name
------- ------- --- --- ----------- ----------- ----------
344     342     1   1   AVAILABLE   DISK        /opt/oracle/fast_recovery_area/ORCL/autobackup/2016_12_06/o1_mf_s_929919293_d4fnb3lc_.bkp
Do you really want to delete the above objects (enter YES or NO)? YES
RMAN-06207: WARNING: 1 objects could not be deleted for DISK channel(s) due
RMAN-06208:          to mismatched status.  Use CROSSCHECK command to fix status
RMAN-06210: List of Mismatched objects
RMAN-06211: ==========================
RMAN-06212:   Object Type   Filename/Handle
RMAN-06213: --------------- ---------------------------------------------------
RMAN-06214: Backup Piece    /opt/oracle/fast_recovery_area/ORCL/autobackup/2016_12_06/o1_mf_s_929919293_d4fnb3lc_.bkp
RMAN> crosscheck backupset;
using channel ORA_DISK_1
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/opt/oracle/fast_recovery_area/ORCL/autobackup/2016_12_06/o1_mf_s_929919293_d4fnb3lc_.bkp RECID=2 STAMP=929919299
Crosschecked 1 objects

RMAN> 
RMAN> crosscheck copy;
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=40 device type=DISK
specification does not match any datafile copy in the repository
specification does not match any control file copy in the repository
validation failed for archived log
archived log file name=/opt/oracle/fast_recovery_area/ORCL/archivelog/2016_12_07/o1_mf_1_246_d4fzv5hw_.arc RECID=40 STAMP=929931116
validation failed for archived log
……
RMAN> delete copy;
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=40 device type=DISK
specification does not match any datafile copy in the repository
specification does not match any control file copy in the repository
List of Archived Log Copies for database with db_unique_name ORCL
=====================================================================
Key     Thrd Seq     S Low Time 
------- ---- ------- - ---------
409     1    246     X 06-DEC-16
        Name: /opt/oracle/fast_recovery_area/ORCL/archivelog/2016_12_07/o1_mf_1_246_d4fzv5hw_.arc
……
1195    1    252     X 08-DEC-16
        Name: /opt/oracle/fast_recovery_area/ORCL/archivelog/2016_12_09/o1_mf_1_252_d4m7yc1v_.arc
Do you really want to delete the above objects (enter YES or NO)? YES
deleted archived log
archived log file name=/opt/oracle/fast_recovery_area/ORCL/archivelog/2016_12_07/o1_mf_1_246_d4fzv5hw_.arc RECID=40 STAMP=929931116
deleted archived log
……
RMAN> list copy;
specification does not match any datafile copy in the repository
specification does not match any control file copy in the repository
specification does not match any archived log in the repository

21.8.3 backup as copy命令

oracle 11g有一個BACKUP AS COPY 命令:在不規定獨立檔案的前提下,可以完成整個資料庫、表空間、多重表空間、資料檔案、控制檔案以及歸檔日誌的影像副本備份。
可以使用BACKUP AS COPY命令輕鬆地完成整個資料庫影像副本的複製,預設存放的路徑仍然是資料庫的閃回區域:
RMAN> backup as copy tag '1209_imagebackup_orcl' database;
……
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 12/09/2016 03:55:30
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 272629760 bytes disk space from 4781506560 limit
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 12/09/2016 03:55:32
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 262144000 bytes disk space from 4781506560 limit

比較目錄下的資料大小:

5.1G>4560M

$ORACLE_BASE/fast_recovery_area是閃回恢復區的預設路徑,而且也是歸檔日誌和備份檔案的預設路徑。
其實可以將閃回恢復區、歸檔日誌、備份檔案 的預設路徑,可看做:資料庫恢復目錄DB_RECOVERY

為了讓備份在預設路徑上備份成功,我們可以透過調整db_recovery_file_dest_size的大小來達到;
但是最好還是透過調整備份的路徑來到達有可用的足夠可備份空間,來達到備份成功,較好:


……
channel ch2: starting datafile copy
input datafile file number=00010 name=/opt/oracle/oradata/orcl/pdborcl/SAMPLE_SCHEMA_users01.dbf
output file name=/opt/oracle/bakdatabase/data_D-ORCL_I-1429293327_TS-USERS_FNO-6_0vrn3n8b tag=1210_ORCL_IMAGEBAKUP RECID=28 STAMP=930209036
channel ch1: datafile copy complete, elapsed time: 00:00:01
output file name=/opt/oracle/bakdatabase/data_D-ORCL_I-1429293327_TS-USERS_FNO-10_10rn3n8c tag=1210_ORCL_IMAGEBAKUP RECID=29 STAMP=930209037
channel ch2: datafile copy complete, elapsed time: 00:00:01
Finished backup at 10-DEC-16

Starting Control File and SPFILE Autobackup at 10-DEC-16
piece handle=/opt/oracle/fast_recovery_area/ORCL/autobackup/2016_12_10/o1_mf_s_930209039_d4ph8j3k_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 10-DEC-16
released channel: ch1
released channel: ch2
RMAN> 


實際的備份資料檔案4.9G>4650M(預設的db_recovery_file_dest_size),和/opt/oracle/oradata/orcl下的檔案大小5.1G相當(因為除了資料檔案,還有一部分其他檔案,例如控制檔案)。

21.9.2 完全備份與遞增備份

1. 概念解釋
(1)完全備份
完全備份(注意並不是指備份整個資料庫)是指在實施備份時,完全備份資料檔案中所有的資料塊,而不論該資料塊是否被修改過。
(2)遞增備份
遞增備份是指在備份時只複製資料檔案中自上次遞增備份之後被修改過得資料塊。

遞增備份使用自己的0級備份作為備份的基線,0級備份時在某個時間點上的完全備份。

遞增備份分為兩類:差異遞增備份和累積遞增備份。
二者都是僅僅複製修改多的資料塊,區別在於基線資料塊如何來識別需要備份的修改了的資料塊。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
http://blog.itpub.net/29119536/viewspace-1131999/ 
ORACLE RMAN增量備份經典理解 

Oracle中,增量備份時分等級的,級別從0開始,一級一級遞增,不過實際上用的最多的也就是0級和1級了,0級增量備份是後面級別的增量備份的 基礎,0級備份實際上就是一個完全備份,與普通的完全備份唯一的不同點是0級備份可以作為其他級別增量備份的基礎,而普通的完全備份是不能的。

從級別1開始,Oracle的增量備份分為差異增量備份和積累增量備份兩種,其中
差異增量備份備份的是:備份最近一次在同級別或低階別水平備份以來發生改變的資料塊,
累積遞增備份備份的是:n是現在的備份級別,複製這樣一類資料塊:最近<=n-1級別的備份之後發生變化的資料塊,如果n=0,那麼就複製最近一次0級備份以來發生變化的資料塊。

在《Backup and Recovery User’s Guide》的“增量備份”一節中有兩幅圖很形象的描述了這兩個增量備份之間的異同:

                      差異增量備份圖示


                           積累增量備份圖示
rman 0級增量備份:
其實全備和0級增量備份都是全備,但是也是有區別的,0級增量備份可以用於增量備份恢復的基礎,而單獨的全備不能用於增量備份的恢復基礎!0級增量備份的命令如下:
RMAN> backup incremental level 0 database;
或者
RMAN> backup incremental level= 0 database;
RMAN> run
2> {
3> allocate channel ch1 device type disk format '/opt/oracle/bakdatabase/%U';
4> allocate channel ch2 device type disk format '/opt/oracle/bakdatabase/%U';
5> backup incremental level 0 tag '1210_orcl_increbakup' database;
6> }
released channel: ORA_DISK_1
allocated channel: ch1
channel ch1: SID=32 device type=DISK
allocated channel: ch2
channel ch2: SID=266 device type=DISK
Starting backup at 10-DEC-16
channel ch1: starting incremental level 0 datafile backup set
channel ch1: specifying datafile(s) in backup set
input datafile file number=00003 name=/opt/oracle/oradata/orcl/sysaux01.dbf
input datafile file number=00004 name=/opt/oracle/oradata/orcl/undotbs01.dbf
channel ch1: starting piece 1 at 10-DEC-16
channel ch2: starting incremental level 0 datafile backup set
channel ch2: specifying datafile(s) in backup set
input datafile file number=00011 name=/opt/oracle/oradata/orcl/pdborcl/example01.dbf
……
Starting Control File and SPFILE Autobackup at 10-DEC-16
piece handle=/opt/oracle/fast_recovery_area/ORCL/autobackup/2016_12_10/o1_mf_s_930240450_d4qfy3hm_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 10-DEC-16
released channel: ch1
released channel: ch2
RMAN> 

在沒有修改目標資料庫的情況下,接0級備份->執行1級備份
RMAN> 
RMAN> run
2> {
3> allocate channel ch1 device type disk format '/opt/oracle/bakdatabase/%U';
4> allocate channel ch2 device type disk format '/opt/oracle/bakdatabase/%U';
5> backup incremental level 0 tag '1210_orcl_incre1bakup' database;
6> }
allocated channel: ch1
channel ch1: SID=32 device type=DISK
allocated channel: ch2
channel ch2: SID=266 device type=DISK
Starting backup at 10-DEC-16
channel ch1: starting incremental level 0 datafile backup set
channel ch1: specifying datafile(s) in backup set
input datafile file number=00003 name=/opt/oracle/oradata/orcl/sysaux01.dbf
input datafile file number=00004 name=/opt/oracle/oradata/orcl/undotbs01.dbf
channel ch1: starting piece 1 at 10-DEC-16
……

Starting Control File and SPFILE Autobackup at 10-DEC-16
piece handle=/opt/oracle/fast_recovery_area/ORCL/autobackup/2016_12_10/o1_mf_s_930241406_d4qgvym3_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 10-DEC-16
released channel: ch1
released channel: ch2
RMAN> 
RMAN> delete backupset tag '1210_ORCL_INCRE1BAKUP';
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=32 device type=DISK
List of Backup Pieces
BP Key  BS Key  Pc# Cp# Status      Device Type Piece Name
------- ------- --- --- ----------- ----------- ----------
7584    7576    1   1   AVAILABLE   DISK        /opt/oracle/bakdatabase/19rn4mli_1_1
……

backup piece handle=/opt/oracle/bakdatabase/1drn4mqj_1_1 RECID=16 STAMP=930241364
Deleted 6 objects
RMAN> 
RMAN> 

RMAN> run
2> {
3> allocate channel ch1 device type disk format '/opt/oracle/bakdatabase/%U';
4> allocate channel ch2 device type disk format '/opt/oracle/bakdatabase/%U';
5> backup incremental level 1 tag '1210_orcl_incre1bakup' database;
6> }

released channel: ORA_DISK_1
allocated channel: ch1
channel ch1: SID=32 device type=DISK
allocated channel: ch2
channel ch2: SID=266 device type=DISK
Starting backup at 10-DEC-16
channel ch1: starting incremental level 1 datafile backup set
channel ch1: specifying datafile(s) in backup set
input datafile file number=00003 name=/opt/oracle/oradata/orcl/sysaux01.dbf
input datafile file number=00004 name=/opt/oracle/oradata/orcl/undotbs01.dbf
channel ch1: starting piece 1 at 10-DEC-16
……
channel ch2: finished piece 1 at 10-DEC-16
piece handle=/opt/oracle/bakdatabase/1jrn4muk_1_1 tag=1210_ORCL_INCRE1BAKUP comment=NONE
channel ch2: backup set complete, elapsed time: 00:00:35
Finished backup at 10-DEC-16

Starting Control File and SPFILE Autobackup at 10-DEC-16
piece handle=/opt/oracle/fast_recovery_area/ORCL/autobackup/2016_12_10/o1_mf_s_930241529_d4qgzsm8_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 10-DEC-16
released channel: ch1
released channel: ch2
RMAN> 
每執行一次,都會執行一次引數檔案SPFILE和控制檔案Control File全備份

list backupset結果可以看出,全備和0級增量備份在type上的區別!
同理,可以對資料庫做1級增量備份,命令如下:
RMAN> backup incremental level 1 database;
此時rman需要對比0級增量備份後到執行1級增量備份時候的資料變化情況,備份出來的備份大小由資料更改的多少而定!

可以透過list backupset命令檢視相關區別!同樣備份資訊可以在控制檔案(沒有連線到catalog資料庫時)/catalog檔案中檢視!
--------------------------------------------->>一個增量備份的例子指令碼
#!/bin/bash
# incremental level 0 backup script
source /home/oracle/.bash_profile
current_day=`date +%Y%m%d`
incr_day=102_incr_$current_day
mkdir /data/oracle/ora_backup/$incr_day
echo '-------------------------------------'
echo "-- Begin Increment Backup of DB 10.103.23.102 DateTime: `date` --"
echo '-------------------------------------'
rman target  / <
run
{
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/data/oracle/ora_backup/$incr_day/PID-%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
crosscheck backup;
delete noprompt obsolete;
delete noprompt expired backup;
allocate channel dev1 type disk maxpiecesize=30720M;
allocate channel dev2 type disk maxpiecesize=30720M;
allocate channel dev3 type disk maxpiecesize=30720M;
allocate channel dev4 type disk maxpiecesize=30720M;
backup as compressed backupset incremental level 1 tag='db1'
format '/data/oracle/ora_backup/$incr_day/%n_%T_%U' database;
sql 'alter system archive log current';
backup archivelog all format '/data/oracle/ora_backup/$incr_day/arc_%n_%T_%U' delete all input;
release channel dev1;
release channel dev2;
release channel dev3;
release channel dev4;
}
EOF
echo '------------------------------------'
echo "--  End Increment Backup of DB 10.103.23.102 DateTime: `date`  --"
echo '------------------------------------'
scp -l 51200 -r /data/oracle/ora_backup/$incr_day oracle@10.103.23.103:/data/oracle/ora_backup102 &
wait
echo '------------------------------------'
echo "-- End of Send file to 10.103.23.103 DateTime: `date` --"
echo '------------------------------------'
echo ''
echo ''
----------------------------------------結束,謝謝-----------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

21.10 使用RMAN恢復資料庫

RMAN的恢復分為完全恢復和不完全恢復兩種型別。

RESTORE:將備份資料複製到指定的目錄。
RECOVERY:對資料庫實施同步恢復。

21.10.1 RESTORE

  該命令從磁碟或者磁帶中重建資料檔案、表空間、控制檔案、歸檔日誌檔案以及伺服器引數檔案等。
  對於使用BACKUP所產生的所有備份集,在資料庫恢復時都要求使用RESTORE命令。這是因為備份集中的備份片是以專有的RMAN格式儲存的,需要使用RESTORE進行重建,
重建的結果是自動產生目標資料庫的物理檔案結構。
  
  如果備份檔案是COPY命令或者BACKUP AS COPY命令生成的影像副本,則不需要使用RESTORE命令。

21.10.2 RECOVER

  該命令負責把歸檔執行日誌檔案用於重建的資料檔案,來完成資料庫的同步恢復。

  在執行RECOVER時,RMAN需要讀取歸檔日誌,如果沒有歸檔日誌,或者資料庫執行在非歸檔方式下,則恢復過程會產生錯誤。
所以使用RMAN對資料庫執行完全或者不完全恢復,資料庫都應該在歸檔模式下。

21.10.3 例項解析

(1)為了完成一個完全的資料庫恢復,目標資料庫必須在MOUNT狀態下。
如果要完成聯機表空間或者低於完全資料庫恢復的情況,則資料庫可以處於OPEN狀態。
SQL>conn /as sysdba
SQL>startup mount

(2)執行RESTORE DATABASE 和 RECOVER DATABASE命令。
RMAN>run
{
allocate channel ch1 type disk;
restore database;
recover database;
alter database open;
}
RESTORE從BACKUPSET重建資料檔案,RECOVER確定是否需要應用歸檔日誌檔案,如果需要,那就將那些歸檔重執行日誌用於資料庫,以保持資料庫的一致性。

(3)恢復表空間
恢復表空間時,資料庫必須處於OPEN狀態。
再恢復表空間之前,首先將要恢復的表空間離線,然後實施表空間的恢復,再將表空間聯機。
RMAN>run
{
SQL 'ALTER TABLESPACE USERS OFFLINE';
RESTORE TABLESPACE USERS;
RECOVER TABLESPACE USERS;
SQL 'ALTER TABLESPACE USERS ONLINE';
}

(4)恢復資料檔案子集
如果某個資料檔案出現了毀壞,則可以使用RMAN實現資料檔案的恢復
RMAN>run
{
allocate channel ch1 type disk;
sql 'alter database mount';
restore datafile 2;
restore datafile 3;
restore archivelog all;
recover database;
sql 'alter database open';
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25097694/viewspace-2130248/,如需轉載,請註明出處,否則將追究法律責任。

相關文章