Aracılığıyla paylaş


Oracle'ı Ora2Pg Kullanarak PostgreSQL için Azure Veritabanı Geçirme

ŞUNLAR IÇIN GEÇERLIDIR: PostgreSQL için Azure Veritabanı esnek sunucusu

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

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

Önkoş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 olun.

Genel bakış

PostgreSQL, dünyanın en gelişmiş açık kaynak veritabanlarından biridir. Bu makalede, bir Oracle veritabanını PostgreSQL'e geçirmek için ücretsiz Ora2Pg aracının nasıl kullanılacağı açıklanmaktadı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 ters mühendislik uygulama, 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ğlama özelliğinin 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 ver ON

  • Bağlantı Güvenliği dikey penceresi> SSL Ayarları>SSL Bağlantısını>Zorunlu Kılma DEVRE DIŞI

Öneriler

  • Oracle sunucusundaki 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 dizinleriyle 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. Söz dizimini REFRESH MATERIALIZED VIEW CONCURRENTLYkullandığınızda bu dizinler 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 öğeleri çözün.

Oracle gibi PostgreSQL için Azure Veritabanı 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ılan ö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ışır. Değerlendirme öncesi betikler Oracle meta verilerini sorgular. Betikler aşağıdakileri sağlar:

  • Şemaya, türe ve duruma göre nesne sayısı da dahil olmak üzere bir 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ğerlendir

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şlevlerini ve saklı yordamlarını denetler.

Ora2Pg aracının bir metin raporu oluşturmak için Oracle veritabanını inceleyen bir içerik analizi modu vardır. Rapor, Oracle veritabanının neler içerdiğini ve nelerin dışarı aktarılabildiğini açıklar.

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ı çözümlendiğinde Ora2Pg kod zorluklarını 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, 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 tahmin edilen 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 ile geçiş ve 5 güne kadar insan günü maliyeti

    • 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 belirtmek için bir harf (A veya B).

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

Başka bir 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çireceğine ve hangi ekipleri harekete geçireceğine 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 kesebilirsiniz.

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ında 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'nin sağladığı geçiş şablonunu kullanmanızı öneririz. ve --project_baseseçeneklerini --init_project 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ı ş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 Oracle sources/ kodunu içerir. Dizin, schema/ PostgreSQL'e 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 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ı sunucusuna karşı derleyin. El ile oluşturulan DDL dosyalarını yüklemeyi seçebilir veya bu dosyaları etkileşimli olarak içeri aktarmak için ikinci betik import_all.sh 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 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 to 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 şemayı 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 aktarmaya paralellik düzeyi uygulayabilirsiniz.

Verileri eşitleme ve kesme

Çevrimiçi (en düşük kapalı kalma süresi) geçişlerde 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 kesebilirsiniz.

Çevrimiçi geçiş yapmak için destek için iletişime geçin 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. Bir örnek aşağıda verilmiştir:

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

İlk geçiş sonrasındaki değişiklikleri sorgulamak için aşağıdakine benzer bir komut çalıştırabilirsiniz:

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

Bu durumda, her iki tarafta da, 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 geçirildiğinden emin olun.

İdeal olarak, kaynak ve hedef veritabanlarının bir ağ yolu varsa, veri doğrulaması 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

Optimize Et

Geçiş sonrası aşama, 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.