Oracle 'ı PostgreSQL için Azure veritabanı 'na geçirme

Bu kılavuz, Oracle şemanızı PostgreSQL için Azure veritabanı 'na geçirmenize yardımcı olur.

Ayrıntılı ve kapsamlı geçiş kılavuzu için, Geçiş Kılavuzu kaynaklarınabakın.

Önkoşullar

Oracle şemanızı PostgreSQL için Azure veritabanı 'na geçirmek için şunları yapmanız gerekir:

  • Kaynak ortamınızın desteklendiğini doğrulayın.
  • En son ora2pgsürümünü indirin.
  • DBD modülününen son sürümüne sahip olmalıdır.

Genel Bakış

PostgreSQL, dünyanın en gelişmiş açık kaynaklı veritabanlarının biridir. Bu makalede, bir Oracle veritabanını PostgreSQL 'e geçirmek için ücretsiz ora2pg aracının nasıl kullanılacağı açıklanır. Bir Oracle veritabanını veya MySQL veritabanını PostgreSQL ile uyumlu bir şemaya geçirmek için ora2pg kullanabilirsiniz.

Ora2pg aracı Oracle veritabanınızı bağlar, otomatik olarak tarar ve yapısını veya verilerini ayıklar. ardından ora2pg, postgresql veritabanınıza yükleyebilmeniz için SQL betikler üretir. Bir Oracle veritabanını ters mühendislik, büyük bir kurumsal veritabanını geçirme veya yalnızca bazı Oracle verilerini bir PostgreSQL veritabanına çoğaltma gibi görevler için ora2pg kullanabilirsiniz. Aracın kullanımı kolaydır ve Oracle veritabanına bağlanmak için gereken parametreleri sağlama yeteneğinin yanı sıra Oracle veritabanı bilgisi gerektirmez.

Not

En son ora2pg sürümünü kullanma hakkında daha fazla bilgi için bkz. ora2pg belgeleri.

Tipik ora2pg geçiş mimarisi

Ora2pg geçiş mimarisinin ekran görüntüsü.

VM 'yi ve PostgreSQL için Azure veritabanı 'nı sağlamadıktan sonra aralarında bağlantıyı etkinleştirmek için iki yapılandırmaya ihtiyacınız vardır: Azure hizmetlerine erişime Izin ver ve SSL bağlantısını zorla:

  • Bağlantı güvenliği dikey penceresi > üzerinde Azure hizmetlerine erişime izin ver >

  • ssl bağlantısını zorla Ayarlar bağlantı güvenliği dikey penceresi > > > devre dışı

Öneriler

  • Oracle sunucusunda değerlendirme veya dışarı aktarma işlemlerinin performansını artırmak için istatistikleri toplayın:

    BEGIN
    
       DBMS_STATS.GATHER_SCHEMA_STATS
       DBMS_STATS.GATHER_DATABASE_STATS
       DBMS_STATS.GATHER_DICTIONARY_STATS
       END;
    
  • Yerine komutunu kullanarak verileri dışarı aktarın COPY INSERT .

  • Yabancı anahtarları (FKs), kısıtlamaları ve dizinleri olan tabloları dışarı aktarıp çıkarmaktan kaçının. Bu öğeler, PostgreSQL 'e veri aktarma sürecini yavaşlatır.

  • Hiçbir Data yan tümcesini kullanarak gerçekleştirilmiş görünümler oluşturun. Ardından görünümleri daha sonra yenileyin.

  • Mümkünse, gerçekleştirilmiş görünümlerde benzersiz dizinleri kullanın. Söz dizimini kullandığınızda bu dizinler yenilemeyi hızlandırabilirler REFRESH MATERIALIZED VIEW CONCURRENTLY .

Geçiş öncesi

Kaynak ortamınızın desteklenip desteklenmediğini doğruladıktan ve önkoşulları karşıladığınızı doğruladıktan sonra, ön geçiş aşamasına başlamaya hazırsınız demektir. Başlamak için:

  1. Keşfet: geçirmeniz gereken veritabanlarının envanterini çıkarın.
  2. Değerlendirme: olası geçiş sorunları veya engelleyiciler için bu veritabanlarını değerlendirin.
  3. Dönüştür: örtülmüş olan tüm öğeleri çözün.

Oracle için PostgreSQL için Azure veritabanı gibi heterojen geçişleri için, bu aşamada kaynak veritabanı şemalarının hedef ortamla uyumlu hale getirilmesi da gerekir.

Bulma

