Menyalin data dari dan ke Oracle dengan menggunakan Azure Data Factory atau Azure Synapse Analytics

BERLAKU UNTUK: Azure Data Factory Azure Synapse Analytics

Petunjuk / Saran

Data Factory di Microsoft Fabric adalah generasi Azure Data Factory berikutnya, dengan arsitektur yang lebih sederhana, AI bawaan, dan fitur baru. Jika Anda baru menggunakan integrasi data, mulailah dengan Fabric Data Factory. Beban kerja ADF yang ada dapat ditingkatkan ke Fabric untuk mengakses kemampuan baru di seluruh ilmu data, analitik real time, dan pelaporan.

Artikel ini menguraikan cara menggunakan aktivitas salin di Azure Data Factory untuk menyalin data dari dan ke database Oracle. Ini dibangun berdasarkan gambaran umum aktivitas salin.

Penting

Konektor Oracle versi 1.0 berada pada tahap penghapusan. Anda disarankan untuk meningkatkan konektor Oracle dari versi 1.0 ke 2.0.

Kemampuan yang didukung

Konektor Oracle ini didukung untuk kemampuan berikut:

Kemampuan yang didukung IR
Copy activity (sumber/penampung) (1) (2)
Aktivitas pencarian (1) (2)
aktivitas Skrip (1) (2)

(1) Runtime integrasi Azure (2) Runtime integrasi yang di-host sendiri

Untuk daftar penyimpanan data yang didukung sebagai sumber atau sink oleh aktivitas salin, lihat tabel Penyimpanan data yang didukung .

Secara khusus, konektor Oracle ini mendukung:

  • Versi database Oracle berikut untuk versi 2.0:
    • Oracle Database 19c dan yang lebih tinggi
    • Oracle Database 18c dan yang lebih tinggi
    • Oracle Database 12c dan yang lebih tinggi
    • Oracle Database 11g dan yang lebih tinggi
  • Versi database Oracle berikut untuk versi 1.0:
    • Oracle 19c R1 (19.1) dan yang lebih tinggi
    • Oracle 18c R1 (18.1) dan yang lebih tinggi
    • Oracle 12c R1 (12.1) dan yang lebih tinggi
    • Oracle 11g R1 (11.1) dan yang lebih tinggi
    • Oracle 10g R1 (10.1) dan yang lebih tinggi
    • Oracle 9i R2 (9.2) dan yang lebih tinggi
    • Oracle 8i R3 (8.1.7) dan yang lebih tinggi
    • Oracle Database Cloud Exadata Service
  • Penyalinan paralel dari sumber Oracle. Lihat bagian Salinan paralel dari Oracle untuk detailnya.

Nota

Server proksi Oracle tidak didukung.

Prasyarat

Jika penyimpanan data Anda terletak di dalam jaringan lokal, jaringan virtual Azure, atau Amazon Virtual Private Cloud, Anda perlu mengonfigurasi runtime integrasi yang dihosting sendiri untuk menyambungkannya.

Jika penyimpanan data Anda adalah layanan data cloud terkelola, Anda dapat menggunakan Azure Integration Runtime. Jika akses dibatasi untuk IP yang disetujui dalam aturan firewall, Anda dapat menambahkan IP Azure Integration Runtime ke daftar izinkan.

Anda juga dapat menggunakan fitur runtime integrasi jaringan virtual terkelola di Azure Data Factory untuk mengakses jaringan lokal tanpa menginstal dan mengonfigurasi runtime integrasi yang dihosting secara mandiri.

Untuk informasi selengkapnya tentang mekanisme dan opsi keamanan jaringan yang didukung oleh Data Factory, lihat Strategi akses data.

Runtime integrasi menyediakan driver Oracle bawaan. Oleh karena itu, Anda tidak perlu menginstal driver secara manual saat menyalin data dari dan ke Oracle.

Mulai sekarang!

Untuk melakukan aktivitas salin dengan alur, Anda dapat menggunakan salah satu alat atau SDK berikut:

Membuat layanan tertaut ke Oracle menggunakan UI

Gunakan langkah-langkah berikut untuk membuat layanan tertaut ke Oracle di UI portal Azure.

  1. Telusuri ke tab Kelola di ruang kerja Azure Data Factory atau Synapse Anda dan pilih Layanan Tertaut, lalu klik Baru:

  2. Cari Oracle dan pilih konektor Oracle.

    Cuplikan layar konektor Oracle.

  3. Konfigurasikan detail layanan, uji koneksi, dan buat layanan tertaut baru.

    Cuplikan layar konfigurasi layanan tertaut untuk Oracle.

Detail konfigurasi konektor

Bagian berikut ini menyediakan detail tentang properti yang digunakan untuk menentukan entitas khusus untuk konektor Oracle.

Properti layanan yang terhubung

Konektor Oracle versi 2.0 mendukung TLS 1.3. Lihat bagian ini untuk meningkatkan versi konektor Oracle Anda dari versi 1.0. Untuk detail properti, lihat bagian yang sesuai.

Versi 2.0

Layanan tertaut Oracle mendukung properti berikut saat menerapkan versi 2.0:

Harta benda Deskripsi Diperlukan
jenis Properti jenis harus diatur ke Oracle. Ya
versi Versi yang Anda tentukan. Nilainya adalah 2.0. Ya
server Lokasi database Oracle yang ingin Anda sambungkan. Anda dapat merujuk ke konfigurasi properti server untuk menentukannya. Ya
jenis otentikasi Jenis autentikasi untuk menyambungkan ke database Oracle. Hanya autentikasi Dasar yang didukung sekarang. Ya
nama pengguna Nama pengguna database Oracle. Ya
kata sandi Kata sandi Oracle database. Tandai bidang ini sebagai SecureString untuk menyimpannya dengan aman. Atau, Anda dapat merujuk rahasia yang disimpan di Azure Key Vault. Ya
hubungkan melalui Runtime integrasi yang akan digunakan untuk menyambungkan ke penyimpanan data. Pelajari selengkapnya dari bagian Prasyarat. Jika tidak ditentukan, Azure Integration Runtime default digunakan. Tidak.

Anda dapat mengatur properti koneksi tambahan berikut di layanan tertaut tergantung pada kasus Anda.

Harta benda Deskripsi Diperlukan Nilai standar
encryptionClient Menentukan perilaku klien enkripsi. Nilai yang didukung adalah accepted, , rejectedrequested, atau required. Jenis: teks Tidak. required
encryptionTypesClient Menentukan algoritma enkripsi yang dapat digunakan klien. Nilai yang didukung adalah AES128, , AES192AES256, 3DES112, 3DES168. Jenis: teks Tidak. (AES256)
cryptoChecksumClient Menentukan perilaku integritas data yang diinginkan ketika klien ini tersambung ke server. Nilai yang didukung adalah accepted, , rejectedrequested, atau required. Jenis: teks Tidak. required
cryptoChecksumTypesClient Menentukan algoritma kripto-checksum yang dapat digunakan klien. Nilai yang didukung adalah SHA1, SHA256, SHA384, SHA512. Jenis: teks Tidak. (SHA512)
initialLobFetchSize Menentukan jumlah yang awalnya diambil sumber untuk kolom LOB. Jenis: int Tidak. 0
fetchSize Menentukan jumlah byte yang dialokasikan driver untuk mengambil data dalam satu perjalanan pulang-pergi database. Jenis: int Tidak. 10 MB
Ukuran Cache Pernyataan Menentukan jumlah kursor atau pernyataan yang akan di-cache untuk setiap koneksi database. Jenis: int Tidak. 0
initializationString Menentukan perintah yang dikeluarkan segera setelah menyambungkan ke database untuk mengelola pengaturan sesi. Jenis: teks Tidak. nol
enableBulkLoad (memungkinkan pemuatan besar-besaran) Menentukan apakah akan menggunakan salinan massal atau penyisipan batch saat memuat data ke dalam database. Jenis: boolean Tidak. benar
supportV1DataTypes Menentukan apakah akan menggunakan pemetaan jenis data versi 1.0. Jangan atur ini ke true kecuali Anda ingin mempertahankan kompatibilitas mundur dengan pemetaan tipe data versi 1.0. Jenis: boolean Tidak, properti ini hanya untuk penggunaan kompatibilitas mundur tidak benar
fetchTswtzAsTimestamp Menentukan apakah driver mengembalikan nilai kolom dengan jenis data TIMESTAMP WITH TIME ZONE sebagai DateTime atau string. Pengaturan ini diabaikan jika supportV1DataTypes tidak benar. Jenis: boolean Tidak, properti ini hanya untuk penggunaan kompatibilitas mundur benar

Contoh:

{
    "name": "OracleLinkedService",
    "properties": {
        "type": "Oracle",
        "version": "2.0",
        "typeProperties": {
            "server": "<server name>", 
            "username": "<user name>", 
            "password": "<password>", 
            "authenticationType": "<authentication type>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Example: menyimpan kata sandi di Azure Key Vault

{
    "name": "OracleLinkedService",
    "properties": {
        "type": "Oracle",
        "version": "2.0",
        "typeProperties": {
            "server": "<server name>", 
            "username": "<user name>", 
            "authenticationType": "<authentication type>",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

server konfigurasi properti

Untuk server properti, Anda dapat menentukannya dalam salah satu dari tiga format berikut:

Rancangan Contoh
Sambungkan Deskriptor (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sales.us.acme.com)))
Nama Easy Connect (Plus) salesserver1:1521/sales.us.example.com
Oracle Net Services Name (TNS Alias) (hanya untuk runtime integrasi yang dihost sendiri) penjualan

Daftar berikut menunjukkan parameter yang didukung yang digunakan dalam server. Jika Anda menggunakan parameter yang tidak ada dalam daftar berikut, koneksi Anda gagal.

  • Saat menggunakan runtime integrasi Azure:

    Tuan rumah
    PELABUHAN
    PROTOKOL
    NAMA_LAYANAN
    SID
    INSTANCE_NAME
    SERVER
    WAKTU_MENUNGGU_KONEKSI
    JUMLAH_ULANG
    Penundaan Ulang
    SSL_VERSION
    SSL_SERVER_DN_MATCH
    SSL_SERVER_CERT_DN

  • Saat menggunakan runtime integrasi yang dihost sendiri:

    Tuan rumah
    PELABUHAN
    PROTOKOL
    MENGAKTIFKAN
    WAKTU_KEDALUARSA
    pemulihan otomatis
    PENYEIMBANGAN_BEBAN
    Ukuran_Penerimaan_Bufer (RECV_BUF_SIZE)
    SDU
    Ukuran_Buffer_Kirim
    Sumber_Rute
    JENIS_LAYANAN
    COLOCATION_TAG
    AWALAN_ID_KONEKSI
    MODE_GANTI_CADANGAN
    GLOBAL_NAME
    HS
    INSTANCE_NAME
    BATAS KOLAM
    KELAS_KONEKSI_POOL
    POOL_NAME
    POOL_PURITY
    RDB_DATABASE
    KUNCI_PEMECAHAN
    KUNCI_PEMECAHAN_ID
    SUPER_SHARDING_KEY
    SERVER
    NAMA_LAYANAN
    SID
    Nama_Layanan_Terowongan
    Autentikasi Klien SSL
    Alias Sertifikat SSL
    Sidik Jari Sertifikat SSL
    SSL_VERSION
    SSL_SERVER_DN_MATCH
    SSL_SERVER_CERT_DN
    LOKASI_DOMPET
    WAKTU_MENUNGGU_KONEKSI
    JUMLAH_ULANG
    Penundaan Ulang
    WAKTU_HABIS_KONEKSI_TRANSPORT
    RECV_TIMEOUT (Waktu Habis Penerimaan)
    KOMPRESI
    TINGKAT_KOMPRESI

Versi 1.0

Layanan tertaut Oracle mendukung properti berikut saat menerapkan versi 1.0:

Harta benda Deskripsi Diperlukan
jenis Properti jenis harus diatur ke Oracle. Ya
koneksiString Menentukan informasi yang diperlukan untuk menyambungkan ke instans Oracle Database.
Anda juga dapat memasukkan kata sandi ke dalam Azure Key Vault, dan menarik konfigurasi password dari string koneksi. Lihat sampel berikut dan kredensial Store di Azure Key Vault dengan detail selengkapnya.

Jenis koneksi yang didukung: Anda dapat menggunakan Oracle SID atau Oracle Service Name untuk mengidentifikasi database Anda:
- Jika Anda menggunakan SID: Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;
- Jika Anda menggunakan Nama Layanan: Host=<host>;Port=<port>;ServiceName=<servicename>;User Id=<username>;Password=<password>;
Untuk opsi koneksi asli Oracle tingkat lanjut, Anda dapat memilih untuk menambahkan entri di TNSNAMES. File ORA pada komputer tempat runtime integrasi yang dihost sendiri diinstal, dan di layanan tertaut Oracle, pilih untuk menggunakan jenis koneksi Nama Layanan Oracle dan konfigurasikan nama layanan yang sesuai.
Ya
hubungkan melalui Runtime integrasi yang akan digunakan untuk menyambungkan ke penyimpanan data. Pelajari selengkapnya dari bagian Prasyarat. Jika tidak ditentukan, Azure Integration Runtime default digunakan. Tidak.

Petunjuk / Saran

Jika Anda mendapatkan kesalahan, "ORA-01025: parameter UPI di luar rentang", dan versi Oracle Anda adalah 8i, tambahkan WireProtocolMode=1 ke string koneksi Anda. Kemudian coba lagi.

Jika Anda memiliki beberapa instans Oracle untuk skenario failover, Anda dapat membuat layanan tertaut Oracle dan mengisi host utama, port, nama pengguna, kata sandi, dll., dan menambahkan "Properti koneksi tambahan" baru dengan nama properti sebagai AlternateServers dan nilai sebagai (HostName=<secondary host>:PortNumber=<secondary port>:ServiceName=<secondary service name>) - jangan lewatkan tanda kurung dan perhatikan titik dua (:) sebagai pemisah. Sebagai contoh, nilai server alternatif berikut menentukan dua server database alternatif untuk failover koneksi: (HostName=AccountingOracleServer:PortNumber=1521:SID=Accounting,HostName=255.201.11.24:PortNumber=1522:ServiceName=ABackup.NA.MyCompany).

Properti koneksi lainnya yang dapat Anda atur di string koneksi per kasus Anda:

Harta benda Deskripsi Nilai yang diizinkan
Ukuran Array Jumlah byte yang dapat diambil konektor dalam satu putaran jaringan. Misalnya, ArraySize=‭10485760‬.

Nilai yang lebih besar meningkatkan throughput dengan mengurangi jumlah waktu untuk mengambil data di seluruh jaringan. Nilai yang lebih kecil meningkatkan waktu respons, karena ada lebih sedikit penundaan yang menunggu server mengirimkan data.
Bilangan bulat dari 1 hingga 4294967296 (4 GB). Nilai defaultnya adalah 60000. Nilai 1 tidak menentukan jumlah byte, tetapi menunjukkan alokasi ruang untuk tepat satu baris data.

Untuk mengaktifkan enkripsi pada koneksi Oracle, Anda memiliki dua opsi:

  • Untuk menggunakan Triple-DES Encryption (3DES) dan Advanced Encryption Standard (AES), di sisi server Oracle, buka Oracle Advanced Security (OAS) dan konfigurasikan pengaturan enkripsi. Untuk detailnya, lihat dokumentasi Oracle ini. Konektor Oracle Application Development Framework (ADF) secara otomatis menegosiasikan metode enkripsi untuk menggunakan yang Anda konfigurasi di OAS saat membuat koneksi ke Oracle.

  • Untuk menggunakan TLS, siapkan truststore untuk autentikasi server SSL dengan menerapkan salah satu dari tiga metode berikut:

    • Metode 1 (disarankan):

      1. Instal sertifikat TLS/SSL dengan mengimpornya ke penyimpanan sertifikat lokal. Driver Oracle bawaan dapat memuat sertifikat yang diperlukan dari penyimpanan sertifikat.

      2. Dalam layanan, konfigurasikan string koneksi Oracle dengan EncryptionMethod=1.

    • Metode 2:

      1. Dapatkan informasi sertifikat TLS/SSL. Dapatkan informasi sertifikat yang dikodekan Dengan Aturan Pengodean Khusus (DER) atau Email yang Ditingkatkan Privasi (PEM) dari sertifikasi TLS/SSL Anda.

        openssl x509 -inform (DER|PEM) -in [Full Path to the DER/PEM Certificate including the name of the DER/PEM Certificate] -text
        
      2. Dalam layanan, konfigurasikan string koneksi Oracle dengan EncryptionMethod=1 dan nilai TrustStore yang sesuai. Misalnya: Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;EncryptionMethod=1;TrustStore= data:// -----BEGIN CERTIFICATE-----<certificate content>-----END CERTIFICATE-----

        Nota

        • Nilai TrustStore bidang harus diawali dengan data://.
        • Saat menentukan konten untuk beberapa sertifikat, tentukan konten setiap sertifikat antara -----BEGIN CERTIFICATE----- dan -----END CERTIFICATE-----. Jumlah tanda hubung (-----) harus sama baik sebelum maupun sesudah BEGIN CERTIFICATE dan END CERTIFICATE. Contohnya:
          -----BEGIN CERTIFICATE-----<certificate content 1>-----END CERTIFICATE-----
          -----BEGIN CERTIFICATE-----<certificate content 2>-----END CERTIFICATE-----
          -----BEGIN CERTIFICATE-----<certificate content 3>-----END CERTIFICATE-----
        • Bidang ini TrustStore mendukung konten hingga 8192 karakter.
    • Metode 3:

      1. truststore Buat file dengan cipher yang kuat seperti AES256.

        openssl pkcs12 -in [Full Path to the DER/PEM Certificate including the name of the DER/PEM Certificate] -out [Path and name of TrustStore] -passout pass:[Keystore PWD] -keypbe AES-256-CBC -certpbe AES-256-CBC -nokeys -export
        
      2. Tempatkan truststore file pada mesin runtime integrasi yang dihost sendiri. Misalnya, tempatkan file di C:\MyTrustStoreFile.

      3. Dalam layanan, konfigurasikan "string koneksi" Oracle dengan EncryptionMethod=1 dan nilai TrustStore/TrustStorePassword yang sesuai. Contohnya, Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;EncryptionMethod=1;TrustStore=C:\\MyTrustStoreFile;TrustStorePassword=<trust_store_password>.

Contoh:

{
    "name": "OracleLinkedService",
    "properties": {
        "type": "Oracle",
        "typeProperties": {
            "connectionString": "Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Example: menyimpan kata sandi di Azure Key Vault

{
    "name": "OracleLinkedService",
    "properties": {
        "type": "Oracle",
        "typeProperties": {
            "connectionString": "Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Properti kumpulan data

Bagian ini menyediakan daftar properti yang didukung oleh himpunan data Oracle. Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan himpunan data, lihat Himpunan data.

Untuk menyalin data dari dan ke Oracle, atur properti jenis himpunan data ke OracleTable. Properti berikut ini didukung.

Harta benda Deskripsi Diperlukan
jenis Properti tipe dalam himpunan data harus disetel ke OracleTable. Ya
skema Nama skema. Tidak untuk sumber, Ya untuk penampung
tabel Nama tabel/tampilan. Tidak untuk sumber, Ya untuk penampung
tableName (nama tabel) Nama tabel/tampilan dengan skema. Properti ini didukung untuk kompatibilitas ke belakang. Untuk beban kerja baru, gunakan schema dan table. Tidak untuk sumber, Ya untuk penampung

Contoh:

{
    "name": "OracleDataset",
    "properties":
    {
        "type": "OracleTable",
        "schema": [],
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        },
        "linkedServiceName": {
            "referenceName": "<Oracle linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Properti aktivitas penyalinan

Bagian ini menyediakan daftar properti yang didukung oleh sumber dan sink Oracle. Untuk daftar lengkap bagian dan properti yang tersedia dalam mendefinisikan aktivitas, lihat Pipeline.

Oracle sebagai sumber

Petunjuk / Saran

Untuk memuat data dari Oracle secara efisien dengan menggunakan partisi data, pelajari lebih lanjut dari Salinan paralel dari Oracle.

Untuk menyalin data dari Oracle, atur jenis sumber dalam aktivitas salin ke OracleSource. Properti berikut ini didukung di bagian sumber aktivitas salin.

Harta benda Deskripsi Diperlukan
jenis Properti jenis sumber aktivitas salin harus disetel ke OracleSource. Ya
oracleReaderQuery Gunakan kueri SQL kustom untuk membaca data. Contohnya adalah "SELECT * FROM MyTable".
Saat mengaktifkan beban yang dipartisi, Anda perlu mengaitkan parameter partisi bawaan yang sesuai dalam kueri Anda. Misalnya, lihat bagian Salinan paralel dari Oracle .
Tidak.
konversiDesimalKeInteger Jenis ORACLE NUMBER dengan skala nol atau tidak ditentukan akan dikonversi ke bilangan bulat yang sesuai. Nilai yang diperbolehkan adalah true dan false (default).
Jika Anda menggunakan Oracle versi 2.0, properti ini hanya akan diizinkan untuk diatur ketika supportV1DataTypes adalah true.
Tidak.
partitionOptions Menentukan opsi partisi data yang digunakan untuk memuat data dari Oracle.
Nilai yang diizinkan adalah: Tidak ada (default), PhysicalPartitionsOfTable, dan DynamicRange.
Saat opsi partisi diaktifkan (yaitu, bukan None), tingkat paralelisme dalam memproses data secara paralel dari database Oracle dikendalikan oleh pengaturan aktivitas salin parallelCopies.
Tidak.
pengaturan partisi Tentukan grup pengaturan untuk pemartisian data.
Terapkan saat opsi partisi bukan None.
Tidak.
nama partisi Daftar partisi fisik yang perlu disalin.
Terapkan saat opsi partisi adalah PhysicalPartitionsOfTable. Jika Anda menggunakan kueri untuk mengambil data sumber, kaitkan ?AdfTabularPartitionName di klausul WHERE. Misalnya, lihat bagian Salinan paralel dari Oracle .
Tidak.
partitionColumnName Tentukan nama kolom sumber dalam tipe bilangan bulat yang akan digunakan oleh pemartisian rentang untuk salinan paralel. Jika tidak ditentukan, kunci utama tabel terdeteksi secara otomatis dan digunakan sebagai kolom partisi.
Terapkan saat opsi partisi adalah DynamicRange. Jika Anda menggunakan kueri untuk mengambil data sumber, kaitkan ?AdfRangePartitionColumnName di klausul WHERE. Misalnya, lihat bagian Salinan paralel dari Oracle .
Tidak.
partisiUpperBound Nilai maksimum kolom partisi untuk menyalin data.
Terapkan saat opsi partisi adalah DynamicRange. Jika Anda menggunakan kueri untuk mengambil data sumber, kaitkan ?AdfRangePartitionUpbound di klausul WHERE. Misalnya, lihat bagian Salinan paralel dari Oracle .
Tidak.
batas bawah partisi Nilai minimum kolom partisi untuk menyalin data.
Terapkan saat opsi partisi adalah DynamicRange. Jika Anda menggunakan kueri untuk mengambil data sumber, kaitkan ?AdfRangePartitionLowbound di klausul WHERE. Misalnya, lihat bagian Salinan paralel dari Oracle .
Tidak.
presisi angka Tentukan jumlah maksimum digit desimal yang signifikan. Nilai yang diizinkan berkisar antara 1 hingga 256. Secara default ke nilai 256 jika tidak ditentukan.
Properti ini didukung di Oracle versi 2.0. Ini hanya berlaku untuk jenis NUMBER yang tidak memiliki presisi dan skala yang ditentukan secara eksplisit dalam database Oracle. Pengaturan dapat dilakukan ketika supportV1DataTypes bukan true. Jika Anda menggunakan runtime integrasi yang dihost sendiri, versinya harus 5.56 atau lebih tinggi.
Tidak.
Skala Angka Tentukan jumlah digit setelah titik desimal. Nilai yang diizinkan berkisar dari 0 hingga 130 dan harus kurang dari atau sama dengan presisi. Secara default ke 130 jika tidak ditentukan.
Properti ini didukung di Oracle versi 2.0. Ini hanya berlaku untuk jenis NUMBER yang tidak memiliki presisi dan skala yang ditentukan secara eksplisit dalam database Oracle. Pengaturan dapat dilakukan ketika supportV1DataTypes bukan true. Jika Anda menggunakan runtime integrasi yang dihost sendiri, versinya harus 5.56 atau lebih tinggi.
Tidak.

Contoh: menyalin data dengan menggunakan kueri dasar tanpa partisi

"activities":[
    {
        "name": "CopyFromOracle",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Oracle input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "OracleSource",
                "convertDecimalToInteger": false,
                "oracleReaderQuery": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Oracle sebagai sink

Untuk menyalin data ke Oracle, atur tipe penyalur dalam kegiatan penyalinan ke OracleSink. Properti berikut ini didukung dalam aktivitas salin di bagian sink.

Harta benda Deskripsi Diperlukan
jenis Properti jenis sink aktivitas salin harus diatur ke OracleSink. Ya
writeBatchSize Menyisipkan data ke dalam tabel SQL saat ukuran buffer mencapai writeBatchSize.
Nilai yang diperbolehkan adalah Bilangan Bulat (untuk jumlah baris).
Tidak (defaultnya adalah 10.000)
writeBatchTimeout Waktu tunggu hingga operasi penyisipan batch selesai sebelum habis waktu.
Nilai yang diizinkan adalah Timespan. Contohnya adalah 00:30:00 (30 menit).
Tidak.
praCopyScript Tentukan kueri SQL agar aktivitas salin berjalan sebelum menulis data ke Oracle di setiap proses. Anda dapat menggunakan properti ini untuk membersihkan data yang telah dimuat sebelumnya. Tidak.
 maxConcurrentConnections Batas maksimum jumlah koneksi bersamaan yang dapat dibuat ke penyimpanan data selama aktivitas berlangsung. Tentukan nilai hanya jika Anda ingin membatasi koneksi bersamaan.  Tidak

Contoh:

"activities":[
    {
        "name": "CopyToOracle",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Oracle output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "OracleSink"
            }
        }
    }
]

Salinan paralel dari Oracle

Konektor Oracle menyediakan partisi data bawaan untuk menyalin data dari Oracle secara paralel. Anda dapat menemukan opsi pemartisian data pada tab Sumber aktivitas salin.

Cuplikan layar opsi partisi

Saat Anda mengaktifkan salinan yang dipartisi, layanan menjalankan kueri paralel terhadap sumber Oracle Anda untuk memuat data berdasarkan partisi. Derajat paralel dikendalikan oleh pengaturan parallelCopies pada aktivitas salin. Misalnya, jika Anda mengatur parallelCopies ke empat, layanan secara bersamaan menghasilkan dan menjalankan empat kueri berdasarkan opsi dan pengaturan partisi yang Ditentukan, dan setiap kueri mengambil sebagian data dari database Oracle Anda.

Anda disarankan untuk mengaktifkan penyalinan paralel dengan pemartisian data terutama ketika Anda memuat data dalam jumlah besar dari database Oracle Anda. Berikut ini adalah konfigurasi yang disarankan untuk skenario yang berbeda. Saat menyalin data ke penyimpanan data berbasis file, disarankan untuk menulis ke folder sebagai beberapa file (hanya tentukan nama folder), dalam hal ini performanya lebih baik daripada menulis ke satu file.

Skenario Pengaturan yang disarankan
Beban penuh dari tabel besar, dengan partisi fisik. Opsi partisi: Pembagian fisik dari tabel.

Selama eksekusi, layanan secara otomatis mendeteksi partisi fisik, dan menyalin data berdasarkan partisi.
Beban penuh dari tabel besar, tanpa partisi fisik, namun menggunakan kolom bilangan bulat untuk mempartisi data. Opsi partisi: Rentang partisi dinamis.
Kolom partisi: Menentukan kolom yang digunakan untuk mempartisi data. Jika belum ditentukan, kolom kunci primer digunakan.
Muat sejumlah besar data dengan menggunakan kueri kustom, dengan partisi fisik. Opsi partisi: Pembagian fisik dari tabel.
Kueri: SELECT * FROM <TABLENAME> PARTITION("?AdfTabularPartitionName") WHERE <your_additional_where_clause>.
Nama partisi: Tentukan nama partisi untuk menyalin data. Jika tidak ditentukan, layanan secara otomatis mendeteksi partisi fisik pada tabel yang Anda tentukan dalam himpunan data Oracle.

Selama eksekusi, layanan mengganti ?AdfTabularPartitionName dengan nama partisi aktual, dan dikirim ke Oracle.
Muat data dalam jumlah besar dengan menggunakan kueri kustom, tanpa partisi fisik, sedangkan dengan kolom bilangan bulat untuk partisi data. Opsi partisi: Rentang partisi dinamis.
Kueri: SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.
Kolom partisi: Menentukan kolom yang digunakan untuk mempartisi data. Anda dapat mempartisi terhadap kolom dengan jenis data bilangan bulat.
Batas atas partisi dan batas bawah partisi: Tentukan apakah Anda ingin memfilter kolom partisi untuk mengambil data hanya antara rentang bawah dan atas.

Selama eksekusi, layanan menggantikan ?AdfRangePartitionColumnName, , ?AdfRangePartitionUpbounddan ?AdfRangePartitionLowbound dengan nama kolom dan rentang nilai aktual untuk setiap partisi, dan mengirim ke Oracle.
Misalnya, jika kolom partisi "ID" Anda diatur dengan batas bawah 1 dan batas atas 80, dengan penyalinan paralel sebanyak 4, layanan mengambil data dalam 4 partisi. ID-nya masing-masing antara [1, 20], [21, 40], [41, 60], dan [61, 80].

Petunjuk / Saran

Saat menyalin data dari tabel yang tidak dipartisi, Anda dapat menggunakan opsi partisi "Rentang dinamis" untuk mempartisi terhadap kolom bilangan bulat. Jika data sumber Anda tidak memiliki jenis kolom seperti itu, Anda dapat memanfaatkan fungsi ORA_HASH dalam kueri sumber untuk menghasilkan kolom dan menggunakannya sebagai kolom partisi.

Contoh: kueri dengan partisi fisik

"source": {
    "type": "OracleSource",
    "query": "SELECT * FROM <TABLENAME> PARTITION(\"?AdfTabularPartitionName\") WHERE <your_additional_where_clause>",
    "partitionOption": "PhysicalPartitionsOfTable",
    "partitionSettings": {
        "partitionNames": [
            "<partitionA_name>",
            "<partitionB_name>"
        ]
    }
}

Contoh: kueri dengan partisi rentang dinamis

"source": {
    "type": "OracleSource",
    "query": "SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column>",
        "partitionLowerBound": "<lower_value_of_partition_column>"
    }
}

Pemetaan jenis data untuk Oracle

Saat Anda menyalin data dari dan ke Oracle, pemetaan jenis data sementara berikut digunakan dalam layanan. Untuk memahami bagaimana aktivitas penyalinan memetakan skema sumber dan jenis data ke tujuan, lihat Pemetaan skema dan jenis data.

Jenis data Oracle Jenis data layanan sementara (untuk versi 2.0) Jenis data layanan sementara (untuk versi 1.0)
BFILE Byte[] Byte[]
BINARY_FLOAT Tunggal Tunggal
BINARY_DOUBLE (Tipe data untuk angka desimal ganda dalam format biner) Dobel Dobel
GUMPALAN Byte[] Byte[]
CHAR string string
CLOB string string
tanggal Tanggal dan Waktu Tanggal dan Waktu
FLOAT (P < 16) Dobel Dobel
FLOAT (P >= 16) Desimal Dobel
INTERVAL TAHUN KE BULAN Int64 string
INTERVAL HARI SAMPAI DETIK Rentang Waktu string
Panjang string string
RAW PANJANG Byte[] Byte[]
NCHAR string string
NCLOB string string
ANGKA (p,s) Tipe data: Int16 (atau bilangan bulat 16-bit), Int32 (atau bilangan bulat 32-bit), Int64 (atau bilangan bulat 64-bit), Single (atau titik mengambang 32-bit), Double (atau titik mengambang 64-bit), Decimal (atau angka desimal) Desimal, String (jika p > 28)
ANGKA tanpa presisi dan skala Desimal (256.130) Dobel
NVARCHAR2 string string
MENTAH Byte[] Byte[]
TIMESTAMP Tanggal dan Waktu Tanggal dan Waktu
TANDA WAKTU DENGAN ZONA WAKTU LOKAL Tanggal dan Waktu Tanggal dan Waktu
PENANDA WAKTU DENGAN ZONA WAKTU Pengaturan Waktu & Tanggal Tanggal dan Waktu
VARCHAR2 string string
XMLTYPE string string

NUMBER(p,s) dipetakan ke tipe data layanan sementara versi 2.0 yang sesuai sesuai dengan ketepatan (p) dan skala (s):

Jenis data layanan sementara Keadaan
Int16 scale <= 0 AND (presisi - skala) < 5
Int32 scale <= 0 AND 5 <= (presisi - skala) < 10
Int64 scale <= 0 DAN 10 <= (presisi - skala) < 19
Tunggal presisi < 8 AND ((skala <= 0 AND (presisi - skala) <= 38) ATAU (skala > 0 DAN skala <= 44))
Desimal ketepatan >= 16
Dobel Jika tidak ada kondisi di atas yang terpenuhi.

Properti aktivitas pencarian data

Untuk mempelajari detail tentang properti, lihat Aktivitas pencarian.

Meningkatkan konektor Oracle

Berikut adalah langkah-langkah yang membantu Anda meningkatkan konektor Oracle:

  1. Di halaman Edit layanan tertaut , pilih 2.0 di bawah Versi dan konfigurasikan layanan tertaut dengan merujuk ke Properti layanan tertaut versi 2.0.

    Untuk properti terkait autentikasi termasuk nama pengguna dan kata sandi, tentukan nilai asli di bidang terkait di versi 2.0. Properti koneksi lain seperti host, port, dan Oracle Service Name/Oracle SID di versi 1.0 sekarang menjadi parameter server properti di versi 2.0.

    Misalnya, jika Anda mengonfigurasi layanan tertaut versi 1.0 seperti yang ditunjukkan di bawah ini:

    Cuplikan layar layanan tertaut versi 1.0.

    { 
        "name": "OracleLinkedService", 
        "properties": { 
            "type": "Oracle", 
            "typeProperties": { 
                "connectionString": "host=oraclesample.com;port=1521;servicename=db1" 
            }, 
            "connectVia": { 
                "referenceName": "<name of Integration Runtime>", 
                "type": "IntegrationRuntimeReference" 
            } 
        } 
    }
    

    Konfigurasi layanan tertaut versi 2.0 yang identik menggunakan Penamaan Easy Connect (Plus) adalah:

    Cuplikan layar layanan tertaut menggunakan penamaan konektor mudah (Plus).

    { 
        "name": "OracleLinkedService", 
        "properties": { 
            "type": "Oracle", 
            "version": "2.0", 
            "typeProperties": { 
                "server": "oraclesample.com:1521/db1",  
                "username": "<user name>",  
                "password": "<password>",  
                "authenticationType": "<authentication type>" 
            }, 
            "connectVia": { 
                "referenceName": "<name of Integration Runtime>", 
                "type": "IntegrationRuntimeReference" 
            } 
        } 
    } 
    

    Konfigurasi layanan tertaut versi 2.0 yang identik menggunakan Deskriptor Konektor adalah:

    Cuplikan layar layanan tertaut menggunakan deskriptor konektor.

    { 
        "name": "OracleLinkedService", 
        "properties": { 
            "type": "Oracle", 
            "version": "2.0", 
            "typeProperties": { 
                "server": "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= oraclesample.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=db1)))",  
                "username": "<user name>",  
                "password": "<password>",  
                "authenticationType": "<authentication type>" 
            }, 
            "connectVia": { 
                "referenceName": "<name of Integration Runtime>", 
                "type": "IntegrationRuntimeReference" 
            } 
        } 
    } 
    

    Petunjuk / Saran

    Azure Key Vault didukung untuk properti server. Anda dapat mengedit JSON layanan tertaut untuk menambahkan referensi Azure Key Vault, seperti yang ditunjukkan di bawah ini:
    Screenshot penggunaan Azure Key Vault di server.

    Perhatikan bahwa:

    • Jika Anda menggunakan Nama Layanan Oracle di versi 1.0, Anda dapat menggunakan Penamaan Easy Connect (Plus) atau Deskriptor Konektor sebagai format server di versi 2.0.

    • Jika Anda menggunakan Oracle SID di versi 1.0, Anda perlu menggunakan Deskriptor Konektor sebagai format server di versi 2.0.

    • Untuk beberapa properti koneksi tambahan di versi 1.0, kami menyediakan properti atau parameter alternatif di server properti di versi 2.0. Anda dapat merujuk ke tabel di bawah ini untuk meningkatkan properti versi 1.0.

      Versi 1.0 Versi 2.0
      metode enkripsi PROTOKOL (parameter dalam server)
      tnsnamesfile TNS_ADMIN (variabel lingkungan yang didukung pada runtime integrasi yang dihost sendiri)
      nama server server
      aktifkan pemuatan massal
      Nilai: 1, 0
      aktifkanPemuatMassal
      Nilai: benar, salah
      fetchtswtzastimestamp
      Nilai: 1, 0
      fetchTswtzAsTimestamp
      Nilai: benar, salah
      server alternatif DESCRIPTION_LIST (parameter dalam server)
      arraysize fetchSize
      batas kursor yang disimpan dalam cache Ukuran Cache Pernyataan
      pengulanganjumlahpercobaan RETRY_COUNT (parameter dalam server)
      initializationstring initializationString
      logintimeout CONNECT_TIMEOUT (parameter dalam server)
      versi kripto-protokol SSL_VERSION (parameter dalam server)
      truststore WALLET_LOCATION (parameter di dalam server)

      Misalnya, jika Anda menggunakan alternateservers di versi 1.0, Anda dapat mengatur DESCRIPTION_LIST parameter di properti server di versi 2.0:

      Layanan tertaut versi 1.0 menggunakan alternateservers:

      {
          "name": "OracleV1",
          "properties": {
              "type": "Oracle",
              "typeProperties": {
                  "connectionString": "host=oraclesample.com;port=1521;servicename=db1;alternateservers=(HostName= oraclesample2.com:PortNumber=1521:SID=db2,HostName=255.201.11.24:PortNumber=1522:ServiceName=db3)"
              }
          }
      }
      

      Layanan tertaut versi identik 2.0 menggunakan parameter DESCRIPTION_LIST di Deskriptor Konektor:

      {
          "name": "OracleV2",
          "properties": {
              "type": "Oracle",
              "version": "2.0",
              "typeProperties": {
                  "server": "(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oraclesample.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=db1)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oraclesample2.com)(PORT=1521))(CONNECT_DATA=(SID=db2)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=255.201.11.24)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=db3))))",
                  "username": "<user name>",  
                  "password": "<password>",  
                  "authenticationType": "<authentication type>" 
              }
          }
      }
      
  2. Pemetaan jenis data untuk layanan tertaut Oracle versi 2.0 berbeda dari yang untuk versi 1.0. Untuk mempelajari pemetaan jenis data terbaru, lihat Pemetaan jenis data untuk Oracle.

    Properti supportV1DataTypes koneksi tambahan di versi 2.0 dapat mengurangi kesulitan peningkatan yang disebabkan oleh perubahan jenis data. Mengatur properti ini untuk true memastikan bahwa jenis data di versi 2.0 tetap konsisten dengan versi 1.0.

Perbedaan antara Oracle versi 2.0 dan versi 1.0

Konektor Oracle versi 2.0 menawarkan fungsionalitas baru dan kompatibel dengan sebagian besar fitur versi 1.0. Tabel berikut ini memperlihatkan perbedaan fitur antara versi 2.0 dan versi 1.0.

Versi 2.0 Versi 1.0
Pemetaan berikut digunakan dari jenis data Oracle ke jenis data layanan sementara yang digunakan oleh layanan secara internal.

NUMBER(p,s) -> Int16, Int32, Int64, Tunggal, Ganda, Desimal
FLOAT(p)-> Ganda atau Desimal berdasarkan presisinya
ANGKA -> Desimal
TANDA WAKTU DENGAN ZONA WAKTU -> DateTimeOffset
INTERVAL TAHUN KE BULAN -> Int64
INTERVAL HARI KE DETIK -> Rentang Waktu
Pemetaan berikut digunakan dari jenis data Oracle ke jenis data layanan sementara yang digunakan oleh layanan secara internal.

NUMBER(p,s) -> Desimal atau String berdasarkan presisinya
FLOAT(p)-> Ganda
ANGKA -> Ganda
TANDA WAKTU DENGAN ZONA WAKTU -> DateTime
INTERVAL TAHUN KE BULAN -> String
INTERVAL HARI KE DETIK -> String
Mendukung convertDecimalToInteger saat menyalin sumber ketika supportV1DataTypes diatur ke true. Mendukung convertDecimalToInteger dalam salinan sumber. 
Menggunakan ? sebagai tempat penampung untuk parameter kueri aktivitas skrip tidak didukung. Anda dapat menggunakan parameter bernama (seperti :paramA) atau parameter posisi (seperti :1) sebagai pengganti. Dukungan menggunakan ? sebagai tempat penampung untuk parameter kueri aktivitas skrip. 
Mendukung TLS 1.3. TLS 1.3 tidak didukung.
TLS/SSL dua arah dengan dompet Oracle SSO didukung. Untuk informasi selengkapnya, lihat artikel ini TLS/SSL dua arah dengan dompet Oracle tidak didukung.