欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

oracle怎么回退備份,oracle 備份與恢復(fù)

如何Oracle 數(shù)據(jù)庫(kù)備份與恢復(fù)

oracle數(shù)據(jù)庫(kù)的備份與恢復(fù)

創(chuàng)新互聯(lián)主要從事網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)息縣,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18980820575

---- 當(dāng)我們使用一個(gè)數(shù)據(jù)庫(kù)時(shí),總希望數(shù)據(jù)庫(kù)的內(nèi)容是可靠的、正確的,但由于計(jì)算機(jī)系統(tǒng)的故障(包括機(jī)器故障、介質(zhì)故障、誤操作等),數(shù)據(jù)庫(kù)有時(shí)也可能遭到破壞,這時(shí)如何盡快恢復(fù)數(shù)據(jù)就成為當(dāng)務(wù)之急。如果平時(shí)對(duì)數(shù)據(jù)庫(kù)做了備份,那么此時(shí)恢復(fù)數(shù)據(jù)就顯得很容易。由此可見(jiàn),做好數(shù)據(jù)庫(kù)的備份是多么的重要,下面筆者就以oracle7為例,來(lái)講述一下數(shù)據(jù)庫(kù)的備份和恢復(fù)。oracle 數(shù)據(jù)庫(kù)有三種標(biāo)準(zhǔn)的備份方法,它們分別為導(dǎo)出/導(dǎo)入(export/import)、冷備份、熱備份。導(dǎo)出備份是一種邏輯備份,冷備份和熱備份是物理備份。

---- 一、 導(dǎo)出/導(dǎo)入(export/import)

---- 利用export可將數(shù)據(jù)從數(shù)據(jù)庫(kù)中提取出來(lái),利用import則可將提取出來(lái)的數(shù)據(jù)送回oracle數(shù)據(jù)庫(kù)中去。

---- 1. 簡(jiǎn)單導(dǎo)出數(shù)據(jù)(export)和導(dǎo)入數(shù)據(jù)(import)

---- oracle支持三種類型的輸出:

---- (1)表方式(t方式),將指定表的數(shù)據(jù)導(dǎo)出。

---- (2)用戶方式(u方式),將指定用戶的所有對(duì)象及數(shù)據(jù)導(dǎo)出。

---- (3)全庫(kù)方式(full方式),將數(shù)據(jù)庫(kù)中的所有對(duì)象導(dǎo)出。

---- 數(shù)據(jù)導(dǎo)出(import)的過(guò)程是數(shù)據(jù)導(dǎo)入(export)的逆過(guò)程,它們的數(shù)據(jù)流向不同。

---- 2. 增量導(dǎo)出/導(dǎo)入

---- 增量導(dǎo)出是一種常用的數(shù)據(jù)備份方法,它只能對(duì)整個(gè)數(shù)據(jù)庫(kù)來(lái)實(shí)施,并且必須作為system來(lái)導(dǎo)出。在進(jìn)行此種導(dǎo)出時(shí),系統(tǒng)不要求回答任何問(wèn)題。導(dǎo)出文件名缺省為export.dmp,如果不希望自己的輸出文件定名為export.dmp,必須在命令行中指出要用的文件名。

---- 增量導(dǎo)出包括三個(gè)類型:

---- (1)“完全”增量導(dǎo)出(complete)

---- 即備份整個(gè)數(shù)據(jù)庫(kù),比如:

---- $exp system/manager inctype=complete file=990702.dmp

---- (2) “增量型”增量導(dǎo)出

---- 備份上一次備份后改變的數(shù)據(jù)。比如:

---- $exp system/manager inctype=incremental file=990702.dmp

---- (3) “累計(jì)型”增量導(dǎo)出(cumulative)

---- 累計(jì)型導(dǎo)出方式只是導(dǎo)出自上次“完全” 導(dǎo)出之后數(shù)據(jù)庫(kù)中變化了的信息。比如:

---- $exp system/manager inctype=cumulative file=990702.dmp

---- 數(shù)據(jù)庫(kù)管理員可以排定一個(gè)備份日程表,用數(shù)據(jù)導(dǎo)出的三個(gè)不同方式合理高效地完成。

---- 比如數(shù)據(jù)庫(kù)的備份任務(wù)可作如下安排:

---- 星期一:完全導(dǎo)出(a)

---- 星期二:增量導(dǎo)出(b)

