Tôi đã thấy rất nhiều cách đã thử để xử lý vấn đề này và cuối cùng, tôi nghĩ bạn chỉ cần duy trì các tập lệnh thủ công.
Bây giờ, bạn không nhất thiết phải tự mình viết. Trong MSSQL, khi bạn đang thực hiện một thay đổi, có một nút nhỏ để Tạo tập lệnh, nút này sẽ tạo ra một tập lệnh SQL cho thay đổi bạn đang thực hiện. Tôi biết bạn đang nói về Oracle, và đã vài năm kể từ khi tôi làm việc với GUI của họ, nhưng tôi chỉ có thể tưởng tượng rằng họ có cùng một tính năng.
Tuy nhiên, bạn không thể làm việc với các script theo cách thủ công. Bạn sẽ gặp rất nhiều vấn đề xung quanh dữ liệu đã có từ trước, chẳng hạn như giá trị mặc định cho các cột mới hoặc cách xử lý dữ liệu cho một cột đã đổi tên / xóa / di chuyển. Đây chỉ là một phần của phân tích làm việc với lược đồ cơ sở dữ liệu theo thời gian mà bạn không thể bỏ qua. Nếu bạn cố gắng thực hiện việc này bằng một giải pháp hoàn toàn tự động, dữ liệu của bạn sớm muộn gì cũng sẽ bị rối tung.
Một điều tôi muốn khuyên bạn, chỉ để làm cho cuộc sống của bạn dễ dàng hơn một chút, là hãy đảm bảo rằng bạn tách các thay đổi giản đồ khỏi các thay đổi mã. Sự khác biệt là các thay đổi lược đồ đối với bảng và cột phải được chạy chính xác một lần và không bao giờ lặp lại, và do đó phải được tạo phiên bản dưới dạng các tập lệnh thay đổi riêng lẻ. Tuy nhiên, các thay đổi mã, như procs được lưu trữ, các hàm và thậm chí cả dạng xem, có thể (và nên) được chạy đi chạy lại và có thể được tạo phiên bản giống như bất kỳ tệp mã nào khác. Cách tiếp cận tốt nhất cho điều này mà tôi đã thấy là khi chúng tôi có tất cả các procs / chức năng / chế độ xem trong VSS và quá trình xây dựng của chúng tôi sẽ loại bỏ tất cả và tạo lại chúng trong mỗi lần cập nhật. Đây là ý tưởng tương tự như việc xây dựng lại mã C # / Java / bất kỳ mã nào của bạn, vì nó đảm bảo mọi thứ luôn được cập nhật.