2014-02-17 7 views
1

소규모 고객 중 하나는 소규모 IT 팀을 유지 관리하는 자체 데이터베이스를 보유하고 있습니다. 때로는이 작은 IT 팀이 자체 데이터베이스를 수정해야하지만 때로는 회사에서 제공하는 스크립트를 확인하지 않고 자신의 의지로 다시 사용할 수 있습니다. 이로 인해 때때로 중복 작업이 발생하며이 팀 구성원은 다른 구성원과 동일한 스크립트를 실행합니다.Oracle에서 중복 작업 방지

나의 관점에서 볼 때, 심지어 고객의 전문가가 원인이기도하지만 고객에게 솔루션을 제공하는 것은 당사의 책임입니다. 어떻게 이러한 질병을 예방할 수 있습니까?

오라클에서는 전혀 경험이 없습니다. 저는 자바 스크립트와 .net 개발자입니다. 그래서이 문제에 대해 상당히 분실했다고 추측 할 수 있습니다. 그러나 나는 여기있는 사람들의 대부분이이 점에 대해 정말로 걱정하지 않으므로, 나의 범위를 넘어서 뭔가를하고 싶었다. 우리는 매월이 데이터베이스를 고치는 데 많은 시간을 허비합니다. 수동으로 중복 제거.

감사합니다.

+0

중복 작업으로 스케줄러 작업 또는 다른 것을 의미합니까? 그것을 보는 다른 방법은 그것이 더 작은 클라이언트이고 당신이 시간을 잃는 경우에 더 많은 것을 위탁하거나 떨어 뜨리는 것입니다 ... – Ben

+0

안녕하세요. 예정된 일, 네. 죄송합니다. 영어는 제 모국어가 아닙니다. – Malavos

+1

각 스크립트에 코드를 추가하여 이미 실행했는지 또는 실행해야하는지 여부를 확인하면 우발적 인 여러 번 실행으로 인해 발생할 수있는 손상을 제한하는 한 가지 방법입니다. – Brian

답변

2

간단한 로그 테이블과 표준 스크립트 머리글과 바닥 글은 데이터베이스 변경을 제어하는 ​​데 도움이 될 수 있습니다.

는 제품에 다음과 같은 테이블을 추가

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 

간단한 프로세스 및 변경 관리를 돕기 위해 먼 길을 갈 수있는 작은 스크립트.

하지만이 간단한 솔루션이 회사에서 불가능할 경우 놀라지 마십시오. 나는 아직도 이런 유형의 시스템이 오라클 문화의 일부가 아니라는 것을 이해하지 못합니다.

+0

안녕하세요. Jonearles. 이 답변을 주셔서 감사합니다; 나는 이것을 가지고 몇 가지 시험을하고, 나의 상사 중 한 사람과이 오류를 시뮬레이트 할 것이다. 이런 상황을 예방할 수 있다는 것을 보여 주려고 노력할 것입니다. 오라클에 대해 더 많은 경험을 가진 사람이이 문제를 조사한다면이를 방지 할 수 있습니다. 고마워요! 이 상황에 다른 사람들이 있을지, 아니면 이것을 해결하는 방법에 대한 다른 아이디어로 답을 받기 전에 조금 더 기다릴 것입니다. 어쨌든 +1하십시오! – Malavos

+0

그 모든 것의 여파. 나는이 간단한 기록을 만들기 위해 그 때 확신 할 수 없었다. 그들은 단순히 스크립트 생성을 고유 ID로 변경하고 복제본을 정리했습니다. * 한숨 * 어쨌든 고마워! – Malavos