一、如果是剛剛刪除,還在undo保留策略所設定的時間裡面。
首先用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(『2017-10-23 10:20:00』, 『yyyy-mm-dd hh24:mi:ss』);
create table tablename_bak as select * from tablename as of timestamp to_timestamp('20171126 103435','yyyymmdd hh24miss');
這種方法簡單,容易掌握,功能和上面的一樣時間為你誤操作之前的時間,最好是離誤操作比較近的,因為oracle儲存在回滾保持段裡的資料時間有一定的時間限制由undo_retention 這個引數值決定。
二、如果是刪除一段時間了,但你有比較新的資料庫備份,就通過備份來恢復。新建乙個庫,把備份還原上去,匯出表資料,再匯入到現在用的庫中去,這個方法時間長,但也能恢復。
有條件的表聯接
表1和表2在聯接時,希望顯示表1的全部記錄以及表2的部分記錄。嘗試使用下面的 sql 語句 select table1.table2as.from table1 left outer join select from table2 where rightname 計畫編制員 as table2as ...
RAILS有條件的校驗
rails中所有的驗證宣告都可以接受 if 選項,可以指定一段在校驗之前執行的 比如 只有在郵箱位址不為空的時候才驗證郵箱位址的格式 使用proc物件,呼叫時,傳入當前的模型物件作為引數,返回false時,不做校驗 validates format of email,with a za z0 9 a...
myslq有條件插入資料
要求是這樣的 我有乙個表存著基礎資料有乙個欄位是 管理號 我的目的是先查詢最新的管理號按照規則生成新管理號 然後insert到表裡新資料 由於查詢並不鎖表 所以在查詢到insert這步中間會有可能兩線程查詢到相同的管理號?參考了關鍵是如下的mysql語句,插入多條記錄 insert into cli...