programing

Oracle에서 저장 프로시저를 팀 단위로 작업할 수 있는 툴?

css3 2023. 10. 17. 20:27

Oracle에서 저장 프로시저를 팀 단위로 작업할 수 있는 툴?

팀에서 Oracle 저장 프로시저를 개발하는 데 사용하는 툴은 무엇입니까?

  • 작업 중인 현재 절차를 자동으로 "잠금"하여 팀 내 다른 사용자가 완료할 때까지 해당 절차를 변경할 수 없습니다.
  • 저장 프로시저에서 변경한 내용을 오라클 데이터베이스에서 Subversion, CVS, ... 저장소로 자동 전송하려면 다음과 같이 하십시오.

감사합니다!

원래 포스터가 이걸 계속 모니터링하고 있는지는 모르겠지만 어쨌든 질문을 해보겠습니다.

원래 게시물에서 다음을 수행할 수 있도록 요청했습니다.

작업 중인 현재 절차를 자동으로 "잠금"하여 팀 내 다른 사용자가 완료할 때까지 해당 절차를 변경할 수 없습니다.

여기서 문제는 저장된 프로시저를 "잠금"할 수 없는 제품보다 개발 패러다임의 하나일 수 있습니다."다른 사람이 바꾸지 않도록 이것을 잠그고 싶다"는 말을 들을 때마다 사람들이 스키마를 공유하고 있고 모든 사람들이 같은 공간에서 발전하고 있다는 느낌을 즉시 받습니다.

그렇다면 모든 사람이 데이터 모델의 복사본과 함께 자신만의 스키마를 갖도록 하는 것은 어떨까요?정말 여러분, 다른 스키마를 만드는 데 비용이 들지 않습니다.이를 통해 각 개발자는 다른 사람에게 영향을 주지 않고 얼굴이 파랗게 질릴 때까지 변경할 수 있습니다.

크기 때문에 모든 개발자가 데이터의 복사본을 가질 수 없게 하는 것이 불가능했던 과거(소규모 팀의 경우)에 제가 사용했던 또 다른 방법은 모든 테이블과 코드가 포함된 마스터 스키마를 가지고 모든 테이블과 코드를 공용 동의어로 가리키는 것이었습니다.그런 다음, 개발자가 저장 프로시저를 작업하고자 할 경우, 단순히 자신의 스키마에 작성합니다.이렇게 하면 Oracle 이름 확인을 통해 마스터 스키마의 복사본 대신 먼저 복사본이 발견되므로 다른 사용자에게 영향을 주지 않고 자신의 코드를 테스트할 수 있습니다.이것은 단점이 있지만, 이것은 우리가 그들과 함께 살 수 있는 매우 구체적인 경우였습니다.저는 이런 것을 생산에 절대로 구현하지 않을 것입니다.

두 번째 요건에 관해서는:

저장 프로시저에서 변경한 내용을 오라클 데이터베이스에서 Subversion, CVS, ... 저장소로 자동 전송하려면 다음과 같이 하십시오.

이 작업을 수행할 수 있을 정도로 현명한 도구를 발견하면 놀랄 것입니다. (아마도 기회일 것입니다.).db에 연결하여 데이터 사전(USER_SOURCE)을 조회하고 관련 텍스트를 꺼내야 합니다.거의 보편적으로 파일을 기반으로 하는 소스 제어 시스템에 대한 많은 주문입니다.

오라클의 새로운 SQL 개발자는 버전 제어 기능이 내장되어 있습니다.

여기 제품 링크가 있습니다.

http://www.oracle.com/technology/products/database/sql_developer/files/what_is_sqldev.html

http://www.oracle.com/technology/products/database/sql_developer/images/what_version.png http://www.oracle.com/technology/products/database/sql_developer/images/what_version.png

PL/SQL을 통상적인 코드와 같이 취급합니다: 파일에 저장하고, 이러한 파일을 수정 제어 도구와 내부 프로시저로 관리합니다.

리비전 제어 도구가 아직 없는 경우 요구 사항을 적고 선택합니다.많은 사람들이 거북이와 연관된 Subversion을 사용하는 것 같습니다.Windows에서 클라이언트로서의 SVN (나는 합니다).

중요한 것은: 권장하는 대로 도구를 사용하고 절차를 그에 맞게 조정하는 것입니다.예를 들어, Subversion에서는 선호하는 것처럼 보이는 잠금-수정-잠금 해제 모델과 달리 기본적으로 복사-수정-병합 모델을 사용합니다.

