2009-08-11 4 views
3

소스 제어 (Microsoft Visual Studio TFS를 사용하고 있습니다)에 DDL/DML 및 PL/SQL 스크립트를 저장하는 가장 좋은 방법에 대한 권장 사항/지침을 찾고 있습니다. 자체 개발 한 SaaS 애플리케이션.소스 제어에서 Oracle DDL/DML 스크립트, PL/SQL

우리는 매우 직설적 인 Dev/Main 브랜치 모델을 기반으로 한 프로젝트에서 일하는 개발자가 7 명까지 있습니다. 스크립트간에 종속성 (주로 실행 순서)이 있습니다.

비슷한 상황에서 잘 된 점은 무엇입니까?

+1

에 로그인 할 수 있습니다. http://stackoverflow.com/questions/706026/706596#706596 및 그 다양한 링크를 보았습니까? – dpbradley

+0

저는 스크립트 구성 및 후속 배포, 우선 순위 문제 처리 등을위한 지침/우수 사례를 더 찾고 있습니다.하지만 질문에 대한 답변을 주셔서 감사합니다. –

+0

이 [관련 스택 오버플로 게시물에 몇 가지 의견을 넣어 (http://stackoverflow.com/questions/706026/how-do-you-work-on-oracle-packages-in-a-collaborative-version-controlled) -environ/7122534 # 7122534) –

답변

0

우리는 DDL 스크립트를 소스 제어하에 보관했으며 DML의 경우 이와 비슷한 것을 사용했습니다 : , 그러나 우리는 Perl로 작성 되었기 때문에 약간 어색했습니다.

0

우리의 소스 제어에서 다리에서 단순화 된 모습은 다음과 같습니다

\DatabasePatches 
    \Core 
    \Data 
\DatabaseSource 
    \Core 
    \SchemaA 
    \SchemaB 
    \SchemaC 

DDL 작업의 특정 덩어리 작성 및 데이터 패치에서 체크인 DML/이주 핵심 패치 아래에 체크하십시오. 패치 레이블의 일부는 순차 번호이며 패치가 나중에 "DATAPATCH01530 - migrate of xyz.sql"이라고 불릴 수 있도록 순차 번호입니다 (수동으로 패치를 삽입 할 때마다 10을 수동으로 추가합니다).

새 환경에 배포 할 때 모든 핵심 패치가 실행되고 데이터 패치가 실행됩니다. 핵심 패치의 다음 부분에 중요한 DML이있는 경우 해당 핵심 패치에 포함될 수 있습니다.

새 위치에서 처음 패치를 실행하면 파일은 소스 컨트롤에서 FINAL로 표시됩니다 (우리는 PVCS를 사용하고 FINAL이라는 사용자로 파일을 잠급니다). 불일치가 발생합니다. 추가 변경 사항은 별도의 패치에 포함되어야합니다.

저장 프로 시저, 함수, 패키지 등은 DatabaseSource 레그에서 저장되고 체크 인됩니다. 스크립트가 실행되기 전에 이러한 객체가 승격되었는지 보장 할 수 없으므로 스크립트에서 스텁을 생성하여 (예를 들어 뷰가 SELECT '1'로 이중으로 생성되고 패키지에는 더미 프로 시저가 포함됨) 객체를 보장합니다 존재하고 당신에게 특권 등을 줄 수 있습니다. 실제 객체가 승격되면 스텁을 대체하고 특권을 유지합니다.

0

LiquiBase (http://en.wikipedia.org/wiki/LiquiBase) LiquiBase는 데이터베이스 변경 추적, 관리 및 적용을위한 오픈 소스 데이터베이스 독립적 라이브러리입니다. (XML 기반)

그것은 당신 자신의 방식으로 스크립트를 주문할 수있는 빌드 시스템을 가지고 있습니다. 당신이 오직 필요로하는 것은 - 올바른 순서로 포함됩니다. 나는 그것이 도움이되어야한다고 생각한다.

이 도구를 사용하여 데이터베이스 DML을 추적하고, PLSQL 변경 사항을 GIT 버전 제어로 추적 할 것입니다.

0

왜 DDL 스크립트를 유지 하시겠습니까? 다시 사용할 수 없습니다. 당신은 그들을 생산과 비교하지 않고 그들을 믿을 수 없습니다. DDL을 유지하는 유일한 이유는 좋은 생각처럼 들리지만 각 구성표를 단일 파일에 넣어 전체 기본 줄을 비교할 수 있어야합니다. 이렇게하면 배포 전에 변경 사항을 확인하기 위해 diff를 수행 할 수 있습니다.

많은 프로젝트에서 DDL을 확인한 결과 코드가 아닌 소스 코드 체크 아웃에 변경 사항을 적용하여 변경 사항을 확인했습니다. 우리는 변화를 잃었다.

DB가 프런트 엔드 소스 코드와 다릅니다. 데이터베이스에 연결하고 sql-plus 또는 toad를 통해 변경 사항을 적용하여 응급 문제를 해결할 수있는 능력을 갖춘 사람이라면 소스 코드 제어로 변경하지 않아도됩니다. DBA가 변경을 할 수 있습니다 ....

제 의견으로는 좋지만 실제로는 잘 작동하지 않습니다.

+0

설명하는 문제는 버전 제어가 적절하고 일관되게 사용될 때 유익한 이유 중 일부입니다. 사람들이 응급 조치를 취한 후에도 적절한 변경 제어 절차를 따라야하며 버전 제어 도구를 사용하면이를 가능하게합니다. – Tim

1

Oracle Database에서 PL/SQL 코드 (또는 CREATE OR REPLACE 명령으로 생성 할 수있는 다른 모든 객체)를 관리 할 수있는 도구를 구축했습니다. Git을 Oracle 데이터베이스에 연결합니다.

커밋, 재설정, 분기, 복제, 병합, 끌어 오기 등과 같은 기본적인 힘내 작업을 수행 할 수 있으며, Gitora는 데이터베이스에서 PL/SQL 코드를 자동으로 업데이트합니다.

테이블을 처리하지 않으므로 여전히 수동 작업입니다.

우리는 무료로 모든 사람들이 Gitora를 사용할 수 있도록하기로 결정했습니다. 그것은 '14 년 12 월에 나옵니다. 가입하면 www.gitora.com

관련 문제