Oracle數據庫備份與恢復

數據庫備份與恢復是數據庫管理員必須掌握的。沒有任何系統能免遭硬盤物理損壞、粗心用戶的錯誤操作、或一些可能會威脅到存儲數據的潛在災難的侵襲。爲了能夠最大限度地恢復數據庫數據,保證數據庫的安全運行,應該選擇最合理的備份方法來防止各種故障所導致的用戶數據丟失,本次主要介紹三種備份恢復技術,即RMAN技術、數據泵技術及閃回技術。

備份的定義及分類

1.png

恢復的定義及分類

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

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

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

完全恢復:將數據庫恢復到數據庫失敗時的狀態。這種恢復是通過裝載數據庫備份,並用全部的重做日誌做到的。

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

一、使用RMAN工具

RMANrecovery  manager)是oracle的一個重要工具,用於備份和恢復數據庫文件、歸檔日誌和控制文件。也可以用來執行完全或不完全的數據庫恢復。RMAN3種不同的用戶接口:命令行方式,GUI方式(集成在OEM中的備份管理器)、api方式(用於集成到第三方的備份軟件中)。它具有如下優點:

1)支持在線熱備份

2)支持多級增量備份

3)支持並行備份、恢復

4)減少所需要的備份量

5)備份、恢復使用簡單

RMAN有豐富的特性集。隨着oracle新版本的發佈,RMAN特性也不斷增強,使得RMAN幾乎在任何情況下都可以備份和恢復數據庫。其中很多的新特性都是針對日常工作中所遇到的問題和困難開發的。

1.RMAN組件

2.png

1)target database(目標數據庫)

目標數據庫就是需要RMAN對其進行備份與恢復的數據庫。RMAN可以備份數據文件、控制文件、歸檔日誌文件、spfile 

2)server  session(服務器會話)

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

3RMAN repositoryRMAN資料庫)

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

4recovery  catalog(恢復目錄)

恢復目錄是建立在RMAN恢復目錄數據庫上的一種schema對象,用於保存RMAN資料庫數據。

恢復目錄是一個可選的組件。RMAN會將資料庫數據記錄在目標數據庫的控制文件中,但這樣不夠安全,因爲一旦目標數據庫的控制文件損壞就意味着所有的RMAN備份失效。所以建議在單獨的一個數據中建立恢復目錄另外保存一份資料庫數據。

對於

對於大部分中等環境的企業環境,將RMAN備份信息存儲在恢復目錄數據庫中,而不是存儲在目標數據庫的控制文件中,這樣能夠發揮RMAN工具的全部功能,此外,RMAN的很多高級功能也只有在創建了恢復目錄的環境下才被支持。

5)MML(媒體管理庫)

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

6)快閃恢復區

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

7)輔助數據庫

在正常使用時,RMAN會與目標數據庫一起使用,如果創建了恢復目錄數據庫,那麼也會與恢復目錄數據庫一起使用。在某些情況下,希望創建輔助數據庫,輔助數據庫是使用RMAN從目標數據庫的備份中創建新的數據庫。輔助數據庫能被創建作爲備用數據庫使用。在產品數據庫發生災難時,能夠在不丟失任何數據及停機時間最短的情況下切換至備用數據庫。

2.創建恢復目錄

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

1)備份和恢復信息,可以是多個目標數據庫

2)RMAN腳本,可以存儲供重複使用

3)關於數據文件和日誌文件的本分信息

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

3.png

創建恢復目錄數據庫

4.png

在恢復目錄數據庫中創建RMAN用戶並授權

5.png

6.png

在恢復目錄數據庫中創建恢復目錄

7.png

3.註冊目標數據庫到恢復目錄

登錄目標數據庫,如果要對目標數據庫進行註冊,可以按照以下操作

8.png

至此,完成了目標數據庫在恢復目錄中的註冊操作,此時就可以使用RMAN的恢復目錄對目標數據庫進行備份和恢復操作。

4.通道分配

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

(1)自動通道配置

使用CONFIGURE命令配置自動通道

語法格式如下:

CONFIGURE  DEVICE  TYPE  sbt/disk  PARALLELISM  n;   指定自動通道並行個數

CONFIGURE  DEFAULT  DEVICE  TYPE  TO  sbt/disk;     指定自動通道的默認設備

在語法中:

sbt/disk:磁帶/磁盤

n:設置自動通道的個數


例如:指定RMAN可以打開5個磁盤通道

9.png

10.png

(2)手動通道配置

在RUN塊中使用ALLOCATE  CHANNEL手動分配通道

語法格式如下:

RUN