---- 星期三:增量導(dǎo)出(c)

---- 星期四:增量導(dǎo)出(d)

---- 星期五:累計(jì)導(dǎo)出(e)

---- 星期六:增量導(dǎo)出(f)

---- 星期日:增量導(dǎo)出(g)

---- 如果在星期日,數(shù)據(jù)庫(kù)遭到意外破壞,數(shù)據(jù)庫(kù)管理員可按以下步驟來(lái)恢復(fù)數(shù)據(jù)庫(kù):

---- 第一步:用命令create database重新生成數(shù)據(jù)庫(kù)結(jié)構(gòu);

---- 第二步:創(chuàng)建一個(gè)足夠大的附加回段。

---- 第三步:完全增量導(dǎo)入a:

---- $imp system./manager inctype= rectore full=y file=a

---- 第四步:累計(jì)增量導(dǎo)入e:

---- $imp system/manager inctype= rectore full=y file =e

---- 第五步:最近增量導(dǎo)入f:

---- $imp system/manager inctype=restore full=y file=f

---- 二、 冷備份

---- 冷備份發(fā)生在數(shù)據(jù)庫(kù)已經(jīng)正常關(guān)閉的情況下,當(dāng)正常關(guān)閉時(shí)會(huì)提供給我們一個(gè)完整的數(shù)據(jù)庫(kù)。冷備份是將關(guān)鍵性文件拷貝到另外位置的一種說(shuō)法。對(duì)于備份oracle信息而言,冷備份是最快和最安全的方法。冷備份的優(yōu)點(diǎn)是:

---- 1.是非??焖俚膫浞莘椒ǎㄖ恍杩截愇募?/p>

---- 2.容易歸檔(簡(jiǎn)單拷貝即可)

---- 3.容易恢復(fù)到某個(gè)時(shí)間點(diǎn)上(只需將文件再拷貝回去)

---- 4.能與歸檔方法相結(jié)合,作數(shù)據(jù)庫(kù)“最新?tīng)顟B(tài)”的恢復(fù)。

---- 5.低度維護(hù),高度安全。

---- 但冷備份也有如下不足:

---- 1.單獨(dú)使用時(shí),只能提供到“某一時(shí)間點(diǎn)上”的恢復(fù)。

---- 2.在實(shí)施備份的全過(guò)程中,數(shù)據(jù)庫(kù)必須要作備份而不能作其它工作。也就是說(shuō),在冷備份過(guò)程中,數(shù)據(jù)庫(kù)必須是關(guān)閉狀態(tài)。

---- 3.若磁盤空間有限,只能拷貝到磁帶等其它外部存儲(chǔ)設(shè)備上,速度會(huì)很慢。

---- 4.不能按表或按用戶恢復(fù)。

---- 如果可能的話(主要看效率),應(yīng)將信息備份到磁盤上,然后啟動(dòng)數(shù)據(jù)庫(kù)(使用戶可以工作)并將所備份的信息拷貝到磁帶上(拷貝的同時(shí),數(shù)據(jù)庫(kù)也可以工作)。冷備份中必須拷貝的文件包括:

---- 1.所有數(shù)據(jù)文件

---- 2.所有控制文件

---- 3.所有聯(lián)機(jī)redo log文件

---- 4.init.ora文件(可選)。

---- 值得注意的是冷備份必須在數(shù)據(jù)庫(kù)關(guān)閉的情況下進(jìn)行,當(dāng)數(shù)據(jù)庫(kù)處于打開(kāi)狀態(tài)時(shí),執(zhí)行數(shù)據(jù)庫(kù)文件系統(tǒng)備份是無(wú)效的

---- 下面是做冷備份的完整例子:

---- (1) 關(guān)閉數(shù)據(jù)庫(kù)$sqldba lmode=y

---- sqldba connect internal;

---- sqldba shutdown normal;

---- (2) 用拷貝命令備份全部的時(shí)間文件、重做日志文件、控制文件、初始化參數(shù)文件

---- sqldba ! cp file ; backup directory

---- (3) 重啟oracle數(shù)據(jù)庫(kù)

---- $sqldba lmode=y

---- sqldba connect internal;

---- sqldba startup;

---- 三、 熱備份

