最近專案中oracle庫中乙個表log_gpackage有資料丟失現象,但因為沒有啟用歸檔,所以cdc和dataguard都無法使用。google一下,最簡單的方法,增加觸發器處理邏輯:
1---建立觸發器2--
建立記錄表,該錶分別記錄了,刪除的使用者、機器名、ip及刪除時間等
3create
table log_gpackage_history_1120 as
4 (select sid,username,program,machine,'
000.000.000.000
' ipaddress,sysdate moditime from v$session where0=
1);56
--建立目標表的觸發器,只記錄刪除操作
7create
orreplace
trigger
log_gpackage_history_tr
8 before delete
ondbusrdms.log_gpackage
9for
each row
10begin
11insert
into log_gpackage_history_1120 select sid,username,program,machine,sys_context('
userenv
','ip_address
'),sysdate from
v$session
12where audsid = userenv('
sessionid');
13end;14
1516
--測試資料
17select
*from
log_gpackage;
18delete
from log_gpackage where logseqno=
'172886';
1920
21--
檢查測試結果
22select
*from
log_gpackage_history_1120
2324
sid username program machine ipaddress moditime251
484 dbusrdms plsqldev.exe workgroup\ap5 192.168.127.8
2018-11
-2023:00:18
ORACLE恢復刪除表或表記錄
對誤刪的表,只要沒有使用purge永久刪除選項,那麼從flashback table區恢復回來希望是挺大的。一般步驟有 1 從flashback table裡查詢被刪除的表 select from recyclebin order by droptime desc 2.執行表的恢復 flashbac...
oracle 刪除表中重覆記錄
表demo是重複拷貝自dba objects,有88萬左右,不重複的是27323,沒有索引 方法一 delete from demo a where a.rowid select max rowid from demo b where b.object id a.object id 耗時 幾個小時以...
oracle 查詢表的操作記錄
1,檢視某一時間的執行過的所有sql select t.sql text,t.first load time from v sqlarea t where t.first load time like 2019 01 28 order by t.first load time desc 2019 0...