用oracle的
發(fā)展壯大離不開廣大客戶長期以來的信賴與支持,我們將始終秉承“誠信為本、服務(wù)至上”的服務(wù)理念,堅持“二合一”的優(yōu)良服務(wù)模式,真誠服務(wù)每家企業(yè),認(rèn)真做好每個細(xì)節(jié),不斷完善自我,成就企業(yè),實現(xiàn)共贏。行業(yè)涉及成都廣告設(shè)計等,在網(wǎng)站建設(shè)公司、成都全網(wǎng)營銷、WAP手機(jī)網(wǎng)站、VI設(shè)計、軟件開發(fā)等項目上具有豐富的設(shè)計經(jīng)驗。
flashback
,可以還原查詢某個時間點這個表中的數(shù)據(jù),只要時間不要過去太久就可以,比如
SELECT
*
FROM
tt_tab
AS
of
TIMESTAMP(SYSDATE-1/24)
有數(shù)據(jù)庫備份嗎
如果有exp備份,可以通過imp導(dǎo)入恢復(fù)表數(shù)據(jù)
如果有rman備份,可以把數(shù)據(jù)庫按時間恢復(fù)到測試備庫,然后在導(dǎo)會本庫
如果沒有備份,可以嘗試使用logmnr挖掘在線日志或歸檔日志,生成一些表的一些數(shù)據(jù)
1、安裝Oracle數(shù)據(jù)庫軟件,并且用Oracle管理工具中的Database Configuration Assistant 根據(jù)對方提供的數(shù)據(jù)庫名建立數(shù)據(jù)庫。數(shù)據(jù)庫版本則要和導(dǎo)出當(dāng)前dmp文件的數(shù)據(jù)庫版本一致。
2、透過腳本文件建立導(dǎo)入dmp文件所需的表空間、用戶、規(guī)則以及相關(guān)的授權(quán)。
3、將dmp文件復(fù)制到新安裝的Oracle數(shù)據(jù)庫服務(wù)器中,準(zhǔn)備導(dǎo)入這個數(shù)據(jù)庫文件。
4、通過cmd調(diào)出運行窗口,用imp命令導(dǎo)入數(shù)據(jù)。
5、通過數(shù)據(jù)庫管理工具連接數(shù)據(jù)庫,就可以查詢到dmp文件中的數(shù)據(jù)了。
請使用 Oracle Database 10g 中的閃回表特性,它使得被刪除表的恢復(fù)過程如同執(zhí)行幾條語句一樣簡單。讓我們來看該特性是如何工作的。
刪除那個表!
首先,讓我們查看當(dāng)前模式中的表。
SQL select * from tab;
TNAME
TABTYPE
CLUSTERID
--------------------- - -- -- --- ------
RECYCLETEST
TABLE
現(xiàn)在,我們意外地刪除了該表:
SQL drop table recycletest;
Table dropped.
現(xiàn)在讓我們來查看該表的狀態(tài)。
SQL select * from tab;
TNAME
oracle如何恢復(fù)誤刪的表記錄數(shù)據(jù),解決辦法:
從flash back里查詢被刪除的表select * from recyclebin
執(zhí)行表的恢復(fù)flashback table ?tbName ?to before drop;這里的tbName代表你要恢復(fù)的表的名稱。
先從flashback_transaction_query視圖里查詢,視圖提供了供查詢用的表名稱、事務(wù)提交時間、UNDO_SQL等字段。
一般先根據(jù)時間進(jìn)行查詢,查詢語句模式為select * from tb as of timestamp to_timestamp(time,'yyyy-mm-dd hh24:mi:ss'); tb指表名稱,time指某個時間點。
這個命令的作用是,允許Oracle 修改分配給行的rowid。
在Oracle 中,插入一行時就會為它分配一個rowid,而且這一行永遠(yuǎn)擁有這個rowid。
閃回表處理會對EMP 完成DELETE,并且重新插入行,這樣就會為這些行分配一個新的rowid。
要支持閃回就必須允許Oracle 執(zhí)行這個操作。
一、如果是剛剛刪除,那么有兩方法:
首先用show parameter undo;命令查看當(dāng)時的數(shù)據(jù)庫參數(shù)undo_retention設(shè)置。
顯示如下:
undo_management?string?AUTO
undo_retention?integer?10800
undo_suppress_errors?boolean?FALSE
undo_tablespace?string?UNDOTBS1
undo_retention(保持力),10800單位是秒。即3個小時。
修改默認(rèn)的undo_retention參數(shù)設(shè)置:
ALTER?SYSTEM?SET?undo_retention=10800?SCOPE=BOTH;
方法1,通過oracle提供的回閃功能:
exec?dbms_flashback.enable_at_time(to_date('2007-07-23?10:21:00','yyyy-mm-dd?hh24:mi:ss'));
set?serveroutput?on
DECLARE?r_temp?hr.job_history%ROWTYPE;
CURSOR?c_temp?IS?SELECT?*?FROM?hr.job_history;
BEGIN
OPEN?c_temp;
dbms_flashback.disable;
LOOP
FETCH?c_temp?INTO?r_temp;
EXIT?WHEN?c_temp%NOTFOUND;
insert?into?hr.job_history(EMPLOYEE_ID,JOB_ID,START_DATE,END_DATE)?values?(r_temp.EMPLOYEE_ID,r_temp.JOB_ID,r_temp.START_DATE,r_temp.END_DATE);
commit;
END?LOOP;
CLOSE?c_temp;
END;
方法2,insert into hr.job_history
select?*?from?hr.job_history?as?of?timestamp?to_timestamp('2007-07-23?10:20:00',?'yyyy-mm-dd?hh24:mi:ss');
這種方法簡單,容易掌握,功能和上面的一樣時間為你誤操作之前的時間,最好是離誤操作比較近的,因為oracle保存在回滾保持段里的數(shù)據(jù)時間有一定的時間限制由undo_retention 這個參數(shù)值決定。
二、如果是刪除一段時間了,但你有比較新的數(shù)據(jù)庫備份,就通過備份來恢復(fù)。新建一個庫,把備份還原上去,導(dǎo)出表數(shù)據(jù),再導(dǎo)入到現(xiàn)在用的庫中去。
三、如果刪除一段時間了,并且無備份,但是數(shù)據(jù)在寫入表的時候同時會寫入其它一些關(guān)聯(lián)表的話,那么就嘗試通過寫SQL語句從其它表取數(shù)據(jù)出來insert到被刪除的表中。
四、恢復(fù)到備份表中
create?table?tableName_bak
as
select?*?from?tableName?as?of?TIMESTAMP?to_timestamp('20081126?103435','yyyymmdd?hh24miss');
分享文章:oracle如何還原表,oracle數(shù)據(jù)還原表數(shù)據(jù)
本文URL:http://muchs.cn/article0/phgsoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、動態(tài)網(wǎng)站、云服務(wù)器、小程序開發(fā)、做網(wǎng)站、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)