현대 프로그램 개발환경에서 CVS, SVN 같은 버전관리 툴은 필수 툴이 되어 버렸다. 그러나 DB 개발언어인 Oracle의 PL/SQL 언어로 함수나 패키지, 프로시저 등을 개발할 때 버전관리 툴을 사용할까? 대부분 잘 사용하지 않는다.

사용하지 않는 원인을 보면 거의 모든 버전관리시스템이 파일기준으로 동작을 하는데 비해 PL/SQL 개발은 따로 파일에 저장을 하지 않고 DB에 바로 저장을 하기 때문일 것이다. 물론 부지런한 개발자는 항상 PL/SQL 소스를 로컬 파일에 저장해 두고, 로컬 파일 정보를 별도의 버전관리 시스템의 클라이언트를 이용해서 버전관리를 할 수는 있을 것이다. 그렇지만, 그게 얼마나 귀찮은  일인가? 개발할 때 마다 수많은 PL/SQL 코드를 매번 파일로 저장하고, 별도로 COMMIT을 해야 한다면? 혹시라도 단 하나의 파일이라도 COMMIT해야 하는걸 잊어버린다면?
이런 귀찮은 작업을 DB 클라이언트 툴이 다 해준다면 쉽게 PL/SQL 같은 프로그램도 버전관리를 할 수 있을 텐데.. 그런 툴이 없다 보니 대부분의 DBA나 DB 개발자들은 버전관리를 잘하지 않는것이다.

그런데, 그런 기능을 지원해주는 툴이 예전부터 있었다.
“Toad for Oracle” 대부분의 Oracle 개발자들이 알고 있는 두꺼비. 그러나 이런 기능이 있는지 알고 있는 사람은 정말 몇 안되며 이 Team Coding 기능을 필드에 적용하는 곳은 더더욱 적을 것으로 생각된다.

Toad에서 Team Coding 기능을 활성화하고, 서드파티 버전관리 시스템(CVS, SVN 등)과 연동한 후 Toad의 스키마 브라우저에서 Oracle에 저장된 프로그램을 편집하려고 에디터로 오픈하면 (정확히는 수정을 위해 소스를 Toad에서 체크아웃하면) Toad는 버전관리시스템에서 최신의 소스를 가져와 로컬 파일 정보도 수정 반영한 후 에디터에 로드한다. 그리고 소스 내용을 Toad에서 수정한 후 컴파일하여 Oracle에 반영한 다음 소스를 체크인하면 Toad는 자동으로 로컬파일을 수정하고 수정된 내용을 버전관리시스템에 COMMIT 한다. 버전관리시스템과 연동이 얼마나 편리한가? 별도로 파일저장 버튼 한번 클릭하지 않고 Toad에서 체크인과 체크아웃만 하면 된다. (Toad는 두 명 이상이 동시에 PL/SQL 소스를 수정하지 못하게 하도록 Team Coding 기능 lock을 사용하여 막는다. 체크아웃 한 사람만 수정이 가능하다)

Toad Team Coding Overview

Toad의 초기 제품은 Microsoft의 Microsoft SCC API를 지원하는 툴만 버전관리를 지원 했었다.
그 후 Microsoft SCC (Source Code Control)API로 CVS와 SVN을 지원하는 Component가 나와  CVS나 SVN과 연동은 가능하도록 변경되었다.

Toad v10.5에 이르러 CVS와 SVN의 경우 별도의 SCC 지원 컴포넌트 없이 command-line client만 설치하면 쉽게 연동되도록 코드가 개선되었으며, 이전보다는 쉽게 형상관리 툴과 연동을 할 수 있게 되었다.

Toad v10.6 현재 Direct Supported되는 버전관리 툴은 다음과 같다.

 Version Control Provider  Version
 Concurrent Versions System (CVS)*  CVS 1.11.9 and later
CVSNT 2.08 and later
 Microsoft Team Foundation Server  2005, 2008, and 2010
 Microsoft Visual SourceSafe  5.0, 6.0, and 2005 (8.0)
 Perforce*  2009.2 (command-line client)
 PVCS  Note: PVCS 6.6.1 and 6.8.0 are specifically not supported with Team Coding.
 Subversion*  1.6.5 and later

* 표기가 있는 버전 컨트롤러는 command-line client를 이용하여 접속함.

이 목록에 없는 제품이라 하더라도 Microsoft SCC API를 지원한다면 Toad를 통해 버전관리를 할 수 있다.

Toad에서는 Team Coding 전략을 아래 표에 나와있는 세가지 방식 중 하나를 선택해서 사용할 수 있다. Toad의 팀 코딩 기능과 서드 파티 버전관리 시스템 연동의 조합에 따라 달라지며, 그에 따라 Setup 자체가 다르므로 개발팀에게 가장 잘 맞는 방식으로 설정하는 것이 좋을 것이다

 소스 컨트롤 방식 장점   단점
 Toad 팀 코딩 (X)

서드파티 소스컨트롤 (O)

버전 히스토리 관리 가능

추가적인 database object 설치가 필요 없음.
Editor와 Project Manager에서만 사용이 가능

