1. Oracle 11g R2 Rman備份1. 備份與恢復(fù)的定義及分類 備份的定義及分類: 備份就是把數(shù)據(jù)庫復(fù)制到轉(zhuǎn)儲設(shè)備的過程,。其中,轉(zhuǎn)儲設(shè)備是指用于放置數(shù)據(jù)庫副本的磁帶或磁盤,。通常也將存放于轉(zhuǎn)儲設(shè)備中的數(shù)據(jù)庫的副本稱為原數(shù)據(jù)庫的備份或轉(zhuǎn)儲,。備份是一份數(shù)據(jù)副本,從不同的角度分類如下: 從物理與邏輯的角度來分類: 從物理與邏輯的,,備份可以分為物理備份和邏輯備份,。 物理備份:對數(shù)據(jù)庫操作系統(tǒng)的物理文件(數(shù)據(jù)文件,控制文件和日志文件)的備份,。物理備份又可以分為脫機備份(冷備份)和聯(lián)機備份(熱備份),,前者是在關(guān)閉數(shù)據(jù)庫的時候進行的,后者是以歸檔日志的方式對運行的數(shù)據(jù)庫進行備份,??梢允褂?/span>oracle的恢復(fù)管理器(RMAN)或操作系統(tǒng)命令進行數(shù)據(jù)庫的物理備份。 邏輯備份:對數(shù)據(jù)庫邏輯組件(如表和存儲過程等數(shù)據(jù)庫對象)的備份,。邏輯備份的手段很多,,如傳統(tǒng)的EXP,數(shù)據(jù)泵(EXPDP),,數(shù)據(jù)庫閃回技術(shù)等第三方工具,,都可以進行數(shù)據(jù)庫的邏輯備份。 從數(shù)據(jù)庫的備份角度分類: 從數(shù)據(jù)庫的備份角度,備份可以分為完全備份和增量備份和差異備份 完全備份:每次對數(shù)據(jù)庫進行完整備份,,當發(fā)生數(shù)據(jù)丟失的災(zāi)難時,,完全備份無需依賴其他信息即可實現(xiàn)100%的數(shù)據(jù)恢復(fù),其恢復(fù)時間最短且操作最方便,。 增量備份:只有那些在上次完全備份或增量備份后被修改的文件才會被備份,。優(yōu)點是備份數(shù)據(jù)量小,需要的時間短,,缺點是恢復(fù)的時候需要依賴以前備份記錄,,出問題的風(fēng)險較大。 差異備份:備份那些自從上次完全備份之后被修改過的文件,。從差異備份中恢復(fù)數(shù)據(jù)的時間較短,,因此只需要兩份數(shù)據(jù)---最后一次完整備份和最后一次差異備份,缺點是每次備份需要的時間較長,。 2. 恢復(fù)的定義及分類 恢復(fù)就是發(fā)生故障后,,利用已備份的數(shù)據(jù)文件或控制文件,重新建立一個完整的數(shù)據(jù)庫,,恢復(fù)分為以下兩種類型: 實例恢復(fù):當oracle實例出現(xiàn)失敗后,,oracle自動進行的恢復(fù) 介質(zhì)恢復(fù):當存放數(shù)據(jù)庫的介質(zhì)出現(xiàn)故障時所作的恢復(fù)。介質(zhì)恢復(fù)又分為完全恢復(fù)和不完全恢復(fù) 2 完全恢復(fù):將數(shù)據(jù)庫恢復(fù)到數(shù)據(jù)庫失敗時的狀態(tài),。這種恢復(fù)是通過裝載數(shù)據(jù)庫備份并應(yīng)用全部的重做日志做到的,。 2 不完全恢復(fù):將數(shù)據(jù)庫恢復(fù)到數(shù)據(jù)庫失敗前的某一時刻的狀態(tài)。這種恢復(fù)是通過裝載數(shù)據(jù)庫備份并應(yīng)用部分的重做日志做到的,。進行不完全恢復(fù)后,,必須在啟動數(shù)據(jù)庫時用resetlogs選項重設(shè)聯(lián)機重做日志。 RMAN的存儲類型有三種方式: 1.備份集 默認類型 2.壓縮備份集 3.鏡像copy 組成每個備份集的每個文件稱之為備份片 RMAN備份可以存放在兩種位置: 1.目標數(shù)據(jù)庫的控制文件 2.恢復(fù)目錄中 RMAN備份的優(yōu)點: 1.RMAN只備份有效數(shù)據(jù) 2.RMAN可以實現(xiàn)增量備份 2. 使用RMAN工具RMAN是oracle的一個重要工具,,用于備份和恢復(fù)數(shù)據(jù)文件,,歸檔日志和控制文件,也可以用來執(zhí)行完全或不完全的數(shù)據(jù)庫恢復(fù),。RMAN有3中不同的用戶接口,命令行方式,,GUI方式(集成在OEM中的備份管理器),,API方式(用于集成到第三方的備份軟件中),它具有以下特點: 支持在線熱備份 支持多級增量備份 支持并行備份,、恢復(fù) 減少所需要備份量 備份,、恢復(fù)使用簡單 2.1. RMA N的組件target database(目標數(shù)據(jù)庫) 目標數(shù)據(jù)庫就是需要RMAN 對其進行備份與恢復(fù)的數(shù)據(jù)庫,RMAN可以備份數(shù)據(jù)文件,,控制文件,,歸檔日志,spfile; service session(服務(wù)器會話) RMAN啟動數(shù)據(jù)庫上的oracle服務(wù)器進程,,將建立一個與目標數(shù)據(jù)庫的會話,,有目標數(shù)據(jù)庫上的服務(wù)器進程進行備份、還原,、恢復(fù)的實際操作,。 RMAN Repository(RMAN資料庫) RMAN使用過程中會用到的控制信息,是一些關(guān)于備份,、歸檔日志及RMAN活動的元數(shù)據(jù) Recovery Catalog(恢復(fù)目錄) 恢復(fù)目錄是建立在RMAN恢復(fù)目錄數(shù)據(jù)庫上的一種schema對象,,用于保存RMAN資料庫數(shù)據(jù)?;謴?fù)目錄是一個可選的組件,。RMAN會將資料數(shù)據(jù)記錄在目標數(shù)據(jù)庫的控制文件中,但這樣不夠安全,,因為一旦目標數(shù)據(jù)庫的控制文件損壞就意味著所有的RMAN備份失效,。所以建議在單獨的一個數(shù)據(jù)庫中建立一個恢復(fù)目錄另外保存一份資料庫數(shù)據(jù)。 MML(媒體管理庫) MML是第三方工具或軟件,,用于管理對磁帶的讀寫與文件的跟蹤管理,。如果你想直接通過RMAN備份到磁帶上,就必須配置媒體管理層,,媒體管理層的工具和RMAN共同配合完成備份與恢復(fù),。 快閃恢復(fù)區(qū) 快閃恢復(fù)區(qū)是oracle數(shù)據(jù)庫用于保存所有與恢復(fù)相關(guān)的文件的默認磁盤位置。這些相關(guān)文件包括歸檔日志,,RMAN備份,,控制文件自動備份,復(fù)用的控制文件和重做日志副本及閃回日志文件,。 輔助數(shù)據(jù)庫 在正常使用時,,RMAN會與目標數(shù)據(jù)庫一起使用,如果創(chuàng)建了恢復(fù)目錄數(shù)據(jù)庫,,那么也會與恢復(fù)目錄數(shù)據(jù)庫一起使用,。在某些情況下,希望創(chuàng)建輔助數(shù)據(jù)庫,。輔助數(shù)據(jù)庫時使用RMAN從目標數(shù)據(jù)庫的備份中創(chuàng)建的新數(shù)據(jù)庫,。輔助數(shù)據(jù)庫能夠被創(chuàng)建作為備用數(shù)據(jù)庫使用。在數(shù)據(jù)庫發(fā)生災(zāi)難時,,能夠在不丟失任何數(shù)據(jù)及停機時間最短的情況下切換至備用數(shù)據(jù)庫,。 2.2. 創(chuàng)建恢復(fù)目錄恢復(fù)目錄存在于RMAN的目錄數(shù)據(jù)庫中,類似于標準的數(shù)據(jù)庫目錄,,主要包含如下幾個部分信息: 備份恢復(fù)信息,,可以是多個目標數(shù)據(jù)庫 RMAN腳本,,可以存儲重復(fù)使用 關(guān)于數(shù)據(jù)文件和日志文件的備份信息 關(guān)于目標數(shù)據(jù)庫的表空間和數(shù)據(jù)文件信息 RMAN資料庫可以存放在目標數(shù)據(jù)庫控制文件里,也可以存放在恢復(fù)目錄中,; 創(chuàng)建恢復(fù)目錄:用來存儲RMAN資料庫的,。 SQL> create tablespace yy datafile '/opt/oracle/oradata/yy.dbf' size 20m autoextend on next 5m maxsize unlimited;
在恢復(fù)目錄數(shù)據(jù)庫中創(chuàng)建RMAN用戶并授權(quán) SQL> create user lilei identified by oracle default tablespace yy quota unlimited on yy;
SQL> grant connect,resource,recovery_catalog_owner to lilei;
連接到RMAN恢復(fù)目錄數(shù)據(jù)庫
創(chuàng)建恢復(fù)目錄
提示已經(jīng)連接到目標數(shù)據(jù)庫、連接到恢復(fù)目錄數(shù)據(jù)庫
向恢復(fù)目錄注冊數(shù)據(jù)庫ORCL,,提示已經(jīng)啟動全部恢復(fù)目錄的resync,已完成全部的resync,。此時就可以使用RMAN的恢復(fù)目錄對目標數(shù)據(jù)庫進行備份和恢復(fù)操作。
通道的分配 使用RMAN進行備份和恢復(fù)時,,必須進行通道的分配,,一個通道是RMAN和目標數(shù)據(jù)庫之間的一個連接,通道指定了某種類型的設(shè)備用于備份和恢復(fù),,RMAN可以使用的通道設(shè)備包括磁盤與磁帶兩種,。 通道分配可以自動或手動進行 自動通道配置 RMAN> configure device type disk parallelism 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命令可以顯示已經(jīng)配置過的有默認值的參數(shù),其中包括通道參數(shù) RMAN>show all; 2.3. 備份與恢復(fù)的概念與操作備份集與備份片 備份集(backup set) 備份集是一次備份的集合,,它包含本次備份的所有備份片,,以oracle專有的格式保存,是一個邏輯數(shù)據(jù)的集合,。 備份片: 一個備份集由若干個備份片組成,。每個備份片是一個單獨輸出文件,一個備份片的大小是有限制的,,他的大小不能大于文件系統(tǒng)所支持的文件長度的最大值,。 配置備份集文件的格式: 使用backup命令進行備份時,需要明確備份文件的存儲路徑及文件名稱的格式,。其路徑和格式可以使用FORMAT參數(shù)進行統(tǒng)一設(shè)置,。FORMAT格式由兩部分組成:即存儲路徑和文件名稱格式; 如果沒有使用FORMAT指定存儲路徑和文件名稱格式,,則默認情況下BACKUP所產(chǎn)生的備份集將存儲在快閃恢復(fù)區(qū)中,,RMAN自動使用%U來確定文件名稱不會被重復(fù)。 FORMAT命令格式如下: FORMAT '格式字符串' 其中格式字符串的文件名稱部分可以使用替換變量,,例如FORMAT '/BACKUP/YY/%U'. 常用的替換變量如下: %c : 備份片的拷貝數(shù) %d:數(shù)據(jù)庫名稱 %D : 位于該月中的第幾天(DD) %M : 位于該年中第幾月(MM) %F : 一個基于DBID的唯一名稱,,它的形式為C-DBID-YYYYMMDD-QQ。其中DBID為數(shù)據(jù)庫的DBID,,YYYYMMDD為日志,,QQ是一個1-256的序列 %n:數(shù)據(jù)庫名稱,向右填補到最大8個字符 %u:一個8個字符的名稱,,它是根據(jù)備份集個數(shù)與創(chuàng)建時間信息生成的,。 %p:該備份集中的備份片號,,從1開始到創(chuàng)建的文件數(shù),。 %U:系統(tǒng)生成的一個唯一文件名,,對于備份片來說,它的含義相當于%u_%p_%c,。 %s:備份集的號 %t:備份集時間戳 %T:年月日格式(YYYYMMDD) 備份與恢復(fù)命令 backup命令用于備份數(shù)據(jù)庫文件,,可以將多個文件、表空間,、整個數(shù)據(jù)庫已備份集形式備份到磁盤或磁帶上,,在RUN命令外使用BACKUP命令,會自動使用自動通道,。在RUN命令內(nèi)使用BACKUP命令,,如果定義了手動通道,則優(yōu)先使用手動定義通道,。 使用RMAN備份的數(shù)據(jù)庫也只能使用RMAN提供的恢復(fù)命令進行恢復(fù),。RMAN的恢復(fù)目錄中存儲了目標數(shù)據(jù)庫的備份信息。RMAN根據(jù)恢復(fù)目錄中的存儲信息,,自動將數(shù)據(jù)庫同步到某一個數(shù)據(jù)一致的狀態(tài),。 RMAN恢復(fù)數(shù)據(jù)庫時用到兩個命令,即RESTORE和RECOVER,。RESTORE命令將備份數(shù)據(jù)恢復(fù)到指定的目錄,,RECOVER命令對數(shù)據(jù)庫進行同步恢復(fù)。 RESTORE命令:由于備份集中的備份片是以專有的RMAN格式存儲的,,需要使用RESTORE命令進行重建,。重建的結(jié)果是自動產(chǎn)生目標數(shù)據(jù)庫的物理文件結(jié)構(gòu)。 RECOVER命令:負責(zé)把歸檔日志文件用于重建的數(shù)據(jù)文件,,來完成數(shù)據(jù)庫的同步恢復(fù),。在執(zhí)行RECOVER命令時,RMAN需要讀取歸檔日志,。如果沒有歸檔日志,,或者數(shù)據(jù)庫運行在非歸檔模式下,則恢復(fù)過程會報錯,。 舉例說明在歸檔模式下備份與恢復(fù) 要用RMAN進行聯(lián)機備份,,數(shù)據(jù)庫必須處于歸檔模式,恢復(fù)目錄必須打開,,目標數(shù)據(jù)庫進程必須啟動,,數(shù)據(jù)庫已加載或者打開。 查看數(shù)據(jù)庫是否處于歸檔模式下:
關(guān)閉數(shù)據(jù)庫并啟動數(shù)據(jù)庫到mount狀態(tài)
使用ALTER DATABASE ARCHIVELOG命令將數(shù)據(jù)設(shè)置為歸檔模式,,并驗證數(shù)據(jù)庫的歸檔模式是否改變
備份和恢復(fù)整個數(shù)據(jù)庫
備份和恢復(fù)整個數(shù)據(jù)庫,,自動分配通道,FORMAT默認使用%U,,備份集存儲在數(shù)據(jù)庫快閃恢復(fù)區(qū)內(nèi),,備份文件包括數(shù)據(jù)文件,,控制文件,重做日志文件和參數(shù)文 RMAN> backup database;
備份到了快閃恢復(fù)區(qū),,
如果備份整個數(shù)據(jù)庫時要包含歸檔日志文件,,則要加上plus archivelog關(guān)鍵字,delete input的意思是在備份完成后,,刪除archivelog文件 RMAN> backup database plus archivelog delete input;
創(chuàng)建目錄/OPT/ORACLE/ORADATA
自動分配通道,,通過FORMAT制定具體的路徑和格式 RMAN> backup database FORMAT '/opt/oracle/oradata/backup/rmanbak/%U';
備份文件存儲的路徑
使用手動分配通道,備份數(shù)據(jù)庫的方法: 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> }
備份結(jié)果
如何恢復(fù)數(shù)據(jù)庫 全庫備份的恢復(fù),,數(shù)據(jù)庫要在mount狀態(tài)下執(zhí)行,,刪除system01.dbf,使用RMAN恢復(fù)
此時數(shù)據(jù)庫無法啟動了,,因為刪除了system01.dbf
數(shù)據(jù)庫的當前狀態(tài),,連接RMAN
恢復(fù)數(shù)據(jù)庫
打開數(shù)據(jù)庫
數(shù)據(jù)庫已經(jīng)處于OPEN狀態(tài)了
system01.dbf表空間已經(jīng)被恢復(fù)了
2.4. 備份和恢復(fù)表空間備份表空間
備份USERS表空間 RMAN> backup tablespace users;
備份多個表空間 RMAN> backup filesperset=3 tablespace users,system,sysaux;
在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> }
如果只丟失了特定的表空間的數(shù)據(jù)文件,那么可以選擇只恢復(fù)這個表空間,,而不是恢復(fù)整個數(shù)據(jù)庫,,表空間恢復(fù)可以在不關(guān)閉數(shù)據(jù)庫的情況下進行,只需要將需要恢復(fù)的表空間offline 模擬刪除表空間
恢復(fù)被刪除的表空間
已經(jīng)恢復(fù)了users01.dbf
備份數(shù)據(jù)文件2
備份sysaux01.dbf
2.5. 查看當前系統(tǒng)中的數(shù)據(jù)文件
刪除數(shù)據(jù)文件sysaux01.dbf
對數(shù)據(jù)文件或表空間做恢復(fù)的時候數(shù)據(jù)文件和表空間一定要處于offline狀態(tài), 數(shù)據(jù)文件丟失了,,但數(shù)據(jù)庫實例還可以用,
此時數(shù)據(jù)文件sysaux01.dbf的狀態(tài)為RECOVER
恢復(fù)數(shù)據(jù)文件sysaux01.dbf
將數(shù)據(jù)文件datafile 2處于online狀態(tài)
查看數(shù)據(jù)文件的狀態(tài),,已經(jīng)變成online狀態(tài)了
3. 使用數(shù)據(jù)泵技術(shù)實現(xiàn)邏輯備份邏輯備份概述 邏輯備份時創(chuàng)建數(shù)據(jù)庫對象的邏輯副本,并存入一個二進制轉(zhuǎn)儲文件的過程,。從本質(zhì)上來講邏輯備份與恢復(fù)實際就是對數(shù)據(jù)庫事實數(shù)據(jù)的導(dǎo)入和導(dǎo)出,。 導(dǎo)出: 導(dǎo)出就是數(shù)據(jù)庫的邏輯備份,實質(zhì)是讀取一個數(shù)據(jù)庫記錄并將這個記錄集寫入一個文件(擴展名通常是dmp),,這些記錄的導(dǎo)出與物理位置無關(guān) 導(dǎo)入: 導(dǎo)入即數(shù)據(jù)庫的邏輯恢復(fù),,實質(zhì)是讀取被導(dǎo)出的二進制轉(zhuǎn)儲文件并將其恢復(fù)到數(shù)據(jù)庫。 使用數(shù)據(jù)泵技術(shù)導(dǎo)入/導(dǎo)出 數(shù)據(jù)泵(DATA PUMP)是一種在數(shù)據(jù)庫之間或在數(shù)據(jù)庫與操作系統(tǒng)之間高速傳輸數(shù)據(jù)的技術(shù),。數(shù)據(jù)泵工具運行在服務(wù)器上,,數(shù)據(jù)庫管理員需要指定數(shù)據(jù)庫目錄來保存轉(zhuǎn)儲的數(shù)據(jù)。 連接oracle 數(shù)據(jù)庫
創(chuàng)建一個操作目錄
授予用戶操作dump_dir目錄的權(quán)限
使用EXPDP命令導(dǎo)出數(shù)據(jù)(可以按照表導(dǎo)出,,按照用戶模式導(dǎo)出,,按照表空間導(dǎo)出和全庫導(dǎo)出),使用IMPDP命令導(dǎo)入數(shù)據(jù)(可以按照表導(dǎo)入,,按照用戶模式導(dǎo)入,,按照表空間導(dǎo)出和全庫導(dǎo)入)。 使用基于命令行的數(shù)據(jù)泵技術(shù)對數(shù)據(jù)庫實施導(dǎo)入和導(dǎo)出,。 SQL> col DIRECTORY_NAME for a20 SQL> col DIRECTOR_PATH for a60 SQL> col OWNER for a8
創(chuàng)建測試用戶tom并授權(quán)
導(dǎo)出SCOTT用戶下的emp和dept表 [oracle@dbserver ~]$ expdp scott/oracle directory=dump_dir dumpfile=scotttab.dmp tables=emp,dept
以SCOTT用戶連接,,刪除SCOTT用戶下的EMP表
導(dǎo)入emp表 [oracle@dbserver ~]$ impdp scott/oracle directory=dump_dir dumpfile=scotttab.dmp tables=emp
emp表已經(jīng)導(dǎo)入成功了。
將導(dǎo)出的SCOTT用戶下的DEPT表和EMP表導(dǎo)入到tom用戶下 [oracle@dbserver ~]$ impdp system/oracle11g directory=dump_dir dumpfile=scotttab.dmp tables=scott.emp,scott.dept REMAP_SCHEMA=SCOTT:TOM
查看導(dǎo)入的結(jié)果,,使用tom用戶連接
導(dǎo)出表空間
在xx表空間上創(chuàng)建一個表aa,,并為表插入記錄
導(dǎo)出表空間
刪除表空間xx的同時刪除數(shù)據(jù)文件
aa表沒有了,。
導(dǎo)入表空間 導(dǎo)入表空間之前,需要創(chuàng)建一個xx表空間
導(dǎo)入表空間xx
驗證,,aa表恢復(fù)回來了。
導(dǎo)出全庫 [oracle@dbserver orcl]$ expdp system/oracle11g directory=dump_dir dumpfile=full.dmp full=y
導(dǎo)入全庫 [oracle@dbserver orcl]$ impdp system/oracle11g directory=dump_dir dumpfile=full.dmp full=y
4. 使用閃回技術(shù)為了使數(shù)據(jù)庫能夠從任何邏輯錯誤中迅速恢復(fù),,oracle推出了閃回技術(shù),。采用該技術(shù),可以對行級和事物級的數(shù)據(jù)變化進行恢復(fù),,減少了數(shù)據(jù)恢復(fù)的時間,,而且操作簡單。通過SQL語句就可以實現(xiàn)數(shù)據(jù)的恢復(fù),,大大提高了數(shù)據(jù)庫恢復(fù)的效率,。閃回技術(shù)是數(shù)據(jù)庫恢復(fù)技術(shù)歷史上一次重大的進步,從根本上改變了數(shù)據(jù)恢復(fù),。 閃回技術(shù)包括以下各項: 閃回查詢:(FLASHBACK QUERY):查詢過去某個時間點或某個SCN值時表中的數(shù)據(jù)信息 閃回版本查詢(FLASHBACK Version query):查詢過去某個時間段或某個SCN段內(nèi)表中數(shù)據(jù)變化的情況,。 閃回事物查詢(FLASHBACK Transaction Query):查看某個事物或所有事物在過去一段時間對數(shù)據(jù)進行的修改。 閃回數(shù)據(jù)庫(FLASHBACK Database):將數(shù)據(jù)庫恢復(fù)到過去某個時間點或某個SCN值時的狀態(tài) 閃回刪除(FLASHBACK drop):將已經(jīng)刪除的表及其關(guān)聯(lián)的對象恢復(fù)到刪除前的狀態(tài),。 閃回表(FLASHBACK table):將表恢復(fù)到過去的某個時間點或某個SCN值時的狀態(tài),。 SCN是當oracle數(shù)據(jù)庫更新后,有DBMS自動維護而累積遞增的一個數(shù)字,??梢酝ㄟ^查詢數(shù)據(jù)字典V$DATABASE中的CURRENT_SCN獲得當前的SCN號。 4.1. 閃回恢復(fù)區(qū)的含義oracle推薦指定一個閃回恢復(fù)區(qū)(FLASH RECOVERY AERA)作為存放備份與恢復(fù)相關(guān)的默認位置,,這樣ORACLE就可以實現(xiàn)自動的基于磁盤的備份與恢復(fù),。閃回恢復(fù)區(qū)是一塊用來存儲恢復(fù)相關(guān)的文件的存儲空間,允許用戶集中存儲所有恢復(fù)相關(guān)的文件,。以下幾種文件可以存放在閃回恢復(fù)區(qū),。 控制文件 歸檔日志文件 閃回日志 控制文件和SPFILE自動備份 RMAN備份集 數(shù)據(jù)文件拷貝 閃回恢復(fù)區(qū)主要通過以下3個初始化參數(shù)來設(shè)置和管理 db_recovery_file_dest:指定閃回恢復(fù)區(qū)的位置 db_recovery_file_dest_size:指定閃回恢復(fù)區(qū)的可用空間 db_flashback_retention_target:該參數(shù)用來控制閃回日志中數(shù)據(jù)保留的時間,或者說,,希望閃回數(shù)據(jù)庫能夠恢復(fù)到的最早的時間點,。單位為min,默認是1440min,即一天,。當然實際上可回退的時間還取決于閃回恢復(fù)區(qū)的大小,,因為里面保存了回退所需要的閃回日志,所以這個參數(shù)要和db_recovery_file_dest_size配合修改,。 如果要撤銷閃回恢復(fù)區(qū),,把初始化參數(shù)DB_RECOVERY_FILE_DEST的值清空。 db_recovery_file_dest_size只有在DB_RECOVERY_FILE_DEST清空之后才可以清空 4.2. 設(shè)置閃回數(shù)據(jù)庫設(shè)置了閃回恢復(fù)區(qū),,要啟動閃回數(shù)據(jù)庫功能,,還需要進一步配置,,數(shù)據(jù)必須處于歸檔模式,在設(shè)置閃回數(shù)據(jù)庫 數(shù)據(jù)庫已經(jīng)處于歸檔模式:
數(shù)據(jù)庫未啟用閃回數(shù)據(jù)庫
建立閃回區(qū)域
設(shè)置閃回數(shù)據(jù)庫的數(shù)據(jù)保留周期為一天以min為單位
啟用閃回日志
查詢是否成功啟用閃回恢復(fù)區(qū)
查詢是否成功啟用閃回數(shù)據(jù)庫
閃回數(shù)據(jù)庫 閃回數(shù)據(jù)庫能夠使數(shù)據(jù)迅速的回滾到以前的某個時間點或者某個SCN上,,這對數(shù)據(jù)庫從邏輯錯誤中恢復(fù)特別有用,。而且也是大多數(shù)發(fā)生邏輯損壞時恢復(fù)數(shù)據(jù)庫最佳的選擇。 使用SCN閃回數(shù)據(jù)庫 查看數(shù)據(jù)庫系統(tǒng)當前SCN
改變數(shù)據(jù)庫當前狀態(tài),,模擬創(chuàng)建表TEST10,,并插入一條記錄
進行閃回數(shù)據(jù)庫恢復(fù),將數(shù)據(jù)庫恢復(fù)到創(chuàng)建表之前的狀態(tài),,即SCN為1238544
用RESETLOGS選項打開數(shù)據(jù)庫
驗證數(shù)據(jù)庫的狀態(tài),,TEST10表不存在。
查詢數(shù)據(jù)庫中當前最早的閃回SCN和時間
按照指定時間閃回數(shù)據(jù)庫 查詢數(shù)據(jù)庫中當前時間和當前SCN
改變數(shù)據(jù)庫的當前狀態(tài),,模擬創(chuàng)建表test11,并插入1條記錄
進行閃回數(shù)據(jù)庫恢復(fù),,將數(shù)據(jù)庫恢復(fù)到創(chuàng)建表之前的狀態(tài)。
使用RESETLOGS打開數(shù)據(jù)庫
驗證數(shù)據(jù)庫的狀態(tài)test11表是否存在,。
閃回數(shù)據(jù)庫操作的限制: 2 數(shù)據(jù)文件損壞或丟失等介質(zhì)故障不能使用閃回數(shù)據(jù)庫進行恢復(fù),。閃回數(shù)據(jù)庫只能基于當前正常運行的數(shù)據(jù)文件 2 閃回數(shù)據(jù)庫功能啟動后,如果發(fā)生數(shù)據(jù)控制文件重建或利用備份恢復(fù)控制文件,,則不能使用閃回數(shù)據(jù)庫 2 不能使用閃回數(shù)據(jù)庫進行數(shù)據(jù)文件收縮操作 2 不能使用閃回數(shù)據(jù)庫將數(shù)據(jù)庫恢復(fù)到在閃回日志中可獲得的最早的SCN之前的SCN,,因為閃回日志文件在一定的條件下被刪除,而不是始終保存在閃回恢復(fù)區(qū)中,。 4.3. 閃回表閃回表是將表恢復(fù)到過去的某個時間點或者指定的SCN而不用恢復(fù)數(shù)據(jù)文件,,為DBA提供了一種在線、快速,、便捷的恢復(fù)方式,,可以恢復(fù)對表進行的修改、刪除,、插入等錯誤的操作,。 利用閃回表技術(shù)恢復(fù)表中的數(shù)據(jù)的過程,實際上是對表進行DML操作的過程,。oracle自動維護與表相關(guān)聯(lián)的索引,、觸發(fā)器、約束等,。 為了使用數(shù)據(jù)庫閃回功能,,必須滿足下列條件 2 用戶具有FALSHBACK ANY TABLE系統(tǒng)權(quán)限,或者具有所操作表的FLASHBACK對象權(quán)限 2 用戶具有所操作表的SELECT/INSERT/DELETE/ALTER對象權(quán)限 啟動被操作表的ROW MOVEMENT特性,,可以采用下列方式進行: SQL> ALTER TABLE 表名 ENABLE ROW MOVEMENT; 閃回表語法格式: FLASHBACK TABLE [schema].table TO SCN | TIMESTAMP expression [ENABLE|DISABLE TRIGGERS] 參數(shù)說明: SCN:將表恢復(fù)到指定的SCN時的狀態(tài) TIMESTAMP:將表恢復(fù)到指定額時間點 ENABLE|DISABLE TRIGGERS:在恢復(fù)表中數(shù)據(jù)的過程中,,表上的觸發(fā)器時禁用還是激活(默認是引用) 舉例說明: 使用SCOTT用戶登錄
創(chuàng)建表,插入記錄,提交事物
查詢當前SCN號,,如果當前用戶沒有權(quán)限查詢v$database,,則以sys用戶登錄,授予當前用戶訪問數(shù)據(jù)字典的權(quán)限,。
更新記錄,,并提交事物
查看表中的記錄
刪除ID=3的記錄
啟動test01表的ROW MOVEMENT特性
將test01表恢復(fù)到2015-11-22 05:44:48時刻的狀態(tài)
將test01表恢復(fù)到SCN為1240503的狀態(tài)。
4.4. 閃回刪除閃回刪除可以恢復(fù)使用DROP table語句刪除的表,,是一種對意外刪除的表恢復(fù)機制,。閃回刪除的功能的實現(xiàn)主要是通過oracle數(shù)據(jù)庫中的“回收站”技術(shù)實現(xiàn)的。在oracle數(shù)據(jù)庫中,,當執(zhí)行DROP table操作時,并不立即收回表及其關(guān)聯(lián)對象的空間,,而是將他們重命名后放入一個稱為“回收站”的邏輯容器中保存,,直到用戶決定永久刪除他們或存儲該表的表空間或存儲空間不足時,表才真正被刪除,,為了使用數(shù)據(jù)庫的閃回刪除技術(shù),,必須開啟數(shù)據(jù)庫的“回收站” 啟動“回收站”將參數(shù)RECYCLEBIN設(shè)置為ON,在默認情況下“回收站”已經(jīng)啟動
如果沒有啟動可以使用:
查看回收站,。當執(zhí)行DROP table 時,,表及關(guān)聯(lián)的對象被命名后保存在“回收站”中,可以通過查詢USER_RECYCLEBIN DBA_RECYCLEBIN視圖獲得被刪除的表及其關(guān)聯(lián)對象,。
通過USER_RECYCLEBIN查看被刪除的表
不支持sys用戶和system用戶,,這兩個用戶下的表被刪除之后,無法從回收站里拿到,,查詢時為“空”
如果刪除表的時候使用了PURGE短語,,則表及其關(guān)聯(lián)對象唄直接釋放,空間被回收,,相關(guān)信息不會進入“回收站”中
清空回收站,,由于被刪除的表級其關(guān)聯(lián)對象信息保存在“回收站”中,其存儲空間并沒有釋放,,因此需要定期清空“回收站”,。或清除“回收站”中沒有用的對象(表,,索引,,表空間)釋放其所占用的磁盤空間 語法如下: PURGE [TABLE 表名 | INDEX index] [RECYCLEBIN | DBA_RECYCLEBIN] | [TABLESPACE tablespace [USER user]] 參數(shù)說明: TABLE:從回收站中清除指定的表 INDEX:從回收站中清除指定的索引,并回收其磁盤空間 RECYCLEBIN:清空用戶“回收站”,,并回收所有對象的磁盤空間 DBA_RECYCLEBIN:清空整個數(shù)據(jù)庫系統(tǒng)的“回收站”,,只有具有SYSDBA權(quán)限的用戶才可以使用 TABLESPACE :清除“回收站”中指定額表空間,并回收磁盤空間 USER:清除回收站中指定表空間中特定用戶的對象,并回收磁盤空間
閃回刪除操作,,閃回刪除的基本語法 FLASHBACK TABLE [schema.]table to BEFORE DROP [RENAME TO table]
閃回刪除
閃回刪除舉例說明:
需要注意:只有本地管理的,,非系統(tǒng)表空間中的表可以使用閃回刪除操作。 4.5. 閃回查詢允許根據(jù)時間點timestamp或SCN查看就的數(shù)據(jù),,除了可以查看舊數(shù)據(jù),,需要時可以通過檢索舊數(shù)據(jù)來撤銷錯誤的更改。 使用SCOTT用戶登錄,,對EMP表基于AS of TIMESTAMP的閃回查詢 SQL> show user; USER is "SCOTT"
更新員工號為7900的工資,,更新為2000,并提交事物
更新員工號為7900的工資,,更新兩次,,提交事物。
更新員工號為7900的工資,,更新為3500,,并提交事物
查看7900號員工的更新后工資。
查詢7900號員工前一個小時的工資是多少
查詢第一個事物提交,,第二個事物還沒有提交時7900員工的工資
查詢第二個事物提交,,第三個事物還沒有提交時的7900號員工的工資
如果需要,可以將數(shù)據(jù)恢復(fù)到過去某個時刻的狀態(tài),。
|
|