Bulma aşamasının hedefi, var olan veri kaynaklarını ve kullanılmakta olan özelliklerle ilgili ayrıntıları belirlemektir. Bu aşama, geçişin daha iyi anlaşılmasını ve planlanmasına yardımcı olur. İşlem, tüm kuruluşunuzun Oracle örneklerini, kullanımdaki sürüm ve özelliklerle birlikte tanımlamak üzere ağı taramayı içerir.

Oracle için Microsoft 'un ön değerlendirme betikleri Oracle veritabanında çalışır. Değerlendirme öncesi betikler Oracle meta verilerini sorgular. Betikler şunları sağlar:

  • Şemaya, türe ve duruma göre nesne sayısı dahil olmak üzere, bir veritabanı envanteri.
  • İstatistiklere göre her bir şemadaki ham verilerin kaba bir tahmini.
  • Her şemadaki tabloların boyutu.
  • Paket başına kod satırı sayısı, işlev, yordam vb.

GitHub'dan ilgili betikleri indirin.

Değerlendirme

Oracle veritabanlarını envanterden sonra, veritabanı boyutu ve olası güçlükler hakkında fikir sahibi olacaksınız. Sonraki adım değerlendirmesi çalıştıralım.

Oracle 'dan PostgreSQL 'e geçiş maliyetinin tahmin edilmesi kolay değildir. geçiş maliyetini değerlendirmek için, ora2pg otomatik olarak dönüştüremediğini nesneler ve PL/SQL kodu için tüm veritabanı nesnelerini, işlevleri ve saklı yordamları denetler.

Ora2pg Aracı, bir metin raporu oluşturmak için Oracle veritabanını denetleyen bir içerik çözümleme moduna sahiptir. Rapor, Oracle veritabanının neleri içerdiğini ve ne tür verilebileceğinizi açıklar.

Analiz ve rapor modunu etkinleştirmek için, SHOW_REPORT aşağıdaki komutta gösterildiği gibi, verilen türü kullanın:

ora2pg -t SHOW_REPORT

ora2pg aracı, Oracle sözdiziminden postgresql 'e SQL ve PL/SQL kodu dönüştürebilir. Veritabanı çözümlendikten sonra, ora2pg kod zorluklarıyla ve tam bir veritabanının geçirilmesi için gereken süreyi tahmin edebilir.

Geçiş maliyetini insan günlerinde tahmin etmek için, ora2pg adlı bir yapılandırma yönergesini kullanmanıza izin verir ESTIMATE_COST . Ayrıca, bu yönergeyi bir komut isteminde etkinleştirebilirsiniz:

ora2pg -t SHOW_REPORT --estimate_cost

Varsayılan geçiş birimi bir PostgreSQL uzmanı için beş dakika içinde temsil eder. Bu geçiş ilk kez ise, yapılandırma yönergesini COST_UNIT_VALUE veya komut satırı seçeneğini kullanarak varsayılan geçiş birimini artırabilirsiniz --cost_unit_value .

Raporun son satırında, toplam tahmini geçiş kodu insan günlerinde gösterilir. Tahmin, her bir nesne için tahmin edilen geçiş birimi sayısını izler.

Aşağıdaki kod örneğinde bazı değerlendirme çeşitlemelerini görürsünüz:

  • Tablo değerlendirmesi
  • Sütun değerlendirmesi
  • 5 dakikalık varsayılan maliyet birimini kullanan şema değerlendirmesi
  • 10 dakikalık bir maliyet birimi kullanan şema değerlendirmesi
ora2pg -t SHOW_TABLE -c c:\ora2pg\ora2pg_hr.conf > c:\ts303\hr_migration\reports\tables.txt 
ora2pg -t SHOW_COLUMN -c c:\ora2pg\ora2pg_hr.conf > c:\ts303\hr_migration\reports\columns.txt
ora2pg -t SHOW_REPORT -c c:\ora2pg\ora2pg_hr.conf --dump_as_html --estimate_cost > c:\ts303\hr_migration\reports\report.html
ora2pg -t SHOW_REPORT -c c:\ora2pg\ora2pg_hr.conf –-cost_unit_value 10 --dump_as_html --estimate_cost > c:\ts303\hr_migration\reports\report2.html

Şema değerlendirmesi geçiş düzeyi B-5 ' in çıktısı aşağıda verilmiştir:

  • Geçiş düzeyleri:

    • Bir-geçiş otomatik olarak çalıştırılabilir

    • B-kod yeniden yazma ve 5 güne kadar bir insan günü maliyeti ile geçiş

    • Kod yeniden yazma ve 5 güne kadar bir insan günü maliyeti ile C geçişi

  • Teknik düzeyler:

    • 1 = önemsiz: saklı işlev yok ve tetikleyici yok

    • 2 = kolay: saklı işlev yok, ancak Tetikleyiciler; el ile yeniden yazma yok

    • 3 = basit: depolanan işlevler ve/veya Tetikleyiciler; el ile yeniden yazma yok

    • 4 = Manual: saklı işlev yok, ancak kod yeniden yazma ile Tetikleyiciler veya görünümler

    • 5 = zor: kodu yeniden yazma ile saklı işlevler ve/veya Tetikleyiciler

