Oracle 11g R2 備份與恢復

Oracle 11g R2 Rman備份


1. 備份與恢復的定義及分類數據庫

備份的定義及分類:express

備份就是把數據庫複製到轉儲設備的過程。其中,轉儲設備是指用於放置數據庫副本的磁帶或磁盤。一般也將存放於轉儲設備中的數據庫的副本稱爲原數據庫的備份或轉儲。備份是一份數據副本,從不一樣的角度分類以下:安全

從物理與邏輯的角度來分類:服務器

從物理與邏輯的,備份能夠分爲物理備份和邏輯備份。session

物理備份:對數據庫操做系統的物理文件(數據文件,控制文件和日誌文件)的備份。物理備份又能夠分爲脫機備份(冷備份)和聯機備份(熱備份),前者是在關閉數據庫的時候進行的,後者是以歸檔日誌的方式對運行的數據庫進行備份。可使用oracle的恢復管理器(RMAN)或操做系統命令進行數據庫的物理備份。oracle

邏輯備份:對數據庫邏輯組件(如表和存儲過程等數據庫對象)的備份。邏輯備份的手段不少,如傳統的EXP,數據泵(EXPDP),數據庫閃回技術等第三方工具,均可以進行數據庫的邏輯備份。ide

從數據庫的備份角度分類:工具

從數據庫的備份角度,備份能夠分爲徹底備份增量備份差別備份測試

徹底備份:每次對數據庫進行完整備份,當發生數據丟失的災難時,徹底備份無需依賴其餘信息便可實現100%的數據恢復,其恢復時間最短且操做最方便。spa

增量備份:只有那些在上次徹底備份或增量備份後被修改的文件纔會被備份。優勢是備份數據量小,須要的時間短,缺點是恢復的時候須要依賴之前備份記錄,出問題的風險較大。

差別備份:備份那些自從上次徹底備份以後被修改過的文件。從差別備份中恢復數據的時間較短,所以只須要兩份數據---最後一次完整備份和最後一次差別備份,缺點是每次備份須要的時間較長。

2. 恢復的定義及分類

恢復就是發生故障後,利用已備份的數據文件或控制文件,從新創建一個完整的數據庫,恢復分爲如下兩種類型:

實例恢復:oracle實例出現失敗後,oracle自動進行的恢復

介質恢復:當存放數據庫的介質出現故障時所做的恢復。介質恢復又分爲徹底恢復和不徹底恢復

徹底恢復:將數據庫恢復到數據庫失敗時的狀態。這種恢復是經過裝載數據庫備份並應用所有的重作日誌作到的。

不徹底恢復:將數據庫恢復到數據庫失敗前的某一時刻的狀態。這種恢復是經過裝載數據庫備份並應用部分的重作日誌作到的。進行不徹底恢復後,必須在啓動數據庫時用resetlogs選項重設聯機重作日誌。

RMAN的存儲類型有三種方式:

1.備份集 默認類型

2.壓縮備份集

3.鏡像copy

組成每一個備份集的每一個文件稱之爲備份片

RMAN備份能夠存放在兩種位置:

1.目標數據庫的控制文件

2.恢復目錄中

RMAN備份的優勢:

1.RMAN只備份有效數據

2.RMAN能夠實現增量備份

2. 使用RMAN工具

RMANoracle的一個重要工具,用於備份和恢復數據文件,歸檔日誌和控制文件,也能夠用來執行徹底或不徹底的數據庫恢復。RMAN3中不一樣的用戶接口,命令行方式,GUI方式(集成在OEM中的備份管理器),API方式(用於集成到第三方的備份軟件中),它具備如下特色:

支持在線熱備份

支持多級增量備份

支持並行備份、恢復

減小所須要備分量

備份、恢復使用簡單

2.1. RMAN的組件

target database(目標數據庫)

目標數據庫就是須要RMAN對其進行備份與恢復的數據庫,RMAN能夠備份數據文件,控制文件,歸檔日誌,spfile

service session(服務器會話)

RMAN啓動數據庫上的oracle服務器進程,將創建一個與目標數據庫的會話,有目標數據庫上的服務器進程進行備份、還原、恢復的實際操做。

RMAN RepositoryRMAN資料庫)

RMAN使用過程當中會用到的控制信息,是一些關於備份、歸檔日誌及RMAN活動的元數據

Recovery Catalog(恢復目錄)

恢復目錄是創建在RMAN恢復目錄數據庫上的一種schema對象,用於保存RMAN資料庫數據。恢復目錄是一個可選的組件。RMAN會將資料數據記錄在目標數據庫的控制文件中,但這樣不夠安全,由於一旦目標數據庫的控制文件損壞就意味着全部的RMAN備份失效。因此建議在單獨的一個數據庫中創建一個恢復目錄另外保存一份資料庫數據。

