sql恢復刪除的表
⑴ plsql怎麼恢復刪除的表
方法一:
1.打開Flash存儲的許可權
ALTER TABLE tableName ENABLE row movement ;
2.把表還原到指定時間點
flashback table tableName to timestamp to_timestamp('2018-03-16 10:40:00','yyyy-mm-dd hh24:mi:ss');
後面的參數為要還原的時間點
方法二:
利用ORacle的快照進行查找某個時間點的數據
s e l e c t * from tableName AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '100' MINUTE)
或
s e l e c t * from tableName as of timestamp to_timestamp('2018-03-16 11:40:00','YYYY-MM-DD HH24:MI:SS');
這樣可以查詢到指定的時間段的數據,再把查詢到的數據復制到原來的表中。
方法三:
刪除表後,可以採用如下操作:在 查詢表user_recyclebin最近操作過的表名稱,然後用閃回(只能用於10G及以上版本)。
s e l e c t * from user_recyclebin;
FLASHBACK TABLE TABLE_NAME TO BEFORE DROP;
如果是刪了或修改裡面的數據,可以先建立一個快表將刪除修改之前狀態的數據找回到這個表中:
CREATE TABLE QUICK_TABLE AS SELECT * FROM TABLE_NAME AS OF TIMESTAMP SYSTEM-1/24 (一小時前的),減去的時間可以自己定。
方法四:
SCN提供了Oracle的內部時鍾機制,可被看作邏輯時鍾,這對於恢復操作是至關重要的
注釋:Oracle 僅根據 SCN 執行恢復。
它定義了資料庫在某個確切時刻提交的版本。在事物提交時,它被賦予一個唯一的標示事物的SCN 。一些人認為 SCN 是指, System Commit Number ,而通常 SCN 在提交時才變化,所以很多情況下,這兩個名詞經常被交替使用。
究竟是哪個詞其實對我們來說並不是最重要的,重要的是我們知道 SCN 是 Oracle 內部的時鍾機制, Oracle 通過 SCN 來維護資料庫的一致性,並通過SCN 實施 Oracle 至關重要的恢復機制。
⑵ SQL資料庫里的表誤刪除要怎麼恢復
1、實現運行Recovery for SQL Server操作如下。
⑶ 怎麼恢復 sql中delete 刪除的表
一、如果是剛剛刪除,那麼有兩方法:
首先用show parameter undo;命令查看當時的資料庫參數undo_retention設置。
顯示如下:
undo_management string AUTO
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOTBS1
undo_retention(保持力),10800單位是秒。即3個小時。
修改默認的undo_retention參數設置:
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保存在回滾保持段里的數據時間有一定的時間限制由undo_retention 這個參數值決定。
二、如果是刪除一段時間了,但你有比較新的資料庫備份,就通過備份來恢復。新建一個庫,把備份還原上去,導出表數據,再導入到現在用的庫中去。
三、如果刪除一段時間了,並且無備份,但是數據在寫入表的時候同時會寫入其它一些關聯表的話,那麼就嘗試通過寫SQL語句從其它表取數據出來insert到被刪除的表中。
⑷ sql 表數據被刪除 怎麼恢復
記下清除數據的時間,然後備份當前的日誌.
backup
log
dbname
to
backupdevice(就是備份設備的名字)
with
norecovery
然後恢復日誌:
restore
log
dbname
from
backupdevice
with
stopat=時間(清除表中數據之前的時間,注意時間格式)
⑸ sqlserver資料庫表數據誤刪除了 怎麼恢復
恢復sqlserver資料庫表數據步驟如下:
一、心態:
1、務必冷靜,事情已經發生不可慌亂。
2、立即查看當前時間,最好能夠精確到秒,並做記錄。
3、應立即向直接上級反映此事,不可隱瞞,防止事態擴大。
4、如果許可權允許,應當立即停止相關應用,防止有新的數據寫入資料庫。
二、恢復:
1、構建新資料庫以及寫入一些數據
如果查詢發現數據不是你想要的,那麼可以重復上述的操作,從備份事務日誌開始,然後最後選擇時間點的時候在縮小范圍。
⑹ SQL里的一個表給刪除了,還有辦法恢復嗎
使用方法:truncate
table
table_name;
操作特性:truncate
只刪除表中的所有數據,不刪除表的結構;
truncate
是ddl操作立即生效,原數據不放到rollback
segment中,不能回滾.,操作不觸發trigger.;
truncate
語句預設情況下將空間釋放到
minextents個
extent,除非使用reuse
storage;truncate
會將高水線復位(回到最開始)。
⑺ sql 刪除表中數據後怎麼恢復
首先有兩種方式可以滿足你的需求:
第一:delete
from
student
該方式下資料庫空間不一定能及時釋放出來,而且如果有identity欄位,之後再插入數據也不會從定義的初始值開始自增。
第二:truncate
table
student
該方式可以及時表空間,也能讓新增數據是identity的初始值為之前建表定義的開始
⑻ sql資料庫用語句刪除表,怎麼恢復
如何恢復被delete/update的數據
操作步驟
1連接到被刪除資料庫的Db
打開logexplorer選擇"file"->"attachlogfile"->選擇伺服器和登陸方式->"connect"->選擇"資料庫"->"attach"
2查看日誌
在左面操作項目的對話框中選擇"browse"項目->"viewlog"->就可以看到當前的Log記錄了
3恢復數據
右鍵某一條log記錄,選擇"undotransation"->"選擇保存文件名和路徑"->然後打開該文件到查詢分析器里執行
T-sql代碼就可以了
例如:如果log是deletetablewhere...的話,生成的文件代碼就是inserttable....
⑼ SQL中如果不小心從一個資料庫中誤刪了一個表,要想恢復它,應該如何操作
FLASHBACK
TABLE
<TABLENAME>
TO
BEFORE
DROP;
不過只能用於不是purge的刪除,如果purge刪除了,除非你有備份,不然回天乏術