간단한 로그 테이블과 표준 스크립트 머리글과 바닥 글은 데이터베이스 변경을 제어하는 데 도움이 될 수 있습니다.
는 제품에 다음과 같은 테이블을 추가
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는 대개 데이터베이스 변경을위한 최상의 도구입니다. 그것은 화려하지 않으며, 확실히 몇 가지 단점이 있습니다. 그러나 모든 오라클 전문가가 어디서든 실행할 수 있습니다.
--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
간단한 프로세스 및 변경 관리를 돕기 위해 먼 길을 갈 수있는 작은 스크립트.
하지만이 간단한 솔루션이 회사에서 불가능할 경우 놀라지 마십시오. 나는 아직도 이런 유형의 시스템이 오라클 문화의 일부가 아니라는 것을 이해하지 못합니다.
중복 작업으로 스케줄러 작업 또는 다른 것을 의미합니까? 그것을 보는 다른 방법은 그것이 더 작은 클라이언트이고 당신이 시간을 잃는 경우에 더 많은 것을 위탁하거나 떨어 뜨리는 것입니다 ... – Ben
안녕하세요. 예정된 일, 네. 죄송합니다. 영어는 제 모국어가 아닙니다. – Malavos
각 스크립트에 코드를 추가하여 이미 실행했는지 또는 실행해야하는지 여부를 확인하면 우발적 인 여러 번 실행으로 인해 발생할 수있는 손상을 제한하는 한 가지 방법입니다. – Brian