Database Object를 lock 할 수 없음.
 Toad 팀 코딩 (O)

서드파티 소스컨트롤 (X)

Check out을 통해 database object를 lock 할 수 있음.

Code Control Group을 통해 lock 관리해야 될 객체를 지정할 수 있음.

Toad내의 database object가 열리는 어떤 화면에서도 사용가능.
Team Coding을 위해 추가적인 Object를 설치해야 함.

버전 히스토리 관리가 불가능.
 
Toad 팀 코딩 (O)

서드파티 소스컨트롤 (O)
 위 두 방식의 장점을 모두 가짐.  설치 및 설정이 가장 복잡함.

*Toad Team Coding : 팀 코딩은 Oracle Object를 lock/unlock 하여 의도하지 않는 변경을 예방할 수 있는 기능. 이 기능을 위해 Toad Server-side Object(테이블, 패키지 등)을 설치해야 한다.

*서드파티 소스컨트롤 : svn, cvs, Team Foundation Server 같은 서드파티 버전 컨트롤 시스템을 이용하여 일반적인 소스의 버전 관리 기능을 이용할 수 있다.


Toad Team Coding & Version Control Integration Setting

Toad에서 Team Coding과 서드파티 소스컨트롤을 모두 이용하기 위해서는 아래와 같이 크게 4가지 단계에 따라 설치 및 설정을 해야 한다.

1. Toad Server Side Object Install
2. SVN Server Install & Setting
3. SVN Command Client Install
4. Toad Team Configuration

Team Coding을 위해 좀 많은 설치 및 설정을 해야 하는 게 귀찮기는 하다. 하지만, 투입되는 비용과 노력에 비해 얻는 효과가 크다면 한 번 해 볼만 하지 않을까?

1. Toad Server Side Object Install

Toad Team Coding을 이용하기 위해서는 Oracle에 Toad 계정과 몇 개의 테이블 및 관련된 Object  등이 생성되어야 한다. 이 것을 해주는 것이 Toad Server-side Objects Wizard다. Oracle 서버에 테이블 및 Object를 설치함으로써 Team Coding 뿐만 아니라 보안관리, 튜닝 등 Toad의 고급 기능을 활용할 수 있으므로 Team Coding과 상관없이 구성하는 것도 좋다.

Server Side Objects Wizard 실행 시 일반적으로 System 계정으로 로그인하여 실행해야 한다. System 계정이 꼭 필요한 것은 아니며 꼭 필요한 몇 개의 권한만 가지고 있다면 어떤 계정으로도 실행해도 상관없다.

메뉴 > Database > Administrator > Server Side Objects Wizard 클릭

첫번째 항목을 선택. Next >

기존에 이미 TOAD 스키마가 있는 경우 업그레이드하며, 신규 설치도 할 수 있는 첫번째 옵션을 선택. NEXT>

TOAD 계정이 없다고 생성을 한다는 메시지가 나온다. OK>



TOAD 스키마에 생성할 기능들을 선택하는 화면이다. Team Coding을 위해서는 Team Coding 항목만 선택하면 되지만, 추후 Toad의 다양한 기능을 경험하기 위해서 전부 다 선택하도록 하겠다. Next >



TOAD Space Manager 기능을 사용하기 위해서 권한이 필요하다는 메시지가 출력된다. 그림처럼 선택 후 Next >

 

Toad Profiler 기능을 사용하기 위해서 몇몇 권한이 필요하다고 메시지가 출력됨. 그림처럼 선택 후 Next >



이 화면에서는 TOAD 계정의 패스워드와 테이블스페이스를 지정해야 한다 Next >

테이블 스페이스가 생성되지 않았거나 Toad 전용으로 테이블 스페이스를 하나 생성해야 한다면, 현 화면을 그대로 둔 채 SQL Editor를 열어 아래 그램처럼 간단한 테이블 스페이스를 생성하면 된다.
* 데이터파일 경로 및 테이블 스페이스 명은 각자의 시스템에 맞게 수정해야 한다.


 


Toad Team Coding을 위한 Role 생성 화면. 신규 생성이니 전부 Create New를 선택한 후 Next >



Toad Server Side Objects 나머지 기능 설치를 위한 테이블 스페이스 지정화면. 전부 이전 화면에서 생성한 테이블스페이스 “TOAD_DS”를 선택. Next >



앞에서 설정한 모든 것들이 스크립트로 만들어 졌다.. Run Script 버튼을 누르면 바로 실행이 된다.
Run Script >

에러 없이 스크립트가 실행되었다. 확인>



스크립트가 실행될 때 생성된 메시지가 출력된다. 성공적으로 설치되었으니 그냥 Next >


Toad Security Administrator를 지정하는 화면. 일단 이 화면은 Next >
추후 필요할 때 설정하도록 하겠다.


Setup 이 끝났다.



현 상태에서 TOAD 계정으로 로그인하여 Menu > Utilities > Team Coding >Team Coding Status 선택 시 나타난 화면이다. Team Coding에 대한 필요사항이 Install 되었다고 나오며, VCS(Version Control System)에 대한 정보가 설치되지 않았다고 보여주고 있다.

