İki Oracle 10g Şemasını nasıl dağıtabilirim?


14

Aynı olması gereken iki büyük karmaşık Oracle şeması arasında bazı farklar olduğunu hissediyorum, bu yüzden araştırmak için onları döküp ayırmaya karar verdim. Tablo ve dizin tanımlarını dökmek için aşağıdaki komutları veren bir makale ( http://www.dba-oracle.com/art_builder_get_schema_syntax.htm ) buldum .

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;

Ancak, çıktıların şemasını biriktirip farklılaştırdığımda, hemen hemen her satırda farkı fark etmeyen önemli farklar vardı. Örneğin, şema adı her tablo tanımına dahil edilmiştir.

En önemli şema verilerini bir diff aracı kullanarak kolayca karşılaştırılabilecek bir formatta verecek daha iyi bir yol var mı? Tablolar, dizinler ve tetikleyicilerle ilgileniyorum.

Oracle Database 10g Enterprise Edition Sürüm 10.2.0.3.0'ı kullanıyorum

Yanıtlar:


14

Yazdığım ücretsiz ve açık kaynaklı SchemaCrawler aracı ihtiyacınız olanı yapacak. SchemaCrawler, şemanızın ayrıntılarını (tablolar, görünümler, yordamlar ve daha fazlası) farklı düz metin biçiminde (metin, CSV veya XHTML) verir. SchemaCrawler, verileri (CLOB'ler ve BLOB'lar dahil) aynı düz metin biçiminde de çıkarabilir. Akım çıkışını, çıkışın referans bir versiyonuyla dağıtmak için standart bir fark programı kullanabilirsiniz.

https://www.SchemaCrawler.com

Veritabanınız için bir JDBC sürücüsü sağlamanız gerekecektir.


2
Daha sonra SSS'lerin açık kaynak projesi ile olan ilişkinizi açıklamanız gerektiğini söylediğini fark ettim ve şimdi yapmaya başladım. Ancak cevabımın yanında duruyorum ve bunun keşfetmeye değer bir çözüm olduğunu düşünüyorum. SchemaCrawler'ı geçmiş iki şirketimde kullandım ve her iki geliştirme ekibi de bu amaç için yararlı bir araç olduğunu kabul etti. (Hayır, patron
değildim

6

bunların hiçbirine ihtiyacınız yok.

otn.oracle.com

Oracle'ın SQL Developer adlı ücretsiz bir aracı vardır. bir şema farkı var.


4

TOAD kullanabilirsiniz Oracle geliştirme için harika bir genel araçtır. Test için bir deneme sürümü var. Özellikler listesinden:

  • Veri Karşılaştırma ve Senkronizasyon sihirbazı
  • Veritabanı platformlarında veri senkronizasyonu

Test edebileceğiniz bir diğer ürün OraPowerTools :

OraPowerTools yerel oracle veritabanı yardımcı programlarının bir koleksiyon. Bu koleksiyon, eksiksiz bir Oracle Development ortamı, Oracle için DBDiff, herhangi bir 2 oracle veritabanını karşılaştırır ve yükseltir ve Oracle için DBScripter'i içerir, oracle veritabanınızın nesnelerinden ve / veya verilerinden sql komut dosyaları oluşturur.

Ücretsiz bir alternatif olarak şu CodeProject makalesine göz atabilirsiniz: Oracle için Şema Karşılaştırma Aracı

Bu küçük VB.NET uygulaması, Oracle veritabanı şemalarını birbiriyle karşılaştırmanıza olanak tanır. Bu, geliştirme örneğinizin üretim örneğinizle aynı olduğundan emin olurken çok yararlıdır; özellikle ön uç değişikliklerini uygularken.

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


2

DKGAS 'Oracle için DBDiff'i kullanıyoruz, bir karşılaştırma şeması veya yükseltme komut dosyası olarak tüm şemayı veya bir kısmını (tablolar, diziler, dizinler, kısıtlamalar, ayrıcalıklar, paketler, nesneler ve veriler) karşılaştırabiliriz.

Veritabanı yükseltme komut dosyalarının temeli olarak ikincisi olarak kullanıyoruz.


1

Perl'i çalıştırabiliyorsanız, şemanızın bir dökümünü SQL olarak üretmesi gereken SQLFairy'e bakabilirsiniz . Daha sonra standart metin farklılaştırma araçlarını kullanabilirsiniz. İki şemayı alacak ve aynı olmaları için ALTER komutlarını üretecek bir araç da vardır .


1

Harcamak için biraz paranız varsa, Oracle için PowerDIFF kullanmayı düşünün: http://www.orbit-db.com . Bu araçlar, tabloları, dizinleri ve tetikleyicileri mükemmel şekilde karşılaştırır ve 'fark' işlemini özelleştirmek için bir dizi karşılaştırma seçeneği ile birlikte gelir. İsteğe bağlı olarak toplam fark betiği (DDL ve DML komutları) oluşturulur. Veritabanına bağlanmak için bir ODBC sürücüsüne ihtiyacınız vardır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.