---- 熱備份是在數(shù)據(jù)庫(kù)運(yùn)行的情況下,采用archivelog mode方式備份數(shù)據(jù)的方法。所以,如果你有昨天夜里的一個(gè)冷備份而且又有今天的熱備份文件,在發(fā)生問(wèn)題時(shí),就可以利用這些資料恢復(fù)更多的信息。熱備份要求數(shù)據(jù)庫(kù)在archivelog方式下操作,并需要大量的檔案空間。一旦數(shù)據(jù)庫(kù)運(yùn)行在archivelog狀態(tài)下,就可以做備份了。熱備份的命令文件由三部分組成:

---- 1.?dāng)?shù)據(jù)文件一個(gè)表空間一個(gè)表空間地備份。

---- (1)設(shè)置表空間為備份狀態(tài)

---- (2)備份表空間的數(shù)據(jù)文件

---- (3)恢復(fù)表空間為正常狀態(tài)

---- 2.備份歸檔log文件。

---- (1)臨時(shí)停止歸檔進(jìn)程

---- (2)log下那些在archive redo log目標(biāo)目錄中的文件

---- (3)重新啟動(dòng)archive進(jìn)程

---- (4)備份歸檔的redo log 文件

---- 3.用alter database backup controlfile命令來(lái)備份拷貝文件

---- 熱備份的優(yōu)點(diǎn)是:

---- 1.可在表空間或數(shù)據(jù)文件級(jí)備份,備份時(shí)間短。

---- 2.備份時(shí)數(shù)據(jù)庫(kù)仍可使用。

---- 3.可達(dá)到秒級(jí)恢復(fù)(恢復(fù)到某一時(shí)間點(diǎn)上)。

---- 4.可對(duì)幾乎所有數(shù)據(jù)庫(kù)實(shí)體作恢復(fù)。

---- 5.恢復(fù)是快速的,在大多數(shù)情況下在數(shù)據(jù)庫(kù)仍工作時(shí)恢復(fù)。

---- 熱備份的不足是:

---- 1.不能出錯(cuò),否則后果嚴(yán)重。

---- 2.若熱備份不成功,所得結(jié)果不可用于時(shí)間點(diǎn)的恢復(fù)。

---- 3.因難于維護(hù),所以要特別仔細(xì)小心,不允許“以失敗而告終”。

oracle存儲(chǔ)過(guò)程失效重啟后恢復(fù)正常

根據(jù)oracle數(shù)據(jù)庫(kù)的特點(diǎn)和提供的工具,主要方法有以下幾種方法:

利用邏輯備份使用import工具丟失數(shù)據(jù)的表

利用物理備份來(lái)通過(guò)還原數(shù)據(jù)文件并進(jìn)行不完全恢復(fù)

利用dbms_logmnr包從redo log文件中恢復(fù)

利用flashback特性恢復(fù)數(shù)據(jù)

前提

為了方便使用方法的介紹,上述恢復(fù)方法都將基于以下場(chǎng)景進(jìn)行:系統(tǒng)管理員在前一天晚上11點(diǎn)用export對(duì)數(shù)據(jù)庫(kù)做了全庫(kù)邏輯備份,然后對(duì)所有數(shù)據(jù)文件進(jìn)行了熱備份。第二天上午10點(diǎn),系統(tǒng)管理員在修改表TFUNDASSET的數(shù)據(jù)時(shí),由于修改語(yǔ)句的條件寫錯(cuò)了,導(dǎo)致一批記錄(幾千條)的ztm字段被修改成了錯(cuò)誤的值,而且已經(jīng)提交。這個(gè)表是資產(chǎn)表,相對(duì)而言數(shù)據(jù)變化不頻繁。

一、利用邏輯備份使用import工具恢復(fù)丟失的數(shù)據(jù)

export/import是oracle提供的用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行邏輯備份的工具。該工具適用于備份那些數(shù)據(jù)量不大、業(yè)務(wù)量不多的數(shù)據(jù)庫(kù)系統(tǒng)。因?yàn)槿绻谇耙惶焱砩?1點(diǎn)用export做了邏輯備份,那么當(dāng)今天上午10點(diǎn)數(shù)據(jù)庫(kù)意外崩潰時(shí),從備份起到數(shù)據(jù)庫(kù)崩潰的這段時(shí)間里的數(shù)據(jù)修改操作(包括DDL和DML)都會(huì)丟失。如果丟失數(shù)據(jù)內(nèi)的表上的數(shù)據(jù)是相對(duì)比較穩(wěn)定,也就是說(shuō)該表上基本沒(méi)有DML操作,例如標(biāo)準(zhǔn)代碼表、分區(qū)表里的歷史數(shù)據(jù),那么采用import來(lái)導(dǎo)入該表可以比較完整的恢復(fù)數(shù)據(jù)。如果該表是經(jīng)常變化的業(yè)務(wù)表,那么這些丟失的數(shù)據(jù)只能根據(jù)業(yè)務(wù)情況從紙質(zhì)記錄恢復(fù),或者其他途徑恢復(fù)。

