2008-09-21 23 views
11

gì công cụ để bạn sử dụng để phát triển các thủ tục lưu trữ Oracle, trong một nhóm:Công cụ để làm việc với các thủ tục được lưu trữ trong Oracle, trong một nhóm?

  • Để tự động "khóa" các thủ tục hiện tại bạn đang làm việc với, do đó không ai khác trong đội có thể thay đổi nó cho đến khi bạn đã kết thúc.
  • Để tự động gửi những thay đổi bạn thực hiện trong thủ tục lưu trữ, trong một cơ sở dữ liệu Oracle, đến một Subversion, CVS, ... kho

Cảm ơn!

Trả lời

2
+1

Khi tôi thấy công cụ phiên bản của Nhà phát triển SQL chỉ xử lý các tệp và không hỗ trợ cho yêu cầu thứ 2 ở trên. Tui bỏ lỡ điều gì vậy? – rics

1

Một tương đối đơn giản (nếu hơi cổ hủ) giải pháp có thể được sử dụng một "khóa" hơn là "sáp nhập" hệ thống điều khiển chế độ phiên bản .... Subversion hoặc CVS ​​thường sử dụng một chế độ "hợp nhất" (mặc dù tôi tin rằng Subversion có thể được thực hiện để "khóa" file?)

"khóa" hệ thống điều khiển chế độ phiên bản nào có nhiều nhược điểm riêng của họ tất nhiên .....

duy nhất w ay tôi có thể nghĩ đến việc làm trong Oracle có thể là một số trong BEFORE CREATE TRIGGER, có thể tham khảo một bảng để tra cứu ai có thể chạy một gói. Nghe có vẻ hơi khó chịu?

0

Sử dụng Oracle SQL Developer 1.5, bạn có thể dễ dàng tạo và quản lý kết nối với CVS hoặc Subversion. Để tạo kết nối CVS (ví dụ), hãy nhấp vào Phiên bản -> CVS -> Xem Mô-đun. Bạn sẽ chạy qua trình hướng dẫn để tạo kết nối (máy chủ, tên người dùng, v.v.), sau đó bạn có thể kiểm tra các thủ tục/chức năng của mình và như thường lệ.

Tích hợp với CVS cũng được cung cấp trong Toad.

+0

Khi tôi thấy công cụ phiên bản của Nhà phát triển SQL chỉ xử lý các tệp và không hỗ trợ cho yêu cầu thứ 2 ở trên. Tui bỏ lỡ điều gì vậy? – rics

+0

Không chắc chắn về bất kỳ công cụ kiểm soát nguồn nào làm cho các thay đổi "tự động" thành mã. Bạn khá nhiều luôn phải tự kiểm tra mọi thứ. Và chắc chắn tập tin == mã? – ropable

-1

Cóc cũng thực hiện việc này mà không yêu cầu CVS/SVN.

2

Xử lý PL/SQL như mã thông thường: lưu trữ trong tệp và quản lý các tệp này bằng công cụ kiểm soát sửa đổi của bạn và thủ tục nội bộ của bạn.

Nếu bạn chưa có công cụ kiểm soát sửa đổi, hãy viết yêu cầu của bạn xuống và pick one up. Rất nhiều người dường như sử dụng Subversion, được liên kết với TortoiseSVN là một khách hàng trên Windows (tôi làm).

Điều này là: sử dụng công cụ của bạn như được khuyến nghị và điều chỉnh các quy trình của bạn cho phù hợp. Ví dụ: Subversion sử dụng mô hình copy-modify-merge theo mặc định, thay vì mô hình lock-modify-unlock mà bạn cho là có lợi.

Trong trường hợp của tôi, tôi thích sử dụng TortoiseSVN, như đã nêu ở trên. Và như thường lệ với công cụ này:

  • Tôi không bao giờ khóa bất kỳ tệp nào. Điều này là rất dễ quản lý với các đội nhỏ, và nó đòi hỏi phải lập kế hoạch trước cho những người lớn hơn, mà luôn luôn là một điều tốt IMHO.
  • Tôi gửi các thay đổi của mình theo cách thủ công trở lại máy chủ, bởi vì ... Tôi không nghĩ có cách nào khác với Subversion (cộng với các thủ tục nội bộ cấm một cam kết không có thư, cũng là một điều IMHO tốt).

Và bất kỳ lựa chọn nào của bạn, tôi khuyên bạn nên đọc bài đăng này (và các bài đăng liên quan) về database versioning.

0

Bạn cũng có thể muốn xem Aqua Data Studio. Họ đã xây dựng trong SVN là tốt và là một biên tập viên lưu trữ Proc tuyệt vời.

9

Tôi không chắc chắn nếu người đăng gốc vẫn đang theo dõi điều này, nhưng tôi sẽ hỏi câu hỏi này.

Các bài gốc được yêu cầu để có thể:

Để tự động "khóa" các thủ tục hiện tại bạn đang làm việc với, vì vậy ai khác trong đội có thể làm cho thay đổi nó cho đến khi bạn đã kết thúc .