{

   ALLOCATE  CHANNEL 通道名稱  DEVICE  TYPE  設備類型;

   ......

}


例如:指定3個磁盤通道,分別是ch1ch2ch3

11.png

(3)顯示通道配置參數

使用SHOW ALL命令可以顯示已經配置過的和有默認值的參數,其中包括通道參數

12.png

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。其中||||||爲該數據庫的DBIDYYYYMMDD爲日期,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恢復數據庫時用到兩個命令,即RESTORERECOVERRESOTRE命令將備份數據恢復到指定的目錄,RECOVER命令對數據庫實施同步恢復。

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

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



案例:在歸檔方式下備份與恢復

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

  1. 備份和恢復整個數據庫
    查看當前數據模式爲非歸檔模式

13.png

修改模式爲歸檔模式

14.png

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

15.png

查看快閃恢復區,發現備份成功了

16.png

如果還要包含歸檔日誌文件,則要加上plus archivelog關鍵字,delete input的意思是在備份完成後,刪除archivelog文件。

17.png

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

18.png


19.png

也可以手動分配通道,備份數據庫

20.png

恢復整個數據庫(數據庫要在mount狀態下執行)

21.png

刪除system01.dbf

22.png

再次開啓數據庫實例

23.png

此時數據庫無法啓動了,因爲刪除了system01.dbf


使用sys連接RMAN,重建數據庫物理文件

24.png

同步恢復

25.png

打開數據庫

26.png

27.png

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

28.png

2.備份和恢復表空間

表空間備份

29.png

多個表空間備份

30.png

如果只丟失了特定的表空間的數據文件,那麼可以選擇只恢復這個表空間,而不是恢復整個數據庫,表空間恢復可以在不關閉數據庫的情況下進行,只需要將需要恢復的表空間offline

模擬刪除表空間

32.png 

恢復表空間

33.png 

查看錶空間文件已經恢復了

34.png

(3)數據文件的備份與恢復

查看數據文件

35.png

備份數據文件users01.dbf(備份和恢復的時候可以指定文件號,也可以指定文件名)

36.png

查看數據文件

37.png

刪除數據文件user01.dbf

38.png

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

39.png

此時數據文件4的狀態爲recover

116.png

恢復數據文件

40.png

41.png

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

42.png

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

117.png

二、使用數據泵技術實現邏輯備份

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

導出:

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

導入:

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

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

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

  

基於命令行的數據泵導出步驟如下

(1)連接Oracle數據庫

(2)創建一個操作目錄

43.png

47.png

(3)授予用戶操作dump_dir目錄的權限

44.png

(4)創建測試用戶yyy並授權

46.png

5)導出scott用戶下的表

使用expdp命令導入數據(可以按照表導出,按照用戶模式導出,按照表空間導出和全庫導出),使用impdp命令導入數據(可以按照表導入,按照用戶模式導入,按照表空間導入和全庫導入)

48.png

(6)刪除emp

49.png

(7)導入emp

50.png

(8)查看emp表已經還原

51.png

(9)將導出的scott用戶下的deptemp表導入yyy用戶下

52.png

使用yyy用戶登錄查看錶

53.png

(10)導出scott用戶模式

54.png

(11)導入scott用戶模式

55.png

(12)scott中所有的對象導入yyy

56.png

查看yyy用戶的表,發現多了很多

57.png

(13)導出表空間

導出yyy表空間(提前創建一個yyy表空間)


58.png

在表空間yyy創建一個表ccc

59.png

導出表空間

60.png

(14)導入表空間

導入之前刪除表空間,相關的表也會刪除

61.png

導入表空間之前,需要創建一個yyy表空間

62.png

導入表空間

63.png

查看錶已經恢復回來了

64.png

(15)導出整個數據庫

65.png

(16)導入整個數據庫

66.png

三、使用閃回技術

1.閃回技術概述

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

閃回技術包括以下各項:

1)閃回查詢(flashback query):查詢過去某個時間點或某個SCNsystem  change  number,系統更改號)值時表中的數據信息。

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

3)閃回事務查詢(flashback  transaction query):查看某個事務或所有事務在過去一段時間對數據進行的修改。

4)閃回數據庫(flashback  database):將數據庫恢復到過去某個時間點或某個SCN值時的狀態。

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

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

118.png

SCNscn是當Oracle數據庫更新後,有dbms自動維護而累積遞增的一個數字,可以通過查詢數據字典V$DATABASE中的CURRENT_SCN獲得當前的SCN號。

注意:

閃回數據庫是基於閃回恢復區(Flash Recovery Area)特性實現的,如果要使用閃回數據庫技術,還需要啓用閃回恢復區

