Oracle'ı PostgreSQL için Azure Veritabanı'a geçirme

ŞUNLAR IÇIN GEÇERLIDIR: PostgreSQL için Azure Veritabanı - Tek Sunucu PostgreSQL için Azure Veritabanı - Esnek Sunucu

Bu kılavuz Oracle şemanızı PostgreSQL için Azure Veritabanı geçirmenize yardımcı olur.

Ayrıntılı ve kapsamlı geçiş kılavuzu için bkz . Geçiş kılavuzu kaynakları.

Ön koşullar

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

  • Kaynak ortamınızın desteklendiğini doğrulayın.
  • ora2pg'nin en son sürümünü indirin.
  • DBD modülünün en son sürümüne sahip olmak.

Genel Bakış

PostgreSQL, dünyanın en gelişmiş açık kaynak veritabanlarından biridir. Bu makalede, ücretsiz ora2pg aracını kullanarak Oracle veritabanını PostgreSQL'e geçirme işlemi açıklanır. Oracle veritabanını veya MySQL veritabanını PostgreSQL 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ükleyebileceğiniz SQL betikleri oluşturur. Ora2pg'yi oracle veritabanına tersine mühendislik işlemi yapma, büyük bir kurumsal veritabanını geçirme veya bazı Oracle verilerini PostgreSQL veritabanına çoğaltma gibi görevler için kullanabilirsiniz. Araç kullanımı kolaydır ve Oracle veritabanına bağlanmak için gereken parametreleri sağlamanın yanı sıra Oracle veritabanı bilgisi gerektirmez.

Not

ora2pg'nin en son sürümünü kullanma hakkında daha fazla bilgi için ora2pg belgelerine bakın.

Tipik ora2pg geçiş mimarisi

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

VM'yi ve PostgreSQL için Azure Veritabanı sağladı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 > Azure hizmetlerine >erişime izin verON

  • Bağlantı Güvenliği dikey penceresi >SSL Ayarları>SSL Bağlantısını> ZorlaDEVRE DIŞI

Öneriler

  • Oracle sunucusunda değerlendirme veya dışarı aktarma işlemlerinin performansını geliştirmek 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 COPY verileri dışarı aktarın INSERT.

  • Tabloları yabancı anahtarlar (FK), kısıtlamalar ve dizinlerle dışarı aktarmaktan kaçının. Bu öğeler PostgreSQL'e veri aktarma işlemini yavaşlatır.

  • Veri yok 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 dizinler kullanın. Bu dizinler, söz dizimini REFRESH MATERIALIZED VIEW CONCURRENTLYkullandığınızda yenilemeyi hızlandırabilir.

Geçiş öncesi

Kaynak ortamınızın desteklendiğini ve önkoşulları giderdiğinizden emin olduktan sonra, geçiş aşamasına başlamaya hazırsınız demektir. Başlamak için:

  1. Bulma: Geçirmeniz gereken veritabanlarının envanterini oluşturun.
  2. Değerlendirme: Olası geçiş sorunları veya engelleyiciler için bu veritabanlarını değerlendirin.
  3. Dönüştür: Açığa çıkardığınız tüm öğeleri çözün.

Oracle'ın PostgreSQL için Azure Veritabanı gibi heterojen geçişler için bu aşama, kaynak veritabanı şemalarının hedef ortamla uyumlu olmasını da içerir.

Bulma

Bulma aşamasının amacı, mevcut veri kaynaklarını ve kullanılmakta olan özelliklerle ilgili ayrıntıları tanımlamaktır. Bu aşama, geçişi daha iyi anlamanıza ve planlamanıza yardımcı olur. Bu işlem, kuruluşunuzun tüm Oracle örneklerini kullanımdaki sürüm ve özelliklerle birlikte tanımlamak için ağı taramayı içerir.

Oracle için Microsoft ön değerlendirme betikleri Oracle veritabanında çalıştırılır. Değerlendirme öncesi betikleri Oracle meta verilerini sorgular. Betikler aşağıdakileri sağlar:

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

github'dan ilgili betikleri indirin.

Değerlendirme

Oracle veritabanlarının envanterini yaptıktan sonra veritabanı boyutu ve olası zorluklar hakkında bir fikriniz olur. Sonraki adım değerlendirmeyi çalıştırmaktır.

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

Ora2pg aracı, Oracle veritabanını inceleyen bir içerik analizi moduna sahiptir ve bir metin raporu oluşturur. Raporda Oracle veritabanının içeriği ve dışarı aktarılabilecekleri açıklanmaktadır.

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