Có lẽ vấn đề ở đây là một trong những mô hình phát triển hơn là không có sản phẩm để "khóa" proc được lưu trữ. Bất cứ khi nào tôi nghe "Tôi muốn khóa cái này để không ai khác thay đổi nó" tôi lập tức có cảm giác rằng mọi người đang chia sẻ một lược đồ và mọi người đang phát triển trong cùng một không gian.

Nếu đây là trường hợp, tại sao không chỉ đơn giản là để mọi người có lược đồ của riêng họ với một bản sao của mô hình dữ liệu? Tôi có nghĩa là những người nghiêm túc, nó không "chi phí" bất cứ điều gì để tạo ra một lược đồ khác. Bằng cách đó, mỗi nhà phát triển có thể thực hiện thay đổi cho đến khi chúng có màu xanh trên khuôn mặt mà không ảnh hưởng đến bất kỳ ai khác. Một mẹo khác mà tôi đã sử dụng trong quá khứ (trên các nhóm nhỏ) khi không khả thi để mọi nhà phát triển có bản sao dữ liệu riêng của họ vì kích thước, là phải có một lược đồ chính với tất cả các bảng và mã trong đó, với các từ đồng nghĩa công khai trỏ đến tất cả. Sau đó, nếu nhà phát triển muốn làm việc trên một proc được lưu trữ, anh ta chỉ cần tạo nó trong lược đồ của mình. Bằng cách đó, độ phân giải tên của Oracle phát hiện ra rằng đầu tiên thay vì bản sao trong lược đồ chính, cho phép chúng kiểm tra mã của chúng mà không ảnh hưởng đến bất kỳ ai khác. Điều này có nhược điểm, nhưng đây là một trường hợp rất cụ thể nơi chúng tôi có thể sống với họ. Tôi sẽ KHÔNG BAO GIỜ thực hiện một cái gì đó như thế này trong sản xuất rõ ràng.

Đối với các yêu cầu thứ hai:

Để tự động gửi những thay đổi bạn thực hiện trong thủ tục lưu trữ, trong một cơ sở dữ liệu Oracle , đến một Subversion, CVS, ... kho

Tôi rất ngạc nhiên khi thấy các công cụ có đủ thông minh để thực hiện điều này (có lẽ là một cơ hội :). Nó sẽ phải kết nối với db của bạn, truy vấn từ điển dữ liệu (USER_SOURCE) và kéo ra văn bản liên quan. Một thứ tự cao đối với các hệ thống kiểm soát nguồn nơi hầu như dựa trên tệp.

0

Sau khi tìm kiếm một công cụ để xử lý điều khiển phiên bản cho các đối tượng Oracle không có may mắn chúng tôi tạo ra các giải pháp (không hoàn hảo nhưng phù hợp) sau:

  1. Sử dụng dbms_metadata gói chúng ta tạo ra các bãi chứa siêu dữ liệu của máy chủ Oracle của chúng tôi. Chúng tôi tạo một tệp cho mỗi đối tượng, do đó kết quả không phải là một tệp lớn mà là một loạt tệp.Để nhận ra đối tượng đã xóa, chúng tôi xóa tất cả các tệp trước khi tạo lại kết xuất.
  2. Chúng tôi sao chép tất cả các tệp từ máy chủ sang máy khách.
  3. Sử dụng Netbeans, chúng tôi nhận ra các thay đổi và cam kết các thay đổi đối với máy chủ CVS (hoặc kiểm tra các khác biệt ...). Bất kỳ phần mềm xử lý CVS nào cũng làm việc ở đây, nhưng chúng tôi đã sử dụng Netbeans cho các mục đích khác. Và Netbeans cũng cho phép để tạo ra một nhiệm vụ kiến ​​để gọi quá trình Oracle đề cập trong bước 1, sao chép các tập tin đề cập trong bước 2 ...

Dưới đây là truy vấn imporant nhất cho bước 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 

Một tệp cho mỗi phương pháp tiếp cận đối tượng giúp xác định các thay đổi. Nếu tôi thêm một trường vào bảng TTTT (không phải là tên bảng thực của khóa học) thì chỉ có TABLE_TTTT.SQL tệp mới được sửa đổi.

Cả bước 1 và bước 3 đều là các quy trình chậm. (vài phút cho một vài nghìn tệp)

1

Sử dụng Source Control for Oracle bạn nhận được rất nhiều thứ bạn đang tìm kiếm.

Thủ tục được lưu trữ (cũng như gói, chức năng, bảng vv) có thể được khóa thủ công bằng giao diện, không tự động, nhưng điều này không ngăn người khác thực hiện thay đổi.

SQL mới để tạo đối tượng sau đó có thể được kiểm tra vào SVN hoặc TFS (không hỗ trợ CVS không may).

Công cụ này không miễn phí nhưng có bản dùng thử miễn phí 28 ngày.

Các vấn đề liên quan