閃回刪除是基於回收站(Recycle Bin)特性實現的,如果要使用閃回刪除技術,還需要啓用回收站

閃回查詢、閃回版本查詢、閃回事務查詢以及閃回表主要是基於撤銷表空間中的回滾信息實現的

2.閃回恢復區

1)閃回恢復區的含義

Oracle推薦指定一個閃回恢復區(flash recovery  area)作爲存放備份與恢複相關文件的默認位置,這樣oracle就可以實現自動的基於磁盤的備份與恢復(automatic  disk-based backup and recovery)。那麼,什麼是閃回恢復區?簡單地說,閃回恢復區是一塊用以存儲恢複相關的文件的存儲空間,允許用戶集中存儲所有恢複相關的文件。如下集中文件可以放到閃回恢復區中。

控制文件

歸檔的日誌文件

閃回日誌

控制文件和SPFILE自動備份

RMAN備份集

數據文件拷貝

2)閃回恢復區的優點

閃回恢復區提供了一個集中化的存儲區域,很大程度上減少了管理開銷,這是其最主要的優點,另外,與RMAN結合使用可以進行快速恢復。

3)設置閃回恢復區

如果使用dbca創建的數據庫,在安裝時可以設定閃回恢復區的位置及大小。

119.png

閃回恢復區主要通過以下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)設置閃回數據庫

設置可閃回恢復區之後,要啓用閃回數據庫的功能,還需要進一步配置。數據庫必須已經處於歸檔模式,再設置閃回數據庫。

設置閃回數據庫的步驟如下:

(1)啓用歸檔模式。閃回數據庫只能處於歸檔模式

  SQL> shutdown immediate;

 SQL> startup mount;

 SQL> alter database archivelog;

數據庫未設置閃回數據庫

67.png

(2)建立閃回區,設置閃回數據庫的數據保留週期爲一天,以min爲單位

68.png

(3)啓用閃回日誌

69.png

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

70.png

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

71.png

5)取消閃回恢復區

將db_recovery_file_dest參數設置爲空,可以停用閃回恢復區,但是,如果已經啓用閃回數據庫,則不能取消閃回恢復區,所以必須先禁用閃回數據庫,才能取消閃回恢復區

步驟如下;

(1)關閉數據庫

SQL> shutdown immediate;

(2)裝載數據庫

SQL> startup mount;

(3)關閉數據庫閃回

SQL> alter database flashback off;

(4)打開數據庫

SQL> alter database open;

(5)修改閃回參數

SQL> alter system set db_recovery_file_dest='';

3.閃回錯誤操作技術

1、閃回數據庫

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

 作用類似於數據庫的倒帶按鈕。

   可以在用戶造成了邏輯數據損壞的情況下使用

120.png

1)閃回數據庫語法格式

FLASHBACK  DATABASE [database] TO

[SCN | TIMESTAMP expression]|

[BEFORE SCN | TIMESTAMP expression]

參數說明

n  TO SCN:將數據庫恢復到指定SCN的狀態

n  TO TIMESTAMP:將數據庫恢復到指定的時間點

n  TO BEFORE SCN:將數據庫恢復到指定SCN的前一個SCN狀態

n  TO BEFORE TIMESTAMP:將數據庫恢復到指定時間點前的狀態

2)閃回數據庫操作的限制:

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

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

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

n  不能使用閃回數據庫將數據庫恢復到在閃回日誌中可獲得最早的SCN之前的SCN,因爲閃回日誌文件在一定條件下被刪除,而不是始終保存在閃回恢復區中。

案例:使用SCN閃回數據庫

1)查詢數據庫當前的SCN

73.png

2)改變數據庫的當前狀態,模擬創建表bxjg,並插入一條數據。

74.png

3)進行閃回數據庫恢復,將數據庫恢復到創建表之前的狀態,即SCN1132741

75.png

76.png

4)用RESETLOGS選項打開數據庫,並驗證數據庫的狀態(bxjg表應該不存在)

77.png

5)可以通過查詢數據字典視圖v$flashback_database_log來獲得能夠閃回的最早的scn號,及閃回時值最早不能小於該值。同理,如果通過時間點閃回,則閃回時間也不能小於查詢得到的最早時間。

設置顯示時間格式

78.png

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

79.png

6)按照指定時間閃回數據庫

首先查詢數據系統當前時間

80.png

改變數據庫當前狀態,模擬創建表test2,並插入一條數據

81.png

82.png

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

83.png


84.png

使用RESETLOGS打開數據庫

85.png

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