MML(媒體管理庫)

MML是第三方工具或軟件,用於管理對磁帶的讀寫與文件的跟蹤管理。若是你想直接經過RMAN備份到磁帶上,就必須配置媒體管理層,媒體管理層的工具和RMAN共同配合完成備份與恢復。

快閃恢復區

快閃恢復區是oracle數據庫用於保存全部與恢復相關的文件的默認磁盤位置。這些相關文件包括歸檔日誌,RMAN備份,控制文件自動備份,複用的控制文件和重作日誌副本及閃回日誌文件。

輔助數據庫

在正常使用時,RMAN會與目標數據庫一塊兒使用,若是建立了恢復目錄數據庫,那麼也會與恢復目錄數據庫一塊兒使用。在某些狀況下,但願建立輔助數據庫。輔助數據庫時使用RMAN從目標數據庫的備份中建立的新數據庫。輔助數據庫可以被建立做爲備用數據庫使用。在數據庫發生災難時,可以在不丟失任何數據及停機時間最短的狀況下切換至備用數據庫。

2.2. 建立恢復目錄

恢復目錄存在於RMAN的目錄數據庫中,相似於標準的數據庫目錄,主要包含以下幾個部分信息:

備份恢復信息,能夠是多個目標數據庫

RMAN腳本,能夠存儲重複使用

關於數據文件和日誌文件的備份信息

關於目標數據庫的表空間和數據文件信息

RMAN資料庫能夠存放在目標數據庫控制文件裏,也能夠存放在恢復目錄中;

建立恢復目錄:用來存儲RMAN資料庫的。

SQL> create tablespace yy datafile '/opt/oracle/oradata/yy.dbf' size 20m autoextend on next 5m maxsize unlimited;

wKiom1kC9LyhfWD6AAAUYeapMCU356.png-wh_50 

在恢復目錄數據庫中建立RMAN用戶並受權

SQL> create user lilei identified by oracle default tablespace yy quota unlimited on yy;

wKiom1kC9NHjTiuLAAAO6YKNAuw142.png-wh_50 

SQL> grant connect,resource,recovery_catalog_owner to lilei;

wKioL1kC9OXjBh3GAAANwux6adg841.png-wh_50

 

鏈接到RMAN恢復目錄數據庫

wKiom1kC9PiQxAhnAAApf45-WLA533.png-wh_50 

建立恢復目錄

wKiom1kC9QuS2FOsAAARi3TGRYE486.png-wh_50 

提示已經鏈接到目標數據庫、鏈接到恢復目錄數據庫

wKioL1kC9SLRcW0EAABFUCWALxI175.png-wh_50 

向恢復目錄註冊數據庫ORCL,提示已經啓動所有恢復目錄的resync,已完成所有的resync。此時就可使用RMAN的恢復目錄對目標數據庫進行備份和恢復操做。

wKiom1kC9TSAdw3qAAAXmNX3PRM570.png-wh_50 

通道的分配

使用RMAN進行備份和恢復時,必須進行通道的分配,一個通道是RMAN和目標數據庫之間的一個鏈接,通道指定了某種類型的設備用於備份和恢復,RMAN可使用的通道設備包括磁盤與磁帶兩種。

通道分配能夠自動或手動進行

自動通道配置

RMAN> configure device type disk paralielism 5;

RMAN> configure default device type to disk;

手動通道配置

 

 

RMAN> run

2> {

3> allocate channel ch1 device type disk;

4> allocate channel ch2 device type disk;

5> allocate channel ch3 device type disk;

6> }

可使用show all命令能夠顯示已經配置過的有默認值的參數,其中包括通道參數

RMAN>show all;

2.3. 備份與恢復的概念與操做

備份集與備份片

