Bagaimana saya bisa membedakan dua Skema Oracle 10g?

14

Saya memiliki perasaan bahwa ada beberapa perbedaan antara dua skema Oracle besar yang rumit yang harus identik, jadi memutuskan untuk membuang dan memperbaikinya untuk diselidiki. Saya menemukan sebuah artikel ( http://www.dba-oracle.com/art_builder_get_schema_syntax.htm ) yang memberikan perintah berikut untuk membuang tabel dan definisi indeks.

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;

Namun, ketika saya membuang dan menyimpul gulungan output skema, ada perbedaan sepele di hampir setiap baris yang membuat perbedaan tidak berharga. Misalnya nama skema termasuk dalam setiap definisi tabel.

Apakah ada cara yang lebih baik untuk melakukan ini yang akan memberikan data skema paling penting dalam format yang dapat dibandingkan dengan mudah menggunakan alat diff. Saya tertarik pada tabel, indeks, dan pemicu.

Saya menggunakan Oracle Database 10g Enterprise Edition Release 10.2.0.3.0

Stuart Woodward
sumber

Jawaban:

14

Alat SchemaCrawler gratis dan open-source yang saya tulis akan melakukan apa yang Anda butuhkan. SchemaCrawler menampilkan detail skema Anda (tabel, tampilan, prosedur, dan banyak lagi) dalam format teks biasa (teks, CSV, atau XHTML). SchemaCrawler juga dapat menampilkan data (termasuk CLOB dan BLOB) dalam format teks biasa yang sama. Anda dapat menggunakan program diff standar untuk mengubah output saat ini dengan versi referensi dari output.

https://www.SchemaCrawler.com

Anda perlu menyediakan driver JDBC untuk database Anda.

Sualeh Fatehi
sumber
2
Saya menyadari kemudian bahwa FAQ mengatakan bahwa Anda perlu mengungkapkan afiliasi Anda dengan proyek open source, dan saya sudah mulai melakukannya sekarang. Namun, saya mendukung jawaban saya, dan berpikir itu adalah solusi yang pantas untuk dijelajahi. Saya telah menggunakan SchemaCrawler di dua perusahaan saya di masa lalu, dan kedua tim pengembangan sepakat bahwa itu adalah alat yang berguna untuk tujuan ini. (Tidak, saya bukan bos.)
Sualeh Fatehi
6

Anda tidak membutuhkan barang ini.

otn.oracle.com

Oracle memiliki alat gratis yang disebut SQL Developer. ini memiliki skema diff.

Bob
sumber
4

Anda bisa menggunakan TOAD adalah alat generik yang bagus untuk pengembangan Oracle. Ada versi uji coba untuk pengujian. Dari daftar fitur:

  • Data Membandingkan dan Sinkronisasi wizard
  • Sinkronisasi data di seluruh platform basis data

Produk lain yang dapat Anda uji adalah OraPowerTools :

OraPowerTools adalah kumpulan utilitas basis data oracle asli. Koleksi ini mencakup OraEdit PRO, lingkungan Pengembangan Oracle yang lengkap, DBDiff untuk Oracle, membandingkan dan memutakhirkan 2 database oracle, dan DBScripter untuk Oracle, membuat skrip sql dari objek dan / atau data database oracle Anda.

Sebagai alternatif gratis, Anda bisa melihat artikel CodeProject ini: Alat Bandingkan Skema untuk Oracle

Aplikasi VB.NET kecil ini memungkinkan Anda untuk membandingkan skema database Oracle satu sama lain. Ini sangat membantu ketika memastikan instance pengembangan Anda sama dengan instance produksi Anda; terutama ketika menerapkan perubahan front-end.

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

percikan
sumber
2

Kami menggunakan DKGAS 'DBDiff untuk Oracle' , dapat membandingkan seluruh skema atau bagiannya (tabel, urutan, indeks, batasan, hak istimewa, paket, objek, dan data), baik sebagai laporan perbandingan atau sebagai skrip upgrade.

Kami menggunakan yang terakhir sebagai dasar untuk skrip pemutakhiran basis data.

Andrew
sumber
1

Jika Anda dapat menjalankan Perl, Anda bisa melihat SQLFairy , yang seharusnya dapat menghasilkan dump skema Anda sebagai SQL. Anda kemudian dapat menggunakan alat pembeda teks standar. Ada juga alat yang akan mengambil dua skema dan menghasilkan perintah ALTER untuk membuatnya identik.

David Pashley
sumber
1

Jika Anda memiliki uang untuk dibelanjakan, pertimbangkan untuk menggunakan PowerDIFF untuk Oracle: http://www.orbit-db.com . Alat ini membandingkan tabel, indeks, dan pemicu dengan sangat baik dan disertai dengan sejumlah opsi perbandingan untuk menyesuaikan operasi 'berbeda'. Skrip perbedaan total (perintah DDL dan DML) dibuat secara opsional. Anda memerlukan driver ODBC untuk terhubung ke database.


sumber