国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Oracle閃回技術(shù)的應(yīng)用與實(shí)踐分析

2020-12-28 02:26:02陳偉明
中阿科技論壇(中英阿文) 2020年10期
關(guān)鍵詞:數(shù)據(jù)庫(kù)

陳偉明

摘要:閃回技術(shù)是Oracle提供的一種強(qiáng)大的備份恢復(fù)機(jī)制手段,能夠讓用戶及時(shí)地恢復(fù)由于誤操作而造成的數(shù)據(jù)庫(kù)邏輯錯(cuò)誤,達(dá)到損失最小化,避免進(jìn)行沒(méi)有可用邏輯備份而采取的數(shù)據(jù)庫(kù)不完全恢復(fù),且多數(shù)都能在聯(lián)機(jī)狀態(tài)下完成。本文主要介紹了閃回技術(shù)幾種常用的技術(shù)手段,并利用一些實(shí)例展示了該技術(shù)在實(shí)際工作中的具體應(yīng)用。

關(guān)鍵詞:Oracle;數(shù)據(jù)庫(kù);閃回

中圖分類號(hào):G202? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A

在實(shí)際工作中,Oracle數(shù)據(jù)庫(kù)的人為錯(cuò)誤操作,比如數(shù)據(jù)誤刪除或者執(zhí)行了錯(cuò)誤的更新,且提交了數(shù)據(jù),可能會(huì)造成系統(tǒng)停機(jī)。在沒(méi)有邏輯或物理備份的情況下,要想進(jìn)行數(shù)據(jù)恢復(fù)是非常困難的,而利用Oracle數(shù)據(jù)庫(kù)提供的閃回技術(shù), 可以讓管理員將數(shù)據(jù)庫(kù)回退到過(guò)去的某一個(gè)狀態(tài),更正邏輯錯(cuò)誤操作,其簡(jiǎn)單易用,效率高,大大提高了數(shù)據(jù)庫(kù)的安全性和完整性1。Oracle提供了閃回表、閃回刪除、閃回版本查詢、閃回事務(wù)查詢,閃回?cái)?shù)據(jù)庫(kù),閃回?cái)?shù)據(jù)歸檔等閃回技術(shù)。本文就其中幾種閃回技術(shù)做簡(jiǎn)單介紹,并對(duì)最常用的利用具體實(shí)例加以說(shuō)明。

1? 閃回表操作

閃回表是一個(gè)獨(dú)立的事務(wù),主要是為了解決用戶對(duì)某個(gè)表不小心做了不正確操作,需要在線恢復(fù)指定表中的數(shù)據(jù)。通過(guò)閃回表操作,將指定表中數(shù)據(jù)恢復(fù)到指定的時(shí)間點(diǎn)或者系統(tǒng)改變號(hào)SCN上,并自動(dòng)恢復(fù)索引,約束,觸發(fā)器等,而數(shù)據(jù)庫(kù)繼續(xù)保持連接狀態(tài),其它表不受影響同樣保持當(dāng)前狀態(tài)。Oracle閃回查詢主要是利用了Undo表空間,閃回查詢能恢復(fù)的時(shí)間點(diǎn)取決于Undo表空間的大小和Undo_Retention參數(shù)有關(guān),且無(wú)法對(duì)過(guò)去版本的數(shù)據(jù)進(jìn)行DML操作。此外,閃回表利用DML操作恢復(fù)數(shù)據(jù)時(shí),其無(wú)法保證Rownum號(hào)不變,因此我們?cè)谶M(jìn)行閃回操作前必須先要啟動(dòng)行移動(dòng)功能,否則閃回操作會(huì)報(bào)錯(cuò)。

下面用一個(gè)實(shí)例說(shuō)明如何將表中的數(shù)據(jù)恢復(fù)到指定時(shí)間點(diǎn)的操作。

(1)創(chuàng)建一個(gè)測(cè)試表Com_Employee,包含員工編號(hào)、姓名、性別等演示數(shù)據(jù)。

結(jié)果顯示,表中只有張三的基本信息,證明數(shù)據(jù)被恢復(fù)到了指定的時(shí)間點(diǎn),閃回成功,閃回表可能會(huì)失敗,主要原因是不能保護(hù)系統(tǒng)表空間中的表,即不適用于SYS模式下的表,違反了外鍵約束,撤銷數(shù)據(jù)被覆蓋后導(dǎo)致數(shù)據(jù)失效,權(quán)限不足,有其他用戶鎖定了閃回作用的行而不能閃回,對(duì)表的DLL操作比如對(duì)表做了截?cái)嗖僮骰蛘邉h除了列等,實(shí)際應(yīng)用時(shí)應(yīng)加以判斷。盡量在最短時(shí)間內(nèi)發(fā)現(xiàn)錯(cuò)誤并執(zhí)行閃回操作,如果閃回因?yàn)槿魏卧蚨。琌racle閃回操作將會(huì)被終止,回滾已經(jīng)成功執(zhí)行的任何一部分操作,將表狀態(tài)回到閃回命令發(fā)出之前的樣子。

2? 閃回刪除

恢復(fù)已經(jīng)被用戶刪除Drop的數(shù)據(jù)庫(kù)對(duì)象,相應(yīng)的索引,數(shù)據(jù)庫(kù)約束也會(huì)被還原。閃回刪除需要用到Oracle 中的回收站機(jī)制。Drop命令僅相當(dāng)于一個(gè)重命名的操作,當(dāng)用戶刪除一個(gè)表的時(shí)候,該表的所有相關(guān)對(duì)象也將被保存在Oracle 回收站內(nèi),未被真正刪除,此時(shí)可以通過(guò)閃回刪除操作將用戶被錯(cuò)誤Drop的表進(jìn)行閃回操作。閃回被誤刪除的表實(shí)例演示如下。

需要注意的是閃回刪除僅針對(duì)DROP 操作,對(duì)于Truncate操作和回收站被Purge的表將無(wú)法恢復(fù),另外依賴該表的位圖索引、引用完整性約束不受回收站保護(hù)。

3? 閃回版本查詢和閃回事務(wù)查詢

一條行數(shù)據(jù)在使用周期內(nèi)可能會(huì)發(fā)生多次改變。閃回版本查詢可用于查看一個(gè)行在不同時(shí)期內(nèi)所提交的不同版本的數(shù)據(jù),以及相應(yīng)的DML操作記錄,主要包括該版本數(shù)據(jù)的創(chuàng)建時(shí)間和結(jié)束時(shí)間,操作者是誰(shuí)以及每個(gè)更改的事務(wù)標(biāo)識(shí)符,從而讓我們可以詳細(xì)了解某個(gè)具體的表在這個(gè)時(shí)間段內(nèi)的具體變化情況。閃回事務(wù)查詢則是閃回版本查詢的擴(kuò)充,可以實(shí)現(xiàn)審計(jì)事務(wù)或者撤銷一個(gè)已經(jīng)提交的事務(wù),Oracle中進(jìn)行DML操作并提交后,Oracle會(huì)自動(dòng)構(gòu)造SQL語(yǔ)句來(lái)反轉(zhuǎn)事務(wù)的更改,自動(dòng)執(zhí)行修復(fù)過(guò)程,其主要是利用了保存在Flashback_Transaction_Query 表中的Undo_Sql來(lái)恢復(fù)具體的事務(wù)操作,而并不是回滾一個(gè)已經(jīng)提交到事務(wù),利用它可以看到受該事務(wù)影響的每個(gè)行都對(duì)應(yīng)有一行記錄。閃回事務(wù)不會(huì)造成數(shù)據(jù)丟失,僅僅是撤銷指定的事務(wù),并且數(shù)據(jù)庫(kù)依舊能夠保持當(dāng)前狀態(tài)。

實(shí)例演示:新建一個(gè)表Test,并做一些DML操作,接著查詢出這些具體的操作,并做指定的撤銷處理。

(1)新建表,插入2條演示數(shù)量,并模擬刪除其中的一條數(shù)據(jù)。

(6)查詢Test表進(jìn)行結(jié)果檢查,數(shù)據(jù)回到了原來(lái)Update前的初始狀態(tài)了,閃回完成。

需要注意的是,閃回版本查詢不能用于外部表、視圖或臨時(shí)表,因?yàn)檫@些對(duì)象都能不生成撤銷數(shù)據(jù)。當(dāng)對(duì)表做了截?cái)嗖僮?,或者?duì)表欄做了刪除列的操作后,閃回版本查詢信息將丟失,但增加列的DDL操作則不會(huì)丟失版本查詢信息。

