Oracle誤操作解決方案

2021-08-30 15:06:53 字數 1403 閱讀 1181

一.[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...