国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

delete表的數據后恢復

來源:懂視網 責編:小采 時間:2020-11-09 09:43:08
文檔

delete表的數據后恢復

delete表的數據后恢復:今天測試下了Oracle在刪除表的數據后的恢復方法。 在Oracle生產系統的維護測試中有一張表,將里面的數據delete并commit了,由于業務不能中斷(數據庫不能停機),并且系統還在不斷有數據往該表中寫入。現在需要將之前delete掉的數據恢復,可以使用基于scn
推薦度:
導讀delete表的數據后恢復:今天測試下了Oracle在刪除表的數據后的恢復方法。 在Oracle生產系統的維護測試中有一張表,將里面的數據delete并commit了,由于業務不能中斷(數據庫不能停機),并且系統還在不斷有數據往該表中寫入。現在需要將之前delete掉的數據恢復,可以使用基于scn

今天測試下了Oracle在刪除表的數據后的恢復方法。 在Oracle生產系統的維護測試中有一張表,將里面的數據delete并commit了,由于業務不能中斷(數據庫不能停機),并且系統還在不斷有數據往該表中寫入。現在需要將之前delete掉的數據恢復,可以使用基于scn的恢

今天測試下了Oracle在刪除表的數據后的恢復方法。

在Oracle生產系統的維護測試中有一張表,將里面的數據delete并commit了,由于業務不能中斷(數據庫不能停機),并且系統還在不斷有數據往該表中寫入。現在需要將之前delete掉的數據恢復,可以使用基于scn的恢復。

在刪除之前,最好查詢到數據庫當前的scn,恢復的時候就采用基于這個scn點的恢復。

example:
方法一:
1)創建一張測試表;
CREATE TABLE w AS SELECT * FROM dba_objects WHERE 1 = 2;
2)向該表插入測試數據;
SQL> insert into w select * from dba_objects;

72558 rows created.

SQL> commit;

Commit complete.
3)SQL> select count(*) from w;

COUNT(*)
----------
72558
4)在刪除之前,先獲取數據庫的scn,便于恢復的時候查找到數據在什么時候還是存在的;
SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
117853514 ------ 當前scn號
由于數據庫沒有停,因此scn號也在不斷變化,因此需要查出數據在哪個scn點的時候還是存在的
SQL> select count(*) from w as of scn 117854000; ------查看數據在scn號為117854000時是否存在
select count(*) from w as of scn 117854000
*
ERROR at line 1:
ORA-08181: specified number is not a valid system change number ------應該是系統還沒有走到這個scn號


SQL> select count(*) from w as of scn 117853000;------查看數據在scn號為117853000時是否存在

COUNT(*)
----------
0 ------不存在

SQL> select count(*) from w as of scn 117853500;

COUNT(*)
----------
0

SQL> select count(*) from w as of scn 117853510; 直到查到這個scn才發現數據才存在,因此屆時就是基于這個scn點進行恢復

COUNT(*)
----------
72558
5)模擬刪除數據;
SQL> delete from w;

72558 rows deleted.

SQL> commit;

Commit complete.
SQL> SELECT COUNT(*) FROM w;

COUNT(*)
----------
0
6)模擬數據庫不停機,業務在不斷向表中插入數據; 【Linux公社 http://www.linuxidc.com 】
SQL> insert into w select * from w as of scn 117844000;

72558 rows created.

SQL> select count(*) from w;

COUNT(*)
----------
72558
7)執行基于刪除之前數據仍然存在的scn點的恢復;
SQL> insert into w select * from w as of scn 117853510;
72558 rows created.

SQL> commit;

Commit complete.
8)查詢驗證,之前刪除的數據是否恢復回來了,并且新插入的數據也存在;
SQL> select count(*) from w;

COUNT(*)
----------
145116
大功告成。之前delete掉的72558條數據+新進來的72558條數據,總共是145116條數據。達到我們的要求!