4? 閃回?cái)?shù)據(jù)歸檔

閃回?cái)?shù)據(jù)歸檔區(qū)本質(zhì)是從一個(gè)或多個(gè)表空間中劃出來(lái)的一部分空間,能夠使表具有退回到過(guò)去任何時(shí)間點(diǎn)的能力。閃回操作中除了閃回?cái)?shù)據(jù)庫(kù)是利用了閃回日志外,其他都依賴撤銷表空間,然而撤銷表空間是循環(huán)使用的,老的數(shù)據(jù)會(huì)被新的數(shù)據(jù)替換,且保留時(shí)間短,一旦撤銷數(shù)據(jù)被覆蓋重寫,將必然導(dǎo)致閃回失敗,而利用閃回?cái)?shù)據(jù)庫(kù)歸檔,將改變的數(shù)據(jù)另外存放到特定的閃回?cái)?shù)據(jù)歸檔區(qū),從而有效避開(kāi)撤銷數(shù)據(jù)空間大小的限制,提高數(shù)據(jù)保留時(shí)間。它只針對(duì)Undate和Delete語(yǔ)句,并不保存Intert操作。我們?cè)谀硞€(gè)表空間上創(chuàng)建一個(gè)數(shù)據(jù)歸檔區(qū),并設(shè)置好大小和保留時(shí)間,然后為具體的表指定具體的閃回?cái)?shù)據(jù)歸檔區(qū),通過(guò)為表指定閃回歸檔區(qū)后,實(shí)際上就開(kāi)啟了對(duì)表的跟蹤,這時(shí)將不再允許對(duì)表執(zhí)行DLL操作,如刪表、增刪列、改名等,這些限制可以通過(guò) alter table test1 no flashback archive進(jìn)行取消,通過(guò)設(shè)置以后,表就具有了退回到保留時(shí)間內(nèi)某個(gè)具體時(shí)間點(diǎn)的能力。

5? 結(jié)語(yǔ)

本文主要針對(duì)Oracle常用閃回技術(shù)做了簡(jiǎn)單介紹并結(jié)合實(shí)例演示了閃回技術(shù)給我們提供的一種針對(duì)數(shù)據(jù)庫(kù)邏輯錯(cuò)誤快速恢復(fù)的機(jī)制,多數(shù)能在聯(lián)機(jī)狀態(tài)下進(jìn)行數(shù)據(jù)恢復(fù),快速且有效,閃回的過(guò)程中,也有可能失敗,閃回前可能需要取消對(duì)某些表完整性和約束檢查,但是,閃回恢復(fù)的程度取決于閃回空間的大小以及保留的時(shí)間策略設(shè)置,但對(duì)于磁盤的物理?yè)p壞或介質(zhì)丟失,閃回技術(shù)就無(wú)法發(fā)揮其作用了,必須借助Oracle其他的備份恢復(fù)工具進(jìn)行備份恢復(fù)操作,因此,閃回技術(shù)更適合恢復(fù)偶然的操作錯(cuò)誤,其增強(qiáng)了系統(tǒng)可用性與一致性。

(責(zé)任編輯:武多多)

參考文獻(xiàn):

[1]張曉明.大話Oracle RAC集群、高可用性,備份與恢復(fù)[M].北京:人民郵電出版社,2011.

[2]李興華,馬云濤.Oracle開(kāi)發(fā)實(shí)戰(zhàn)經(jīng)典[M].北京:清華大學(xué)出版社,2014.

[3]楊建榮.Oracle DBA工作筆記:運(yùn)維、數(shù)據(jù)遷移與性能調(diào)優(yōu)[M].北京:中國(guó)鐵道出版社,2016.

猜你喜歡
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
鄂托克前旗| 连江县| 陵川县| 印江| 通江县| 建昌县| 天柱县| 繁峙县| 鹤峰县| 永清县| 马龙县| 喀什市| 鄂尔多斯市| 芒康县| 武功县| 新源县| 佛坪县| 黔西县| 城固县| 项城市| 闵行区| 兰坪| 高唐县| 桃园县| 高陵县| 广水市| 承德县| 华蓥市| 锡林浩特市| 秀山| 鲁山县| 冀州市| 大丰市| 乐至县| 关岭| 汝阳县| 蒲江县| 金塔县| 麻江县| 巴塘县| 成都市|