欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何修復(fù)oracle數(shù)據(jù) Oracle數(shù)據(jù)恢復(fù)

oracle數(shù)據(jù)庫(kù)執(zhí)行腳步出錯(cuò),怎么恢復(fù)數(shù)據(jù)庫(kù)

數(shù)據(jù)恢復(fù)方法是利用oracle提供的閃回方法進(jìn)行數(shù)據(jù)恢復(fù),適用于delete刪除(一條記錄)方式:

在烏海海南等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都網(wǎng)站制作、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需策劃,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣,外貿(mào)網(wǎng)站制作,烏海海南網(wǎng)站建設(shè)費(fèi)用合理。

首先需要知道是什么時(shí)間進(jìn)行的刪除操作,如果不能確定具體時(shí)間點(diǎn)則選擇盡量準(zhǔn)確的刪除數(shù)據(jù)前的時(shí)間。然后利用

select * from 表名 as of timestamp to_timestamp('刪除時(shí)間點(diǎn)','yyyy-mm-dd hh24:mi:ss')

語(yǔ)句可以找回刪除的數(shù)據(jù)。利用

insert into 表名 (select * from 表名 as of timestamp to_timestamp('刪除時(shí)間點(diǎn)','yyyy-mm-dd hh24:mi:ss'));

語(yǔ)句就可以將恢復(fù)出來(lái)的數(shù)據(jù)插入原表中(注意要保證主鍵不重復(fù))。

另一種方法可以通過(guò)閃回整個(gè)表來(lái)恢復(fù)誤刪除的數(shù)據(jù),但僅適用于表結(jié)構(gòu)沒(méi)有發(fā)生改變且用戶(hù)有flash any table權(quán)限的情況下,語(yǔ)句如下:

·alter table 表名 enable row movement

oracle中truncatetable后的數(shù)據(jù)如何恢復(fù)

oracle中truncatetable后的數(shù)據(jù)如何恢復(fù)

Oracle認(rèn)證是由Oracle公司,為能夠滿足對(duì)Oracle核心人士需求,Oracle公司頒布并實(shí)施的一項(xiàng)權(quán)威品的服務(wù)與支持。下面我為大家整理了關(guān)于oracle中truncatetable后的數(shù)據(jù)如何恢復(fù)的.文章,一起來(lái)看看吧:

1、首先下載odu數(shù)據(jù)恢復(fù)工具,然后解壓。(odu工具見(jiàn)附件)

2、查詢(xún)數(shù)據(jù)文件路徑相關(guān)信息:select ts#,file#,rfile#,name,BLOCK_SIZE from v$datafile;

將其結(jié)構(gòu)填入odu目錄下的control.txt文件中

格式如下:

#ts #fno #rfno filename block_size

0 1 1 /bbdata/hzdb/system01.dbf 8192

1 2 2 /bbidx/hzdb/undotbs01.dbf 8192

3 3 3 /bbidx/hzdb/indx01.dbf 8192

4 4 4 /bbdata/hzdb/tools01.dbf 8192

5 5 5 /bbdata/hzdb/users01.dbf 8192

6 6 6 /bbdata/hzdb/REPORT.dbf 8192

7 7 7 /bbdata/hzdb/RESERVE.dbf 8192

8 8 8 /bbdata/hzdb/WZHTBS.dbf 8192

9 9 9 /bbdata/hzdb/perfstat01.dbf 8192

3、打開(kāi)oud

4、執(zhí)行命令:unload dict

5、執(zhí)行命令:scan extent (需等一會(huì)兒時(shí)間)

6、執(zhí)行命令:desc [用戶(hù)名].[被刪除數(shù)據(jù)的表名]

Object ID:33547