▲示例如下:這個(gè)表是一個(gè)資產(chǎn)表。相對(duì)來(lái)說(shuō),今天系統(tǒng)運(yùn)行中修改的數(shù)據(jù)較少,丟失的數(shù)據(jù)量可以承受或者可以從別的途徑恢復(fù)。那就可以用import來(lái)恢復(fù)。

方法一:

1、把這個(gè)表的數(shù)據(jù)備份到另一個(gè)表:

8bef9890242e5d20d09563896cef1471.png

2、刪除該表的記錄:

625dfa5d5986ca5c37dd5017953407cb.png

3、執(zhí)行下面的命令:

3754d50cc473bd44236d927f00196d24.png

這個(gè)命令中在關(guān)鍵字tables中指定需要導(dǎo)入的表名字,ignore=y表示忽略表已經(jīng)存在的錯(cuò)誤。

4、導(dǎo)入結(jié)束后,檢查表中的記錄,并用適當(dāng)?shù)姆椒ɑ謴?fù)當(dāng)天的修改。

方法二:

1、 把需要恢復(fù)的表導(dǎo)入到另一個(gè)用戶下面:

33806d1216df5ae9c45890d3d45930ee.png

2、檢查數(shù)據(jù)以后,把原表記錄刪除:

fe23a8a4602702e951e5ab48a7460e3b.png

3、然后從另一用戶表中插入回去:

729976810ef459046df40b791a6ca773.png

4、 數(shù)據(jù)量比較大時(shí)可以采用如下方法:

e377d10ff07132f160185cb1ba119cfc.png

二、利用物理備份來(lái)通過(guò)還原數(shù)據(jù)文件并進(jìn)行不完全恢復(fù)

如果數(shù)據(jù)庫(kù)運(yùn)行在歸檔模式下,那么可以通過(guò)使用以前的數(shù)據(jù)文件備份進(jìn)行還原,然后利用歸檔日志進(jìn)行前滾,直到回滾到錯(cuò)誤操作的時(shí)間點(diǎn)前,然后重置日志文件打開(kāi)數(shù)據(jù)庫(kù)。

可以通過(guò)下列方法確認(rèn)是否是運(yùn)行在歸檔模式:

c8406e42aef7ccc8ef232cfdd535e825.png

如果是如上所示,那么就是運(yùn)行在歸檔模式了。

▲假定在前一天晚上11點(diǎn)做了全庫(kù)物理備份,那么可以考慮如下恢復(fù):

1、關(guān)閉數(shù)據(jù)庫(kù):

由于數(shù)據(jù)庫(kù)的不完全恢復(fù)必須在一個(gè)關(guān)閉的數(shù)據(jù)庫(kù)上實(shí)施,利用一個(gè)舊的數(shù)據(jù)庫(kù)的備份還原,然后用日志根據(jù)需要逐步前滾,而不能還原一個(gè)新的備份,再回退到某個(gè)時(shí)間點(diǎn)。

通知各客戶端數(shù)據(jù)庫(kù)將關(guān)閉,然后發(fā)出:

401f68e89cbfa03388f5913bf5f1ecfd.png

數(shù)據(jù)庫(kù)已經(jīng)關(guān)閉。

已經(jīng)卸載數(shù)據(jù)庫(kù)。

ORACLE 例程已經(jīng)關(guān)閉。

2、確定錯(cuò)誤操作的時(shí)間:

可以根據(jù)操作員的估計(jì)來(lái)確定不完全恢復(fù)需要前滾停止的時(shí)間,也可以利用LogMiner來(lái)分析日志文件(這個(gè)工具將在后面介紹),找出錯(cuò)誤操作的準(zhǔn)確時(shí)間。

3、還原數(shù)據(jù)文件:

先對(duì)當(dāng)前的數(shù)據(jù)庫(kù)文件進(jìn)行備份,然后再用以前的最近一次備份覆蓋現(xiàn)有數(shù)據(jù)文件。注意:不覆蓋現(xiàn)有的控制文件。

4、基于時(shí)間點(diǎn)恢復(fù),啟動(dòng)數(shù)據(jù)庫(kù)到裝配狀態(tài):

8802043c250eb2a060285be160f48c36.png

這樣數(shù)據(jù)庫(kù)就恢復(fù)到了2015年10月20日的9點(diǎn)58分零秒。

然后再利用業(yè)務(wù)資料補(bǔ)充這段時(shí)間內(nèi)的數(shù)據(jù)。

三、利用dbms_logmnr包從log文件中恢復(fù)

這個(gè)包是由Oracle提供,與dbms_logmnr_d包配合使用可以方便地分析聯(lián)機(jī)日志文件和歸檔日志文件,從這些日志文件中提取出所有對(duì)數(shù)據(jù)庫(kù)的更改操作。

在使用這個(gè)包之前,需要先做一些設(shè)置和修改:

1、打開(kāi)initorcl.ora,修改初始化參數(shù)utl_file_dir,設(shè)置dbms_logmnr_d包將要使用的數(shù)據(jù)字典文件的放置目錄。

eb6dad504d6f5841641cbd02c5f6dee1.png

然后重啟數(shù)據(jù)庫(kù)使參數(shù)生效。

2、以sys用戶連接到數(shù)據(jù)庫(kù)執(zhí)行dbmslmd.sql腳本重建dbms_logmnr_d這個(gè)包。

應(yīng)用Logminer分析重做日志文件的操作主要有以下步驟:

● 使用dbms_logmnr_d里的存儲(chǔ)過(guò)程build創(chuàng)建一個(gè)外部數(shù)據(jù)字典文件;

● 使用dbms_logmnr里的存儲(chǔ)過(guò)程add_logfile添加要分析的日志文件;

● 使用dbms_logmnr里的存儲(chǔ)過(guò)程start_logmnr啟動(dòng)分析;

● 查詢與dbms_logmnr相關(guān)的幾個(gè)視圖來(lái)獲取日志文件內(nèi)容;

● 使用dbms_logmnr里的存儲(chǔ)過(guò)程end_logmnr結(jié)束分析。

▲下面詳細(xì)講述使用的過(guò)程

1、使用dbms_logmnr_d里的存儲(chǔ)過(guò)程build創(chuàng)建一個(gè)外部數(shù)據(jù)字典文件:

a0975e25f5049f1ffdfdd49ad7ae943d.png

2、使用dbms_logmnr里的存儲(chǔ)過(guò)程add_logfile添加要分析的日志文件到待分析文件列表:

d16ea343204a3a15b29bc6b94985d48d.png

如果沒(méi)有運(yùn)行在歸檔模式,那么由于重做日志文件的循環(huán)使用可能導(dǎo)致日志文件被覆蓋而無(wú)法獲取到所要尋找的恢復(fù)條目。如果運(yùn)行在歸檔模式,則可以通過(guò)查看$ORACLE_HOMEadminorclbdump目錄下的alert_orcl.log里日志文件歸檔的時(shí)間和錯(cuò)誤操作的時(shí)間來(lái)確定加入哪些歸檔日志文件到待分析的文件列表中去。

eff89b61175131d3edda456d8d9bc18e.png

注意:執(zhí)行以上過(guò)程時(shí)logfilename參數(shù)需要寫日志文件的全路徑,否則會(huì)報(bào)錯(cuò)。重復(fù)以上操作直到把所有需要分析的文件都加到列表中去。這樣就可以啟動(dòng)進(jìn)行分析。

3、使用dbms_logmnr里的存儲(chǔ)過(guò)程start_logmnr啟動(dòng)分析;

3630359ea5afa57b5ea51c89da5b8c41.png

這樣就可以通過(guò)下面的查詢來(lái)獲取日志文件的內(nèi)容了。

4、查詢與dbms_logmnr相關(guān)的幾個(gè)視圖來(lái)獲取日志文件內(nèi)容;

3f8098efdbe50d4b5b4a5311eab6b5d0.png