ora2pg -t SHOW_REPORT

Ora2pg aracı SQL ve PL/SQL kodunu Oracle söz diziminden PostgreSQL'e dönüştürebilir. Bu nedenle, veritabanı analiz edildikten sonra ora2pg kod güçlüklerini ve tam veritabanını geçirmek için gereken süreyi tahmin edebilir.

İnsan günlerindeki geçiş maliyetini tahmin etmek için ora2pg adlı ESTIMATE_COSTbir yapılandırma yönergesi kullanmanıza olanak tanır. Bu yönergeyi bir komut isteminde de etkinleştirebilirsiniz:

ora2pg -t SHOW_REPORT --estimate_cost

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

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

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

  • Tablo değerlendirmesi
  • Sütun değerlendirmesi
  • 5 dakikalık varsayılan maliyet birimi 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ğıdadır:

  • Geçiş düzeyleri:

    • A - Otomatik olarak çalıştırılabilir geçiş

    • B - Kod yeniden yazma ve insan günü maliyeti 5 güne kadar olan geçiş

    • C - Kod yeniden yazma ile geçiş ve 5 günden fazla insan günü maliyeti

  • Teknik düzeyler:

    • 1 = Önemsiz: Depolanan işlev yok ve tetikleyici yok

    • 2 = Kolay: Depolanan işlev yok, ancak tetikleyiciler; el ile yeniden yazma yok

    • 3 = Basit: Depolanan işlevler ve/veya tetikleyiciler; el ile yeniden yazma yok

    • 4 = El ile: Depolanmış işlev yok, ancak kod yeniden yazma ile tetikleyiciler veya görünümler

    • 5 = Zor: Kod yeniden yazma ile depolanan işlevler ve/veya tetikleyiciler

Değerlendirme şunlardan oluşur:

  • Geçişin el ile yeniden yazılması gerekip gerekmediğini belirten bir harf (A veya B).

  • Teknik zorluğu göstermek için 1'den 5'e kadar bir sayı.

Bir diğer seçenek olan -human_days_limit, insan günü sınırını belirtir. Burada, geçişin büyük miktarda çalışma, tam proje yönetimi ve geçiş desteğine ihtiyacı olduğunu belirtmek için geçiş düzeyini C olarak ayarlayın. Varsayılan değer 10 insan günüdür. Bu varsayılan değeri kalıcı olarak değiştirmek için yapılandırma yönergesini HUMAN_DAYS_LIMIT kullanabilirsiniz.

Bu şema değerlendirmesi, kullanıcıların önce hangi veritabanını geçirip hangi ekipleri harekete geçireceklerine karar vermelerine yardımcı olmak için geliştirilmiştir.

Dönüştür

En düşük kapalı kalma süresine neden olan geçişlerde, geçiş kaynağınız değişir. Tek seferlik geçişten sonra veriler ve şema açısından hedeften kayıyor. Veri eşitleme aşamasında, kaynaktaki tüm değişikliklerin yakalandığından ve hedefe neredeyse gerçek zamanlı olarak uygulandığından emin olun. Tüm değişikliklerin hedefe uygulandığını doğruladıktan sonra kaynaktan hedef ortama geçiş yapabilirsiniz.

Geçişin bu adımında Oracle kodu ve DDL betikleri PostgreSQL'e dönüştürülür veya dönüştürülür. ora2pg aracı Oracle nesnelerini otomatik olarak PostgreSQL biçiminde dışarı aktarır. Oluşturulan nesnelerden bazıları el ile yapılan değişiklikler olmadan PostgreSQL veritabanında derlenemez.

Hangi öğelerin el ile müdahaleye ihtiyacı olduğunu anlamak için önce ora2pg tarafından oluşturulan dosyaları PostgreSQL veritabanına karşı derleyin. 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 tarafından sunulan geçiş şablonunu kullanmanızı öneririz. ve --init_projectseçeneklerini --project_base kullandığınızda, ora2pg oracle veritabanındaki tüm nesneleri dışarı aktarmak için iş ağacı, yapılandırma dosyası ve betik içeren bir proje ş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 çıktı aşağıda verilmiştir:

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 Oracle sources/ kodunu içerir. Dizin PostgreSQL'e schema/ taşınabilir 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 yapılandırma dosyasındaki ilgili yapılandırma parametrelerini 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ı sunucusuna karşı derleyin. El ile oluşturulan DDL dosyalarını yüklemeyi veya ikinci betiği import_all.sh kullanarak bu dosyaları etkileşimli olarak içeri aktarmayı seçebilirsiniz.

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 aşağıdadır:

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 derlenirken günlükleri denetleyin ve ora2pg'nin kendi kendine dönüştüremediği söz dizimlerini düzeltin.