86.png

2.閃回表

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

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

(1)爲了使用數據庫閃回表功能,必須滿足下列條件

n  用戶具有flashback  any table系統權限,或者具有所操作表的flashback對象權限。

n  用戶具有所操作表的selectinsertdeletealter對象權限

n  啓動被操作表的row movement特性,可以採用下列方式進行。

          SQL> Alter  table 表名  enable  row  movement

(2)閃回表操作的基本語法爲

FLASHBACK TABLE [schema.]table TO

SCN|TIMESTAMP expression

[ENABLE|DISABLE TRIGGERS]

參數說明

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

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

ENABLE|DISABLE TRIGGER:在恢復表中數據的過程中,表上的觸發器是激活還是禁用(默認爲禁用)

 

注意:SYS用戶或以AS SYSDBA身份登錄的用戶不能執行閃回表操作


案例:使用SCN閃回表

1)使用scott用戶登錄,創建一個表,並插入數據,並提交

87.png

88.png

2)查詢當前SCN號,如果當前用戶沒有權限查詢v$database,則以sys用戶登錄,授予當前用戶訪問數據字典的權限。

89.png


90.png


91.png

3)更新數據(把id=1的名字改成batianhu,刪除id=3的數據),並且提交

92.png

4)啓動test3表的ROW MOVEMENT特性

93.png

5)將test3表恢復到2018-04-08  14:44:00,並查詢

94.png

6)將表test3恢復到scn爲的狀態1133309

95.png


3.閃回刪除

閃回刪除可以恢復使用drop  table語句刪除的表,是一種對意外刪除的表的恢復機制。

閃回刪除功能的實現主要是通過oracle數據庫中的“回收站”技術實現的。在oracle數據庫中,當執行drop table 操作時,並不立即回收表及、及其關聯的對象的空間,而是將它們重命名後放入一個稱爲“回收站”的邏輯容器中保存,直到用戶決定永久刪除它們或存儲該表的表空間存儲空間不足時,表才能真正被刪除。爲了使用閃回刪除技術,必須開啓數據庫的“回收站”。

121.png

(1)啓動回收站,將參數recyclebin設置爲ON,在默認情況下“回收站”已啓動

96.png

(2)查看“回收站”。當執行drop table操作時,表及其關聯對象被命名後保存在“回收站”中,可以通過查詢user_recyclebindba_recyclebin視圖獲得被刪除的表及其關聯對象信息。

97.png


98.png

99.png

注意:不支持sys用戶,system表空間下的對象也不能從回收站裏拿到,故使用sys或者system用戶登錄時,查詢爲空

3)如果在刪除表時使用了PURGE短語,則表及其關聯對象被直接釋放,空間被回收,相關信息不會進入“回收站”中。

建立表,並且使用purge短語刪除

100.png

查看在回收站裏面沒有

4)清空回收站

由於被刪除表及其關聯對象的信息保存在“回收站”中,其存儲空間並沒有釋放,因此需要定期清空“回收站”,或清楚“回收站”中沒有用的對象(表、索引、表空間),釋放其所佔的磁盤空間。

語法如下:

PURGE [TABLE 表名 | INDEX index]

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

參數說明:

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

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

RECYCLEBIN:清空用戶“回收站”,並回收所有對象的磁盤空間

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

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

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

101.png

 

5)閃回刪除操作

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

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


案例:閃回刪除示例

新建表,插入數據並提交

102.png

刪除表

103.png



閃回表

104.png


105.png

或者閃回表之後重新命名

106.png


107.png

4、閃回查詢技術

閃回查詢:允許根據時間點或SCN查看舊的數據。除了可以查看舊數據,需要時可以通過檢索舊數據來撤銷錯誤的更改。

基本語法如下:

Select column_name[,...]

From table_name

[as of scn | timestamp expression]

[Where condition]

參數說明:

As for timestamp:基於時間的閃回查詢

As of scn:基於scn的閃回查詢


案例:閃回查詢實例

1)使用scott用戶登錄,對emp表基於as of timestamp的閃回查詢

108.png

2)更新員工號爲7844的工資,更新爲2000,並提交事物

109.png

3)再次更新員工號爲7844的工資,更新兩次,提交事物

110.png

4)再次更新員工號爲7844的工資,更新爲3500,並提交事物

111.png

5)查詢7844號員工的當前工資

112.png

6)查詢7844號員工前一個小時的工

113.png

7)查詢第一個事務提交,第二個事物還沒有提交時7844號員工的工資

114.png

8)如果需要,可以將數據恢復到過去某個時刻的狀態

115.png

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