Bagikan melalui


Desain dan performa untuk migrasi Oracle

Artikel ini adalah bagian salah satu dari seri tujuh bagian yang menyediakan panduan tentang cara bermigrasi dari Oracle ke Azure Synapse Analytics. Fokus artikel ini adalah praktik terbaik untuk desain dan performa.

Overview

Karena biaya dan kompleksitas memelihara dan meningkatkan lingkungan Oracle lokal warisan, banyak pengguna Oracle yang ada ingin memanfaatkan inovasi yang disediakan oleh lingkungan cloud modern. Lingkungan cloud Infrastruktur sebagai layanan (IaaS) dan platform as a service (PaaS) memungkinkan Anda mendelegasikan tugas seperti pemeliharaan infrastruktur dan pengembangan platform ke penyedia cloud.

Tip

Lebih dari sekadar database—lingkungan Azure mencakup serangkaian kemampuan dan alat yang komprehensif.

Meskipun Oracle dan Azure Synapse Analytics adalah kedua database SQL yang menggunakan teknik pemrosesan paralel besar-besaran (MPP) untuk mencapai performa kueri tinggi pada volume data yang sangat besar, ada beberapa perbedaan dasar dalam pendekatan:

  • Sistem Oracle warisan sering diinstal secara lokal dan menggunakan perangkat keras yang relatif mahal, sementara Azure Synapse berbasis cloud dan menggunakan penyimpanan Azure dan sumber daya komputasi.

  • Meningkatkan konfigurasi Oracle adalah tugas utama yang melibatkan perangkat keras fisik ekstra dan konfigurasi ulang database yang berpotensi panjang, atau membuang dan memuat ulang. Karena sumber daya penyimpanan dan komputasi terpisah di lingkungan Azure serta memiliki kemampuan penskalaan elastis, sumber daya tersebut dapat ditingkatkan atau diturunkan secara independen.

  • Anda dapat menjeda atau mengubah ukuran Azure Synapse sesuai kebutuhan untuk mengurangi pemanfaatan sumber daya dan biaya.

Microsoft Azure adalah lingkungan cloud yang tersedia secara global, sangat aman, serta dapat diskalakan, yang mencakup Azure Synapse dan ekosistem alat dan kemampuan pendukung. Diagram berikutnya meringkas ekosistem Azure Synapse.

Bagan yang menampilkan ekosistem Azure Synapse dari alat dan kemampuan pendukung.

Azure Synapse memberikan performa database relasional terbaik dengan menggunakan teknik seperti MPP dan penembolokan dalam memori otomatis. Anda dapat melihat hasil teknik ini dalam tolok ukur independen seperti yang dijalankan baru-baru ini oleh GigaOm, yang membandingkan Azure Synapse dengan penawaran gudang data cloud populer lainnya. Pelanggan yang bermigrasi ke lingkungan Azure Synapse melihat banyak keuntungan, meliputi:

  • Peningkatan kinerja dan rasio harga/kinerja.

  • Peningkatan kelincahan dan waktu yang lebih singkat untuk mencapai nilai.

  • Penyebaran server yang lebih cepat dan pengembangan aplikasi.

  • Skalabilitas elastis—hanya membayar penggunaan sebenarnya.

  • Improved security/compliance.

  • Mengurangi biaya penyimpanan dan pemulihan bencana.

  • TCO keseluruhan yang lebih rendah, kontrol biaya yang lebih baik, dan pengeluaran operasional yang efisien (OPEX).

Untuk memaksimalkan manfaat ini, migrasi data dan aplikasi baru atau yang sudah ada ke platform Azure Synapse. Di banyak organisasi, migrasi mencakup pemindahan gudang data yang ada dari platform lokal warisan, seperti Oracle, ke Azure Synapse. Pada tingkat tinggi, proses migrasi mencakup langkah-langkah ini:

    Preparation 🡆

  • Tentukan cakupan—apa yang akan dimigrasikan.

  • Bangun inventaris data dan proses untuk migrasi.

  • Tentukan perubahan model data (jika ada).

  • Tentukan mekanisme ekstrak data sumber.

  • Identifikasi alat dan fitur Azure serta pihak ketiga yang sesuai untuk digunakan.

  • Latih staf lebih awal di platform baru.

  • Siapkan platform target Azure.

    Migration 🡆

  • Mulai dari yang kecil dan sederhana.

  • Otomatiskan jika memungkinkan.

  • Manfaatkan alat dan fitur bawaan Azure untuk mengurangi upaya migrasi.

  • Migrasikan metadata untuk tabel dan tampilan.

  • Migrasikan data historis yang akan dipertahankan.

  • Lakukan migrasi atau menata ulang prosedur tersimpan dan proses bisnis.

  • Migrasi atau refaktorisasi proses pemuatan inkremental ETL/ELT.

    Post migration

  • Pantau dan dokumentasikan semua tahapan proses.

  • Gunakan pengalaman yang diperoleh untuk membuat templat untuk migrasi mendatang.

  • Rekayasa ulang model data jika diperlukan (menggunakan performa dan skalabilitas platform baru).

  • Uji aplikasi dan alat kueri.

  • Tolok ukur dan optimalkan performa kueri.

Artikel ini menyediakan informasi umum dan panduan untuk pengoptimalan performa saat memigrasikan gudang data dari lingkungan Oracle yang ada ke Azure Synapse. Tujuan pengoptimalan performa adalah untuk mencapai performa gudang data yang sama atau lebih baik di Azure Synapse setelah migrasi.

Design considerations

Migration scope

Saat Anda bersiap untuk bermigrasi dari lingkungan Oracle, pertimbangkan pilihan migrasi berikut.

Pilih beban kerja untuk migrasi awal