備份集(backup set

備份集是一次備份的集合,它包含本次備份的全部備份片,以oracle專有的格式保存,是一個邏輯數據的集合。

備份片:

一個備份集由若干個備份片組成。每一個備份片是一個單獨輸出文件,一個備份片的大小是有限制的,他的大小不能大於文件系統所支持的文件長度的最大值。

配置備份集文件的格式:

使用backup命令進行備份時,須要明確備份文件的存儲路徑及文件名稱的格式。其路徑和格式可使用FORMAT參數進行統一設置。FORMAT格式由兩部分組成:即存儲路徑和文件名稱格式;

若是沒有使用FORMAT指定存儲路徑和文件名稱格式,則默認狀況下BACKUP所產生的備份集將存儲在快閃恢復區中,RMAN自動使用%U來肯定文件名稱不會被重複。

FORMAT命令格式以下:

FORMAT '格式字符串'

其中格式字符串的文件名稱部分可使用替換變量,例如FORMAT '/BACKUP/YY/%U'.

經常使用的替換變量以下:

%c : 備份片的拷貝數

%d:數據庫名稱

%D : 位於該月中的第幾天(DD

%M : 位於該年中第幾月(MM

%F : 一個基於DBID的惟一名稱,它的形式爲C-DBID-YYYYMMDD-QQ。其中DBID爲數據庫的DBIDYYYYMMDD爲日誌,QQ是一個1-256的序列

%n:數據庫名稱,向右填補到最大8個字符

%u:一個8個字符的名稱,它是根據備份集個數與建立時間信息生成的。

%p:該備份集中的備份片號,從1開始到建立的文件數。

%U:系統生成的一個惟一文件名,對於備份片來講,它的含義至關於%u_%p_%c

%s:備份集的號

%t:備份集時間戳

%T:年月日格式(YYYYMMDD

備份與恢復命令

backup命令用於備份數據庫文件,能夠將多個文件、表空間、整個數據庫已備份集形式備份到磁盤或磁帶上,在RUN命令外使用BACKUP命令,會自動使用自動通道。在RUN命令內使用BACKUP命令,若是定義了手動通道,則優先使用手動定義通道。

使用RMAN備份的數據庫也只能使用RMAN提供的恢復命令進行恢復。RMAN的恢復目錄中存儲了目標數據庫的備份信息。RMAN根據恢復目錄中的存儲信息,自動將數據庫同步到某一個數據一致的狀態。

RMAN恢復數據庫時用到兩個命令,即RESTORERECOVERRESTORE命令將備份數據恢復到指定的目錄,RECOVER命令對數據庫進行同步恢復。

RESTORE命令:因爲備份集中的備份片是以專有的RMAN格式存儲的,須要使用RESTORE命令進行重建。重建的結果是自動產生目標數據庫的物理文件結構。

RECOVER命令:負責把歸檔日誌文件用於重建的數據文件,來完成數據庫的同步恢復。在執行RECOVER命令時,RMAN須要讀取歸檔日誌。若是沒有歸檔日誌,或者數據庫運行在非歸檔模式下,則恢復過程會報錯。

舉例說明在歸檔模式下備份與恢復

要用RMAN進行聯機備份,數據庫必須處於歸檔模式,恢復目錄必須打開,目標數據庫進程必須啓動,數據庫已加載或者打開。

查看數據庫是否處於歸檔模式下:

wKioL1kC9VKymCP9AAAlzBnQgnw435.png-wh_50 

關閉數據庫並啓動數據庫到mount狀態

wKioL1kC9WKS85C3AAA--J5_vxM323.png-wh_50 

使用ALTER DATABASE ARCHIVELOG命令將數據設置爲歸檔模式,並驗證數據庫的歸檔模式是否改變

wKiom1kC9XOioVqrAAA8t93PdWQ797.png-wh_50 

備份和恢復整個數據庫

wKiom1kC9YjBvKevAAAxifpe4ms902.png-wh_50 

備份和恢復整個數據庫,自動分配通道,FORMAT默認使用%U,備份集存儲在數據庫快閃恢復區內,備份文件包括數據文件,控制文件,重作日誌文件和參數文

RMAN> backup database;

wKiom1kC9ZyDUOeSAAD3BLEJE_M513.png-wh_50 

備份到了快閃恢復區,

wKiom1kC9a3DxArPAAA4TJ8fA3s663.png-wh_50 

若是備份整個數據庫時要包含歸檔日誌文件,則要加上plus archivelog關鍵字,delete input的意思是在備份完成後,刪除archivelog文件

RMAN> backup database plus archivelog delete input;

wKiom1kC9b3zXtIOAACmpx-L1Us408.png-wh_50 

建立目錄/OPT/ORACLE/ORADATA

wKioL1kC9dDQn1h1AAAOZX-HlzU327.png-wh_50 

自動分配通道,經過FORMAT制定具體的路徑和格式

RMAN> backup database FORMAT '/opt/oracle/oradata/backup/rmanbak/%U';

wKioL1kC9eLz46vtAADdwNV8O_c989.png-wh_50 

備份文件存儲的路徑

wKioL1kC9fWSFooZAAAYm4OhIzQ873.png-wh_50 

使用手動分配通道,備份數據庫的方法:

RMAN> run

2> {

3> allocate channel ch1 device type disk;

4> backup database format '/opt/oracle/oradata/backup/rmanbak/%U';

5> release channel ch1;

6> }

wKiom1kC9gqDy5_DAAAYLK7HU5Q686.png-wh_50 

備份結果

wKiom1kC9hvxOZN_AAAUO56MWTY091.png-wh_50 

如何恢復數據庫

全庫備份的恢復,數據庫要在mount狀態下執行,刪除system01.dbf,使用RMAN恢復

wKioL1kC9i6Rxy8PAABA-UlHahA703.png-wh_50 

此時數據庫沒法啓動了,由於刪除了system01.dbf

wKiom1kC9kDT4gSUAAA-hXPClYI234.png-wh_50 

數據庫的當前狀態,鏈接RMAN

wKiom1kC9lWjLPZqAABPhbojIks078.png-wh_50 

恢復數據庫

wKioL1kC9m-Dea1nAADvxFECPN4912.png-wh_50 

打開數據庫

wKioL1kC9obhQs7ZAAArkgqY48Q051.png-wh_50

 

數據庫已經處於OPEN狀態了

wKiom1kC9pyxS7nOAAAP8tHfAp8194.png-wh_50 

system01.dbf表空間已經被恢復了

wKiom1kC9reR1gGyAAAhrh75bUQ239.png-wh_50 

2.4. 備份和恢復表空間

備份表空間

wKiom1kC9tKDa_9RAAAx2JM7DFg460.png-wh_50

 

備份USERS表空間

RMAN> backup tablespace users;

wKiom1kC9uah2bzAAABvSjC00Q8227.png-wh_50 

備份多個表空間

RMAN> backup filesperset=3 tablespace users,system,sysaux;

wKioL1kC9vjDFhDMAADHyr-r7yg180.png-wh_50 

RUN命令中備份表空間

RMAN> run

2> {

3> allocate channel ch1 device type disk;

4> backup format '/opt/oracle/oradata/backup/rmanbak/%U' (tablespace users,system,sysaux);

5> release channel ch1;

6> }

 

wKiom1kC9wziIbiSAAB62mvXXHs695.png-wh_50 

若是隻丟失了特定的表空間的數據文件,那麼能夠選擇只恢復這個表空間,而不是恢復整個數據庫,表空間恢復能夠在不關閉數據庫的狀況下進行,只須要將須要恢復的表空間offline

模擬刪除表空間

wKioL1kC9x3jvuYwAAAnP5ul-5Y526.png-wh_50 

恢復被刪除的表空間

wKiom1kC9yzxswP9AAAdEGf5Sz0587.png-wh_50 

已經恢復了users01.dbf

wKioL1kC9zrBs_2QAAAbqXJ21ko725.png-wh_50 

備份數據文件2

wKioL1kC90iS0kzUAABK3FD5EAU063.png-wh_50 

備份sysaux01.dbf

wKiom1kC92DCC8POAABml7OOpFM967.png-wh_50 

2.5. 查看當前系統中的數據文件

wKiom1kC93CDNMFTAABF53wndok653.png-wh_50 

wKiom1kC94KybklpAAAejOxZXgI839.png-wh_50 

刪除數據文件sysaux01.dbf

wKiom1kC95Shf3MLAAAhEQ4mH_8121.png-wh_50 

對數據文件或表空間作恢復的時候數據文件和表空間必定要處於offline狀態數據文件丟失了,但數據庫實例還能夠用,

wKioL1kC96ey0PdjAAAPP9IQvUI193.png-wh_50 

此時數據文件sysaux01.dbf的狀態爲RECOVER

wKioL1kC97mQgM_VAAAeF_OlIgY850.png-wh_50 

恢復數據文件sysaux01.dbf

wKiom1kC98uCtDmJAABpbLLXZcM912.png-wh_50 

wKioL1kC99vj53PRAAAjY0rsn8s502.png-wh_50 

將數據文件datafile 2處於online狀態

wKioL1kC9-vyWBdiAAAPOnygraE185.png-wh_50 

查看數據文件的狀態,已經變成online狀態了

wKioL1kC9_rDnxfnAAAeaB3hddE096.png-wh_50 

3. 使用數據泵技術實現邏輯備份

邏輯備份概述

邏輯備份時建立數據庫對象的邏輯副本,並存入一個二進制轉儲文件的過程。從本質上來說邏輯備份與恢復實際就是對數據庫事實數據的導入和導出。

導出:

導出就是數據庫的邏輯備份,實質是讀取一個數據庫記錄並將這個記錄集寫入一個文件(擴展名一般是dmp),這些記錄的導出與物理位置無關

導入:

導入即數據庫的邏輯恢復,實質是讀取被導出的二進制轉儲文件並將其恢復到數據庫。

使用數據泵技術導入/導出

數據泵(DATA PUMP是一種在數據庫之間或在數據庫與操做系統之間高速傳輸數據的技術。數據泵工具運行在服務器上,數據庫管理員須要指定數據庫目錄來保存轉儲的數據。

鏈接oracle 數據庫

wKioL1kC-A7jgyMZAAAKyi0Y-8s355.png-wh_50 

建立一個操做目錄

 

wKiom1kC-B7S3qSJAAANfAhyJuo667.png-wh_50 

授予用戶操做dump_dir目錄的權限

wKiom1kC-CyjawznAAAOCklBX9M072.png-wh_50 

使用EXPDP命令導出數據(能夠按照表導出,按照用戶模式導出,按照表空間導出和全庫導出),使用IMPDP命令導入數據(能夠按照表導入,按照用戶模式導入,按照表空間導出和全庫導入)。

使用基於命令行的數據泵技術對數據庫實施導入和導出。

SQL> col DIRECTORY_NAME for a20

SQL> col DIRECTOR_PATH for a60

SQL> col OWNER for a8

wKiom1kC-EKSQiPLAAB7LwK5Vf0032.png-wh_50 

建立測試用戶tom並受權

wKioL1kC-FLAxxqHAAAjvZYBDuo245.png-wh_50 

導出SCOTT用戶下的empdept

[oracle@dbserver ~]$ expdp scott/oracle directory=dump_dir dumpfile=scotttab.dmp tables=emp,dept

wKiom1kC-GHgwwE2AACyS7ITeQQ351.png-wh_50 

SCOTT用戶鏈接,刪除SCOTT用戶下的EMP

wKiom1kC-HjRRL-RAAAvife_9dE491.png-wh_50 

導入emp

[oracle@dbserver ~]$ impdp scott/oracle directory=dump_dir dumpfile=scotttab.dmp tables=emp

wKiom1kC-IrCnC7tAACM1NK7PNI658.png-wh_50 

emp表已經導入成功了。

wKiom1kC-JvhxZ92AAAqcyQhHfM111.png-wh_50 

將導出的SCOTT用戶下的DEPT表和EMP表導入到tom用戶下

[oracle@dbserver ~]$ impdp system/oracle11g directory=dump_dir dumpfile=scotttab.dmp tables=scott.emp,scott.dept REMAP_SCHEMA=SCOTT:TOM

wKioL1kC-LKRGSA6AACwEkoOeNI593.png-wh_50 

查看導入的結果,使用tom用戶鏈接

wKioL1kC-MbSIe7BAAAYORQwuWM855.png-wh_50 

導出表空間

wKiom1kC-NfB0nuAAAAnehKDNLQ297.png-wh_50 

xx表空間上建立一個表aa,併爲表插入記錄

wKiom1kC-OjxueCyAABWEb-wq00544.png-wh_50 

導出表空間

wKiom1kC-PvCMgSnAAETMLsFaww962.png-wh_50 

刪除表空間xx的同時刪除數據文件

wKioL1kC-Q2zr1SfAAAfeUFTGb4475.png-wh_50 

aa表沒有了。

wKioL1kC-R3jAXewAAAotAPAZ5c268.png-wh_50 

導入表空間

導入表空間以前,須要建立一個xx表空間

wKiom1kC-TCjJ5HBAAAj9shKG1Y715.png-wh_50 

導入表空間xx

wKioL1kC-UPQW4t-AADZpsDaaMQ920.png-wh_50 

驗證,aa表恢復回來了。

wKiom1kC-VeTnCyfAABC8pFD0jM275.png-wh_50 

 

導出全庫

[oracle@dbserver orcl]$ expdp system/oracle11g directory=dump_dir dumpfile=full.dmp full=y

wKioL1kC-Wygn5HfAAALxadaaEw377.png-wh_50 

wKiom1kC-X6jQ6_hAAAX0c2lRLY395.png-wh_50 

導入全庫

[oracle@dbserver orcl]$ impdp system/oracle11g directory=dump_dir dumpfile=full.dmp full=y

wKioL1kC-ZKBGUoLAAALNE30UDA087.png-wh_50 

4. 使用閃回技術

爲了使數據庫可以從任何邏輯錯誤中迅速恢復,oracle推出了閃回技術。採用該技術,能夠對行級和事物級的數據變化進行恢復,減小了數據恢復的時間,並且操做簡單。經過SQL語句就能夠實現數據的恢復,大大提升了數據庫恢復的效率。閃回技術是數據庫恢復技術歷史上一次重大的進步,從根本上改變了數據恢復。

閃回技術包括如下各項:

閃回查詢:(FLASHBACK QUERY):查詢過去某個時間點或某個SCN值時表中的數據信息

閃回版本查詢(FLASHBACK Version query):查詢過去某個時間段或某個SCN段內表中數據變化的狀況。

閃回事物查詢(FLASHBACK Transaction Query:查看某個事物或全部事物在過去一段時間對數據進行的修改。

閃回數據庫(FLASHBACK Database:將數據庫恢復到過去某個時間點或某個SCN值時的狀態

閃回刪除(FLASHBACK drop):將已經刪除的表及其關聯的對象恢復到刪除前的狀態。

閃回表(FLASHBACK table:將表恢復到過去的某個時間點或某個SCN值時的狀態。

SCN是當oracle數據庫更新後,有DBMS自動維護而累積遞增的一個數字。能夠經過查詢數據字典V$DATABASE中的CURRENT_SCN得到當前的SCN號。

4.1. 閃回恢復區的含義

oracle推薦指定一個閃回恢復區(FLASH RECOVERY AERA)做爲存放備份與恢復相關的默認位置,這樣ORACLE就能夠實現自動的基於磁盤的備份與恢復。閃回恢復區是一塊用來存儲恢復相關的文件的存儲空間,容許用戶集中存儲全部恢復相關的文件。如下幾種文件能夠存放在閃回恢復區。

控制文件

歸檔日誌文件

閃回日誌

控制文件和SPFILE自動備份

RMAN備份集

數據文件拷貝

閃回恢復區主要經過如下3個初始化參數來設置和管理

db_recovery_file_dest:指定閃回恢復區的位置

db_recovery_file_dest_size:指定閃回恢復區的可用空間

db_flashback_retention_target:該參數用來控制閃回日誌中數據保留的時間,或者說,但願閃回數據庫可以恢復到的最先的時間點。單位爲min,默認是1440min,即一天。固然實際上可回退的時間還取決於閃回恢復區的大小,由於裏面保存了回退所須要的閃回日誌,因此這個參數要和db_recovery_file_dest_size配合修改。

若是要撤銷閃回恢復區,把初始化參數DB_RECOVERY_FILE_DEST的值清空。

db_recovery_file_dest_size只有在DB_RECOVERY_FILE_DEST清空以後才能夠清空

4.2. 設置閃回數據庫

設置了閃回恢復區,要啓動閃回數據庫功能,還須要進一步配置,數據必須處於歸檔模式,在設置閃回數據庫

數據庫已經處於歸檔模式:

wKioL1kC-arhoaThAAAmUALZjEE841.png-wh_50 

數據庫未啓用閃回數據庫

wKiom1kC-bqjl4w4AAAQekF99wE189.png-wh_50 

創建閃回區域

wKioL1kC-cyyzi5AAAAdfpQCDWg847.png-wh_50 

設置閃回數據庫的數據保留週期爲一天以min爲單位

wKioL1kC-d2iljFgAAAON35hU8g571.png-wh_50 

啓用閃回日誌

wKiom1kC-e3Q2djGAAAK9wY5qIw777.png-wh_50 

查詢是否成功啓用閃回恢復區

wKioL1kC-f3DaadHAAAawYkOmTs576.png-wh_50 

查詢是否成功啓用閃回數據庫

wKioL1kC-g2ABGTjAAAOhxQV-GQ750.png-wh_50 

閃回數據庫

閃回數據庫可以使數據迅速的回滾到之前的某個時間點或者某個SCN上,這對數據庫從邏輯錯誤中恢復特別有用。並且也是大多數發生邏輯損壞時恢復數據庫最佳的選擇。

使用SCN閃回數據庫

查看數據庫系統當前SCN

wKioL1kC-hzSBdx5AAAX2CDgUqU487.png-wh_50 

改變數據庫當前狀態,模擬建立表TEST10,並插入一條記錄

wKiom1kC-i2A2oeAAAAiLavu3MI580.png-wh_50 

進行閃回數據庫恢復,將數據庫恢復到建立表以前的狀態,即SCN1238544

wKiom1kC-j2iFIO7AABKiygNYHk598.png-wh_50 

RESETLOGS選項打開數據庫

wKiom1kC-kyzL2yqAAAK8USHKsE925.png-wh_50 

驗證數據庫的狀態,TEST10表不存在。

wKioL1kC-mOTC8LpAAAWDLatnNI868.png-wh_50 

查詢數據庫中當前最先的閃回SCN和時間

wKioL1kC-nTgX7oxAAAm61ko1uE192.png-wh_50 

按照指定時間閃回數據庫

查詢數據庫中當前時間和當前SCN

wKiom1kC-obAO4trAAAPo6piSWo164.png-wh_50 

改變數據庫的當前狀態,模擬建立表test11,並插入1條記錄

wKiom1kC-pWDxNJsAAAtTzMEzhg768.png-wh_50 

進行閃回數據庫恢復,將數據庫恢復到建立表以前的狀態。

wKioL1kC-qXwWoPeAABZ8-sruM0322.png-wh_50 

使用RESETLOGS打開數據庫

wKioL1kC-reh5zufAAAMfrImZkg438.png-wh_50 

驗證數據庫的狀態test11表是否存在。

wKiom1kC-svQw2fyAAAXQCtCQ5M897.png-wh_50 

閃回數據庫操做的限制:

數據文件損壞或丟失等介質故障不能使用閃回數據庫進行恢復。閃回數據庫只能基於當前正常運行的數據文件

閃回數據庫功能啓動後,若是發生數據控制文件重建或利用備份恢復控制文件,則不能使用閃回數據庫

不能使用閃回數據庫進行數據文件收縮操做

不能使用閃回數據庫將數據庫恢復到在閃回日誌中可得到的最先的SCN以前的SCN,由於閃回日誌文件在必定的條件下被刪除,而不是始終保存在閃回恢復區中。

4.3. 閃回表

閃回表是將表恢復到過去的某個時間點或者指定的SCN而不用恢復數據文件,爲DBA提供了一種在線、快速、便捷的恢復方式,能夠恢復對錶進行的修改、刪除、插入等錯誤的操做。

利用閃回表技術恢復表中的數據的過程,其實是對錶進行DML操做的過程。oracle自動維護與表相關聯的索引、觸發器、約束等。

爲了使用數據庫閃回功能,必須知足下列條件

用戶具備FALSHBACK ANY TABLE系統權限,或者具備所操做表的FLASHBACK對象權限

用戶具備所操做表的SELECT/INSERT/DELETE/ALTER對象權限

啓動被操做表的ROW MOVEMENT特性,能夠採用下列方式進行:

SQL> ALTER TABLE 表名 ENABLE ROW MOVEMENT;

閃回表語法格式:

FLASHBACK TABLE [schema].table TO SCN | TIMESTAMP expression [ENABLE|DISABLE TRIGGERS]

參數說明:

SCN:將表恢復到指定的SCN時的狀態

TIMESTAMP:將表恢復到指定額時間點

ENABLE|DISABLE TRIGGERS:在恢復表中數據的過程當中,表上的觸發器時禁用仍是激活(默認是引用)

舉例說明:

使用SCOTT用戶登陸

wKioL1kC-t_xpdLiAAAgpwYk_RE985.png-wh_50 

建立表,插入記錄,提交事物

wKioL1kC-vCyk2RqAABDA6vrY4M904.png-wh_50 

查詢當前SCN號,若是當前用戶沒有權限查詢v$database,則以sys用戶登陸,授予當前用戶訪問數據字典的權限。

wKiom1kC-wOjCuTAAAA4Q-n9xIY100.png-wh_50 

更新記錄,並提交事物

wKioL1kC-xSyQ5KSAAATvxNQeNI183.png-wh_50 

查看錶中的記錄

wKiom1kC-yOhvuBdAAASLVYnswY657.png-wh_50 

刪除ID=3的記錄

wKiom1kC-zKwZnv-AAAk35XpAxA193.png-wh_50 

啓動test01表的ROW MOVEMENT特性

wKiom1kC-0aSe3FeAAANJYf6ggs923.png-wh_50 

test01表恢復到2015-11-22 05:44:48時刻的狀態

wKiom1kC-3Wi9NnvAAAnfYmI3wU562.png-wh_50 

test01表恢復到SCN1240503的狀態。

wKiom1kC-4DhJz7ZAAAp0VOP8J0683.png-wh_50 

 

4.4. 閃回刪除

閃回刪除能夠恢復使用DROP table語句刪除的表,是一種對意外刪除的表恢復機制。閃回刪除的功能的實現主要是經過oracle數據庫中的「回收站」技術實現的。在oracle數據庫中,當執行DROP table操做時,並不當即收回表及其關聯對象的空間,而是將他們重命名後放入一個稱爲「回收站」的邏輯容器中保存,直到用戶決定永久刪除他們或存儲該表的表空間或存儲空間不足時,表才真正被刪除,爲了使用數據庫的閃回刪除技術,必須開啓數據庫的「回收站」

啓動「回收站」將參數RECYCLEBIN設置爲ON,在默認狀況下「回收站」已經啓動

wKiom1kC-5LDXGZ9AAAVvlSedg8480.png-wh_50 

若是沒有啓動可使用:

wKioL1kC-6GzyZYRAAAHZdDZJDI400.png-wh_50 

查看回收站。當執行DROP table 時,表及關聯的對象被命名後保存在「回收站」中,能夠經過查詢USER_RECYCLEBIN DBA_RECYCLEBIN視圖得到被刪除的表及其關聯對象。

wKiom1kC-7Dzr4A8AAAZc8PvGvI092.png-wh_50 

經過USER_RECYCLEBIN查看被刪除的表

wKioL1kC-8CDHz4wAAAgrP9dXXA620.png-wh_50 

不支持sys用戶和system用戶,這兩個用戶下的表被刪除以後,沒法從回收站裏拿到,查詢時爲「空」

wKiom1kC-9KTAWLaAAApJMwQMZI411.png-wh_50 

若是刪除表的時候使用了PURGE短語,則表及其關聯對象唄直接釋放,空間被回收,相關信息不會進入「回收站」中

wKioL1kC--HxNiVWAAA5dGgJSyU485.png-wh_50 

清空回收站,因爲被刪除的表級其關聯對象信息保存在「回收站」中,其存儲空間並無釋放,所以須要按期清空「回收站」。或清除「回收站」中沒有用的對象(表,索引,表空間)釋放其所佔用的磁盤空間

語法以下:

PURGE [TABLE 表名 | INDEX index]

[RECYCLEBIN | DBA_RECYCLEBIN] | [TABLESPACE tablespace [USER user]]

參數說明:

TABLE:從回收站中清除指定的表

INDEX:從回收站中清除指定的索引,並回收其磁盤空間

RECYCLEBIN:清空用戶「回收站」,並回收全部對象的磁盤空間

DBA_RECYCLEBIN:清空整個數據庫系統的「回收站」,只有具備SYSDBA權限的用戶纔可使用

TABLESPACE :清除「回收站」中指定額表空間,並回收磁盤空間

USER:清除回收站中指定表空間中特定用戶的對象,並回收磁盤空間

wKiom1kC-_PAjS-vAAAjU9lCtuE060.png-wh_50 

閃回刪除操做,閃回刪除的基本語法

FLASHBACK TABLE [schema.]table to BEFORE DROP [RENAME TO table]

wKioL1kC_AbRPdNKAAAvKMome9Q229.png-wh_50 

閃回刪除

wKiom1kC_BjhX4W2AAAwbl9vFo4932.png-wh_50 

 

閃回刪除舉例說明:

wKiom1kC_CeTW85XAAAbAb2f7Es882.png-wh_50 

wKiom1kC_DWxlVvXAAAS_8RuY9I684.png-wh_50 

wKioL1kC_EWh2HULAAAjPMAf29I685.png-wh_50 

須要注意:只有本地管理的,非系統表空間中的表可使用閃回刪除操做。

4.5. 閃回查詢

容許根據時間點timestampSCN查看就的數據,除了能夠查看舊數據,須要時能夠經過檢索舊數據來撤銷錯誤的更改。

使用SCOTT用戶登陸,對EMP表基於AS of TIMESTAMP的閃回查詢

SQL> show user;

USER is "SCOTT"

wKiom1kC_FiCALmGAAARprHy_A4522.png-wh_50 

更新員工號爲7900的工資,更新爲2000,並提交事物

wKiom1kC_HTRYR1yAACPjdqXsdY979.png-wh_50 

更新員工號爲7900的工資,更新兩次,提交事物。

wKioL1kC_IrADWWpAAATFKOD_pM511.png-wh_50 

更新員工號爲7900的工資,更新爲3500,並提交事物

wKioL1kC_KrSutbiAAATFKOD_pM512.png-wh_50 

查看7900號員工的更新後工資。

wKioL1kC_L2Cj6-SAAAV5CeAxVE397.png-wh_50 

查詢7900號員工前一個小時的工資是多少

wKiom1kC_MjBscRYAAAcOrtJ-PE347.png-wh_50 

查詢第一個事物提交,第二個事物尚未提交時7900員工的工資

wKiom1kC_N7THr31AAAkW5zeVHg193.png-wh_50 

查詢第二個事物提交,第三個事物尚未提交時的7900號員工的工資

wKioL1kC_OqyOrBBAAAk0KmXq30528.png-wh_50 

若是須要,能夠將數據恢復到過去某個時刻的狀態。

wKioL1kC_Paz9xsJAABS3J9Acis810.png-wh_50

相關文章
相關標籤/搜索