現在稍微總結一下:
在做數據表的刪除操作之前,一點要謹慎,尤其是在生產系統不能停機的情況下,要么首先將數據庫或者表備份一下,再進行刪除,這樣就算需要恢復也可以用備份進行恢復;如果刪除時候沒有做相關備份,在刪除之前一定要先查下系統當前scn,并且驗證出數據在哪個scn點的時候還是存在的(這點很重要,如果沒有找到,就無法恢復刪除的數據)恢復的時候就基于這個scn點的恢復。

方法二:
1)同樣創建上面的測試表和數據;
SQL> select count(*) from w;

COUNT(*)
----------
72558
2)查詢下數據庫的時間,用于確定刪除的數據在什么時間點還存在;
SQL> select to_char(sysdate, 'yyyy-dd-mm hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YY
-------------------
2011-23-03 17:23:55

SQL> select count(*) from w;

COUNT(*)
----------
72558 -------數據在2011-23-03 17:23:55的時間還存在
3)模擬數據的刪除操作;
SQL> delete from w;

72558 rows deleted.

SQL> commit;

Commit complete.
4)將刪除數據之前的時間(數據還存在的時間)轉換為scn;
SQL> select timestamp_to_scn(to_timestamp('2011-03-23 17:22:00','yyyy-mm-dd hh24:mi:ss')) from dual;

TIMESTAMP_TO_SCN(TO_TIMESTAMP('2011-03-2317:22:00','YYYY- MM-DDHH24:MI:SS'))
---------------------------------------------------------------------------
117872363
5)驗證這個scn點時數據的存在;
SQL> select count(*) from w as of scn 117872363;

COUNT(*)
----------
72558
6)創建基于原表數據還存在時的臨時表;
SQL>create table q as select * from w as of scn 117872363;

Table created.
以上語句由兩條語句合并而成:
SQL>create table q as select * from w where 1 = 0;

Table created.

SQL>insert into q select * from w as of scn 117872363;

72558 rows created.


SQL> select count(*) from q;

COUNT(*)
----------
72558
7)由于業務并未中斷,所以原表里面也有新數據進來了,此時只要將剛創建的臨時表的數據導出,然后再倒入到原表中即可。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

delete表的數據后恢復

delete表的數據后恢復:今天測試下了Oracle在刪除表的數據后的恢復方法。 在Oracle生產系統的維護測試中有一張表,將里面的數據delete并commit了,由于業務不能中斷(數據庫不能停機),并且系統還在不斷有數據往該表中寫入。現在需要將之前delete掉的數據恢復,可以使用基于scn
推薦度:
標簽: 恢復 的數據 數據
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 亚洲 欧美 日韩 综合 | 欧美日本中文字幕 | 国产在线高清不卡免费播放 | 成人午夜精品久久久久久久小说 | 全免费一级午夜毛片 | 亚洲伊人精品 | 国内精品伊人久久久影视 | 欧美日本一道本 | 五月天婷婷在线观看 | 国产一区二区不卡免费观在线 | 日韩第八页| 国产一区二区三区在线视频 | 欧美 亚洲 一区 | 亚洲 欧美 自拍 另类 | 黑人一区二区三区中文字幕 | 国产精品va在线观看一 | 欧美日本一道本 | 中文字幕亚洲天堂 | 日韩高清毛片 | 精品视频一区二区三区四区五区 | 久久久午夜 | 久久国产精品久久久久久久久久 | 国产成人精品一区二区不卡 | 91大神在线精品视频一区 | 亚洲精品一二区 | 精品国产一区二区三区在线观看 | 一97日本道伊人久久综合影院 | 欧美日本一区二区 | 欧美日韩高清在线观看一区二区 | 久久精品亚洲一区二区三区浴池 | 哪里有毛片 | 国产精品毛片久久久久久久 | 日韩精品免费观看 | 萌白酱喷水 | 日韩国产在线观看 | 日韩精品在线视频 | 国产精品毛片在线直播完整版 | 亚洲视频一区二区三区 | 最新国产精品精品视频 | 国产精品成人一区二区 | 91在线一区二区 |