저 같은 경우는 거북이를 사용하는 것을 좋아합니다.SVN, 위에 기술된 바와 같이.그리고 이 도구는 평소와 마찬가지로 다음을 수행합니다.

  • 파일을 절대 잠그지 않습니다.이는 소규모 팀에서 관리가 가능하며, 규모가 큰 팀에 대한 사전 계획이 필요하므로 항상 좋은 일입니다.
  • 변경사항을 수동으로 서버로 다시 보냅니다. 왜냐하면...Subversion에는 다른 방법이 없다고 생각합니다(게다가 내부 절차에서는 메시지 없이 커밋을 금지하고 있으며, IMHO도 좋은 일입니다).

그리고 어떤 선택을 하시든 데이터베이스 버전화에 관한 이 게시물(및 관련 게시물)을 읽어보시기를 권합니다.

비교적 간단한(조금 구식이라면) 솔루션은 "병합" 모드 버전 제어 시스템이 아닌 "잠금"을 사용하는 것일 수 있습니다.서브버전 또는 CVS는 일반적으로 "병합" 모드를 사용합니다(파일을 "잠글 수 있도록" 만들 수 있다고 생각하지만?).

"잠금" 모드 버전 제어 시스템에는 물론 단점이 있습니다.

Oracle에서 인을 수행할 수 있는 유일한 방법은 BEFORE CREATE TRIGER의 일부를 사용하거나 패키지를 실행할 수 있는 사용자를 검색하는 테이블을 참조하는 것입니다.좀 심술궂게 들리시나요?

Oracle용 Source Control을 사용하면 원하는 많은 것을 얻을 수 있습니다.

저장된 프로시저(패키지, 함수, 테이블 등)는 인터페이스를 사용하여 자동으로 잠글 수는 없지만 다른 사용자가 변경하는 것을 방지할 수 있습니다.

개체를 생성할 새 SQL을 SVN 또는 TFS에 체크인할 수 있습니다(불행하게도 CVS 지원은 없음).

이 도구는 무료는 아니지만 28일간 무료 체험이 가능합니다.

Oracle SQL Developer 1.5를 사용하면 CVS 또는 Subversion에 대한 연결을 쉽게 생성하고 관리할 수 있습니다.CVS 연결(예: Versioning)을 만들려면 Versioning -> CVS -> Check out Module을 클릭합니다.마법사를 실행하여 연결(호스트, 사용자 이름 등)을 만든 후 정상적으로 절차/기능을 확인할 수 있습니다.

CVS와의 통합은 Toad에서도 제공됩니다.

Aqua Data Studio를 보는 것도 좋습니다.SVN에도 내장되어 있으며 훌륭한 Storeed Proc 편집기입니다.

Oracle 개체에 대한 버전 제어를 처리할 수 있는 도구를 찾아본 후, 다음과 같은(완벽하지는 않지만 적합한) 솔루션을 만들었습니다.

  1. dbms_metadata 패키지를 사용하여 Oracle 서버의 메타데이터 덤프를 생성합니다.개체당 하나의 파일을 생성하므로 결과적으로 하나의 거대한 파일이 아니라 여러 개의 파일이 생성됩니다.삭제된 개체를 인식하기 위해 덤프를 다시 만들기 전에 모든 파일을 삭제합니다.
  2. 서버에서 클라이언트 컴퓨터로 모든 파일을 복사합니다.
  3. Netbeans를 사용하여 변경 사항을 인식하고 CVS 서버에 변경 사항을 커밋합니다(또는 diffs...).어떤 CVS 핸들러 소프트웨어라도 여기서 작동하지만, 우리는 이미 다른 용도로 Netbeans를 사용하고 있었습니다.또한 Netbeans는 1단계에서 언급된 Oracle 프로세스를 호출하고 2단계에서 언급된 파일을 복사하기 위한 개미 작업을 생성할 수 있습니다.

1단계에서 가장 중요한 쿼리는 다음과 같습니다.

SELECT object_type, object_name, 
  dbms_metadata.get_ddl(object_type, object_name) object_ddl FROM user_objects
WHERE OBJECT_TYPE in ('INDEX', 'TRIGGER', 'TABLE', 'VIEW', 'PACKAGE', 
  'FUNCTION', 'PROCEDURE', 'SYNONYM', 'TYPE')  
ORDER BY OBJECT_TYPE, OBJECT_NAME

개체당 하나의 파일을 사용하면 변경 사항을 확인할 수 있습니다.테이블에 필드를 추가하는 경우TTTT(물론 실제 테이블 이름은 아닙니다.) 그러면만.TABLE_TTTT.SQL파일이 수정됩니다.

1단계와 3단계 모두 느린 프로세스입니다.(수천 개의 파일에 대한 several 시간(분))

Toad는 CVS/SVN을 필요로 하지 않고도 이 작업을 수행합니다.

언급URL : https://stackoverflow.com/questions/111852/tools-to-work-with-stored-procedures-in-oracle-in-a-team