Oracle中用於資料備份的觸發器及表結構

2021-05-23 18:29:56 字數 1745 閱讀 9916

執行本文的示例前,請對當前的資料表的插入、刪除、更新等進行記錄,並把操作日期、操作者、原來資料、現在資料都作為備份,以便在當前備出現問題的時候能夠給以恢復。

注釋:最好把備份表放在不同的磁碟上或不同的資料庫中:

1、建立用於資料備份及操作記錄的表:

create table aud_prgamd1(

w_rowid varchar2(50), --行id

w_action varchar2(1), --操作

dttm   date, --操作日期

opuser varchar2(30), --操作者

b$code varchar2(10), --原表中的code

a$code varchar2(10), --現表中的code

b$fty varchar2(10), --原表中的fty

a$fty varchar2(10) –現表中的fty

);

2、建立實際資料表:

create table prgamd

(code varchar2(20),

fty varchar2(20)

)

3、建立自動備份觸發器:

create or replace trigger aud_prgamd_trigger

after insert or update or delete

on prgamd

for each row

declare

v_rowid varchar2(50);

v_action varchar2(1);

v_opuser varchar(30):='unknow';

begin

if inserting then

v_rowid:=:new.rowid;

v_action:='i';

elsif updating then

v_rowid:=:new.rowid;

v_action:='u';

elsif deleting then

v_rowid:=:old.rowid;

v_action:='d'; 

end if;

v_opuser:=user;

insert into aud_prgamd1(

w_rowid,

w_action,

dttm,

opuser,

b$code,

b$fty,

a$code,

a$fty

)values(

v_rowid,

v_action,

sysdate,

v_opuser,

:old.code,

:old.fty,

:new.code,

:new.fty

);end;

注釋:以上的old表示被操作表中原來的資料指向,new表示被操作表中現在的資料指向。

4、操作測試:

insert into prgamd

values('x','x');

select * from aud_prgamd1

select * from prgamd;

update prgamd set code='m1' where fty='x';

commit;

oracle資料備份

資料庫備份 dmp檔名稱 log檔名稱 true 備份成功 false 備份失敗 public static bool dbbackup string dmpfilename,string logfilename 如果log檔案不存在,建立檔案並釋放 if file.exists logfilena...

oracle 資料備份

1 匯出別的主機上使用者的所有資訊 直接在dos下寫就可以了,不需要進入資料庫 匯出所有物件 表 儲存過程 檢視 觸發器.exp gjfj web gggggg wangzhan file d 1129.dmp full y compress y log d x exp.log 匯出固定表 exp ...

註解中用於 target的方法annotation

target target說明了annotation所修飾的物件範圍 annotation可被用於 packages types 類 介面 列舉 annotation型別 型別成員 方法 構造方法 成員變數 列舉值 方法引數和本地變數 如迴圈變數 catch引數 在annotation型別的宣告中使...