一.[b]誤刪資料表解決方案[/b]
1.刪除表中資料兩種方法
a. delete * from my_table;
b. truncate table my_table;
2.刪除整個表
drop table my_table;
如何恢復不小心 drop 掉的表呢,其實 oracle 中也有類似的 "**站"
比如不小心刪除了表 my_table
drop table my_table;
這個時候再用select語句查詢此表時,將會提示表或檢視不存在.
但可以用如下語句查詢到這個表還在oracle**站中:
select * from user_recyclebin where original_name='my_table';
那麼現在就可以用如下語句進行恢復:
flashback table my_table to before drop;
[b]二,誤刪表中資料,通過閃回功能[/b]
select * from sys.smon_scn_time;
--scn 與時間的對應關係
每隔5分鐘,系統產生一次系統時間標記與scn的匹配並存入sys.smon_scn_time表。
select * from student as of scn 592258
就可以看到在這個檢查點的表的歷史情況。
然後我們恢復到這個檢查點
insert into student select * from student as of scn 592258 where id not in (select id from student)
select * from v$transaction ---沒有提交的事務。
select * from flashback_transaction_query; ---回滾事務。
他有一列是undo_sql 得到他就可以回滾剛才提交的事務。
select * from flashback_transaction_query a
where a.start_timestamp between to_date('2008-12-7 14:40:56','yyyy-mm-dd hh24:mi:ss') and
to_date('2008-12-7 14:59:56','yyyy-mm-dd hh24:mi:ss');
oracle誤操作閃回
今天操作oracle資料庫時,做乙個update資料時,不小心少寫了個where,看這粗心大意的。於是乎,把所有的員工工號都給更新成乙個同乙個工號了。這是乙個悲催的故事。因為工號是check了好多次才存入資料庫,工號是唯一性的啊 如果多次commit資料後,那可不可以閃回呢?貌似不可以。閃回只能暫存...
mysql 解決方案 Mysql解決方案
mysql解決方案 一 centos7安裝mysql5.7 wget rpm uvh mysql80 community release el7 3.noarch.rpm yum repolist all grep mysql 發現預設mysql8.0是預設安裝的,然而我們要安裝的是mysql5.7...
oracle容器化docker解決方案
docker提供了輕量級的虛擬化,它幾乎沒有任何額外開銷。提供了乙個從開發到上線均一致的環境。開發效率 一是我們想讓開發環境盡量貼近生產環境 二是我們想快速搭建開發環境 基於docker研發小組 qq群 108636195 概要 1 只在資料庫初始化與資料庫遷移使用,普通迭代還是走提交增量指令碼 2...