這樣就可以找出要恢復(fù)所需的語(yǔ)句。注意:v$logmnr_contents只對(duì)執(zhí)行dbms_logmnr.start_logmnr的會(huì)話有效,如果通過(guò)其他會(huì)話或者使用dbms_logmnr.end_logmnr終止了分析,都將不能訪問(wèn)v$logmnr_contents的數(shù)據(jù)。如果要使其他會(huì)話也能獲取到這些數(shù)據(jù),可以通過(guò)另外建表來(lái)實(shí)現(xiàn),如:

create table undo_sql as select * from v$logmnr_contents。

再對(duì)undo_sql進(jìn)行授權(quán),其他用戶就可以訪問(wèn)v$logmnr_contents的數(shù)據(jù)了。

5、使用dbms_logmnr里的存儲(chǔ)過(guò)程end_logmnr結(jié)束分析。

使用完成以后用下面的命令來(lái)結(jié)束分析活動(dòng):exec dbms_logmnr.end_logmnr;

這樣就釋放了分配給logminer的資源(內(nèi)存和數(shù)據(jù)結(jié)構(gòu))。

從上面的過(guò)程可知,如果是更新的數(shù)據(jù)量比較大,而日志文件比較小,就可能會(huì)導(dǎo)致日志文件的切換。如果沒(méi)有及時(shí)去挖掘日志文件(沒(méi)有運(yùn)行在歸檔模式),那么可能會(huì)由于日志文件的循環(huán)使用而導(dǎo)致數(shù)據(jù)不可恢復(fù)。如果運(yùn)行在歸檔模式,也可能由于需要分析的日志文件比較多而時(shí)間較長(zhǎng)。

四、利用flashback新特性恢復(fù)數(shù)據(jù)

Oracle9i 開(kāi)始提供了閃回查詢(Flashback Query)功能,對(duì)于誤刪除或者誤更新并且已經(jīng)commit了的情況提供了簡(jiǎn)便快捷的恢復(fù)方法;而在Oracle 提供閃回查詢之前,碰到這種情況只能通過(guò)備份來(lái)進(jìn)行基于時(shí)間點(diǎn)的恢復(fù)或者使用logmnr挖掘日志來(lái)恢復(fù),無(wú)疑這比閃回查詢要麻煩而且費(fèi)時(shí)。

使用這個(gè)Flashback Query特性的前提條件:

1. 數(shù)據(jù)庫(kù)必須處于Automatic Undo Management 狀態(tài)。

9d9facd0a8d3e8675284d38f601525d1.png

2. 最大可以閃回查詢的時(shí)間段由UNDO_RETENTION 初始化參數(shù)(單位為秒)指定

b7a419e2f47bd4d31005ca2d9b4a7c58.png

可以通過(guò)ALTER SYSTEM SET UNDO_RETENTION = ;來(lái)動(dòng)態(tài)修改參數(shù)值。

▲如何使用Flashback Query來(lái)恢復(fù)數(shù)據(jù)呢?

1. 通過(guò)SQL

28b1053a806762ec87261e80f0e8751f.png

使用SELECT 語(yǔ)句的AS OF 來(lái)進(jìn)行閃回查詢,語(yǔ)法如下:

使用AS OF 關(guān)鍵字來(lái)對(duì)表,視圖或者物化視圖進(jìn)行Flashback Query,如果指定了SCN,那么expr 部分必須是一個(gè)數(shù)字,如果指定了TIMESTAMP,那么expr 必須是一個(gè)timestamp類型的值。查詢結(jié)果將返回在指定的SCN 或者時(shí)間點(diǎn)上的數(shù)據(jù)。

下面我們使用scott 方案來(lái)作一個(gè)實(shí)驗(yàn)。

24547dbf2f8f3515319435d98acc0f10.png

如果想在update 的子查詢部分使用AS OF,那么該查詢只能返回一條記錄,否則將會(huì)報(bào)錯(cuò)。

可以通過(guò)添加一個(gè)臨時(shí)表作為中轉(zhuǎn),然后再作更新,如下:

5605ae591ab357c7148787937df03e17.png

2.通過(guò)DBMS_FLASHBACK包來(lái)恢復(fù)

DBMS_FLASHBACK 包提供了以下幾個(gè)函數(shù):

ENABLE_AT_TIME:設(shè)置當(dāng)前SESSION 的閃回查詢時(shí)間

ENABLE_AT_SYSTEM_CHANGE_NUMBER:設(shè)置當(dāng)前SESSION 的閃回查詢SCN