Biasanya, lingkungan Oracle warisan telah berkembang dari waktu ke waktu untuk mencakup beberapa area subjek dan beban kerja campuran. Saat Anda memutuskan dari mana memulai proyek migrasi, pilih area yang akan dapat:

  • Membuktikan kelayakan migrasi ke Azure Synapse dengan memberikan manfaat lingkungan baru dengan cepat.

  • Memungkinkan staf teknis internal Anda untuk mendapatkan pengalaman yang sesuai dengan proses dan alat yang akan mereka gunakan saat mereka memigrasikan area lain.

  • Buat templat untuk migrasi lebih lanjut yang khusus untuk lingkungan Oracle sumber dan alat dan proses saat ini yang sudah ada.

Kandidat yang baik untuk migrasi awal dari lingkungan Oracle mendukung item sebelumnya, dan:

  • Menerapkan beban kerja BI/Analitik daripada beban kerja pemrosesan transaksi online (OLTP).

  • Memiliki model data, seperti bintang atau skema snowflake, yang dapat dimigrasikan dengan modifikasi minimal.

Tip

Buat inventaris objek yang perlu dimigrasikan, dan dokumentasikan proses migrasi.

Volume data yang dimigrasikan dalam migrasi awal harus cukup besar untuk menunjukkan kemampuan dan keuntungan lingkungan Azure Synapse tetapi tidak terlalu besar untuk menunjukkan nilai dengan cepat. Ukuran dalam rentang 1-10 terabyte merupakan ukuran umum.

Pendekatan awal untuk proyek migrasi adalah meminimalkan risiko, upaya, dan waktu yang diperlukan sehingga Anda dengan cepat melihat manfaat lingkungan cloud Azure. Pendekatan berikut membatasi cakupan migrasi awal hanya untuk mart data dan tidak mengatasi aspek migrasi yang lebih luas, seperti migrasi ETL dan migrasi data historis. Namun, Anda dapat mengatasi aspek-aspek tersebut di fase proyek selanjutnya setelah lapisan data mart yang dimigrasikan diisi ulang dengan data dan proses build yang diperlukan.

Migrasi 'lift and shift' vs. pendekatan bertahap

Secara umum, ada dua jenis migrasi, apa pun tujuan dan cakupan migrasi yang direncanakan: lift and shift apa adanya dan pendekatan bertahap yang menggabungkan perubahan.

Angkat dan pindahkan

Pada migrasi jenis lift and shift, model data yang sudah ada, seperti skema bintang, dipindahkan tanpa perubahan ke platform baru Azure Synapse. Pendekatan ini meminimalkan risiko dan waktu migrasi dengan mengurangi pekerjaan yang diperlukan untuk mewujudkan menfaat berpindah ke lingkungan cloud Azure. Migrasi angkat dan pindah cocok untuk skenario-skenario berikut:

  • Anda memiliki lingkungan Oracle yang ada dengan satu data mart untuk dimigrasikan, atau
  • Anda memiliki lingkungan Oracle yang ada dengan data yang sudah berada dalam skema bintang atau snowflake yang dirancang dengan baik, atau
  • Anda berada di bawah tekanan waktu dan biaya untuk berpindah ke lingkungan cloud modern.

Tip

Lift and shift adalah titik awal yang baik, bahkan jika fase-fase selanjutnya menerapkan perubahan pada model data.

Pendekatan bertahap yang menggabungkan perubahan

Jika gudang data lama telah berevolusi dalam jangka waktu yang lama, Anda mungkin perlu merekayasa ulang untuk mempertahankan tingkat performa yang diperlukan. Anda mungkin juga harus merekayasa ulang untuk mendukung data baru seperti aliran Internet of Things (IoT). Sebagai bagian dari proses rekayasa ulang, migrasikan ke Azure Synapse untuk mendapatkan manfaat dari lingkungan cloud yang dapat diskalakan. Migrasi dapat menyertakan perubahan dalam model data yang mendasar, seperti perpindahan dari model Inmon ke brankas data.

Microsoft merekomendasikan untuk memindahkan model data yang ada apa adanya ke Azure dan menggunakan performa serta fleksibilitas lingkungan Azure untuk menerapkan perubahan rekayasa ulang. Dengan demikian, Anda dapat menggunakan kemampuan Azure untuk membuat perubahan tanpa memengaruhi sistem sumber yang ada.

Menggunakan fasilitas Microsoft untuk menerapkan migrasi berbasis metadata

Anda dapat mengotomatiskan dan mengatur proses migrasi menggunakan kemampuan lingkungan Azure. Pendekatan ini meminimalkan pukulan performa pada lingkungan Oracle yang ada, yang mungkin sudah berjalan mendekati kapasitas.

Asisten Migrasi SQL Server (SSMA) untuk Oracle dapat mengotomatiskan banyak bagian dari proses migrasi, termasuk dalam beberapa kasus fungsi dan kode prosedural. SSMA mendukung Azure Synapse sebagai lingkungan target.

Cuplikan layar memperlihatkan bagaimana Asisten Migrasi SQL Server untuk Oracle dapat mengotomatiskan banyak bagian dari proses migrasi.

SSMA untuk Oracle dapat membantu Anda memigrasikan gudang data Oracle atau data mart ke Azure Synapse. SSMA dirancang untuk mengotomatiskan proses migrasi tabel, tampilan, dan data dari lingkungan Oracle yang ada.

Azure Data Factory adalah layanan integrasi data berbasis cloud yang mendukung pembuatan alur kerja berbasis data di cloud yang mengatur serta mengotomatiskan pergerakan data dan transformasi data. Anda dapat menggunakan Data Factory untuk membuat dan menjadwalkan alur kerja berbasis data (pipeline) yang mengambil data dari tempat penyimpanan data yang berbeda-beda. Data Factory dapat memproses dan mengubah data dengan menggunakan layanan komputasi seperti Azure HDInsight Hadoop, Spark, Azure Data Lake Analytics, dan Azure Machine Learning.

Data Factory dapat digunakan untuk memigrasikan data di sumber ke target Azure SQL. Pergerakan data offline ini membantu mengurangi waktu henti migrasi secara signifikan.

Azure Database Migration Services dapat membantu Anda merencanakan dan melakukan migrasi dari lingkungan seperti Oracle.