Değerlendirmesi aşağıdakilerden oluşur:

  • Geçişin el ile yeniden yazma gerekip gerekmediğini belirtmek için bir harf (A veya B).

  • Teknik zorluk göstermek için 1 ile 5 arasında bir sayı.

Diğer bir seçenek -human_days_limit olan insan günü sınırını belirtir. Burada, geçişin büyük miktarda iş, tam proje yönetimi ve geçiş desteği gerektiğini belirtmek için geçiş düzeyini C olarak ayarlayın. Varsayılan değer 10 insan günleridir. HUMAN_DAYS_LIMITBu varsayılan değeri kalıcı olarak değiştirmek için yapılandırma yönergesini kullanabilirsiniz.

Bu şema değerlendirmesi, kullanıcıların hangi veritabanı öncelikle geçirilecek ve hangi takımların hangi takımlara harekete geçirileceğine karar vermesine yardımcı olmak için geliştirilmiştir.

Dönüştür

Minimum kapalı kalma süresi geçişlerde geçiş kaynağınız değişir. Bir kerelik geçişten sonra veri ve şema açısından hedeften Drifts. Veri eşitleme aşaması sırasında kaynaktaki tüm değişikliklerin yakalanıp hedefe neredeyse gerçek zamanlı olarak uygulandığından emin olun. Hedefe yapılan tüm değişikliklerin uygulandığını doğruladıktan sonra kaynaktan hedef ortama kadar kesilebilir .

Geçişin bu adımında, Oracle kodu ve DDL betikleri, PostgreSQL 'e dönüştürülür veya çevrilir. Ora2pg Aracı, Oracle nesnelerini bir PostgreSQL biçimindeki otomatik olarak dışa aktarır. Oluşturulan bazı nesneler, el ile değişiklik yapılmadan PostgreSQL veritabanında derlenemiyor.

Hangi öğelerin el ile müdahaleye ihtiyacı olduğunu anlamak için, önce ora2pg tarafından oluşturulan dosyaları PostgreSQL veritabanına karşı derle. Günlüğü denetleyin ve şema yapısı PostgreSQL söz dizimi ile uyumlu olana kadar gerekli değişiklikleri yapın.

Geçiş şablonu oluşturma

Ora2pg'nin sağladığı geçiş şablonunun kullanılması önerilir. ve seçeneklerini kullanarak --project_base ora2pg, Oracle veritabanındaki tüm nesneleri dışarı aktarmaya yönelik bir iş ağacı, yapılandırma dosyası ve betik ile bir proje --init_project şablonu oluşturur. Daha fazla bilgi için ora2pg belgelerine bakın.

Aşağıdaki komutu kullanın:

ora2pg --project_base /app/migration/ --init_project test_project

Örnek çıkış şu şekildedir:

ora2pg --project_base /app/migration/ --init_project test_project
        Creating project test_project.
        /app/migration/test_project/
                schema/
                        dblinks/
                        directories/
                        functions/
                        grants/
                        mviews/
                        packages/
                        partitions/
                        procedures/
                        sequences/
                        synonyms/
                        tables/
                        tablespaces/
                        triggers/
                        types/
                        views/
                sources/
                        functions/
                        mviews/
                        packages/
                        partitions/
                        procedures/
                        triggers/
                        types/
                        views/
                data/
                config/
                reports/

        Generating generic configuration file
        Creating script export_schema.sh to automate all exports.
        Creating script import_all.sh to automate all imports.

Dizini sources/ Oracle kodunu içerir. Dizini, schema/ PostgreSQL'e bağlantı noktası olan kodu içerir. Dizin, reports/ HTML raporlarını ve geçiş maliyeti değerlendirmesini içerir.

Proje yapısı oluşturulduktan sonra genel bir yapılandırma dosyası oluşturulur. Oracle veritabanı bağlantısını ve ilgili yapılandırma parametrelerini yapılandırma dosyasında tanımlayın. Yapılandırma dosyası hakkında daha fazla bilgi için ora2pg belgelerine bakın.

Oracle nesnelerini dışarı aktarma

Ardından, export_schema.sh dosyasını çalıştırarak Oracle nesnelerini PostgreSQL nesneleri olarak dışarı aktarın.

cd /app/migration/mig_project
./export_schema.sh

Aşağıdaki komutu el ile çalıştırın.

SET namespace="/app/migration/mig_project"

ora2pg -p -t DBLINK -o dblink.sql -b %namespace%/schema/dblinks -c %namespace%/config/ora2pg.conf
ora2pg -p -t DIRECTORY -o directory.sql -b %namespace%/schema/directories -c %namespace%/config/ora2pg.conf
ora2pg -p -t FUNCTION -o functions2.sql -b %namespace%/schema/functions -c %namespace%/config/ora2pg.conf 
ora2pg -p -t GRANT -o grants.sql -b %namespace%/schema/grants -c %namespace%/config/ora2pg.conf 
ora2pg -p -t MVIEW -o mview.sql -b %namespace%/schema/mviews -c %namespace%/config/ora2pg.conf
ora2pg -p -t PACKAGE -o packages.sql -b %namespace%/schema/packages -c %namespace%/config/ora2pg.conf
ora2pg -p -t PARTITION -o partitions.sql -b %namespace%/schema/partitions -c %namespace%/config/ora2pg.conf
ora2pg -p -t PROCEDURE -o procs.sql -b %namespace%/schema/procedures -c %namespace%/config/ora2pg.conf
ora2pg -p -t SEQUENCE -o sequences.sql -b %namespace%/schema/sequences -c %namespace%/config/ora2pg.conf
ora2pg -p -t SYNONYM -o synonym.sql -b %namespace%/schema/synonyms -c %namespace%/config/ora2pg.conf
ora2pg -p -t TABLE -o table.sql -b %namespace%/schema/tables -c %namespace%/config/ora2pg.conf 
ora2pg -p -t TABLESPACE -o tablespaces.sql -b %namespace%/schema/tablespaces -c %namespace%/config/ora2pg.conf
ora2pg -p -t TRIGGER -o triggers.sql -b %namespace%/schema/triggers -c %namespace%/config/ora2pg.conf 
ora2pg -p -t TYPE -o types.sql -b %namespace%/schema/types -c %namespace%/config/ora2pg.conf 
ora2pg -p -t VIEW -o views.sql -b %namespace%/schema/views -c %namespace%/config/ora2pg.conf

Verileri ayıklamak için aşağıdaki komutu kullanın.

ora2pg -t COPY -o data.sql -b %namespace/data -c %namespace/config/ora2pg.conf

Dosyaları derleme

Son olarak, tüm dosyaları PostgreSQL için Azure Veritabanı derle. El ile oluşturulan DDL dosyalarını yüklemeyi seçebilir veya bu dosyaları etkileşimli olarak içeri import_all.sh betiği kullanabilirsiniz.

psql -f %namespace%\schema\sequences\sequence.sql -h server1-server.postgres.database.azure.com -p 5432 -U username@server1-server -d database -l %namespace%\ schema\sequences\create_sequences.log

psql -f %namespace%\schema\tables\table.sql -h server1-server.postgres.database.azure.com p 5432 -U username@server1-server -d database -l %namespace%\schema\tables\create_table.log

Veri içeri aktarma komutu şu şekildedir:

psql -f %namespace%\data\table1.sql -h server1-server.postgres.database.azure.com -p 5432 -U username@server1-server -d database -l %namespace%\data\table1.log

psql -f %namespace%\data\table2.sql -h server1-server.postgres.database.azure.com -p 5432 -U username@server1-server -d database -l %namespace%\data\table2.log

Dosyalar derlenmiş durumdayken, günlükleri denetleyin ve ora2pg'nin kendi başına dönüştüremediklerine ilişkin söz dizimlerini düzeltin.

Daha fazla bilgi için bkz. Oracle'PostgreSQL için Azure Veritabanı geçici çözümlerine bakın.

Geçiş

Gerekli önkoşullara sahip olduktan ve ön geçiş adımlarını tamamlandıktan sonra şemayı ve veri geçişini başlatabilirsiniz.

Şemayı ve verileri geçirme

Gerekli düzeltmeleri tamamlarken veritabanının kararlı bir derlemesi dağıtıma hazırdır. İçeri psql aktarma komutlarını çalıştırarak değiştirilen kodu içeren dosyaları işaret ediyor. Bu görev, veritabanı nesnelerini PostgreSQL veritabanına karşı derler ve verileri içeri aktarıyor.

Bu adımda, verileri içeri aktarmaya paralellik düzeyi uygulayabilirsiniz.

Verileri eşitleme ve kesme

Çevrimiçi (minimum kapalı kalma süresi) geçişlerde geçiş kaynağı değişmeye devam eder. Tek kullanımlık geçişten sonra veri ve şema açısından hedeften kayar.

