Làm thế nào tôi có thể khác hai lược đồ Oracle 10g?


14

Tôi có cảm giác rằng có một số khác biệt giữa hai lược đồ Oracle phức tạp lớn giống hệt nhau, vì vậy đã quyết định kết xuất và tìm chúng để điều tra. Tôi đã tìm thấy một bài viết ( http://www.dba-oracle.com/art_builder_get_schema_syntax.htm ) đưa ra các lệnh sau để kết xuất các định nghĩa bảng và chỉ mục.

SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u;

Tuy nhiên, khi tôi đổ và làm khác biệt các đầu ra của các lược đồ, có sự khác biệt nhỏ trên hầu hết mọi dòng làm cho sự khác biệt trở nên vô giá trị. Ví dụ, tên lược đồ được bao gồm trong mỗi định nghĩa bảng.

Có cách nào tốt hơn để làm điều này sẽ cung cấp dữ liệu lược đồ quan trọng nhất theo định dạng có thể dễ dàng so sánh bằng cách sử dụng công cụ tìm khác biệt. Tôi quan tâm đến các bảng, chỉ mục và kích hoạt.

Tôi đang sử dụng Cơ sở dữ liệu Oracle 10g Phiên bản doanh nghiệp Phiên bản 10.2.0.3.0

Câu trả lời:


14

Công cụ SchemaCrawler miễn phí và mã nguồn mở mà tôi đã viết sẽ làm những gì bạn cần. SchemaCrawler đưa ra chi tiết về lược đồ của bạn (bảng, dạng xem, quy trình và hơn thế nữa) ở định dạng văn bản thuần có thể khác được (văn bản, CSV hoặc XHTML). SchemaCrawler cũng có thể xuất dữ liệu (bao gồm CLOB và BLOB) theo cùng định dạng văn bản thuần túy. Bạn có thể sử dụng một chương trình khác biệt tiêu chuẩn để tìm khác biệt đầu ra hiện tại với một phiên bản tham chiếu của đầu ra.

https://www.SchemaCrawler.com

Bạn sẽ cần cung cấp trình điều khiển JDBC cho cơ sở dữ liệu của bạn.


2
Sau đó tôi đã nhận ra rằng Câu hỏi thường gặp nói rằng bạn cần tiết lộ mối liên kết của mình với dự án nguồn mở và tôi đã bắt đầu thực hiện điều đó ngay bây giờ. Tuy nhiên, tôi đứng trước câu trả lời của mình và nghĩ rằng đó là một giải pháp đáng để khám phá. Tôi đã sử dụng SchemaCrawler trong hai công ty trước đây của mình và cả hai nhóm phát triển đều đồng ý rằng đó là một công cụ hữu ích cho mục đích này. (Không, tôi không phải là ông chủ.)
Sualeh Fatehi

6

bạn không cần bất cứ thứ gì trong số này.

otn.oracle.com

Oracle có một công cụ miễn phí có tên SQL Developer. nó có một lược đồ khác.


4

Bạn có thể sử dụng TOAD là một công cụ chung tuyệt vời để phát triển Oracle. Có một phiên bản dùng thử để thử nghiệm. Từ danh sách tính năng:

  • Trình hướng dẫn so sánh và đồng bộ dữ liệu
  • Đồng bộ hóa dữ liệu trên các nền tảng cơ sở dữ liệu

Một sản phẩm khác bạn có thể kiểm tra là OraPowerTools :

OraPowerTools là một tập hợp các tiện ích cơ sở dữ liệu gốc. Bộ sưu tập này bao gồm OraEdit PRO, môi trường phát triển Oracle hoàn chỉnh, DBDiff cho Oracle, so sánh và nâng cấp bất kỳ 2 cơ sở dữ liệu orory và DBScripter cho Oracle, tạo các tập lệnh sql từ các đối tượng và / hoặc dữ liệu của cơ sở dữ liệu orory của bạn.

Là giải pháp thay thế miễn phí, bạn có thể xem bài viết CodeProject này: Công cụ so sánh lược đồ cho Oracle

Ứng dụng VB.NET nhỏ này cho phép bạn so sánh các lược đồ cơ sở dữ liệu Oracle với nhau. Điều này rất hữu ích khi đảm bảo thể hiện phát triển của bạn giống với thể hiện sản xuất của bạn; đặc biệt là khi thực hiện thay đổi front-end.

1 : 1 : http://www.toadsoft.com/toad_oracle.htmlm


2

Chúng tôi sử dụng 'DBDiff cho Oracle' của DKGAS , nó có thể so sánh toàn bộ lược đồ hoặc một phần của nó (bảng, trình tự, chỉ mục, ràng buộc, đặc quyền, gói, đối tượng và dữ liệu), làm báo cáo so sánh hoặc dưới dạng tập lệnh nâng cấp.

Chúng tôi sử dụng làm cái sau làm cơ sở cho các kịch bản nâng cấp cơ sở dữ liệu.


1

Nếu bạn có thể chạy Perl, bạn có thể xem SQLF Hộ , có thể tạo ra kết xuất lược đồ của bạn dưới dạng SQL. YOu sau đó có thể sử dụng các công cụ khuếch tán văn bản tiêu chuẩn. Ngoài ra còn có một công cụ sẽ lấy hai lược đồ và tạo ra các lệnh ALTER để làm cho chúng giống hệt nhau.


1

Nếu bạn có một số tiền để chi tiêu, hãy cân nhắc sử dụng PowerDIFF cho Oracle: http://www.orbit-db.com . Công cụ này so sánh các bảng, chỉ mục và trình kích hoạt một cách xuất sắc đi kèm với một số tùy chọn so sánh để tùy chỉnh hoạt động 'diff'. Một tập lệnh khác biệt tổng (các lệnh DDL và DML) được tạo tùy ý. Bạn cần một trình điều khiển ODBC để kết nối với cơ sở dữ liệu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.