Saat Anda berencana menggunakan fasilitas Azure untuk mengelola proses migrasi, buat metadata yang mencantumkan semua tabel data yang akan dimigrasikan dan lokasinya.

Perbedaan desain antara Oracle dan Azure Synapse

Seperti disebutkan sebelumnya, ada beberapa perbedaan dasar dalam pendekatan antara database Oracle dan Azure Synapse Analytics. SSMA untuk Oracle tidak hanya membantu menjelajah kesenjangan ini tetapi juga mengotomatiskan migrasi. Meskipun SSMA bukan pendekatan yang paling efisien untuk volume data yang sangat tinggi, ini berguna untuk tabel yang lebih kecil.

Beberapa database vs. database tunggal dan skema

Lingkungan Oracle sering berisi beberapa database terpisah. Misalnya, mungkin ada database terpisah untuk: tabel penyerapan dan penahapan data, tabel gudang inti, dan mart data—terkadang disebut sebagai lapisan semantik. Pemrosesan dalam alur ETL atau ELT dapat menerapkan gabungan lintas database dan memindahkan data di antara database terpisah.

Sebaliknya, lingkungan Azure Synapse berisi database tunggal dan menggunakan skema untuk memisahkan tabel ke dalam grup yang terpisah secara logis. Kami menyarankan agar Anda menggunakan serangkaian skema dalam database Azure Synapse target untuk meniru database terpisah yang dimigrasikan dari lingkungan Oracle. Jika lingkungan Oracle sudah menggunakan skema, Anda mungkin perlu menggunakan konvensi penamaan baru saat memindahkan tabel Dan tampilan Oracle yang ada ke lingkungan baru. Misalnya, Anda dapat menggabungkan skema Oracle dan nama tabel yang ada ke dalam nama tabel Azure Synapse baru, dan menggunakan nama skema di lingkungan baru untuk mempertahankan nama database terpisah asli. Meskipun Anda dapat menggunakan tampilan SQL di atas tabel yang mendasarinya untuk mempertahankan struktur logis, ada potensi kerugian untuk pendekatan itu:

  • Tampilan di Azure Synapse bersifat baca-saja, jadi setiap pembaruan data harus dilakukan di tabel dasar yang mendasarinya.

  • Mungkin sudah ada satu atau beberapa lapisan tampilan yang ada dan menambahkan lapisan tampilan tambahan dapat memengaruhi performa.

Tip

Gabungkan beberapa database menjadi satu database dalam Azure Synapse dan gunakan nama skema untuk memisahkan tabel secara logis.

Table considerations

Saat Anda memigrasikan tabel antara lingkungan yang berbeda, biasanya hanya data mentah dan metadata yang menjelaskannya yang dimigrasikan secara fisik. Elemen database lain dari sistem sumber, seperti indeks, biasanya tidak dimigrasikan karena mungkin tidak perlu atau diimplementasikan secara berbeda di lingkungan baru.

Optimasi performa di lingkungan sumber, seperti indeks, menunjukkan tempat Anda dapat menambahkan optimasi performa di lingkungan baru. Misalnya, jika kueri di lingkungan Oracle sumber sering menggunakan indeks yang dipetakan bit, yang menunjukkan bahwa indeks yang tidak berkluster harus dibuat dalam Azure Synapse. Teknik pengoptimalan performa native lainnya seperti replikasi tabel mungkin lebih dapat diterapkan daripada pembuatan indeks like-for-like langsung. SSMA untuk Oracle dapat digunakan untuk memberikan rekomendasi migrasi untuk distribusi dan pengindeksan tabel.

Tip

Indeks yang ada menunjukkan kandidat untuk pengindeksan di gudang yang dimigrasikan.

Jenis objek database Oracle yang tidak didukung