Storage(Obj#=33547 DataObj#=33549 TS#=11 File#=10 Block#=1400 Cluster=0)

NO. SEG INT Column Name Null? Type

--- --- --- ------------------------------ --------- ------------------------------

1 1 1 OWNER VARCHAR2(30)

2 2 2 OBJECT_NAME VARCHAR2(128)

3 3 3 SUBOBJECT_NAME VARCHAR2(30)

4 4 4 OBJECT_ID NUMBER

5 5 5 DATA_OBJECT_ID NUMBER

6 6 6 OBJECT_TYPE VARCHAR2(18)

7 7 7 CREATED DATE

8 8 8 LAST_DDL_TIME DATE

9 9 9 TIMESTAMP VARCHAR2(19)

10 10 10 STATUS VARCHAR2(7)

11 11 11 TEMPORARY VARCHAR2(1)

12 12 12 GENERATED VARCHAR2(1)

13 13 13 SECONDARY VARCHAR2(1)

從上面的輸出中,我們可以看到,TEST.T1表所在的表空間號(hào)為11,數(shù)據(jù)段頭部為10號(hào)文件的1400號(hào)塊。

我們使用ODU來(lái)確定T1表原來(lái)的data object id。一般來(lái)說(shuō),數(shù)據(jù)段的數(shù)據(jù)塊,一般是在段頭后面相鄰的塊中。但是我們可以從段頭來(lái)確認(rèn):

ODU dump datafile 10 block 1400

Block Header:

block type=0×23 (ASSM segment header block)

block format=0×02 (oracle 8 or 9)

block rdba=0×02800578 (file#=10, block#=1400)

scn=0×0000.00286f2d, seq=4, tail=0×6f2d2304

block checksum value=0×0=0, flag=0

Data Segment Header:

Extent Control Header

-------------------------------------------------------------

Extent Header:: extents: 1 blocks: 5

last map: 0×00000000 #maps: 0 offset: 668

Highwater:: 0×02800579 (rfile#=10,block#=1401)

ext#: 0 blk#: 3 ext size:5

#blocks in seg. hdr’s freelists: 0

#blocks below: 0

mapblk: 0×00000000 offset: 0

--------------------------------------------------------

Low HighWater Mark :

Highwater:: 0×02800579 ext#: 0 blk#: 3 ext size: 5

#blocks in seg. hdr’s freelists: 0

#blocks below: 0

mapblk 0×00000000 offset: 0

Level 1 BMB for High HWM block: 0×02800576

Level 1 BMB for Low HWM block: 0×02800576

--------------------------------------------------------

Segment Type: 1 nl2: 1 blksz: 2048 fbsz: 0

L2 Array start offset: 0×00000434

First Level 3 BMB: 0×00000000

L2 Hint for inserts: 0×02800577

Last Level 1 BMB: 0×02800576

Last Level 1I BMB: 0×02800577

Last Level 1II BMB: 0×00000000

Map Header:: next 0×00000000 #extents: 1 obj#: 33549 flag: 0×220000000

Extent Map

-------------------------------------------------------------

0×02800576 length: 5

Auxillary Map

-------------------------------------------------------------

Extent 0 : L1 dba: 0×02800576 Data dba: 0×02800579

-------------------------------------------------------------

Second Level Bitmap block DBAs

-------------------------------------------------------------

DBA 1: 0×02800577

從上面的輸出中的“Extent 0 : L1 dba: 0×02800576 Data dba: 0×02800579”可以看到,段的第1個(gè)數(shù)據(jù)塊的RDBA為0×02800579,也就是10號(hào)文件的1401塊。

我們dump第10號(hào)文件的1401塊頭,來(lái)得到表T1原來(lái)的data object id:

ODU dump datafile 10 block 1401 header

Block Header:

block type=0×06 (table/index/cluster segment data block)

block format=0×02 (oracle 8 or 9)

block rdba=0×02800579 (file#=10, block#=1401)

scn=0×0000.00285f2b, seq=2, tail=0×5f2b0602

block checksum value=0×0=0, flag=0

Data Block Header Dump:

Object id on Block? Y

seg/obj: 0×830b=33547 csc: 0×00.285f21 itc: 3 flg: E typ: 1 (data)

brn: 0 bdba: 0×2800576 ver: 0×01

Itl Xid Uba Flag Lck Scn/Fsc

0×01 0xffff.000.00000000 0×00000000.0000.00 C--- 0 scn 0×0000.00285f21

0×02 0×0000.000.00000000 0×00000000.0000.00 ---- 0 fsc 0×0000.00000000

0×03 0×0000.000.00000000 0×00000000.0000.00 ---- 0 fsc 0×0000.00000000

Data Block Dump:

================

flag=0×0 --------

ntab=1

nrow=16

frre=-1

fsbo=0×32

ffeo=0×145

avsp=0×113

tosp=0×113

可以看到,T1表原來(lái)的data object id就是33547。

7. 使用ODU來(lái)unload數(shù)據(jù):

ODU unload table test.t1 object 33547

8、使用sqlldr導(dǎo)入我們恢復(fù)的數(shù)據(jù):打開(kāi)cmd命令,執(zhí)行E:\ODU\datasqlldr 用戶(hù)名/密碼@數(shù)據(jù)庫(kù)id control=TEST_T1.ctl ;

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ǔ)句的條件寫(xiě)錯(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è)用戶(hù)下面:

33806d1216df5ae9c45890d3d45930ee.png

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

fe23a8a4602702e951e5ab48a7460e3b.png

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

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)。

通知各客戶(hù)端數(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用戶(hù)連接到數(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)分析;

● 查詢(xún)與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ù)需要寫(xiě)日志文件的全路徑,否則會(huì)報(bào)錯(cuò)。重復(fù)以上操作直到把所有需要分析的文件都加到列表中去。這樣就可以啟動(dòng)進(jìn)行分析。

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

3630359ea5afa57b5ea51c89da5b8c41.png

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

4、查詢(xún)與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),其他用戶(hù)就可以訪問(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)始提供了閃回查詢(xún)(Flashback Query)功能,對(duì)于誤刪除或者誤更新并且已經(jīng)commit了的情況提供了簡(jiǎn)便快捷的恢復(fù)方法;而在Oracle 提供閃回查詢(xún)之前,碰到這種情況只能通過(guò)備份來(lái)進(jìn)行基于時(shí)間點(diǎn)的恢復(fù)或者使用logmnr挖掘日志來(lái)恢復(fù),無(wú)疑這比閃回查詢(xún)要麻煩而且費(fèi)時(shí)。

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

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

9d9facd0a8d3e8675284d38f601525d1.png

2. 最大可以閃回查詢(xún)的時(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)行閃回查詢(xún),語(yǔ)法如下:

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

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

24547dbf2f8f3515319435d98acc0f10.png

如果想在update 的子查詢(xún)部分使用AS OF,那么該查詢(xún)只能返回一條記錄,否則將會(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 的閃回查詢(xún)時(shí)間

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

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

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

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

當(dāng)SESSION 運(yùn)行在閃回查詢(xú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ù),可以寫(xiě)個(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ù),但是需要依賴(lài)系統(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ù)用戶(hù)、不同密碼(如果不能用戶(hù)不同,一定要密碼不同);

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

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

重裝系統(tǒng)后,怎么恢復(fù)oracle數(shù)據(jù)庫(kù)?

任何軟件都有可能在有意或無(wú)意的情況下被重新安裝,如Oracle重裝后數(shù)據(jù)庫(kù)怎么恢復(fù)呢?情況發(fā)生在你是無(wú)意的情況下!ORACLE數(shù)據(jù)庫(kù)恢復(fù)的方法我們經(jīng)常會(huì)用到,下面就為您介紹重裝系統(tǒng)后ORACLE數(shù)據(jù)庫(kù)恢復(fù)的方法,希望對(duì)您學(xué)習(xí)ORACLE數(shù)據(jù)庫(kù)恢復(fù)方面能有所幫助。\x0d\x0a\x0d\x0a我的電腦突然掛了,不得不重裝系統(tǒng),不過(guò)我的ORACLE裝在了D盤(pán),所有的文件都還在,我相信一定能夠恢復(fù),直到搞定工作,我才開(kāi)始整我的數(shù)據(jù)庫(kù),花了兩天時(shí)間,終于恢復(fù)了,慶祝一下,同時(shí)總結(jié)一下,希望有遇到同樣問(wèn)題的朋友能夠快速搞定此類(lèi)問(wèn)題\x0d\x0a\x0d\x0a第一種:\x0d\x0a\x0d\x0a首先,備份數(shù)據(jù)庫(kù)(X:\oracle\oradata)下的數(shù)據(jù)文件,重新命名即可(否則裝數(shù)據(jù)庫(kù)的時(shí)候會(huì)提示sid已存在)。重新安裝數(shù)據(jù)\x0d\x0a庫(kù),當(dāng)然數(shù)據(jù)庫(kù)的名字就是你要恢復(fù)的名字。安裝完成后,打開(kāi)控制面板,停止oracle的服務(wù)。把(X:\oracle\oradata)下新生成的文件\x0d\x0a改名,把原先目錄下的文件恢復(fù)名字。再重新啟動(dòng)oracle服務(wù)和監(jiān)聽(tīng)。用sys/as dba \x0d\x0a登陸數(shù)據(jù)庫(kù),可能會(huì)提示權(quán)限不夠(ora-01031)修改(X:\oracle\ora92\network\admin \x0d\x0a)文件夾下的sqlnet.ora文件,添加SQLNET.AUTHENTICATION_SERVICES= \x0d\x0a(NTS),增加權(quán)限。登陸進(jìn)去后,打開(kāi)table提示不能打開(kāi)。打開(kāi)common頁(yè),執(zhí)行命令alert database \x0d\x0aopen;這時(shí)再刷新table,發(fā)現(xiàn)原先的表可以打開(kāi)了。恢復(fù)成功了。再用原先數(shù)據(jù)庫(kù)的普通用戶(hù)進(jìn)入。發(fā)現(xiàn)一切正常。至此,大功告成。\x0d\x0a\x0d\x0a第二種:\x0d\x0a\x0d\x0a1、首先,將原來(lái)的ORACLE文件夾改名,原來(lái)的路徑是D:/oracle.我暫時(shí)改成D:/oracle_old.找來(lái)ORACLE(我用\x0d\x0a的是ORACLE 9I)安裝光盤(pán),將ORACLE安裝在原來(lái)安裝的目錄下,這樣恢復(fù)起來(lái)更加方便,主要是注冊(cè)表的內(nèi)容不用修改。\x0d\x0a\x0d\x0a2、安裝完了之后,系統(tǒng)中又有一個(gè)可以使用的ORACLE了。這個(gè)時(shí)候要做的就是將原來(lái)的文件和數(shù)據(jù)恢復(fù)過(guò)來(lái)。第一步,先關(guān)閉ORACLE的所\x0d\x0a有已經(jīng)啟動(dòng)的項(xiàng)目,在"服務(wù)"里面逐一關(guān)閉。然后,將安裝目錄改名。我現(xiàn)在用的是D:/oracle.改成D:/oracle_new.再將D:\x0d\x0a/oracle_old改成D:/oracle. \x0d\x0a這樣理論上說(shuō)從物理層面恢復(fù)了ORACLE了。但是我們發(fā)現(xiàn),現(xiàn)在還不能啟動(dòng)ORACLE的監(jiān)聽(tīng)程序和服務(wù)程序。我們還要從邏輯上解決。\x0d\x0a\x0d\x0a3、在dos環(huán)境下執(zhí)行一個(gè)刪除命令:oradim -delete -sid mm,其中mm為創(chuàng)建oracle時(shí)候創(chuàng)建的實(shí)例 \x0d\x0a建議執(zhí)行這個(gè)命令后重新啟動(dòng)機(jī)器,重啟后就可以建立和原來(lái)實(shí)例名相同的實(shí)例。當(dāng)然你懶,不重新啟動(dòng)也可以,但是你的實(shí)例名就不能和原來(lái)的一樣了。\x0d\x0a\x0d\x0a4、在dos環(huán)境下執(zhí)行命令 oradim -new -sid mm -startmode a -pfile "D:\oracle\admin\mm\pfile\initmm.ora "創(chuàng)建一個(gè)新的實(shí)例,其中 "mm"為新數(shù)據(jù)庫(kù)的名稱(chēng)。\x0d\x0a\x0d\x0a5、啟動(dòng)服務(wù),先打開(kāi)數(shù)據(jù)庫(kù),然后可以用以前的用戶(hù)名和密碼登陸進(jìn)去。 \x0d\x0a要補(bǔ)充的是,一般的ORACLE數(shù)據(jù)庫(kù)的監(jiān)聽(tīng)程序都是用電腦的名稱(chēng)來(lái)識(shí)別地址的,而不是127.0.0.1或者localhost.所以,如果我們安裝系\x0d\x0a統(tǒng)的時(shí)候用的是不同的電腦名稱(chēng)(比如我原來(lái)用的是wm_mm.重新安裝后用的是wenming_mm),那么我們還有一個(gè)工作要做,就是修改文件 \x0d\x0alistener.ora.將里面的相關(guān)的東西改過(guò)來(lái)就可以了。\x0d\x0a\x0d\x0a需要耐心、細(xì)心,可能在一步里有一個(gè)細(xì)小的差別就會(huì)出些古怪的錯(cuò)誤提示,有時(shí)需要根據(jù)錯(cuò)誤提示采取策略,總之原理是,先裝一個(gè)一模一樣的ORACLE,安裝目錄、數(shù)據(jù)庫(kù)名稱(chēng)都一樣,這樣保證注冊(cè)表里不用更改;再覆蓋物理文件,最后重新實(shí)例化,打開(kāi)數(shù)據(jù)庫(kù)就可以進(jìn)去了。

當(dāng)前文章:如何修復(fù)oracle數(shù)據(jù) Oracle數(shù)據(jù)恢復(fù)
URL標(biāo)題:http://aaarwkj.com/article22/dooogcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、標(biāo)簽優(yōu)化網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)公司、域名注冊(cè)響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(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)

小程序開(kāi)發(fā)
亚洲国产日韩在线精品| 国产精品成人免费久久黄| 97门久欧美日韩久久| 性色av人妻中文一区二区| 激情影院在线观看福利| 国产免费久久黄av片| 黄色国产欧美国产亚洲| 国产女同互慰一区二区| 国产欧美日韩另类在线| 国产精品一区午夜福利| av一区二区三区高潮| 亚洲国产天堂久久综合| 国产操大奶头女人自拍av| 在线观看免费国产k片| 亭亭丁香激情五月涩久久| 欧美夫妻成人性生活视频| 中文字幕人妻久久精品一区| 亚洲一区二区三区国色天香| 亚洲欧美日韩国产99| 国模在线视频一区二区| 国产精品一区二区av麻豆| 亚洲黄香蕉视频免费看| jk黑丝白丝国产精品| 四虎在线经典视频播放| 999热这里只有精品视频| 久久精品亚洲av三区麻豆| 国产一区二区三区日本精品| 亚洲精品主播一区二区三区| 免费国产网站在线观看不卡| 国产精品久久久毛片av| 天堂社区人妻在线亚洲| 亚洲丰满性感美女av| 欧美一区二区亚洲天堂| 亚洲av乱码一区二区三区观影| 国产av爆操黑丝美女| 亚洲国产精品成人久久66| 中文字幕熟女人妻另类癖好| 天天操夜夜夜夜夜操| 亚洲精品一二三区免费| 91欧美视频在线观看| 日本中文字幕有码专区|