Oracle記錄表刪除操作簡單方法

2021-09-07 20:32:35 字數 1250 閱讀 6415

最近專案中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...