您好,登錄后才能下訂單哦!
博主QQ:819594300
博客地址:http://zpf666.blog.51cto.com/
有什么疑問的朋友可以聯系博主,博主會幫你們解答,謝謝支持!
數據庫備份與恢復是數據庫管理員必須掌握的。沒有任何系統能免遭硬盤物理損壞、粗心用戶的錯誤操作、或一些可能會威脅到存儲數據的潛在災難的侵襲。為了能夠最大限度地恢復數據庫數據,保證數據庫的安全運行,應該選擇最合理的備份方法來防止各種故障所導致的用戶數據丟失,本次主要介紹三種備份恢復技術,即RMAN技術、數據泵技術及閃回技術。
一、備份與恢復概述
1、需要備份的原因
現實工作中有很多情況都可能造成數據丟失,造成數據丟失的主要因素如下。
介質故障:磁盤損壞、磁頭碰撞,瞬時強磁場干擾
用戶的錯誤操作
服務器的徹底崩潰
計算機病毒
不可預料的因素:自然災害、電源故障、盜竊
上面是一些可能的故障原因,根據原因可以將oracle中的故障分為以下4種類型。
1)語句故障
語句故障時在執行sql語句過程中發生的邏輯故障。例如:向表中插入違反約束的無效數據,或者表空間沒有空間了導致無法插入數據等。這時,應用人員或者DBA根據情況進行相應處理及可。
2)用戶進程故障
當用戶程序出錯而無法訪問oracle數據庫時,就會發生用戶進程故障,原因是異常斷開連接或終止進程,如果網絡不通,客戶端計算機以外重新啟動,這些故障會導致用戶進程與服務器的連接意外終止。
用戶進程故障只會導致當前用戶無法正常操作數據庫,但不會影響其他用戶進程。當用戶進程出現故障時,進程監控程序(PMON)會自動執行進程恢復。PMON是oracle的后臺進程,用于檢測與用戶進程失去連接的服務器進程。PMON會通過回滾事務來處理故障,還將釋放進程當前占用的資源。
3)實例故障
當oracle的數據庫實例由于硬件故障或軟件問題而無法繼續運行時,就會發生實例故障。硬件問題包括意外斷電,而軟件問題可能是服務器操作系統崩潰。
當重新啟動數據庫時,如果發現實例故障,oracle會自動完成實例恢復。實例恢復將數據庫恢復到與故障之前的事務一致的狀態,oracle會自動回滾未提交的數據。
4)介質故障
介質故障是當一個數據庫文件、文件的部分或磁盤不能讀或不能寫時出現的故障。例如:硬盤磁頭損壞會導致而數據庫文件完全損壞。要修復由于介質故障引起的數據庫文件損壞,需要使用介質恢復。
二、備份與恢復的定義及分類
1、備份的定義及分類
備份就是把數據庫復制到轉儲設備的過程。其中轉儲設備是指用于放置數據庫副本的磁帶或磁盤。從不同的角度分類如下:
1)從物理與邏輯角度分類
從物理與邏輯角度分,備份可以分為物理備份和邏輯備份。
① 物理備份:
對數據庫操作系統的物理文件(如數據文件、控制文件和日志文件)的備份。物理備份又可以分為脫機備份(冷備份)和聯機備份(熱備份),前者是在關閉數據庫的時候進行的,后者對正以歸檔日志方式運行的數據庫進行備份。可以使用oracle的恢復管理器(RMAN)或操作系統命令進行數據庫的物理備份。
② 邏輯備份:
對數據庫邏輯組件(如表和存儲過程等數據庫對象)的備份。邏輯備份的手段很多,如傳統的EXP、數據泵EXPDP、數據庫閃回技術及第三方工具,都可以進行數據庫的邏輯備份。
2)從數據庫的備份策略角度分類
① 完全備份:
每次對數據進行完整的備份。當發生數據丟失的災難情況時,完全備份無須依賴其他信息,即可實現100%數據恢復,其恢復時間最短且操作最方便。
② 增量備份:
只有那些在上次完全備份或者增量備份后被修改的文件才會備份。優點是備份數據量小,需要的時間短,缺點是恢復的時候需要依賴之前的備份記錄,出問題的風險較大。
③ 差異備份:
備份那些自從上次完全備份之后被修改過的文件。從差異備份中恢復數據庫時間較短,因此只需要兩份數據(最后一次完全備份和最后一次差異備份),缺點是每次備份需要的時間較長。
2、恢復的定義及分類
恢復就是發生故障后,利用已備份的數據或控制文件,重新建立一個完整的數據庫。恢復分為以下兩種類型。
1)實例恢復:當oracle實例出現失敗后,oracle自動進行的恢復。
2)介質恢復:當存放數據庫的介質出現故障時所做的恢復。介質恢復又分為完全恢復和不完全恢復。
完全恢復:將數據庫恢復到數據庫失敗時的狀態。這種恢復是通過裝載數據庫備份,并用全部的重做日志做到的。
不完全恢復:將數據庫恢復到數據庫失敗前的某一時刻的狀態。這種恢復是通過裝載數據庫備份并應用部分的重做日志做到的。進行不完全恢復后,必須在啟動數據庫時用resetlogs選型重設聯機重做日志。
三、使用RMAN工具
RMAN(recovery manager)是oracle的一個重要工具,用于備份和恢復數據庫文件、歸檔日志和控制文件。也可以用來執行完全或不完全的數據庫恢復。RMAN有3種不同的用戶接口:命令行方式,GUI方式(集成在OEM中的備份管理器)、api方式(用于集成到第三方的備份軟件中)。它具有如下優點:
1)支持在線熱備份
2)支持多級增量備份
3)支持并行備份、恢復
4)減少所需要的備份量
5)備份、恢復使用簡單
RMAN有豐富的特性集。隨著oracle新版本的發布,RMAN特性也不斷增強,使得RMAN幾乎在任何情況下都可以備份和恢復數據庫。其中很多的新特性都是針對日常工作中所遇到的問題和困難開發的。
1、RMAN組件
1)target database(目標數據庫)
目標數據庫就是需要RMAN對其進行備份與恢復的數據庫。RMAN可以備份數據文件、控制文件、歸檔日志文件、spfile。
2)server session(服務器會話)
RMAN啟動數據庫上的oracle服務器進程,并建立一個與目標數據庫的會話。由目標數據庫上的服務器進程進行備份、還原、恢復的實際操作。
3)RMAN repository(RMAN資料庫)
RMAN使用過程中會用到的控制信息,是一些關于備份、歸檔日志及RMAN活動的元數據。
4)recovery catalog(恢復目錄)
恢復目錄是建立在RMAN恢復目錄數據庫上的一種schema對象,用于保存RMAN資料庫數據。
恢復目錄是一個可選的組件。RMAN會將資料庫數據記錄在目標數據庫的控制文件中,但這樣不夠安全,因為一旦目標數據庫的控制文件損壞就意味著所有的RMAN備份失效。所以建議在單獨的一個數據中建立恢復目錄另外保存一份資料庫數據。
對于
對于大部分中等環境的企業環境,將RMAN備份信息存儲在恢復目錄數據庫中,而不是存儲在目標數據庫的控制文件中,這樣能夠發揮RMAN工具的全部功能,此外,RMAN的很多高級功能也只有在創建了恢復目錄的環境下才被支持。
5)MML(媒體管理庫)
MML(media management layer)是第三方工具或軟件,用于管理對磁帶的讀寫與文件的跟蹤管理,如果你要想直接通過RMAN備份到磁帶上,就必須配置媒體管理層,媒體管理層的工具和RMAN共同完成備份與恢復。
6)快閃恢復區
快閃恢復區是oracle數據庫用于保存所有與恢復相關的文件的默認磁盤位置。這些相關文件包括歸檔日志、RMAN備份、控制文件自動備份、復用的控制文件和重做日志副本及閃回日志文件。
7)輔助數據庫
在正常使用時,RMAN會與目標數據庫一起使用,如果創建了恢復目錄數據庫,那么也會與恢復目錄數據庫一起使用。在某些情況下,希望創建輔助數據庫,輔助數據庫是使用RMAN從目標數據庫的備份中創建新的數據庫。輔助數據庫能被創建作為備用數據庫使用。在產品數據庫發生災難時,能夠在不丟失任何數據及停機時間最短的情況下切換至備用數據庫。
2、創建恢復目錄
恢復目錄存在于RMAN的目錄數據庫中,類似于標準的數據庫目錄,主要包含如下幾個部分的信息:
1)備份和恢復信息,可以是多個目標數據庫
2)RMAN腳本,可以存儲供重復使用
3)關于數據文件和日志文件的本分信息
4)關于目標數據庫的表空間和數據文件的信息
創建恢復目錄
1)創建恢復目錄數據庫(在oracl數據庫中創建恢復目錄所用的表空間benet)
2)在恢復目錄數據庫中創建RMAN 用戶并授權
3)在恢復目錄數據庫中創建恢復目錄
3、注冊目標數據庫到恢復目錄
登錄目標數據庫,如果要對目標數據庫進行注冊,可以按照以下操作。
至此,完成了目標數據庫在恢復目錄中的注冊操作,此時就可以使用RMAN的恢復目錄對目標數據庫進行備份和恢復操作。
4、通道分配
使用RMAN進行備份和恢復操作時,必須進行通道的分配,一個通道是RMAN和目標數據庫之間的一個連接,通道指定了某種類型的設備用于備份和恢復,RMAN可以使用的通道設備包括磁盤與磁帶兩種。
1)自動通道配置
使用CONFIGURE命令配置自動通道。
2)還可以手動通道配置
3)顯示通道配置參數
5、備份與恢復的相關概念與操作
1)備份集與備份片
備份集:備份集是第一次備份的集合,它包含本次備份的所有備份片,以oracle專有的格式保存,是一個邏輯數據的集合。
備份片:一個備份集由若干個備份片組成,每個備份片是一個單獨的輸出文件,一個備份片的大小是有限制的,它的大小不能大于文件系統所支持的文件長度的最大值。
2)配置備份集文件的格式
使用BACKUP命令進行備份時,需要明確備份文件的存儲路徑及文件名稱格式。其路徑和格式可以使用FORMAT參數進行統一設置。FORMAT格式由兩部分組合,即存儲路徑和文件名稱。
如果沒有使用FORMAT指定存儲路徑和文件名稱格式,則默認情況下BACKUP所產生的備份集將存儲在快閃恢復區中,RMAN自動使用%U來確保文件名稱不會重復。
FORMAT命令格式如下:
FORMAT ‘格式字符串’
其中格式字符串的文件名稱部分可以使用替換變量,例如:FORMAT ‘/backup/rmanback/%U’
常用的替換變量如下:
%c:備份片的拷貝數
%d:數據庫名稱
%D:位于該月中的第幾天(DD)
%M:位于該年中的第幾月(MM)
%F:一個基于DBID的唯一的名稱,它的形式為C-||||||-YYYYMMDD-QQ。其中||||||為該數據庫的DBID,YYYYMMDD為日期,QQ是一個1-256的序列。
%n:數據庫名稱,向右填補到最大8個字符
%u:一個8個字符的名稱,它是根據備份集個數與創建時間信息成成的。
%p:該備份集的備份片號,從1開始到創建的文件數
%U:系統生成的一個唯一文件名,對于備份片來說,它的含義相當于%u_%p_%c。
%s:備份集的號
%t:備份集時間戳
%T:年月日格式(YYYYMMDD)
3)備份與恢復命令
① BACKUP命令用于備份數據庫文件,可以將多個文件、表空間,整個數據庫以備份集形式備份到磁盤或磁帶上。在RUN命令外使用BACKUP命令,會自動使用自動通道;在RUN命令內使用BACKUP命令,如果定義了手動通道,則優先使用手動定義通道。
② 使用RMAN備份的數據庫也只能使用RMAN提供的恢復命令進行恢復。RMAN的恢復目錄中存儲了目標數據庫的備份信息。RMAN根據恢復目錄中存儲的信息,自動將數據庫同步恢復到某一個數據一致的狀態。
RMAN恢復數據庫時用到兩個命令,即RESTORE和RECOVER。RESOTRE命令將備份數據恢復到指定的目錄,RECOVER命令對數據庫實施同步恢復。
RESOTRE命令:由于備份集中的備份片是以專有的RMAN格式存儲的,需要使用RESTORE命令進行重建,重建的結果是自動產生目標數據庫的物理文件結構。
RECOVER命令:負責把歸檔日志文件用于重建的數據文件,來完成數據庫的同步恢復。在執行RECOVER命令時,RMAN需要讀取歸檔日志,如果沒有歸檔日志,或者數據庫運行在非歸檔模式下,則恢復過程會報錯。
案例:在歸檔方式下備份與恢復
要用RMAN進行聯機備份操作。數據庫就必須位于歸檔模式。恢復目錄必須打開,目標數據庫進程必須啟動,數據庫已經加載或者打開。
1)備份和恢復整個數據庫
備份和恢復整個數據庫,自動分配通道,FORMAT默認使用%U,備份集存儲在數據庫快閃恢復區內,備份文件包括數據文件,控制文件,重做日志文件和參數文件。
查看快閃恢復區,發現備份成功了:
如果還要包含歸檔日志文件,則要加上plus archivelog關鍵字,delete input的意思是在備份完成后,刪除archivelog(歸檔日志)文件。但是事實是我們一般不會刪除歸檔日志文件,所以我們一般不加delete input。
下面的一種方法是我們自己創存儲備份集的目錄,不在使用快閃恢復區:
通過自動分配通道,通過FORMAT制定具體的路徑和格式
首先建立備份目錄:
接著設置目錄權限并備份
最后查看備份目錄下是否有備份文件存在
當然也可以手動分配通道,備份數據庫。
恢復整個數據庫(數據庫要在mount狀態下執行)
刪除system01.dbf
再次開啟數據庫實例
使用sys連接RMAN
打開數據庫
可以看見system01.dbf表空間已經被恢復了
2)備份和恢復表空間
對表空間users做備份:
備份多個表空間:
在RUN命令中備份表空間
如果只丟失了特定的表空間的數據文件,那么可以選擇只恢復這個表空間,而不是恢復整個數據庫,表空間恢復可以在不關閉數據庫的情況下進行,只需要將需要恢復的表空間offline。
現在模擬刪除表空間
恢復表空間
查看表空間文件已經恢復了
3)數據文件的備份與恢復
查看數據文件
備份數據文件users01.dbf(備份和恢復的時候可以指定文件號,也可以指定文件名)
查看數據文件
刪除數據文件user01.dbf
對數據文件或表空間做恢復的時候數據文件和表空間一定要處于offline狀態, 數據文件丟失了,但數據庫實例還可以用。
此時數據文件4的狀態為recover
恢復數據文件
將數據文件datafile 4處于online狀態
查看數據文件的狀態,已經變成online狀態了
或者使用run命令恢復,命令如下:
先刪除user01.dbf
開始恢復:
查看文件已經恢復:
補充自動備份:
1)生成腳本文件,如backup.rcv
假定文件內容如下:
$>cat backup.rcv
connect target sys/password rcvcatrman/rman@localname;
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup fileaperset 3 format‘/u01/oradata/backup/arch%u_%s_%p’
archivelog all delete input;
release channel c1;
release channel c2;
release channel c3;
}
2)生成執行文件
在windows上生成backup_archive.bat,內容包括
rman cmdfile = backup.rcv
在unix下生成backup_archive.sh,內容包括
/oracle/ramn/rman cmdfile = backup.rcv
3)加入調度
在windows中用任務計劃向導即可,或使用at命令。
在unix中,在目標機器上編寫一個文件,用以啟動自動備份進程。假定文件名為ORACLE,文件將放在/var/spool/cron/crontabs目錄下
$>cat oracle
0 23 * * 0 backup_archive.sh
#表示星期天23點對數據庫備份
0 12,18 * * * backup_archive.sh
#表示每天12點,18點備份
Crontab文件的每一行由六個域(minutes,hours,day ofmonth,month,day of week,command)組成,域之間用空格或Tab分隔開來。
二、使用數據泵技術實現邏輯備份
邏輯備份是創建數據庫對象的邏輯副本,并存入一個二進制轉儲文件的過程。從本質上說,邏輯備份與恢復實際就是對數據庫實施數據的導入和導出。
導出:
導出即數據庫的邏輯備份,實質是讀取一個數據庫集并將這個數據集寫入一個文件(擴展名通常是dmp),這些記錄的導出與物理位置無關。
導入:
導入及數據庫的邏輯恢復,實質是讀取被導出的二進制轉儲文件并將其恢復到數據庫。
1、使用數據泵技術導入/導出
數據泵(data pump)是一種在數據庫之間或在數據庫與操作系統之前高速傳輸的技術。數據泵工具運行在服務器上,數據庫管理員需要指定數據庫目錄來保存轉儲的數據。
基于命令行的數據泵導出步驟如下
1)創建數據泵備份用的目錄,并把屬主和屬組賦予給oracle用戶
2)連接oracle數據庫
3)創建一個操作目錄
4)授予用戶scott操作mulu目錄的權限
5)查詢目錄是否建立好
6)創建測試用戶zpf并授權
7)導出scott用戶下的表
說明:使用expdp命令導出數據(可以按照表導出,按照用戶模式導出,按照表空間導出和全庫導出),使用impdp命令導入數據(可以按照表導入,按照用戶模式導入,按照表空間導入和全庫導入)。
8)刪除emp表
9)導入emp表
10)查看emp表已經還原
11)將導出的scott用戶下的dept和emp表導入zpf用戶下
12)使用zpf用戶登錄查看表
或者
13)導出scott用戶模式
14)導入scott用戶模式
15)將scott中所有的對象導入zpf中
16)查看zpf用戶的表,發現scott的表全部出現在了用戶zpf這里
17)導出表空間
導出benet表空間(提前創建一個benet表空間)
在表空間benet創建一個表bdqn
18)導入表空間
導入之前刪除表空間,相關的表也會刪除
導入表空間之前,需要創建一個benet表空間
開始導入表空間
查看表已經恢復回來了
19)導出整個數據庫
20)導入整個數據庫
三、使用閃回技術
1、閃回技術概述
為了使數據庫能夠從任何邏輯誤操作中迅速恢復,oracle退出了閃回技術。采用該技術,可以對行級和事務級的數據變化進行恢復,減少了數據恢復的時間,而且操作簡單,通過sql語句就可以實現數據的恢復,大大提高了數據庫恢復的效率。閃回技術是數據庫恢復技術歷史上一次重大的進步,從根本上改變了數據恢復。
閃回技術包括以下各項:
1)閃回查詢(flashback query):查詢過去某個時間點或某個SCN(system change number,系統更改號)值時表中的數據信息。
2)閃回版本查詢(flashback version query):查詢過去某個時間段或某個SCN段內表中數據的變化情況。
3)閃回事務查詢(flashback transaction query):查看某個事務或所有事務在過去一段時間對數據進行的修改。
4)閃回數據庫(flashback database):將數據庫恢復到過去某個時間點或某個SCN值時的狀態。
5)閃回刪除(flashback drop):將已經刪除的表及相關聯的對象恢復到刪除前的狀態。
6)閃回表(flashback table):將表恢復到過去的某個時間點或某個SCN值時的狀態。
說明:SCN:scn是當Oracle數據庫更新后,有dbms自動維護而累積遞增的一個數字,可以通過查詢數據字典v$database中的current_scn獲得當前的SCN號。
2、閃回恢復區
1)閃回恢復區的含義
Oracle推薦指定一個閃回恢復區(flash recovery area)作為存放備份與恢復相關文件的默認位置,這樣oracle就可以實現自動的基于磁盤的備份與恢復(automatic disk-based backup and recovery)。那么,什么是閃回恢復區?簡單地說,閃回恢復區是一塊用以存儲恢復相關的文件的存儲空間,允許用戶集中存儲所有恢復相關的文件。如下集中文件可以放到閃回恢復區中。
控制文件
歸檔的日志文件
閃回日志
控制文件和SPFILE自動備份
RMAN備份集
數據文件拷貝
2)閃回恢復區的優點
閃回恢復區提供了一個集中化的存儲區域,很大程度上減少了管理開銷,這是其最主要的優點,另外,與RMAN結合使用可以進行快速恢復。
3)設置閃回恢復區
如果使用dbca創建的數據庫,在安裝時可以設定閃回恢復區的位置及大小。
4)閃回恢復區主要通過以下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清空之后才可以清空。(即刪除閃回恢復區的空間大小之前必須先刪除閃回恢復區的位置)
5)設置閃回數據庫
設置可閃回恢復區之后,要啟用閃回數據庫的功能,還需要進一步配置。數據庫必須已經處于歸檔模式,再設置閃回數據庫。
設置閃回數據庫的步驟如下:
1)啟用歸檔模式(閃回數據庫只能處于歸檔模式)
2)數據庫未設置閃回數據庫
3)建立閃回區,容量大小為3G(其他都是固定寫法,就容量大小可以更換)
設置閃回數據庫的數據保留周期為一天以min為單位
啟用閃回日志
查詢是否成功啟用閃回恢復區
查詢是否成功啟用閃回數據庫
6)取消閃回恢復區
7)查看一下是否取消閃回恢復區
3、閃回錯誤操作技術
1)閃回數據庫
閃回數據庫能夠使數據迅速回滾到以前的某個時間點或者某個SCN上,這對于數據庫從邏輯錯誤中恢復特別有用,而且也是大多數發生邏輯損害時恢復數據庫的最佳選擇。
作用類似于數據庫的倒帶按鈕。
可以在用戶造成了邏輯數據損壞的情況下使用。
案例:使用SCN閃回數據庫
1)查詢數據庫當前的SCN
2)改變數據庫的當前狀態,模擬創建表bxjg,并插入一條數據。
3)進行閃回數據庫恢復,將數據庫恢復到創建表之前的狀態,即SCN為1033421
4)用resetlogs選項打開數據庫
5)驗證數據庫的狀態(bxjg表應該不存在)
6)可以通過查詢數據字典視圖v$flashback_database_log來獲得能夠閃回的最早的scn號,及閃回時值最早不能小于該值。同理,如果通過時間點閃回,則閃回時間也不能小于查詢得到的最早時間。
設置顯示時間格式:
查詢數據庫中當前最早的閃回SCN和時間
7)按照指定時間閃回數據庫
首先查詢數據系統當前時間
改變數據庫當前狀態,模擬創建表test,并插入一條數據
進行閃回數據庫恢復,將數據庫恢復到創建表之前的狀態。
使用resetlogs打開數據庫
驗證數據庫的狀態test表是否存在
2)閃回表
閃回表是將表恢復到過去的某個時間點或者指定的SCN而不用恢復數據文件,為DBA提供了一種在線、快讀、便捷的恢復方式,可以恢復對標進行的修改、刪除、插入等錯誤的操作。
利用閃回表技術恢復表中數據的過程,實際上是對表進行DML操作的過程。Oracle自動維護與表相關聯的索引、觸發器、約束等。
為了使用數據庫閃回表功能,必須滿足下列條件
用戶具有flashback any table系統權限,或者具有所操作表的flashback對象權限。
用戶具有所操作表的select、insert、delete、alter對象權限
啟動被操作表的row movement特性,可以采用下列方式進行。
Alter table 表名 enable row movement;
案例:使用SCN閃回表
1)使用scott用戶登錄
2)改變數據庫的當前狀態,模擬創建表it,并插入3條數據
3)查詢當前SCN號,如果當前用戶沒有權限查詢v$database,則以sys用戶登錄,授予當前用戶訪問數據字典的權限。
4)更新數據(把id=1的名字改成batianhu,刪除id=3的數據),并且提交
5)啟動it表的row movement特性
6)將it表恢復到2016-12-14 20:08:34
7)查詢
8)將表it恢復到scn為1036263的狀態
3)閃回刪除
閃回刪除可以恢復使用drop table語句刪除的表,是一種對意外刪除的表的恢復機制。
閃回刪除功能的實現主要是通過oracle數據庫中的“回收站”技術實現的。在oracle數據庫中,當執行drop table 操作時,并不立即回收表及、及其關聯的對象的空間,而是將它們重命名后放入一個稱為“回收站”的邏輯容器中保存,直到用戶決定永久刪除它們或存儲該表的表空間存儲空間不足時,表才能真正被刪除。為了使用閃回刪除技術,必須開啟數據庫的“回收站”。
1)啟動回收站,將參數recyclebin設置為ON,在默認情況下“回收站”已啟動。
2)查看“回收站”。當執行drop table操作時,表及其關聯對象被命名后保存在“回收站”中,可以通過查詢user_recyclebin,dba_recyclebin視圖獲得被刪除的表及其關聯對象信息。
注意:不支持sys用戶,system表空間下的對象也不能從回收站里拿到,故使用sys或者system用戶登錄時,查詢為空。
3)如果在刪除表時使用了PURGE短語,則表及其關聯對象被直接釋放,空間被回收,相關信息不會進入“回收站”中。
建立表,并且使用purge短語刪除
查看在回收站里面沒有
4)清空回收站
由于被刪除表及其關聯對象的信息保存在“回收站”中,其存儲空間并沒有釋放,因此需要定期清空“回收站”,或清楚“回收站”中沒有用的對象(表、索引、表空間),釋放其所占的磁盤空間。
5)閃回刪除操作
FLASHBACK TABLE [schema.]table TO BEFOREDROP [RENAME TO table]
注意:只有本地管理的,非系統表空間中的表可以使用閃回刪除操作。
案例:閃回刪除示例
1)新建表,插入數據并提交
2)刪除表
3)閃回表
或者閃回表之后重新命名
4)閃回查詢技術
閃回查詢:允許根據時間點或SCN查看舊的數據。除了可以查看舊數據,需要時可以通過檢索舊數據來撤銷錯誤的更改。
案例:閃回查詢實例
1)使用scott用戶登錄,對emp表基于as of timestamp的閃回查詢
2)更新員工號為7844的工資,更新為2000,并提交事物
第一個事務提交,自動開啟第二個事物。
3)再次更新員工號為7844的工資,更新兩次,提交事物。
第二個事物提交,自動開啟第三個事務。
4)再次更新員工號為7844的工資,更新為3500,并提交事物
第三個事務提交,自動開啟第四個事務
5)查詢7844號員工的當前工資
6)查詢7844號員工前一個小時的工資
7)查詢第一個事務提交,第二個事物還沒有提交時7844號員工的工資
(2016-12-1421:46:26之前即可)
8)如果需要,可以將數據恢復到過去某個時刻的狀態
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。