Fitur khusus Oracle sering kali dapat diganti dengan fitur Azure Synapse. Namun, beberapa objek database Oracle tidak didukung di Azure Synapse. Daftar objek database Oracle yang tidak didukung berikut ini menjelaskan bagaimana Anda dapat mencapai fungsionalitas yang setara di Azure Synapse.

  • Berbagai opsi pengindeksan: di Oracle, beberapa opsi pengindeksan, seperti indeks yang dipetakan bit, indeks berbasis fungsi, dan indeks domain, tidak memiliki indeks yang setara langsung di Azure Synapse.

    Anda dapat mengetahui kolom mana yang diindeks dan jenis indeks dengan:

    • Mengkueri tabel dan tampilan katalog sistem, seperti ALL_INDEXES, , DBA_INDEXESUSER_INDEXES, dan DBA_IND_COL. Anda dapat menggunakan kueri bawaan di Oracle SQL Developer, seperti yang ditunjukkan pada cuplikan layar berikut.

      Cuplikan layar memperlihatkan cara mengkueri tabel dan tampilan katalog sistem di Oracle SQL Developer.

      Atau, jalankan kueri berikut untuk menemukan semua indeks jenis tertentu:

      SELECT * FROM dba_indexes WHERE index_type LIKE 'FUNCTION-BASED%';
      
    • Mengkueri dba_index_usage tampilan atau v$object_usage saat pemantauan diaktifkan. Anda dapat mengkueri tampilan tersebut di Oracle SQL Developer, seperti yang ditunjukkan pada cuplikan layar berikut.

      Cuplikan layar memperlihatkan cara mengetahui indeks mana yang digunakan di Oracle SQL Developer.

    Indeks berbasis fungsi, di mana indeks berisi hasil fungsi pada kolom data yang mendasar, tidak memiliki setara langsung di Azure Synapse. Sebaiknya migrasikan data terlebih dahulu, lalu di Azure Synapse jalankan kueri Oracle yang menggunakan indeks berbasis fungsi untuk mengukur performa. Jika performa kueri tersebut di Azure Synapse tidak dapat diterima, pertimbangkan untuk membuat kolom yang berisi nilai yang telah dihitung sebelumnya lalu indeks kolom tersebut.

    Saat Anda mengonfigurasi lingkungan Azure Synapse, masuk akal untuk hanya menerapkan indeks yang digunakan. Azure Synapse saat ini mendukung jenis indeks yang diperlihatkan di sini:

    Cuplikan layar memperlihatkan jenis indeks yang didukung Azure Synapse.

    Fitur Azure Synapse, seperti pemrosesan kueri paralel dan penembolokan data dan hasil dalam memori, membuatnya kemungkinan lebih sedikit indeks yang diperlukan untuk aplikasi gudang data untuk mencapai tujuan performa. Kami menyarankan agar Anda menggunakan jenis indeks berikut di Azure Synapse:

    • Indeks penyimpan kolom berkluster: ketika tidak ada opsi indeks yang ditentukan untuk tabel, Azure Synapse secara default membuat indeks penyimpan kolom berkluster. Tabel penyimpan kolom berkluster menawarkan tingkat kompresi data tertinggi, performa kueri keseluruhan terbaik, dan umumnya mengungguli indeks berkluster atau tabel timbunan. Indeks penyimpan kolom berkluster biasanya merupakan pilihan terbaik untuk tabel besar. Saat Anda membuat tabel, pilih penyimpan kolom berkluster jika Anda tidak yakin cara mengindeks tabel Anda. Namun, ada beberapa skenario di mana indeks penyimpan kolom berkluster bukan opsi terbaik:

      • Tabel dengan data pra-pengurutan pada kunci pengurutan dapat memperoleh manfaat dari eliminasi segmen yang diaktifkan oleh indeks penyimpan kolom berkluster yang diurutkan .
      • Tabel dengan jenis data varchar(max), nvarchar(max), atau varbinary(max), karena indeks penyimpan kolom berkluster tidak mendukung jenis data tersebut. Sebagai gantinya, pertimbangkan untuk menggunakan timbunan atau indeks berkluster.
      • Tabel dengan data sementara, karena tabel penyimpan kolom mungkin kurang efisien daripada tabel timbunan atau sementara.
      • Tabel kecil dengan kurang dari 100 juta baris. Sebagai gantinya, pertimbangkan untuk menggunakan tabel tumpuk.
    • Indeks penyimpan kolom berkluster yang diurutkan: Dengan mengaktifkan eliminasi segmen yang efisien, indeks penyimpan kolom berkluster yang diurutkan di kumpulan SQL khusus Azure Synapse memberikan performa yang jauh lebih cepat dengan melewati sejumlah besar data yang diurutkan yang tidak cocok dengan predikat kueri. Memuat data ke dalam tabel CCI yang diurutkan dapat memakan waktu lebih lama dari tabel CCI yang tidak diurutkan karena operasi pengurutan data, namun kueri dapat berjalan lebih cepat setelahnya dengan CCI yang diurutkan. Untuk informasi selengkapnya tentang indeks penyimpan kolom berkluster yang diurutkan, lihat Penyetelan performa dengan indeks penyimpan kolom berkluster yang diurutkan.

    • Indeks terkluster dan non-kluster: indeks berkluster dapat mengungguli indeks penyimpan kolom berkluster ketika satu baris perlu diambil dengan cepat. Untuk kueri di mana pencarian baris tunggal, atau hanya beberapa pencarian baris, harus dilakukan dengan kecepatan ekstrem, pertimbangkan untuk menggunakan indeks kluster atau indeks sekunder non-kluster. Kerugian menggunakan indeks berkluster adalah bahwa hanya kueri dengan filter yang sangat selektif pada kolom indeks berkluster yang akan mendapat manfaat. Untuk meningkatkan pemfilteran pada kolom lain, Anda bisa menambahkan indeks non-kluster ke kolom lain. Namun, setiap indeks yang Anda tambahkan ke tabel menggunakan lebih banyak ruang dan meningkatkan waktu pemrosesan untuk dimuat.

    • Tabel timbunan: saat Anda mendaratkan data untuk sementara di Azure Synapse, Anda mungkin menemukan bahwa menggunakan tabel timbunan membuat proses keseluruhan lebih cepat. Ini karena memuat data ke tabel timbunan lebih cepat daripada memuat data ke tabel indeks, dan dalam beberapa kasus pembacaan berikutnya dapat dilakukan dari cache. Jika Anda memuat data hanya untuk tahap sebelum menjalankan lebih banyak transformasi, jauh lebih cepat untuk memuatnya ke tabel tumpuk daripada tabel penyimpan kolom berkluster. Selain itu, memuat data ke tabel sementara lebih cepat daripada memuat tabel ke penyimpanan permanen. Untuk tabel pencarian kecil dengan kurang dari 100 juta baris, tabel timbunan biasanya merupakan pilihan yang tepat. Tabel penyimpan kolom kluster mulai mencapai kompresi optimal ketika berisi lebih dari 100 juta baris.

  • Tabel terkluster: Tabel Oracle dapat diatur sehingga baris tabel yang sering diakses bersama-sama (berdasarkan nilai umum) disimpan secara fisik bersama-sama untuk mengurangi I/O disk saat data diambil. Oracle juga menyediakan opsi hash-cluster untuk tabel individual, yang menerapkan nilai hash ke kunci kluster dan secara fisik menyimpan baris dengan nilai hash yang sama bersama-sama. Untuk mencantumkan kluster dalam database Oracle, gunakan SELECT * FROM DBA_CLUSTERS; kueri. Untuk menentukan apakah tabel berada dalam kluster, gunakan SELECT * FROM TAB; kueri, yang memperlihatkan nama tabel dan ID kluster untuk setiap tabel.

    Di Azure Synapse, Anda dapat mencapai hasil serupa dengan menggunakan tabel materialisasi dan/atau yang direplikasi, karena jenis tabel tersebut meminimalkan I/O yang diperlukan pada waktu proses kueri.

  • Tampilan materialisasi: Oracle mendukung tampilan materialisasi dan merekomendasikan penggunaan satu atau beberapa tabel besar dengan banyak kolom di mana hanya beberapa kolom yang secara teratur digunakan dalam kueri. Tampilan materialisasi diperbarui secara otomatis oleh sistem ketika data dalam tabel dasar diubah.

    Pada tahun 2019, Microsoft mengumumkan bahwa Azure Synapse akan mendukung tampilan materialisasi dengan fungsionalitas yang sama seperti di Oracle. Tampilan termaterialisasi sekarang menjadi fitur pratinjau di Azure Synapse.

  • Pemicu dalam database: di Oracle, pemicu dapat dikonfigurasi untuk berjalan secara otomatis saat peristiwa pemicu terjadi. Peristiwa pemicu dapat berupa:

    • Pernyataan bahasa manipulasi data (DML), seperti INSERT, , UPDATEatau DELETE, berjalan pada tabel. Jika Anda menentukan pemicu yang diaktifkan sebelum pernyataan INSERT pada tabel pelanggan, pemicu akan diaktifkan sekali sebelum baris baru dimasukkan ke dalam tabel pelanggan.

    • Pernyataan DDL, seperti CREATE atau ALTER, dijalankan. Pemicu ini sering digunakan untuk tujuan audit untuk merekam perubahan skema.

    • Peristiwa sistem, seperti pengaktifan atau penonaktifan database Oracle.

    • Peristiwa pengguna, seperti masuk atau keluar.

    Anda bisa mendapatkan daftar pemicu yang ditentukan dalam database Oracle dengan mengkueri ALL_TRIGGERStampilan , , DBA_TRIGGERSatau USER_TRIGGERS . Cuplikan layar berikut menunjukkan DBA_TRIGGERS kueri di Oracle SQL Developer.

    Cuplikan layar memperlihatkan cara mengkueri daftar pemicu di Oracle SQL Developer.

    Azure Synapse tidak mendukung pemicu database Oracle. Namun, Anda dapat menambahkan fungsionalitas yang setara dengan menggunakan Data Factory, meskipun melakukannya akan mengharuskan Anda untuk merefaktor proses yang menggunakan pemicu.

  • Sinonim: Oracle mendukung penentuan sinonim sebagai nama alternatif untuk beberapa jenis objek database. Jenis objek tersebut meliputi: tabel, tampilan, urutan, prosedur, fungsi tersimpan, paket, tampilan materialisasi, objek skema kelas Java, objek yang ditentukan pengguna, atau sinonim lainnya.

    Azure Synapse saat ini tidak mendukung penentuan sinonim, meskipun jika sinonim di Oracle mengacu pada tabel atau tampilan, maka Anda dapat menentukan tampilan di Azure Synapse agar sesuai dengan nama alternatif. Jika sinonim di Oracle mengacu pada fungsi atau prosedur tersimpan, maka di Azure Synapse Anda dapat membuat fungsi lain atau prosedur tersimpan, dengan nama untuk mencocokkan sinonim, yang memanggil target.

  • Jenis yang ditentukan pengguna: Oracle mendukung objek yang ditentukan pengguna yang dapat berisi serangkaian bidang individual, masing-masing dengan definisi dan nilai defaultnya sendiri. Objek tersebut dapat dirujuk dalam definisi tabel dengan cara yang sama seperti jenis data bawaan seperti NUMBER atau VARCHAR. Anda bisa mendapatkan daftar jenis yang ditentukan pengguna dalam database Oracle dengan mengkueri ALL_TYPEStampilan , , DBA_TYPESatau USER_TYPES .

    Azure Synapse saat ini tidak mendukung jenis yang ditentukan pengguna. Jika data yang perlu Anda migrasikan menyertakan jenis data yang ditentukan pengguna, ubah menjadi definisi tabel konvensional, atau jika berupa array dari data, normalkan dalam tabel terpisah.

Pemetaan jenis data Oracle

Sebagian besar jenis data Oracle memiliki setara langsung di Azure Synapse. Tabel berikut ini memperlihatkan pendekatan yang direkomendasikan untuk memetakan jenis data Oracle ke Azure Synapse.

Tipe Data Oracle Jenis Data Azure Synapse
BFILE Not supported. Petakan ke VARBINARY (MAX).
BINARY_FLOAT Not supported. Petakan ke FLOAT.
BINARY_DOUBLE Not supported. Petakan ke DOUBLE.
BLOB Tidak didukung secara langsung. Ganti dengan VARBINARY(MAX).
CHAR CHAR
CLOB Tidak didukung secara langsung. Ganti dengan VARCHAR(MAX).
DATE DATE di Oracle juga dapat berisi informasi waktu. Bergantung pada peta penggunaan ke DATE atau TIMESTAMP.
DECIMAL DECIMAL
DOUBLE PRECISION DOUBLE
FLOAT FLOAT
INTEGER INT
INTERVAL TAHUN KE BULAN Jenis data INTERVAL tidak didukung. Gunakan fungsi perbandingan tanggal, seperti DATEDIFF atau DATEADD, untuk perhitungan tanggal.
INTERVAL HARI SAMPAI DETIK Jenis data INTERVAL tidak didukung. Gunakan fungsi perbandingan tanggal, seperti DATEDIFF atau DATEADD, untuk perhitungan tanggal.
LONG Not supported. Petakan ke VARCHAR(MAX).
LONG RAW Not supported. Petakan ke VARBINARY(MAX).
NCHAR NCHAR
NVARCHAR2 NVARCHAR
NUMBER FLOAT
NCLOB Tidak didukung secara langsung. Ganti dengan NVARCHAR(MAX).
NUMERIC NUMERIC
Jenis data media ORD Not supported
RAW Not supported. Petakan ke VARBINARY.
REAL REAL
ROWID Not supported. Petakan ke GUID, yang serupa.
Jenis data Geospasial SDO Not supported
SMALLINT SMALLINT
TIMESTAMP DATETIME2 atau fungsi CURRENT_TIMESTAMP()
TANDA WAKTU DENGAN ZONA WAKTU LOKAL Not supported. Petakan ke DATETIMEOFFSET.
PENANDA WAKTU DENGAN ZONA WAKTU Tidak didukung karena TIME disimpan menggunakan waktu jam dinding tanpa offset zona waktu.
URIType Not supported. Simpan di VARCHAR.
UROWID Not supported. Petakan ke GUID, yang serupa.
VARCHAR VARCHAR
VARCHAR2 VARCHAR
XMLType Not supported. Menyimpan data XML dalam VARCHAR.

Oracle juga mendukung penentuan objek yang ditentukan pengguna yang dapat berisi serangkaian bidang individual, masing-masing dengan definisi dan nilai defaultnya sendiri. Objek tersebut dapat dirujuk dalam definisi tabel dengan cara yang sama seperti jenis data bawaan seperti NUMBER atau VARCHAR. Azure Synapse saat ini tidak mendukung jenis yang ditentukan pengguna. Jika data yang perlu Anda migrasikan menyertakan jenis data yang ditentukan pengguna, ubah menjadi definisi tabel konvensional, atau jika berupa array dari data, normalkan dalam tabel terpisah.

Tip

Menilai jumlah dan jenis jenis data yang tidak didukung selama fase persiapan migrasi.

Vendor pihak ketiga menawarkan alat dan layanan untuk mengotomatiskan migrasi, termasuk pemetaan jenis data. Jika alat ETL pihak ketiga sudah digunakan di lingkungan Oracle, gunakan alat tersebut untuk mengimplementasikan transformasi data yang diperlukan.

Perbedaan sintaks SQL DML

Perbedaan sintaks SQL DML ada antara Oracle SQL dan Azure Synapse T-SQL. Perbedaan tersebut dibahas secara rinci dalam Meminimalkan masalah SQL untuk migrasi Oracle. Dalam beberapa kasus, Anda dapat mengotomatiskan migrasi DML dengan menggunakan alat Microsoft seperti SSMA untuk Oracle dan Azure Database Migration Services, atau produk dan layanan migrasi pihak ketiga .

Fungsi, prosedur tersimpan, dan urutan

Saat memigrasi gudang data dari lingkungan yang matang seperti Oracle, Anda mungkin perlu memigrasikan elemen selain tabel dan tampilan sederhana. Periksa apakah alat dalam lingkungan Azure dapat menggantikan fungsionalitas fungsi, prosedur tersimpan, dan urutan karena biasanya lebih efisien untuk menggunakan alat Azure bawaan daripada mengodekannya kembali untuk Azure Synapse.

Sebagai bagian dari tahap persiapan Anda, buat inventaris objek yang perlu dimigrasikan, tentukan metode untuk menanganinya, dan alokasikan sumber daya yang sesuai dalam rencana migrasi.

Alat Microsoft seperti SSMA untuk Oracle dan Azure Database Migration Services, atau produk dan layanan migrasi pihak ketiga, dapat mengotomatiskan migrasi fungsi, prosedur tersimpan, dan urutan.

Bagian berikut membahas lebih lanjut migrasi fungsi, prosedur tersimpan, dan urutan.

Functions

Seperti kebanyakan produk database, Oracle mendukung sistem dan fungsi yang ditentukan pengguna dalam implementasi SQL. Saat Anda memigrasikan platform database lama ke Azure Synapse, fungsi sistem umum biasanya dapat dimigrasikan tanpa perubahan. Beberapa fungsi sistem mungkin memiliki sintaks yang sedikit berbeda, tetapi setiap perubahan yang diperlukan dapat diotomatiskan. Anda bisa mendapatkan daftar fungsi dalam database Oracle dengan mengkueri ALL_OBJECTS tampilan dengan klausa yang sesuai WHERE . Anda dapat menggunakan Oracle SQL Developer untuk mendapatkan daftar fungsi, seperti yang ditunjukkan pada cuplikan layar berikut.

Cuplikan layar memperlihatkan cara mengkueri daftar fungsi di Oracle SQL Developer.

Untuk fungsi sistem Oracle atau fungsi yang ditentukan pengguna sewenang-wenang yang tidak setara di Azure Synapse, kodekan ulang fungsi tersebut menggunakan bahasa lingkungan target. Fungsi yang ditentukan pengguna Oracle dikodekan dalam PL/SQL, Java, atau C. Azure Synapse menggunakan bahasa Transact-SQL untuk menerapkan fungsi yang ditentukan pengguna.

Stored procedures

Sebagian besar produk database modern memungkinkan prosedur penyimpanan di dalam database. Oracle menyediakan bahasa PL/SQL untuk tujuan ini. Prosedur tersimpan biasanya berisi pernyataan SQL dan logika prosedural, serta mengembalikan data atau status. Anda bisa mendapatkan daftar prosedur tersimpan dalam database Oracle dengan mengkueri ALL_OBJECTS tampilan dengan klausa yang sesuai WHERE . Anda dapat menggunakan Oracle SQL Developer untuk mendapatkan daftar prosedur tersimpan, seperti yang ditunjukkan pada cuplikan layar berikutnya.

Cuplikan layar memperlihatkan cara mengkueri daftar prosedur tersimpan di Oracle SQL Developer.

Azure Synapse mendukung prosedur tersimpan menggunakan T-SQL, jadi Anda harus mengodekan ulang prosedur tersimpan yang dimigrasikan dalam bahasa tersebut.

Sequences

Di Oracle, sekuens adalah objek database bernama, yang dibuat menggunakan CREATE SEQUENCE. Urutan menyediakan nilai numerik unik melalui metode CURRVAL dan NEXTVAL. Anda dapat menggunakan angka unik yang dihasilkan sebagai nilai kunci pengganti untuk kunci primer.

Azure Synapse tidak menerapkan CREATE SEQUENCE, tetapi Anda dapat menerapkan urutan menggunakan kolom IDENTITY atau kode SQL yang menghasilkan nomor urutan berikutnya dalam seri.

Mengekstrak metadata dan data dari lingkungan Oracle

Pembuatan Bahasa Definisi Data

Standar ANSI SQL menentukan sintaks dasar untuk perintah Bahasa Definisi Data (DDL). Beberapa perintah DDL, seperti CREATE TABLE dan CREATE VIEW, umum untuk Oracle dan Azure Synapse tetapi juga menyediakan fitur khusus implementasi seperti pengindeksan, distribusi tabel, dan opsi partisi.

Anda dapat mengedit skrip CREATE TABLE dan CREATE VIEW Oracle yang ada untuk mencapai definisi yang setara di Azure Synapse. Untuk melakukannya, Anda mungkin perlu menggunakan jenis data yang dimodifikasi dan menghapus atau memodifikasi klausa khusus Oracle seperti TABLESPACE.

Dalam lingkungan Oracle, tabel katalog sistem menentukan tabel saat ini dan definisi tampilan. Tidak seperti dokumentasi yang dikelola pengguna, informasi katalog sistem selalu lengkap dan sinkron dengan definisi tabel saat ini. Anda dapat mengakses informasi katalog sistem menggunakan utilitas seperti Oracle SQL Developer. Oracle SQL Developer dapat menghasilkan CREATE TABLE pernyataan DDL yang dapat Anda edit untuk membuat tabel yang setara di Azure Synapse.

Atau, Anda dapat menggunakan SSMA untuk Oracle untuk memigrasikan tabel dari lingkungan Oracle yang ada ke Azure Synapse. SSMA untuk Oracle akan menerapkan pemetaan jenis data yang sesuai dan jenis tabel dan distribusi yang direkomendasikan, seperti yang ditunjukkan pada cuplikan layar berikut.

Cuplikan layar memperlihatkan cara memigrasikan tabel dari dan lingkungan Oracle yang ada ke Azure Synapse menggunakan Asisten Migrasi SQL Server untuk Oracle.

Anda juga dapat menggunakan migrasi pihak ketiga dan alat ETL yang memproses informasi katalog sistem untuk mencapai hasil yang sama.

Ekstraksi data dari Oracle

Anda dapat mengekstrak data tabel mentah dari tabel Oracle ke file yang dibatasi datar, seperti file CSV, menggunakan utilitas Oracle standar seperti Oracle SQL Developer, SQL*Plus, dan SQLcl. Kemudian, Anda dapat mengompresi file berbatas datar menggunakan gzip, dan mengunggah file terkompresi ke Azure Blob Storage menggunakan alat transportasi data AzCopy atau Azure seperti Azure Data Box.

Ekstrak data tabel seefisien mungkin—terutama saat memigrasikan tabel fakta besar. Untuk tabel Oracle, gunakan paralelisme untuk memaksimalkan throughput ekstraksi. Anda dapat mencapai paralelisme dengan menjalankan beberapa proses yang secara individual mengekstrak segmen data diskrit, atau dengan menggunakan alat yang mampu mengotomatiskan ekstraksi paralel melalui pemartisian.

Tip

Gunakan paralelisme untuk ekstraksi data yang paling efisien.

Jika bandwidth jaringan yang memadai tersedia, Anda dapat mengekstrak data dari sistem Oracle lokal langsung ke tabel Azure Synapse atau Azure Blob Data Storage. Untuk melakukannya, gunakan proses Data Factory, Azure Database Migration Service, atau migrasi data pihak ketiga atau produk ETL.

File data yang diekstrak harus berisi teks yang dibatasi dalam format CSV, Optimized Row Columnar (ORC), atau Parquet.

Untuk informasi selengkapnya tentang memigrasikan data dan ETL dari lingkungan Oracle, lihat Migrasi data, ETL, dan beban untuk migrasi Oracle.

Rekomendasi performa untuk migrasi Oracle

Tujuan optimasi performa adalah performa gudang data yang sama atau yang lebih baik setelah migrasi ke Azure Synapse.

Kesamaan dalam konsep pendekatan pengaturan performa

Banyak konsep penyetelan performa untuk database Oracle berlaku untuk database Azure Synapse. For example:

  • Menggunakan distribusi data untuk mengkolokasikan data yang akan digabungkan ke node pemrosesan yang sama.

  • Menggunakan jenis data terkecil untuk kolom tertentu akan menghemat ruang penyimpanan dan mempercepat pemrosesan kueri.

  • Pastikan bahwa kolom yang akan digabungkan memiliki jenis data yang sama untuk mengoptimalkan pemrosesan gabungan dan mengurangi kebutuhan akan transformasi data.

  • Untuk membantu pengoptimal menghasilkan rencana eksekusi terbaik, pastikan statistik selalu terkini.

  • Pantau performa menggunakan kemampuan database bawaan untuk memastikan bahwa sumber daya digunakan secara efisien.

Tip

Prioritaskan keakraban dengan opsi penyetelan Azure Synapse di awal migrasi.

Perbedaan dalam pendekatan pengaturan kinerja

Bagian ini menyoroti perbedaan implementasi penyetelan performa tingkat rendah antara Oracle dan Azure Synapse.

Opsi distribusi data

Untuk performa, Azure Synapse dirancang dengan arsitektur multi-node dan menggunakan pemrosesan paralel. Untuk mengoptimalkan performa tabel di Azure Synapse, Anda dapat menentukan opsi distribusi data dalam CREATE TABLE pernyataan menggunakan DISTRIBUTION pernyataan . Misalnya, Anda dapat menentukan tabel terdistribusi hash, yang mendistribusikan baris tabel di seluruh node komputasi menggunakan fungsi hash deterministik. Banyak implementasi Oracle, terutama sistem lokal yang lebih lama, tidak mendukung fitur ini.

Tidak seperti Oracle, Azure Synapse mendukung gabungan lokal antara tabel kecil dan tabel besar melalui replikasi tabel kecil. Misalnya, pertimbangkan tabel dimensi kecil dan tabel fakta besar dalam model skema bintang. Azure Synapse dapat mereplikasi tabel dimensi yang lebih kecil di semua node untuk memastikan bahwa nilai kunci gabungan apa pun untuk tabel besar memiliki baris dimensi yang cocok dan tersedia secara lokal. Beban kerja replikasi tabel dimensi relatif rendah untuk tabel dimensi kecil. Untuk tabel dimensi besar, pendekatan distribusi hash lebih tepat. Untuk informasi selengkapnya tentang opsi distribusi data, lihat Panduan desain untuk menggunakan tabel yang direplikasi dan Panduan untuk merancang tabel terdistribusi.

Tip

Distribusi hash meningkatkan performa kueri pada tabel fakta besar. Distribusi round-robin berguna untuk meningkatkan kecepatan pemuatan.

Distribusi hash dapat diterapkan pada beberapa kolom untuk distribusi tabel dasar yang lebih merata. Distribusi multi-kolom akan memungkinkan Anda memilih hingga delapan kolom untuk distribusi. Ini tidak hanya mengurangi penyimpangan data dari waktu ke waktu tetapi juga meningkatkan performa kueri.

Note

Distribusi multi-kolom saat ini dalam pratinjau untuk Azure Synapse Analytics. Anda dapat menggunakan distribusi multi-kolom dengan CREATE MATERIALIZED VIEW, CREATE TABLE, dan CREATE TABLE AS SELECT.

Distribution Advisor

Di Azure Synapse SQL, cara setiap tabel didistribusikan dapat disesuaikan. Strategi distribusi tabel memengaruhi performa kueri secara substansial.

Penasihat distribusi adalah fitur baru di Synapse SQL yang menganalisis kueri dan merekomendasikan strategi distribusi terbaik untuk tabel guna meningkatkan performa kueri. Kueri yang akan dipertimbangkan oleh penasihat dapat disediakan oleh Anda atau ditarik dari kueri bersejarah Anda yang tersedia di DMV.

Untuk detail dan contoh tentang cara menggunakan penasihat distribusi, kunjungi Distribution Advisor di Azure Synapse SQL.

Data indexing

Azure Synapse mendukung beberapa opsi pengindeksan yang dapat ditentukan pengguna yang memiliki operasi dan penggunaan yang berbeda dibandingkan dengan peta zona yang dikelola sistem di Oracle. Untuk informasi selengkapnya tentang opsi pengindeksan yang berbeda di Azure Synapse, lihat Indeks pada tabel kumpulan SQL khusus.

Definisi indeks dalam lingkungan Oracle sumber memberikan indikasi penggunaan data yang berguna dan kolom kandidat untuk pengindeksan di lingkungan Azure Synapse. Biasanya, Anda tidak perlu memigrasikan setiap indeks dari lingkungan Oracle warisan karena Azure Synapse tidak terlalu bergantung pada indeks dan menerapkan fitur berikut untuk mencapai performa yang luar biasa:

  • Pemrosesan kueri paralel.

  • Data dalam memori dan penembolokan tataan hasil.

  • Distribusi data, seperti replikasi tabel dimensi kecil, untuk mengurangi I/O.

Data partitioning

Di gudang data perusahaan, tabel fakta dapat berisi miliaran baris. Pemartisian mengoptimalkan pemeliharaan dan kueri tabel ini dengan membaginya menjadi bagian terpisah untuk mengurangi jumlah data yang diproses. Di Azure Synapse, pernyataan CREATE TABLE mendefinisikan spesifikasi pemartisian untuk tabel.

Anda hanya dapat menggunakan satu bidang per tabel untuk pembuatan partisi. Bidang tersebut sering menjadi bidang tanggal karena banyak kueri difilter menurut tanggal atau rentang tanggal. Dimungkinkan untuk mengubah pembuatan partisi tabel setelah pemuatan awal menggunakan pernyataan CREATE TABLE AS (CTAS) untuk membuat ulang tabel dengan distribusi baru. Untuk diskusi terperinci tentang pemartisian di Azure Synapse, lihat Tabel pemartisian di kumpulan SQL khusus.

PolyBase atau COPY INTO untuk pemuatan data

PolyBase mendukung pemuatan data dalam jumlah besar yang efisien ke gudang data menggunakan aliran pemuatan paralel. Untuk informasi selengkapnya, lihat Strategi pemuatan data PolyBase.

COPY INTO juga mendukung pemrosesan data berkecepatan tinggi, dan:

  • Pengambilan data dari semua file dalam folder dan subfolder.
  • Pengambilan data dari beberapa lokasi di akun penyimpanan yang sama. Anda dapat menentukan beberapa lokasi menggunakan jalur yang dipisahkan koma.
  • Azure Data Lake Storage (ADLS) dan Azure Blob Storage.
  • Format file CSV, PARQUET, dan ORC.

Tip

Metode yang direkomendasikan untuk pemuatan data adalah menggunakan COPY INTO bersama dengan format file PARQUET.

Workload management

Menjalankan beban kerja campuran dapat menimbulkan tantangan sumber daya pada sistem yang sibuk. Skema pengelolaan beban kerja yang sukses secara efektif mengelola sumber daya, memastikan penggunaan sumber daya yang sangat efisien, dan memaksimalkan laba atas investasi (ROI). Klasifikasi beban kerja, kepentingan beban kerja, dan isolasi beban kerja memberikan kontrol lebih atas cara beban kerja menggunakan sumber daya sistem.

Panduan manajemen beban kerja menjelaskan teknik untuk menganalisis beban kerja, mengelola, dan memantau kepentingan beban kerja, dan langkah-langkah untuk mengonversi kelas sumber daya menjadi grup beban kerja. Gunakan kueri portal Azure dan T-SQL pada DMV untuk memantau beban kerja guna memastikan bahwa sumber daya yang berlaku digunakan secara efisien.

Next steps

Untuk mempelajari tentang ETL dan beban untuk migrasi Oracle, lihat artikel berikutnya dalam seri ini: Migrasi data, ETL, dan beban untuk migrasi Oracle.