簡單的日誌表和標準腳本頁眉和頁腳可以幫助控制數據庫更改。
這樣添加一個表格到您的產品:
create table script_log
(
id number,
description varchar2(4000),
was_successful varchar2(1) default 'N',
create_date date default sysdate,
create_by varchar2(30) default user,
constraint script_log_pk primary key (id),
constraint script_log_ck1 check (was_successful in ('Y', 'N'))
);
所有變動都必須運行使用標準工具和模板。 SQL * Plus通常是數據庫更改的最佳工具。這不是幻想,它肯定有一些怪癖。但它可以在任何地方運行,並且每位Oracle專業人士都知道。
--Header, perhaps in a .SQL file that accepts parameters.
whenever sqlerror exit
variable script_id number
exec :script_id := 1;
insert into script_log(id, description) values(:script_id, 'First script.');
commit;
<add changes here>
--Footer, may also be in a .SQL file.
update script_log set was_successful = 'Y' where id = :script_id;
commit;
prompt Script done.
如果有人試圖運行腳本第二次將失敗,此錯誤:
*
ERROR at line 1:
ORA-00001: unique constraint (JHELLER.SCRIPT_LOG_PK) violated
一個簡單的過程和一些腳本可以走很長的路,以幫助管理的變化。
但是,如果您的公司不可能實現這樣的簡單解決方案,請不要感到驚訝。由於原因,我仍然不明白這種類型的系統不是Oracle文化的一部分。
通過重複的工作你的意思是調度工作或其他?看着它的另一種方式是,如果它是一個較小的客戶,並且你失去時間要麼收取更多的費用,要麼丟掉它們...... – Ben
嘿@本。定時工作,是的。對不起,英文不是我的母語。 – Malavos
向每個腳本添加代碼以檢查它是否已經運行或者是否需要運行是限制意外多次執行可能導致的損壞的一種方法。 – Brian