GET_SYSTEM_CHANGE_NUMBER:取得當(dāng)前數(shù)據(jù)庫(kù)的SCN

DISABLE:關(guān)閉當(dāng)前SESSION 的閃回查詢

當(dāng)將一個(gè)SESSION 設(shè)置為閃回查詢模式之后,后續(xù)的查詢都會(huì)基于那個(gè)時(shí)間點(diǎn)或者SCN 的數(shù)據(jù)庫(kù)狀態(tài),如果SESSION 結(jié)束,那么即使沒(méi)有明確指定DISABLE,閃回查詢也會(huì)自動(dòng)失效。

當(dāng)SESSION 運(yùn)行在閃回查詢狀態(tài)時(shí),不允許進(jìn)行任何DML 和DDL 操作。如果要用DML操作來(lái)進(jìn)行數(shù)據(jù)恢復(fù)就必須使用PL/SQL 游標(biāo)。

▲示例:

fbaf8acfe357d8f21039d588c8b658df.png

通過(guò)上面的例子可以看出,只要這個(gè)修改的時(shí)間不早于sysdate- (UNDO_RETENTION指定的秒數(shù)),就可通過(guò)這種方式來(lái)恢復(fù)數(shù)據(jù)。

e93c4d7b11cf4e7c8ed9a0d27c79ea80.png

對(duì)于問(wèn)題中的批量數(shù)據(jù),可以寫個(gè)過(guò)程來(lái)完成獲取到更改前的數(shù)據(jù):

然后再用這個(gè)臨時(shí)表里的數(shù)據(jù)來(lái)更新TFUNDASSET就可以了。

五、總結(jié)

比較以上幾種恢復(fù)數(shù)據(jù)的方法的使用過(guò)程,我們可以看出:

● exp/imp只適合于數(shù)據(jù)變化不大的表的數(shù)據(jù)丟失的情況,即使用這種方法處理后也需要從業(yè)務(wù)辦理資料中修正數(shù)據(jù),否則導(dǎo)致數(shù)據(jù)丟失;

● 采用基于時(shí)間點(diǎn)的不完全恢復(fù)可以恢復(fù)丟失的數(shù)據(jù),但是需要關(guān)關(guān)閉數(shù)據(jù)庫(kù),減少系統(tǒng)可用時(shí)間,而且也會(huì)丟失恢復(fù)時(shí)間點(diǎn)以后的數(shù)據(jù);

● 使用LogMiner可以較好的恢復(fù)數(shù)據(jù),但是要求數(shù)據(jù)庫(kù)盡可能運(yùn)行在歸檔模式,否則也可能導(dǎo)致數(shù)據(jù)丟失。好處是不用關(guān)閉系統(tǒng),能夠從日志文件中得到所有的數(shù)據(jù)。

● 使用Flashback最方便和簡(jiǎn)潔,可以直接得到修改前的數(shù)據(jù),但是需要依賴系統(tǒng)設(shè)置,并且需要占用大量的回滾表空間。

因此選擇什么樣的方法來(lái)恢復(fù)數(shù)據(jù),取決于你的系統(tǒng)環(huán)境和具體情況,不能生搬硬套。采用正確的方法才能最大程度的減少數(shù)據(jù)的丟失。

當(dāng)然,最好是不需要用到這些恢復(fù)的辦法。前提是,你必須做好以下的工作:

1、 為不同環(huán)境創(chuàng)建不同的數(shù)據(jù)庫(kù)用戶、不同密碼(如果不能用戶不同,一定要密碼不同);

2、 將owner和應(yīng)用用戶分開(kāi),并做適度授權(quán);

3、 在做DML前,先用同樣的條件做查詢,看根據(jù)結(jié)果集是否符合預(yù)期。

oracle數(shù)據(jù)庫(kù)的表備份后怎么回退

備份一張表一般用create 備份表 as select * from 原表;

如果不想要這個(gè)備份,直接運(yùn)行

drop table 備份表;

就可以,沒(méi)有回退的說(shuō)法。

分享文章:oracle怎么回退備份,oracle 備份與恢復(fù)
網(wǎng)頁(yè)地址:http://chinadenli.net/article16/hegsdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站網(wǎng)站收錄、品牌網(wǎng)站建設(shè)用戶體驗(yàn)、Google、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)