화면이 많아서 복잡한 듯 보이지만 실제는 TOAD 계정 생성하고 몇몇 테이블 및 패키지 설치하고, TOAD 계정에 몇몇 권한만 할당해주는 단순 작업이다.

2. SVN Server Install & Setting

이제 Team Coding 을 위한 서브버전 서버를 설치한다. 로컬이든 네트워크 환경이든 상관없다. 필자는 로컬 환경에 Subversion Server를 설치 할 것이다.

윈도우용 Subversion Server로는 가장 사용이 편리한 VisualSVN Server를 설치할 것이다. 서브버전 서버로 다른 어떤 툴을 사용해도 무방하다.

http://www.visualsvn.com/server/download/ 이곳에서 VisualSVN Server를 다운받아서 설치한다.

2-1 SVN Server Install


VisualSVN Server와 관리콘솔 모두 설치를 선택한 후 Next>


설치위치, SVN Server과 관리할 Repository 위치, 접근 포트를 설정한다. 인증은 서브버전 인증을 사용하도록 설정한다. Next 하시면 설치 완료..

2-2. SVN Server Setting

먼저 SVN에 접속할 유저 계정을 하나 생성한다.
좌측 트리에서 Users를 우측마우스 클릭 > Create Users.. 선택. 계정명과 패스워드를 입력한 후 OK 버튼 클릭.


다음은 그룹 생성 단계.

유저 생성과 동일한 방식으로 Groups를 우측 마우스 클릭한 후 Create Group.. 선택. 그룹명을 입력한 후 멤버를 Add 버튼을 클릭하여 생성한 계정을 멤버로 등록한다.


이제 VisualSVN 내에서 Repository를 생성해야 한다.
VisualSVN 관리콘솔에서 좌측메뉴의 Repositories 우측 마우스 클릭 > Create New Repository.. 선택.


Repository 명을 입력합니다.
Create default Structure를 선택하시면 Oracle 폴더 하위에 trunk, branches, tags같은 서브폴더가 생성된다.

일반적으로 SVN의 레파지토리 구성은 레파지토리 > 프로젝트 > trunk/branches/tags 같은 방식으로 구성을 하지만 Toad는 프로젝트 하위에 디렉토리를(예: trunk 등) 만들어서 해당 디렉토리 레벨을 Check Out하면 제대로 인식하지 못하는 문제가 있다. 
그러므로 레파지토리나 하위 프로젝트 생성시 “Create default structure” 체크를 반드시 끄고 만든다.


프로젝트 생성:
생성된 레파지토리명(Oracle) 우측 클릭 > 새로 만들기 > Project Structure를 클릭.


프로젝트명을 입력하고 OK버튼을 클릭.

이렇게 프로젝트를 생성하면 프로젝트 폴더 하위에 trunk, branches, tags 세 폴더가 생성된다.
위에서 언급했듯이 이렇게 폴더가 있더라도 Toad에서 제대로 처리하지 못하므로 VisualSVN Sever의 좌측 트리에서 각각의 trunk, branches, tags 폴더를 삭제한다.
물론, 삭제하지 않아도 사용상의 문제는 전혀 없다.

3. SVN Command Client Install 

3-1. SVN Command Client Install (sliksvn)

Toad는 command-line subversion client tool이 반드시 필요하다. SVN command tool이 여러가지 있지만 필자는 그 중 silksvn를 설치하여 팀개발 환경을 구성할 것이다.

http://www.sliksvn.com/en/download 에서 자신의 컴퓨터 환경(x32, x64)에 맞는 sw를 다운받아서 설치하면 된다. 설치는 간단하다.

Choose Setup Type에서 Custom을 선택한다.


 


 

Subversion Client를 제외하고는 다 설치하지 않도록 설정을 바꾼 다음 Next를 눌러 설치를 진행한다. Team Coding 환경 구성 시 Toad svn.exe만 필요로 한다.

그리고 sliksvn command-line tool이므로 조작이 불편해 추가적으로 GUI Client tool tortoisesvn을 설치할 것이므로 다른 설치 옵션은 모두 빼고 설치한다. 물론 별도의 .GUI 클라이언트를 설치하지 않고 sliksvn만으로 사용한다면 좀 더 많은 옵션으로 설치하는 게 좋을 것이다.

 

끝으로 GUI 환경의 subversion client도 하나 설치한다. 여기서는 가장 많이 사용하는 tortoisesvn 을 설치한다. 별도의 svn client 는 최초 checkout 할 때만 사용하므로 tortoisesvn 설치여부는 각자 판단해서 설치하면 된다.

 

http://tortoisesvn.net/downloads.html 이곳에서 버전에 맞는 설치파일을 다운받아서 설치하시면 된다. 워낙 단순한 install이라서 별도의 설명은 생략하도록 하겠다.


한참을 달렸지만, 아직 중요한 Toad에서의 Team 환경 및 SVN 연동을 위한 설정 부분이 남았다. 이 부분은 part2 에서 살펴보도록 하겠다.

 

+ Recent posts