Daha fazla bilgi için bkz. Oracle'PostgreSQL için Azure Veritabanı geçiş geçici çözümleri.

Geçiş

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

Şemayı ve verileri geçirme

Gerekli düzeltmeleri yaptığınızda, veritabanının kararlı bir derlemesi dağıtıma hazır hale gelir. psql Değiştirilen kodu içeren dosyalara işaret ederek içeri aktarma komutlarını çalıştırın. Bu görev, veritabanı nesnelerini PostgreSQL veritabanına karşı derler ve verileri içeri aktarır.

Bu adımda, verileri içeri aktarırken bir paralellik düzeyi uygulayabilirsiniz.

Verileri eşitleme ve kesme

Çevrimiçi (en düşük kapalı kalma süresi) geçişlerinde geçiş kaynağı değişmeye devam eder. Tek seferlik geçişten sonra veriler ve şema açısından hedeften kayıyor.

Veri eşitleme aşamasında, kaynaktaki tüm değişikliklerin yakalandığından ve hedefe neredeyse gerçek zamanlı olarak uygulandığından emin olun. Tüm değişikliklerin uygulandığını doğruladıktan sonra kaynaktan hedef ortama geçiş yapabilirsiniz.

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

ora2pg kullanan bir delta/artımlı geçişte, her tablo için tarihe, saate veya başka bir parametreye göre filtreleyen (kesen) bir sorgu kullanın. Ardından kalan verileri geçiren ikinci bir sorgu kullanarak geçişi tamamlayın.

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

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

İlk geçiş işleminden bu yana yapılan değişiklikleri aşağıdakine benzer bir komut çalıştırarak sorgulayabilirsiniz:

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

Bu durumda, her iki tarafta, kaynakta ve hedefte veri eşliğini denetleyerek doğrulamayı geliştirmenizi öneririz.

Geçiş sonrası

Geçiş aşamasından sonra, her şeyin mümkün olduğunca sorunsuz ve verimli çalıştığından emin olmak için geçiş sonrası görevleri tamamlayın.

Uygulamaları düzeltme

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

Test etme

Veriler hedefe geçirildikten sonra, uygulamaların hedefle iyi ç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 betiklerini çalıştırarak kaynak ve hedefin düzgün bir şekilde geçirildiğinden emin olun.

İdeal olarak, kaynak ve hedef veritabanlarının bir ağ yolu varsa, veri doğrulama için ora2pg kullanılmalıdır. Oracle veritabanındaki TEST tüm nesnelerin PostgreSQL'de oluşturulduğundan emin olmak için eylemi kullanabilirsiniz.

Ş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ıklığı ve eksiksizliğin doğrulanması açısından çok önemlidir. Bu aşamada, iş yüküyle ilgili performans sorunlarını da ele alırsınız.

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'ı Azure PostgreSQL'e geçirme kılavuzu Bu belge mimarların, danışmanların, veritabanı yöneticilerinin ve ilgili rollerin ora2pg kullanarak iş yüklerini Oracle'dan PostgreSQL için Azure Veritabanı hızla geçirmesine yardımcı olur.
Oracle'ı Azure PostgreSQL'e geçirme geçici çözümleri Bu belge mimarların, danışmanların, veritabanı yöneticilerinin ve ilgili rollerin iş yüklerini Oracle'dan PostgreSQL için Azure Veritabanı geçirirken sorunları hızla düzeltmesine veya geçici olarak çözmesine yardımcı olur.
Windows veya Linux'ta ora2pg yükleme adımları Bu belge, Windows veya Linux üzerinde ora2pg kullanarak şemayı ve verileri Oracle'dan PostgreSQL için Azure Veritabanı'a geçirmek için hızlı bir yükleme kılavuzu sağlar. Daha fazla bilgi için ora2pg belgelerine bakın.

Bu kaynakları Data SQL Mühendislik ekibi geliştirdi. Bu ekibin temel şartı, microsoft Azure veri platformuna veri platformu geçiş projeleri için karmaşık modernleştirmenin engelini kaldırmak ve hızlandırmaktır.

Daha fazla destek

Ora2pg araçlarının kapsamını aşan geçiş yardımı için PostgreSQL için Azure DB@Ask başvurun.

Sonraki adımlar

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

Belgeler: