Pemecahan Masalah Penerbit Oracle
Berlaku untuk: SQL Server
Topik ini mencantumkan sejumlah masalah yang mungkin muncul saat mengonfigurasi dan menggunakan Oracle Publisher.
Kesalahan Dimunculkan Mengenai Klien Oracle dan Perangkat Lunak Jaringan
Akun tempat Microsoft SQL Server berjalan pada Distributor harus diberikan izin baca dan jalankan untuk direktori (dan semua subdirektori) tempat perangkat lunak jaringan klien Oracle diinstal. Jika izin tidak diberikan atau komponen klien Oracle tidak diinstal dengan benar, Anda akan menerima pesan kesalahan berikut:
"Koneksi ke server gagal dengan [Microsoft OLE DB Provider untuk Oracle]. Klien Oracle dan komponen jaringan tidak ditemukan. Komponen-komponen ini disediakan oleh Oracle Corporation dan merupakan bagian dari penginstalan perangkat lunak klien Oracle Versi 7.3.3 atau yang lebih baru. Penyedia tidak dapat berfungsi sampai komponen ini diinstal."
Jika klien Oracle yang sesuai telah diinstal di Distributor, pastikan bahwa SQL Server dihentikan lalu dimulai ulang setelah penginstalan klien selesai. Ini diperlukan agar SQL Server mengenali komponen klien.
Jika Anda telah memverifikasi bahwa izin diberikan dan komponen tersebut diinstal dengan benar, tetapi kesalahan ini berlanjut, verifikasi bahwa pengaturan registri di HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI sudah benar:
Untuk Oracle 10g, pengaturan yang benar adalah
OracleOciLib = oci.dll
OracleSqlLib = orasql10.dll
OracleXaLib = oraclient10.dll
Untuk Oracle 9i, pengaturan yang benar adalah
OracleOciLib = oci.dll
OracleSqlLib = orasql9.dll
OracleXaLib = oraclient9.dll
Distributor SQL Server Tidak Dapat Tersambung ke Instans Database Oracle
Jika Distributor SQL Server tidak dapat tersambung ke Oracle Publisher, pastikan bahwa:
Perangkat lunak Oracle yang diperlukan diinstal pada Distributor.
Database Oracle online dan Anda dapat menyambungkannya menggunakan alat seperti SQL*Plus.
Replikasi masuk yang digunakan untuk menyambungkan ke Oracle Publisher memiliki izin yang memadai. Untuk informasi selengkapnya, lihat Mengonfigurasi Oracle Publisher.
Nama TNS yang ditentukan selama konfigurasi Oracle Publisher tercantum dalam file tnsnames.ora.
Oracle Home dan jalur yang benar digunakan. Bahkan jika Anda hanya memiliki satu set biner Oracle yang diinstal pada Distributor SQL Server, pastikan bahwa variabel lingkungan yang terkait dengan Oracle Home diatur dengan benar. Jika Anda mengubah nilai variabel lingkungan, Anda harus menghentikan dan memulai ulang SQL Server agar perubahan diterapkan.
Untuk informasi selengkapnya tentang mengonfigurasi dan menguji konektivitas, lihat "Menginstal dan Mengonfigurasi Perangkat Lunak Jaringan Klien Oracle di Distributor SQL Server" di Mengonfigurasi Penerbit Oracle.
Penerbit Oracle Dikaitkan dengan Distributor Lain
Penerbit Oracle hanya dapat dikaitkan dengan satu Distributor SQL Server. Jika Distributor yang berbeda dikaitkan dengan Oracle Publisher, dihilangkan sebelum Distributor lain dapat digunakan. Jika Distributor tidak dihilangkan terlebih dahulu, Anda akan menerima salah satu pesan kesalahan berikut:
"Instans server Oracle '<OraclePublisherName>' sebelumnya telah dikonfigurasi untuk menggunakan '<SQLServerDistributorName>' sebagai Distributornya. Untuk mulai menggunakan '<NewSQLServerDistributorName>' sebagai Distributornya, Anda harus menghapus konfigurasi replikasi saat ini pada instans server Oracle, yang akan menghapus semua publikasi pada instans server tersebut."
"Oracle server '<OracleServerName>' sudah didefinisikan sebagai penerbit '<OraclePublisherName>' pada distributor '<SQLServerDistributorName.<>DistributionDatabaseName>'. Hilangkan penerbit atau letakkan sinonim publik '<SynonymName>' untuk dibuat ulang."
Ketika Oracle Publisher dihilangkan, objek replikasi di database Oracle secara otomatis dibersihkan. Namun, pembersihan manual objek replikasi Oracle diperlukan dalam beberapa kasus. Untuk membersihkan objek replikasi Oracle secara manual yang dibuat oleh replikasi:
Sambungkan ke penerbit Oracle dengan izin DBA.
Terbitkan perintah
DROP PUBLIC SYNONYM MSSQLSERVERDISTRIBUTOR;
SQL .Terbitkan perintah
DROP USER <replication_administrative_user_schema>``CASCADE;
SQL .
Kesalahan SQL Server 21663 Dimunculkan Mengenai Kurangnya Kunci Primer
Artikel dalam publikasi transaksi harus memiliki kunci primer yang valid. Jika mereka tidak memiliki kunci primer yang valid, Anda akan menerima pesan kesalahan berikut saat Anda mencoba menambahkan artikel:
"Tidak ada kunci primer yang valid yang ditemukan untuk tabel sumber [<TableOwner>].[<TableName>]"
Untuk informasi tentang persyaratan untuk kunci primer, lihat bagian "Indeks dan Batasan Unik" dalam topik Pertimbangan dan Batasan Desain untuk Penerbit Oracle.
Kesalahan SQL Server 21642 Dimunculkan Mengenai Login Server Tertaut Duplikat
Ketika Oracle Publisher awalnya dikonfigurasi, entri server tertaut dibuat untuk koneksi antara Penerbit dan Distributor. Server yang ditautkan memiliki nama yang sama dengan nama layanan Oracle TNS. Jika Anda mencoba membuat server tertaut dengan nama yang sama, pesan kesalahan berikut ditampilkan:
"Penerbit heterogen memerlukan server yang ditautkan. Server tertaut bernama '<LinkedServerName>' sudah ada. Hapus server tertaut atau pilih nama penerbit yang berbeda."
Kesalahan ini dapat terjadi jika Anda mencoba membuat server tertaut secara langsung atau jika sebelumnya Anda telah menghilangkan hubungan antara Penerbit Oracle dan Distributor SQL Server, dan Anda sekarang mencoba mengonfigurasi ulang. Jika Anda menerima kesalahan ini saat mencoba mengonfigurasi ulang Publisher, letakkan server tertaut dengan sp_dropserver (Transact-SQL).
Jika Anda perlu menyambungkan ke Oracle Publisher melalui koneksi server tertaut, buat nama layanan TNS lain, lalu gunakan nama ini saat memanggil sp_addlinkedserver (Transact-SQL). Untuk informasi tentang membuat nama layanan TNS, lihat dokumentasi Oracle.
Kesalahan SQL Server 21617 Dimunculkan
Penerbitan Oracle menggunakan aplikasi Oracle SQL*PLUS untuk mengunduh paket kode dukungan Publisher ke database Oracle. Sebelum mencoba mengonfigurasi Oracle Publisher, SQL Server memverifikasi bahwa SQL*PLUS dapat diakses melalui jalur sistem pada Distributor. Jika SQL*PLUS tidak dapat dimuat, pesan kesalahan berikut ditampilkan:
"Tidak dapat menjalankan SQL*PLUS. Pastikan bahwa versi kode klien Oracle saat ini diinstal di distributor."
Cobalah untuk menemukan SQL*PLUS di Distributor. Untuk penginstalan klien Oracle 10g, nama executable ini sqlplus.exe. Biasanya diinstal di %ORACLE_HOME%/bin. Untuk memverifikasi bahwa jalur SQL*PLUS muncul di jalur sistem, periksa nilai Jalur variabel sistem:
Klik kanan Komputer Saya, lalu klik Properti.
Klik tab Tingkat Lanjut , lalu klik Variabel lingkungan.
Dalam kotak dialog Variabel Lingkungan, di daftar Variabel sistem, pilih variabel Jalur , lalu klik Edit.
Dalam kotak dialog Edit Variabel Sistem: jika jalur ke folder yang berisi sqlplus.exe tidak ada dalam kotak teks Nilai variabel, edit string untuk menyertakannya.
Klik OK pada setiap kotak dialog yang terbuka untuk keluar dan menyimpan perubahan.
Jika Anda tidak dapat menemukan sqlplus.exe di Distributor, instal versi perangkat lunak klien Oracle saat ini di Distributor. Untuk informasi selengkapnya, lihat Mengonfigurasi Oracle Publisher.
Kesalahan SQL Server 21620 Dimunculkan
Jika Anda menyambungkan ke database Oracle yang lebih lama dari versi 8.1, penerbitan Oracle mengharuskan perangkat lunak klien Oracle yang diinstal pada Distributor berasal dari versi 9. Jika Anda menyambungkan ke database Oracle yang versi 8.1 atau yang lebih baru, kami sarankan perangkat lunak klien Oracle menjadi versi 10 atau yang lebih baru.
Sebelum mencoba mengonfigurasi Oracle Publisher, penerbitan Oracle memverifikasi bahwa versi SQL*PLUS yang dapat diakses melalui jalur sistem pada Distributor adalah versi 9 atau yang lebih baru. Jika tidak, pesan kesalahan berikut ditampilkan:
"Versi SQL*PLUS yang dapat diakses melalui variabel Jalur sistem tidak cukup saat ini untuk mendukung penerbitan Oracle. Pastikan bahwa versi kode klien Oracle saat ini diinstal di distributor."
Jika Anda memiliki beberapa versi perangkat lunak klien Oracle yang diinstal pada Distributor, pastikan bahwa versi terbaru setidaknya versi 9 dan variabel jalur sistem mengacu terlebih dahulu ke versi ini (referensi ke versi lain dapat muncul selama yang terbaru muncul terlebih dahulu). Untuk informasi selengkapnya tentang mengedit variabel jalur sistem, lihat bagian "Kesalahan SQL Server 21617 dimunculkan" sebelumnya dalam topik ini.
Kesalahan SQL Server 21624 atau Kesalahan 21629 Dimunculkan
Untuk Distributor 64-bit, penerbitan Oracle menggunakan Penyedia OLEDB Oracle untuk Oracle (OraOLEDB.Oracle). Pastikan penyedia Oracle OLEDB diinstal dan terdaftar di Distributor. Jika penyedia tidak diinstal dan terdaftar, satu atau kedua pesan kesalahan berikut ditampilkan:
"Tidak dapat menemukan penyedia Oracle OLEDB terdaftar, OraOLEDB.Oracle, di distributor '%s'. Pastikan bahwa versi penyedia Oracle OLEDB saat ini diinstal dan terdaftar di distributor."
"Kunci registri CLSID yang menunjukkan bahwa Penyedia OLEDB Oracle untuk Oracle, OraOLEDB.Oracle, telah terdaftar tidak ada di distributor. Pastikan bahwa penyedia Oracle OLEDB diinstal dan terdaftar di distributor."
Jika Anda menggunakan perangkat lunak klien Oracle versi 10g, penyedia OraOLEDB10.dll; untuk versi 9i, OraOLEDB.dll. Penyedia diinstal di %ORACLE_HOME%\BIN (misalnya, C:\oracle\product\10.1.0\Client_1\bin). Jika Anda menentukan bahwa penyedia Oracle OLEDB tidak diinstal pada Distributor, instal dari disk penginstalan perangkat lunak klien Oracle yang disediakan oleh Oracle. Untuk informasi selengkapnya, lihat Mengonfigurasi Oracle Publisher.
Jika penyedia Oracle OLEDB diinstal, pastikan penyedia OLEDB terdaftar. Untuk mendaftarkan DLL penyedia, jalankan perintah berikut dari direktori tempat DLL diinstal, lalu hentikan dan mulai ulang instans SQL Server:
regsvr32 OraOLEDB10.dll
atauregsvr32 OraOLEDB.dll
.
Kesalahan SQL Server 21626 atau Kesalahan 21627 Dimunculkan
Untuk memverifikasi bahwa lingkungan penerbitan Oracle dikonfigurasi dengan benar, SQL Server mencoba menyambungkan ke Oracle Publisher dengan kredensial masuk yang Anda tentukan selama konfigurasi. Jika Distributor SQL Server tidak dapat tersambung ke Oracle Publisher, pesan kesalahan berikut ditampilkan:
- "Tidak dapat tersambung ke server database Oracle '%s' menggunakan penyedia Oracle OLEDB OraOLEDB.Oracle."
Jika pesan kesalahan ini ditampilkan, verifikasi konektivitas ke database Oracle dengan menjalankan SQL*PLUS secara langsung menggunakan login dan kata sandi yang sama yang ditentukan selama konfigurasi Oracle Publisher. Untuk informasi selengkapnya, lihat bagian "Distributor SQL Server Tidak Dapat Tersambung ke Instans Database Oracle" sebelumnya dalam topik ini.
Kesalahan SQL Server 21628 Dimunculkan
Untuk Distributor 64-bit, penerbitan Oracle menggunakan Penyedia OLEDB Oracle untuk Oracle (OraOLEDB.Oracle). SQL Server membuat entri registri untuk memungkinkan penyedia Oracle berjalan dalam proses dengan SQL Server. Jika ada masalah saat membaca atau menulis entri registri ini, pesan kesalahan berikut ditampilkan:
"Tidak dapat memperbarui registri distributor '%s' untuk mengizinkan penyedia Oracle OLEDB OraOLEDB.Oracle berjalan dalam proses dengan SQL Server. Pastikan bahwa login saat ini berwenang untuk memodifikasi kunci registri milik SQL Server."
Penerbitan Oracle mengharuskan entri registri ada dan diatur ke 1 untuk Distributor 64 bit. Jika entri tidak ada, SQL Server akan mencoba membuatnya. Jika entri ada, tetapi diatur ke 0, pengaturan tidak akan diubah; konfigurasi Oracle Publisher akan gagal.
Untuk melihat dan mengubah pengaturan registri:
Klik Mulai, lalu klik Run.
Dalam kotak dialog Jalankan , ketik regedit, lalu klik OK.
Navigasi ke HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\Providers.
Disertakan di bawah Penyedia harus berupa folder bernama OraOLEDB.Oracle. Dalam folder ini harus nama nilai DWORD AllowInProcess, dengan nilai 1.
Jika Anda menentukan bahwa AllowInProcess diatur ke 0, perbarui entri registri ke 1:
Klik kanan entri, lalu klik Ubah.
Dalam kotak dialog Edit String, ketik 1 di bidang Data nilai.
Kesalahan SQL Server 21684 Dimunculkan
Jika akun pengguna administratif tidak memiliki hak istimewa yang memadai, pesan kesalahan berikut ditampilkan:
"Izin yang terkait dengan login administrator untuk penerbit Oracle '%s' tidak cukup."
Untuk memverifikasi izin yang diberikan kepada pengguna, jalankan kueri berikut: SELECT * from session_privs
. Output harus sama dengan berikut ini.
PRIVILEGE
------------------
CREATE SESSION
CREATE TABLE
CREATE PUBLIC SYNONYM
DROP PUBLIC SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
Anda Mengalami Masalah Izin untuk Skema Pengguna Replikasi
Skema pengguna replikasi harus memiliki izin yang dijelaskan dalam "Membuat Skema Pengguna Secara Manual" di Mengonfigurasi Penerbit Oracle.
Oracle Error ORA-01000
Replikasi menggunakan kursor pada Oracle Publisher selama proses penambahan artikel ke publikasi. Dimungkinkan untuk melebihi jumlah maksimum kursor yang tersedia di Publisher selama proses ini. Jika ini terjadi, kesalahan berikut dimunculkan:
"ORA-01000: kursor terbuka maksimum terlampaui"
Untuk menghindari masalah ini, pastikan bahwa pengaturan max_open_cursors dalam database Oracle diatur ke angka yang cukup tinggi (setidaknya 1000). Untuk informasi selengkapnya tentang pengaturan ini, lihat dokumentasi Oracle.
Oracle Error ORA-01555
Kesalahan database Oracle berikut tidak terkait dengan replikasi rekam jepret; ini terkait dengan bagaimana Oracle membangun tampilan data yang konsisten baca:
"ORA-01555: Rekam jepret terlalu tua"
Menggunakan objek yang dikenal sebagai segmen putar kembali, Oracle membuat tampilan data yang konsisten baca pada titik waktu pernyataan SQL dikeluarkan. Kesalahan "rekam jepret terlalu lama" mungkin terjadi ketika informasi putar kembali ditimpa oleh sesi bersamaan lainnya. Sebelum Oracle 9i, metode yang direkomendasikan untuk mengurangi frekuensi kesalahan ini adalah meningkatkan ukuran dan/atau jumlah segmen putar kembali, dan untuk menetapkan transaksi besar ke segmen putar kembali tertentu.
Di Oracle 9i, Oracle memperkenalkan konsep ruang tabel UNDO, yang menggantikan segmen putar kembali. Untuk mencegah kesalahan "rekam jepret terlalu lama" di Oracle 9i, disarankan agar Anda:
Buat ruang tabel URUNGKAN dengan jumlah ruang kosong yang sesuai.
Atur jaminan retensi pada ruang tabel (Oracle 10G dan yang lebih besar).
Konfigurasikan parameter inisialisasi Oracle UNDO_MANAGEMENT dan UNDO_RETENTION.
Untuk detail lebih lanjut tentang menghindari kesalahan "rekam jepret terlalu lama", lihat dokumentasi Oracle.
Oracle Error ORA-22285
Jika tabel menyertakan kolom BFILE, data untuk kolom disimpan dalam sistem file. Akun pengguna administratif replikasi harus diberikan akses ke direktori tempat data disimpan menggunakan sintaks berikut:
GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>
Jika akses tidak diberikan, kesalahan berikut dimunculkan oleh Agen Pembaca Log:
"ORA-22285: direktori atau file yang tidak ada untuk operasi FILEOPEN"
Perubahan Dilakukan yang Memerlukan Konfigurasi Ulang Penerbit
Perubahan pada tabel atau prosedur metadata replikasi mengharuskan Anda menghilangkan dan mengonfigurasi ulang Publisher. Untuk mengonfigurasi ulang Publisher, Anda harus menghilangkan Publisher dan mengonfigurasinya lagi menggunakan SQL Server Management Studio, Transact-SQL, atau RMO. Untuk informasi tentang mengonfigurasi Penerbit, lihat Mengonfigurasi Penerbit Oracle.
Untuk menghilangkan Oracle Publisher (SQL Server Management Studio)
Sambungkan ke Distributor untuk Penerbit Oracle di SQL Server Management Studio dan perluas simpul server.
Klik kanan Replikasi, lalu klik Properti Distributor.
Pada halaman Penerbit dari kotak dialog Properti Distributor, kosongkan kotak centang untuk Penerbit Oracle.
Klik OK.
Untuk menghilangkan Oracle Publisher (Transact-SQL)
- Jalankan sp_dropdistpublisher. Untuk informasi selengkapnya, lihat sp_dropdistpublisher (Transact-SQL).