Veri eşitleme aşamasında, kaynakta yapılan tüm değişikliklerin yakalanıp hedefe neredeyse gerçek zamanlı olarak uygulandığından emin olun. Tüm değişikliklerin uygulandığını doğruladikten sonra kaynaktan hedef ortama kes yapabilirsiniz.

Çevrimiçi geçiş yapmak için destek için AskAzureDBforPostgreSQL@service.microsoft.com başvurun.

Ora2pg kullanan bir delta/artımlı geçişte, her tablo için tarihe, saate veya başka bir parametreye göre filtre(kesme) işlemi yapılan bir sorgu kullanın. Ardından, kalan verileri geçiren ikinci bir sorgu kullanarak geçişi bitirin.

Kaynak veri tablosunda önce tüm geçmiş verileri geçirebilirsiniz. Aşağıda bir örnek verilmiştir:

select * from table1 where filter_data < 01/01/2019

İlk geçişin ardından aşağıdakine benzer bir komut çalıştırarak değişiklikleri sorguabilirsiniz:

select * from table1 where filter_data >= 01/01/2019

Bu durumda, hem kaynak hem de hedefte veri eşliğini kontrol ederek doğrulamayı geliştirmenizi öneririz.

Geçiş sonrası

Geçiş aşamasından sonra, her şeyin mümkün olduğunca sorunsuz ve verimli bir şekilde çalışmasını sağlamak için geçiş sonrası görevleri gerçekleştirin.

Uygulamaları düzeltme

Veriler hedef ortama geçirildikten sonra, kaynağı daha önce tüketen tüm uygulamaların hedefi tüketmeye başlaması gerekir. Kurulum bazen uygulamalarda değişiklik gerektirir.

Test etme

Veriler hedefe geçirildikten sonra, uygulamaların hedefle düzgün çalıştığını doğrulamak için veritabanlarında testler çalıştırın. Oracle kaynağı ve PostgreSQL hedef veritabanlarında el ile veri doğrulama betikleri çalıştırarak kaynağın ve hedefin düzgün şekilde geçirildikten emin olun.

İdeal olarak, kaynak ve hedef veritabanlarının ağ yolu varsa, veri doğrulaması için ora2pg kullanılmalıdır. Bu eylemi kullanarak TEST Oracle veritabanındaki tüm nesnelerin PostgreSQL'de oluşturulmuş olduğundan emin olun.

Şu komutu çalıştırın:

ora2pg -t TEST -c config/ora2pg.conf > migration_diff.txt

İyileştirme

Geçiş sonrası aşaması, veri doğruluğu sorunlarının mutabık kılınma ve tamlığı doğrulama açısından kritik öneme sahiptir. Bu aşamada, iş yüküyle ilgili performans sorunlarını da ele ayazabilirsiniz.

Geçiş varlıkları

Bu geçiş senaryosu hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın. Gerçek dünya geçiş projesi katılımını destekler.

Kaynak Açıklama
Oracle'den Azure PostgreSQL'e geçiş kılavuzu Bu belge mimarlara, danışmanlara, veritabanı yöneticilerine ve ilgili rollere ora2pg kullanarak iş yüklerini Oracle'dan PostgreSQL için Azure Veritabanı geçirmelerine yardımcı olur.
Oracle'den Azure PostgreSQL'e geçiş geçici çözümleri Bu belge, mimarların, danışmanların, veritabanı yöneticilerinin ve ilgili rollerin iş yüklerini Oracle'dan iş yüklerine ve iş yüklerini bir yandan hızlı bir şekilde düzeltmelerine veya sorunları çözmelerine PostgreSQL için Azure Veritabanı.
Windows veya Linux'a ora2pg yükleme adımları Bu belge, Windows veya Linux üzerinde ora2pg kullanarak Oracle'dan PostgreSQL için Azure Veritabanı'ye şema ve verileri Windows kılavuzu sağlar. Daha fazla bilgi için ora2pg belgelerine bakın.

Veri SQL Mühendislik ekibi bu kaynakları geliştirdi. Bu ekibin temel kaynağı, veri platformu geçiş projeleri için karmaşık modernleştirmenin engelini kaldırmak ve Microsoft Azure platformudur.

Daha fazla destek

Ora2pg araç kapsamının ötesinde geçiş yardımı için, @Ask PostgreSQL için Azure DB.

Sonraki adımlar

Veritabanı ve veri geçişi ve özel görevler için hizmetler ve araçlar matrisi için bkz. Veri geçişi için hizmetler ve araçlar.

Belgeler: