Bagikan melalui


Pertimbangan dan Batasan Desain untuk Penerbit Oracle

Berlaku untuk: SQL Server

Penerbitan dari database Oracle dirancang untuk bekerja hampir identik dengan penerbitan dari database Microsoft SQL Server. Namun, Anda harus mengetahui batasan dan masalah berikut:

  • Opsi Oracle Gateway memberikan peningkatan performa melalui opsi Oracle Complete; namun, opsi ini tidak dapat digunakan untuk menerbitkan tabel yang sama dalam beberapa publikasi transaksi. Tabel dapat muncul di paling banyak satu publikasi transaksi dan sejumlah publikasi rekam jepret. Jika Anda perlu menerbitkan tabel yang sama dalam beberapa publikasi transaksi, pilih opsi Oracle Complete.

  • Replikasi mendukung penerbitan tabel, indeks, dan tampilan materialisasi. Objek lain tidak direplikasi.

  • Ada beberapa perbedaan kecil antara penyimpanan dan pemrosesan data dalam database Oracle dan SQL Server yang memengaruhi replikasi.

  • Ada sejumlah perbedaan dalam bagaimana fitur replikasi transaksional didukung saat menggunakan Oracle Publisher.

Dukungan untuk Objek Penerbitan dari Oracle

Replikasi mendukung replikasi objek berikut dari database Oracle:

  • Tabel

  • Tabel terorganisir indeks

  • Indeks

  • Tampilan materialisasi (direplikasi sebagai tabel)

Berikut ini bisa ada pada tabel yang diterbitkan tetapi tidak direplikasi:

  • Indeks berbasis domain

  • Indeks berbasis fungsi

  • Default

  • Periksa batasan

  • Kunci Asing

  • Opsi penyimpanan (ruang tabel, kluster, dll.)

Objek berikut tidak dapat direplikasi:

  • Tabel bersarang

  • Tampilan

  • Paket, badan paket, prosedur, dan pemicu

  • Antrean

  • Urutan

  • Sinonim

Untuk informasi tentang jenis data yang didukung, lihat Pemetaan Tipe Data untuk Penerbit Oracle.

Perbedaan antara Oracle dan SQL Server

  • Oracle memiliki batas ukuran maksimum yang berbeda untuk beberapa objek. Setiap objek yang dibuat dalam database publikasi Oracle harus mematuhi batas ukuran maksimum untuk objek yang sesuai di SQL Server. Untuk informasi tentang batasan di SQL Server, lihat Spesifikasi Kapasitas Maksimum untuk SQL Server.

  • Secara default, nama objek Oracle dibuat dalam huruf besar. Pastikan Anda menyediakan nama objek Oracle dalam huruf besar saat menerbitkannya melalui Distributor SQL Server jika merupakan huruf besar pada database Oracle. Kegagalan untuk menentukan objek dalam kasus yang benar dapat mengakibatkan pesan kesalahan yang menunjukkan bahwa objek tidak dapat ditemukan.

  • Oracle memiliki dialek SQL yang sedikit berbeda dari SQL Server; filter baris harus ditulis dalam sintaks yang mematuhi Oracle.

Pertimbangan untuk Objek Besar

Data objek besar (LOB) tidak disimpan dalam tabel log artikel; pembaruan untuk data LOB selalu diambil langsung dari tabel yang diterbitkan. Pembaruan direplikasi dalam publikasi transaksional hanya jika operasi yang memengaruhi LOB mengaktifkan pemicu replikasi pada tabel yang direplikasi. Oracle memicu kebakaran ketika baris yang berisi LOB disisipkan atau dihapus; namun pembaruan untuk kolom LOB tidak menembakkan pemicu. Pembaruan ke kolom LOB akan segera direplikasi hanya jika kolom non-LOB dari baris yang sama juga diperbarui dalam transaksi Oracle yang sama. Jika tidak, kolom LOB akan di-refresh di Pelanggan ketika pembaruan berikutnya ke kolom non-LOB di baris yang sama terjadi. Pastikan bahwa perilaku ini dapat diterima untuk aplikasi Anda.

Untuk mereplikasi pembaruan pada kolom LOB dalam publikasi transaksional, pertimbangkan salah satu strategi berikut saat menulis aplikasi:

  • Hapus dan masukkan ulang baris dalam transaksi alih-alih memperbarui baris: tentukan LOB baru saat menyisipkan ulang baris. Karena hapus dan sisipkan kedua pemicu kebakaran, baris akan direplikasi.

  • Sertakan kolom non-LOB dalam pembaruan baris selain kolom LOB, atau perbarui kolom non-LOB baris sebagai bagian dari transaksi Oracle yang sama. Dalam kedua kasus, pembaruan kolom non-LOB memastikan bahwa pemicu diaktifkan.

Untuk informasi selengkapnya tentang LOB, lihat Pemetaan Tipe Data untuk Penerbit Oracle.

Indeks dan Batasan Unik

Untuk rekam jepret dan replikasi transaksional, kolom yang terkandung dalam indeks dan batasan unik (termasuk batasan kunci utama) harus mematuhi batasan tertentu. Jika mereka tidak mematuhi pembatasan ini, batasan atau indeks tidak direplikasi.

  • Jumlah maksimum kolom yang diizinkan dalam indeks di SQL Server adalah 16.

  • Semua kolom yang disertakan dalam batasan unik harus memiliki jenis data yang didukung. Untuk informasi selengkapnya tentang jenis data, lihat Pemetaan Tipe Data untuk Penerbit Oracle.

  • Semua kolom yang disertakan dalam batasan unik harus diterbitkan (tidak dapat difilter).

  • Kolom yang terlibat dalam batasan atau indeks unik tidak boleh null.

Pertimbangkan juga masalah berikut:

  • Oracle dan SQL Server memperlakukan NULL secara berbeda: Oracle mengizinkan beberapa baris dengan nilai NULL untuk kolom yang memungkinkan NULL dan disertakan dalam batasan atau indeks unik. SQL Server memberlakukan keunikan hanya dengan mengizinkan satu baris dengan nilai NULL untuk kolom yang sama. Anda tidak dapat menerbitkan batasan atau indeks unik yang memungkinkan NULL karena pelanggaran batasan akan terjadi pada Pelanggan jika tabel yang diterbitkan berisi beberapa baris dengan nilai NULL untuk salah satu kolom yang disertakan dalam indeks atau batasan.

  • Saat menguji keunikan, kosong berikutnya di bidang diabaikan oleh SQL Server tetapi tidak oleh Oracle.

Seperti dalam replikasi transaksional SQL Server, tabel dalam publikasi transaksional Oracle memerlukan kunci primer; kunci primer harus unik berdasarkan aturan yang ditentukan di atas. Jika kunci primer tidak mematuhi aturan yang diuraikan dalam poin sebelumnya, tabel tidak dapat diterbitkan untuk replikasi transaksional.

Perbedaan antara Penerbitan Oracle dan Replikasi Transaksional Standar

  • Penerbit Oracle tidak dapat memiliki nama yang sama dengan: Distributor SQL Server-nya; salah satu Penerbit SQL Server yang menggunakan Distributor; atau Pelanggan apa pun yang menerima publikasi. Publikasi yang dilayankan oleh Distributor yang sama masing-masing harus memiliki nama yang unik.

  • Tabel yang diterbitkan dalam publikasi Oracle tidak dapat menerima data yang direplikasi. Oleh karena itu, penerbitan Oracle tidak mendukung: publikasi dengan segera memperbarui atau mengantre memperbarui langganan; atau topologi di mana tabel publikasi juga bertindak sebagai tabel langganan, seperti rekan-ke-peer dan replikasi dua arah.

  • Kunci utama untuk hubungan kunci asing dalam database Oracle tidak direplikasi ke Pelanggan. Namun, hubungan dipertahankan dalam data saat perubahan dikirimkan.

  • Publikasi transaksi standar mendukung tabel hingga 1000 kolom. Publikasi transaksional Oracle mendukung 995 kolom (replikasi menambahkan lima kolom ke setiap tabel yang diterbitkan).

  • Klausa kolase ditambahkan ke pernyataan CREATE TABLE untuk mengaktifkan perbandingan peka huruf besar/kecil, yang penting untuk kunci primer dan batasan unik. Perilaku ini dikontrol dengan opsi skema 0x1000, yang ditentukan dengan @schema_option parameter sp_addarticle (Transact-SQL).

  • Jika Anda menggunakan prosedur tersimpan untuk mengonfigurasi atau memelihara Oracle Publisher, jangan letakkan prosedur di dalam transaksi eksplisit. Ini tidak didukung melalui server tertaut yang digunakan untuk menyambungkan ke Oracle Publisher.

  • Jika Anda membuat langganan penarikan ke publikasi Oracle dengan wizard, Anda harus menggunakan Panduan Langganan Baru yang disediakan dengan SQL Server 2005 (9.x) dan versi yang lebih baru. Namun, untuk versi SQL Server sebelumnya, Anda dapat menggunakan prosedur tersimpan dan antarmuka SQL-DMO untuk menyiapkan langganan penarikan ke publikasi Oracle.

  • Jika Anda menggunakan prosedur tersimpan untuk menyebarluaskan perubahan pada Pelanggan (default), ketahuilah bahwa sintaks MCALL didukung, tetapi memiliki perilaku yang berbeda ketika publikasi berasal dari Penerbit Oracle. Biasanya MCALL menyediakan bitmap yang menunjukkan kolom mana yang diperbarui di Publisher. Dengan publikasi Oracle, bitmap selalu menunjukkan bahwa semua kolom diperbarui. Untuk informasi selengkapnya tentang menggunakan prosedur tersimpan, lihat Menentukan Bagaimana Perubahan Disebarkan untuk Artikel Transaksional.

Dukungan Fitur Replikasi Transaksional

  • Publikasi Oracle tidak mendukung semua opsi skema yang didukung publikasi SQL Server. Untuk informasi selengkapnya tentang opsi skema, lihat sp_addarticle (Transact-SQL).

  • Pelanggan publikasi Oracle tidak dapat menggunakan pembaruan segera atau mengantre memperbarui langganan, atau menjadi simpul dalam topologi peer-to-peer atau dua arah.

  • Pelanggan untuk publikasi Oracle tidak dapat diinisialisasi secara otomatis dari cadangan.

  • SQL Server mendukung dua jenis validasi: biner dan rowcount. Oracle Publishers mendukung validasi rowcount. Untuk informasi selengkapnya, lihat Memvalidasi Data yang Direplikasi.

  • SQL Server menawarkan dua format rekam jepret: mode bcp asli dan mode karakter. Oracle Publishers mendukung rekam jepret mode karakter.

  • Perubahan skema pada tabel Oracle yang diterbitkan tidak didukung. Untuk membuat perubahan skema, pertama-tama hilangkan publikasi, buat perubahan, lalu buat ulang publikasi dan langganan apa pun.

    Catatan

    Jika skema berubah dan penurunan dan pembuatan ulang publikasi dan langganan berikutnya dilakukan pada saat tidak ada aktivitas yang terjadi pada tabel yang diterbitkan, Anda dapat menentukan opsi 'dukungan replikasi saja' untuk langganan. Ini memungkinkan mereka untuk disinkronkan tanpa harus menyalin rekam jepret ke setiap Pelanggan. Untuk informasi selengkapnya, lihat Menginisialisasi Langganan Transaksi tanpa Rekam Jepret.

Model Keamanan Replikasi

Model keamanan untuk penerbitan Oracle sama dengan model keamanan untuk replikasi transaksional standar, dengan pengecualian berikut:

Untuk informasi selengkapnya tentang keamanan replikasi, lihat Menampilkan dan mengubah pengaturan keamanan replikasi.