Menyalin data ke atau dari Oracle lokal dengan menggunakan Azure Data Factory
Catatan
Artikel ini berlaku untuk Azure Data Factory versi 1. Jika Anda menggunakan versi layanan Azure Data Factory saat ini, lihat Konektor Oracle di V2.
Artikel ini menjelaskan cara menggunakan Aktivitas Penyalinan di Azure Data Factory untuk memindahkan data dari database Oracle lokal. Artikel ini dibuat berdasarkan Aktivitas perpindahan data, yang menyajikan gambaran umum tentang perpindahan data menggunakan Aktivitas Penyalinan.
Skenario yang didukung
Anda bisa menyalin data dari database Oracle ke penyimpanan data berikut ini:
| Kategori | Penyimpanan data |
|---|---|
| Azure | Azure Blob Storage Azure Data Lake Storage Gen1 Azure Cosmos DB (SQL API) Azure SQL Database Azure Synapse Analytics Indeks Azure Cognitive Search Penyimpanan Tabel Azure |
| Database | SQL Server Oracle |
| File | Sistem file |
Anda bisa menyalin data dari penyimpanan data berikut ke database Oracle:
Prasyarat
Azure Data Factory mendukung untuk terhubung ke sumber data Oracle lokal dengan menggunakan Gateway Manajemen Data. Lihat Gateway Manajemen Data untuk mempelajari selengkapnya tentang Gateway Manajemen Data. Untuk instruksi langkah demi langkah tentang cara menyiapkan gateway dalam alur data untuk memindahkan data, lihat Memindahkan data dari lokal ke cloud.
Gateway diperlukan bahkan jika Oracle dihosting di Azure infrastruktur sebagai layanan (IaaS) komputer virtual. Anda bisa memasang gateway pada infrastruktur sebagai layanan komputer virtual yang sama dengan penyimpanan data atau di komputer virtual lain, selama gateway bisa tersambung ke database.
Catatan
Untuk tips tentang pemecahan masalah yang terkait dengan koneksi dan gateway, lihat Memecahkan masalah gateway.
Versi dan penginstalan yang didukung
Konektor Oracle ini mendukung dua versi driver:
Driver Microsoft untuk Oracle (disarankan) : Dimulai di Gateway Manajemen Data versi 2.7, driver Microsoft untuk Oracle secara otomatis dipasang dengan gateway. Anda tidak perlu memasang atau memperbarui driver untuk membangun konektivitas ke Oracle. Anda juga dapat mengalami kinerja penyalinan yang lebih baik dengan menggunakan driver ini. Versi database Oracle ini didukung:
Oracle 12c R1 (12.1)
Oracle 11g R1, R2 (11.1, 11.2)
Oracle 10g R1, R2 (10.1, 10.2)
Oracle 9i R1, R2 (9.0.1, 9.2)
Oracle 8i R3 (8.1.7)
Catatan
Server proksi Oracle tidak didukung.
Penting
Saat ini, driver Microsoft untuk Oracle hanya mendukung penyalinan data dari Oracle. Driver tidak mendukung penulisan untuk Oracle. Kapabilitas koneksi pengujian pada tab Gateway Manajemen Data tidak mendukung driver ini. Cara lainnya, Anda bisa menggunakan wizard Penyalinan untuk memvalidasi konektivitas.
Oracle Data Provider untuk .NET: Anda dapat menggunakan Oracle Data Provider untuk menyalin data dari atau ke Oracle. Komponen ini disertakan dalam Komponen Akses Data Oracle untuk Windows. Pasang versi yang relevan (32-bit atau 64-bit) pada mesin tempat gateway dipasang. Oracle Data Provider untuk .NET 12.1 dapat mengakses Oracle Database 10g Rilis 2 dan versi yang lebih baru.
Jika Anda memilih Penginstalan XCopy, selesaikan langkah-langkah yang dijelaskan file readme.htm. Sebaiknya pilih penginstal yang memiliki antarmuka pengguna (bukan penginstal XCopy).
Setelah Anda memasang penyedia, hidupkan ulang layanan host Gateway Manajemen Data di mesin Anda dengan menggunakan aplet Layanan atau Gateway Manajemen Data Configuration Manager.
Jika Anda menggunakan wizard Penyalin untuk menulis alur penyalinan, tipe driver telah ditentukan secara otomatis. Driver Microsoft digunakan secara default, kecuali versi gateway Anda lebih lama dari versi 2.7 atau Anda memilih Oracle sebagai sink.
Mulai
Anda dapat membuat alur yang memiliki aktivitas penyalinan. Alur memindahkan data ke atau dari database Oracle lokal dengan menggunakan alat atau antarmuka pemrograman aplikasi yang berbeda.
Cara termudah untuk membuat alur adalah dengan menggunakan Wizard Penyalinan. Lihat Tutorial: Membuat alur dengan menggunakan wizard Penyalinan untuk penelusuran cepat dalam membuat alur dengan menggunakan wizard Data Penyalinan.
Anda juga dapat menggunakan alat berikut untuk membuat alur: Visual Studio, Azure PowerShell, templat Azure Resource Manager, .NET API, atau REST API. Lihat tutorial Aktivitas Penyalinan untuk petunjuk langkah demi langkah pembuatan alur yang memiliki aktivitas penyalinan.
Baik menggunakan alat ataupun antarmuka pemrograman aplikasi, lakukan langkah-langkah berikut untuk membuat alur yang memindahkan data dari penyimpanan sumber data ke penyimpanan data sink:
- Buat pabrik data. Pabrik data dapat berisi satu atau beberapa alur.
- Buat layanan tertaut untuk menautkan penyimpanan data input dan output ke pabrik data Anda. Misalnya, jika Anda menyalin data dari database Oracle ke penyimpanan Azure Blob, buat dua layanan tertaut untuk menautkan database Oracle dan akun penyimpanan Azure Anda ke pabrik data Anda. Untuk properti layanan tertaut yang spesifik untuk Oracle, lihat Properti layanan tertaut.
- Buat himpunan data untuk merepresentasikan data input dan output untuk operasi penyalinan. Dalam contoh langkah sebelumnya, Anda membuat himpunan data untuk menentukan tabel dalam database Oracle Anda yang berisi data input. Anda membuat himpunan data lain untuk menentukan kontainer blob dan folder yang menyimpan data yang disalin dari database Oracle. Untuk properti himpunan data yang spesifik untuk Oracle, lihat Properti himpunan data.
- Buat alur dengan aktivitas penyalinan yang mengambil himpunan data sebagai input dan himpunan data sebagai output. Dalam contoh sebelumnya, Anda menggunakan OracleSource sebagai sumber data dan BlobSink sebagai sink untuk aktivitas penyalinan. Demikian pula, jika Anda menyalin dari penyimpanan Azure Blob ke database Oracle, Anda menggunakan BlobSource dan OracleSink dalam aktivitas penyalinan. Untuk properti Aktivitas Penyalinan yang spesifik untuk database Oracle, lihat Properti Aktivitas Penyalinan. Untuk detail tentang cara menggunakan penyimpanan data sebagai sumber atau sink, pilih tautan untuk penyimpanan data Anda di bagian sebelumnya.
Saat Anda menggunakan wizard, definisi JSON untuk entitas Azure Data Factory ini secara otomatis dibuat untuk Anda: layanan tertaut, himpunan data, dan alur. Saat menggunakan alat atau API (kecuali .NET API), Anda menentukan entitas Azure Data Factory ini menggunakan format JSON. Untuk sampel yang memiliki definisi JSON untuk entitas Azure Data Factory yang Anda gunakan untuk menyalin data ke atau dari database Oracle lokal, lihat contoh JSON.
Bagian berikut memberikan detail tentang properti JSON yang Anda gunakan untuk menentukan entitas Azure Data Factory.
Properti layanan tertaut
Tabel berikut ini menjelaskan elemen JSON yang khusus untuk layanan tertaut Oracle:
| Properti | Deskripsi | Diperlukan |
|---|---|---|
| jenis | Jenis properti harus diatur ke OnPremisesOracle. | Ya |
| driverType | Tentukan driver mana yang akan digunakan untuk menyalin data dari atau ke database Oracle. Nilai yang diperbolehkan adalah Microsoft dan ODP (default). Lihat Versi dan penginstalan yang didukung untuk detail driver. | Tidak |
| connectionString | Tentukan informasi yang diperlukan untuk menyambungkan ke instans DB Oracle untuk properti connectionString. | Ya |
| gatewayName | Nama gateway yang digunakan untuk menyambungkan ke server Oracle lokal. | Ya |
Contoh: Menggunakan driver Microsoft
Tip
Jika Anda melihat kesalahan yang mengatakan "ORA-01025: Parameter UPI di luar jangkauan" dan Oracle Anda adalah versi 8i, tambahkan WireProtocolMode=1 ke string koneksi Anda dan coba lagi:
{
"name": "OnPremisesOracleLinkedService",
"properties": {
"type": "OnPremisesOracle",
"typeProperties": {
"driverType": "Microsoft",
"connectionString":"Host=<host>;Port=<port>;Sid=<service ID>;User Id=<user name>;Password=<password>;",
"gatewayName": "<gateway name>"
}
}
}
Contoh: Menggunakan driver ODP
Untuk mempelajari tentang format yang diizinkan, lihat Penyedia data Oracle untuk .NET ODP.
{
"name": "OnPremisesOracleLinkedService",
"properties": {
"type": "OnPremisesOracle",
"typeProperties": {
"connectionString": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<host name>)(PORT=<port number>))(CONNECT_DATA=(SERVICE_NAME=<service ID>))); User Id=<user name>;Password=<password>;",
"gatewayName": "<gateway name>"
}
}
}
Properti himpunan data
Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan himpunan data, lihat Membuat himpunan data.
Beberapa bagian dari file himpunan data JSON, seperti struktur, ketersediaan, dan kebijakan, sama untuk semua jenis himpunan data (contohnya, untuk Oracle, penyimpanan Azure Blob, dan penyimpanan Tabel Azure).
Bagian typeProperties berbeda untuk setiap jenis himpunan data dan menyediakan informasi tentang lokasi data di penyimpanan data. Bagian typeProperties untuk himpunan data jenis OracleTable memiliki properti berikut:
| Properti | Deskripsi | Diperlukan |
|---|---|---|
| tableName | Nama tabel dalam database Oracle yang dirujuk oleh layanan tertaut. | Tidak (jika oracleReaderQuery atau OracleSource ditentukan) |
Properti Aktivitas Penyalinan
Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan aktivitas, lihat Membuat alur.
Properti seperti nama, deskripsi, tabel input dan output, dan kebijakan tersedia untuk semua jenis aktivitas.
Catatan
Aktivitas Penyalinan hanya membutuhkan satu input dan hanya menghasilkan satu output.
Properti yang tersedia di bagian aktivitas typeProperties berbeda-beda untuk setiap jenis aktivitas. Properti Aktivitas Penyalinan bervariasi tergantung pada jenis sumber data dan sink.
OracleSource
Di Salin Aktivitas, saat sumber data adalah jenis OracleSource, properti berikut ini tersedia di bagian typeProperties:
| Properti | Deskripsi | Nilai yang diizinkan | Diperlukan |
|---|---|---|---|
| oracleReaderQuery | Gunakan kueri kustom untuk membaca data. | String kueri SQL. Misalnya, "pilih * dari MyTable". Jika tidak ditentukan, pernyataan SQL ini dijalankan: "pilih * dari MyTable" |
Tidak (jika tableName dari himpunan data ditentukan) |
OracleSink
OracleSink mendukung properti berikut:
| Properti | Deskripsi | Nilai yang diizinkan | Diperlukan |
|---|---|---|---|
| writeBatchTimeout | Waktu tunggu untuk operasi penyisipan batch selesai sebelum waktu habis. | timespan Contoh: 00:30:00 (30 menit) |
Tidak |
| writeBatchSize | Menyisipkan data ke dalam tabel SQL saat ukuran buffer mencapai nilai writeBatchSize. | Bilangan bulat (jumlah baris) | Tidak (default: 100) |
| sqlWriterCleanupScript | Tentukan kueri untuk Aktivitas Penyalinan untuk menjalankan potongan data tertentu yang dibersihkan. | Pernyataan kueri. | Tidak |
| sliceIdentifierColumnName | Menentukan nama kolom untuk Aktivitas Penyalinan untuk diisi dengan pengidentifikasi potongan otomatis. Nilai untuk sliceIdentifierColumnName digunakan untuk membersihkan data dari potongan tertentu saat dijalankan ulang. | Nama kolom dari kolom yang memiliki jenis data biner(32) . | Tidak |
Contoh JSON untuk menyalin data ke dan dari Oracle Database
Contoh berikut ini menyediakan sampel definisi JSON yang bisa Anda gunakan untuk membuat alur dengan menggunakan Visual Studio atau Azure PowerShell. Pada contoh menunjukkan cara menyalin data dari atau ke database Oracle dan ke atau dari penyimpanan Azure Blob. Namun, data dapat disalin ke salah satu sink yang tercantum dalam Format dan penyimpanan data yang didukung dengan menggunakan Aktivitas Penyalinan di Azure Data Factory.
Contoh: Menyalin data dari Oracle ke penyimpanan Azure Blob
Sampel memiliki entitas Data Factory berikut:
- Layanan tertaut jenis OnPremisesOracle.
- Layanan tertaut dari jenis AzureStorage.
- Himpunan data input jenis OracleTable.
- Output himpunan data dari jenis AzureBlob.
- Alur dengan aktivitas penyalinan yang menggunakan OracleSource sebagai sumber dan BlobSink sebagai sink.
Sampel menyalin data dari tabel dalam database Oracle lokal ke blob per jam. Untuk informasi selengkapnya tentang berbagai properti yang digunakan dalam sampel, lihat bagian yang mengikuti sampel.
Layanan Oracle tertaut
{
"name": "OnPremisesOracleLinkedService",
"properties": {
"type": "OnPremisesOracle",
"typeProperties": {
"driverType": "Microsoft",
"connectionString":"Host=<host>;Port=<port>;Sid=<service ID>;User Id=<username>;Password=<password>;",
"gatewayName": "<gateway name>"
}
}
}
Layanan Penyimpanan Azure Blob tertaut
{
"name": "StorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<account name>;AccountKey=<account key>"
}
}
}
Himpunan data input Oracle
Sampel mengasumsikan bahwa Anda telah membuat tabel bernama MyTable di Oracle. Tabel ini berisi kolom yang disebut timestampcolumn untuk data time series.
Mengatur eksternal: ke true menginformasikan layanan Azure Data Factory bahwa himpunan data berada di luar pabrik data dan tidak diproduksi oleh aktivitas di pabrik data.
{
"name": "OracleInput",
"properties": {
"type": "OracleTable",
"linkedServiceName": "OnPremisesOracleLinkedService",
"typeProperties": {
"tableName": "MyTable"
},
"external": true,
"availability": {
"offset": "01:00:00",
"interval": "1",
"anchorDateTime": "2014-02-27T12:00:00",
"frequency": "Hour"
},
"policy": {
"externalData": {
"retryInterval": "00:01:00",
"retryTimeout": "00:10:00",
"maximumRetry": 3
}
}
}
}
Himpunan data output Azure Blob
Data ditulis ke blob baru setiap jam (frekuensi: jam, interval: 1). Jalur folder dan nama file untuk blob dievaluasi secara dinamis berdasarkan irisan waktu mulai yang sedang diproses. Jalur folder menggunakan bagian tahun, bulan, hari, dan jam dari waktu mulai.
{
"name": "AzureBlobOutput",
"properties": {
"type": "AzureBlob",
"linkedServiceName": "StorageLinkedService",
"typeProperties": {
"folderPath": "mycontainer/myfolder/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
"partitionedBy": [
{
"name": "Year",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "yyyy"
}
},
{
"name": "Month",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "MM"
}
},
{
"name": "Day",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "dd"
}
},
{
"name": "Hour",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "HH"
}
}
],
"format": {
"type": "TextFormat",
"columnDelimiter": "\t",
"rowDelimiter": "\n"
}
},
"availability": {
"frequency": "Hour",
"interval": 1
}
}
}
Alur dengan Aktivitas Penyalinan
Alur berisi Aktivitas Penyalinan yang dikonfigurasi untuk menggunakan himpunan data input dan output dan dijadwalkan untuk berjalan setiap jam. Dalam definisi alur JSON, jenis sumber diatur ke OracleSource dan jenis sink diatur ke BlobSink. Kueri SQL yang Anda tentukan dengan menggunakan properti oracleReaderQuery memilih data dalam satu jam terakhir untuk disalin.
{
"name":"SamplePipeline",
"properties":{
"start":"2014-06-01T18:00:00",
"end":"2014-06-01T19:00:00",
"description":"pipeline for a copy activity",
"activities":[
{
"name": "OracletoBlob",
"description": "copy activity",
"type": "Copy",
"inputs": [
{
"name": " OracleInput"
}
],
"outputs": [
{
"name": "AzureBlobOutput"
}
],
"typeProperties": {
"source": {
"type": "OracleSource",
"oracleReaderQuery": "$$Text.Format('select * from MyTable where timestampcolumn >= \\'{0:yyyy-MM-dd HH:mm}\\' AND timestampcolumn < \\'{1:yyyy-MM-dd HH:mm}\\'', WindowStart, WindowEnd)"
},
"sink": {
"type": "BlobSink"
}
},
"scheduler": {
"frequency": "Hour",
"interval": 1
},
"policy": {
"concurrency": 1,
"executionPriorityOrder": "OldestFirst",
"retry": 0,
"timeout": "01:00:00"
}
}
]
}
}
Contoh: Menyalin data dari penyimpanan Azure Blob ke Oracle
Contoh ini memperlihatkan cara menyalin data dari akun penyimpanan Azure Blob ke database Oracle lokal. Namun, Anda dapat menyalin data langsung dari salah satu sumber yang tercantum dalam penyimpanan dan format data yang didukung dengan menggunakan Aktivitas Penyalinan di Azure Data Factory.
Sampel memiliki entitas Data Factory berikut:
- Layanan tertaut jenis OnPremisesOracle.
- Layanan tertaut dari jenis AzureStorage.
- Sebuah inputhimpunan data dari jenis AzureBlob.
- Output Himpunan data dari jenis OracleTable.
- Alur yang memiliki aktivitas penyalinan yang menggunakan BlobSource sebagai sumber OracleSink sebagai sink.
Sampel menyalin data dari blob ke tabel dalam database Oracle lokal setiap jam. Untuk informasi selengkapnya tentang berbagai properti yang digunakan dalam sampel, lihat bagian yang mengikuti sampel.
Layanan Oracle tertaut
{
"name": "OnPremisesOracleLinkedService",
"properties": {
"type": "OnPremisesOracle",
"typeProperties": {
"connectionString": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<host name>)(PORT=<port number>))(CONNECT_DATA=(SERVICE_NAME=<service ID>)));
User Id=<username>;Password=<password>;",
"gatewayName": "<gateway name>"
}
}
}
Layanan Penyimpanan Azure Blob tertaut
{
"name": "StorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<account name>;AccountKey=<account key>"
}
}
}
Himpunan data input Azure Blob
Data diambil ke blob baru setiap jam (frekuensi: jam, interval: 1). Jalur folder dan nama file untuk blob dievaluasi secara dinamis berdasarkan irisan waktu mulai yang sedang diproses. Jalur folder menggunakan bagian tahun, bulan, dan bagian hari waktu mulai. Nama file menggunakan bagian jam dari waktu mulai. Pengaturan eksternal: ke true menginformasikan layanan Azure Data Factory bahwa himpunan data berada di luar pabrik data dan tidak diproduksi oleh aktivitas di pabrik data.
{
"name": "AzureBlobInput",
"properties": {
"type": "AzureBlob",
"linkedServiceName": "StorageLinkedService",
"typeProperties": {
"folderPath": "mycontainer/myfolder/yearno={Year}/monthno={Month}/dayno={Day}",
"partitionedBy": [
{
"name": "Year",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "yyyy"
}
},
{
"name": "Month",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "MM"
}
},
{
"name": "Day",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "dd"
}
}
],
"format": {
"type": "TextFormat",
"columnDelimiter": ",",
"rowDelimiter": "\n"
}
},
"external": true,
"availability": {
"frequency": "Day",
"interval": 1
},
"policy": {
"externalData": {
"retryInterval": "00:01:00",
"retryTimeout": "00:10:00",
"maximumRetry": 3
}
}
}
}
Himpunan data output Oracle
Sampel mengasumsikan Anda telah membuat tabel bernama MyTable di Oracle. Buat tabel di Oracle dengan jumlah kolom yang sama seperti yang Anda harapkan untuk dimuat file CSV Blob. Baris baru ditambahkan ke tabel setiap jam.
{
"name": "OracleOutput",
"properties": {
"type": "OracleTable",
"linkedServiceName": "OnPremisesOracleLinkedService",
"typeProperties": {
"tableName": "MyTable"
},
"availability": {
"frequency": "Day",
"interval": "1"
}
}
}
Alur dengan Aktivitas Penyalinan
Alur berisi aktivitas penyalinan yang dikonfigurasi untuk menggunakan himpunan data input dan output dan dijadwalkan untuk berjalan setiap jamnya. Dalam definisi alur JSON, jenis sumber diatur ke BlobSource dan jenis sink diatur ke OracleSink.
{
"name":"SamplePipeline",
"properties":{
"start":"2014-06-01T18:00:00",
"end":"2014-06-05T19:00:00",
"description":"pipeline with a copy activity",
"activities":[
{
"name": "AzureBlobtoOracle",
"description": "Copy Activity",
"type": "Copy",
"inputs": [
{
"name": "AzureBlobInput"
}
],
"outputs": [
{
"name": "OracleOutput"
}
],
"typeProperties": {
"source": {
"type": "BlobSource"
},
"sink": {
"type": "OracleSink"
}
},
"scheduler": {
"frequency": "Day",
"interval": 1
},
"policy": {
"concurrency": 1,
"executionPriorityOrder": "OldestFirst",
"retry": 0,
"timeout": "01:00:00"
}
}
]
}
}
Tips Pemecahan Masalah
Masalah 1: .NET Framework Data Provider
Pesan kesalahan
Copy activity met invalid parameters: 'UnknownParameterName', Detailed message: Unable to find the requested .NET Framework Data Provider. It may not be installed.
Kemungkinan Penyebabnya
- Penyedia Data .NET Framework untuk Oracle tidak diinstal.
- Penyedia Data .NET Framework untuk Oracle diinstal ke .NET Framework 2.0 dan tidak ditemukan di folder .NET Framework 4.0.
Resolusi
- Jika Anda belum memasang Penyedia .NET untuk Oracle, pasang Penyedia .NET, lalu coba lagi skenarionya.
- Jika Anda melihat pesan kesalahan bahkan setelah Anda memasang penyedia, selesaikan langkah-langkah berikut:
- Buka file konfigurasi mesin untuk .NET 2.0 dari folder <sistem disk>:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.config.
- Cari Oracle Data Provider untuk .NET. Anda harus dapat menemukan entri seperti yang ditunjukkan dalam sampel berikut di bawah system.data>DbProviderFactories:
<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
- Salin entri ini ke file machine.config di folder .NET 4.0 berikut: <sistem disk>:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config. Kemudian, ubah versi menjadi 4.xxx.x.x.
- Pasang <ODP.NET Installed Path>\11.2.0\client_1\odp.net\bin\4\Oracle.DataAccess.dll in the global assembly cache (GAC) by running gacutil /i [provider path].
Masalah 2: Pemformatan tanggal/waktu
Pesan kesalahan
Message=Operation failed in Oracle Database with the following error: 'ORA-01861: literal does not match format string'.,Source=,''Type=Oracle.DataAccess.Client.OracleException,Message=ORA-01861: literal does not match format string,Source=Oracle Data Provider for .NET,'.
Resolusi
Anda mungkin perlu menyesuaikan string kueri dalam aktivitas penyalinan Anda berdasarkan bagaimana tanggal dikonfigurasi dalam database Oracle Anda. Berikut ini contohnya (menggunakan fungsi to_date):
"oracleReaderQuery": "$$Text.Format('select * from MyTable where timestampcolumn >= to_date(\\'{0:MM-dd-yyyy HH:mm}\\',\\'MM/DD/YYYY HH24:MI\\') AND timestampcolumn < to_date(\\'{1:MM-dd-yyyy HH:mm}\\',\\'MM/DD/YYYY HH24:MI\\') ', WindowStart, WindowEnd)"
Mengetik pemetaan untuk Oracle
Seperti disebutkan dalam artikel aktivitas pergerakan data, Aktivitas Penyalinan melakukan konversi jenis otomatis dari jenis sumber ke jenis sink dengan menggunakan pendekatan dua langkah berikut:
- Konversi dari jenis sumber asli menjadi jenis .NET.
- Konversi dari jenis .NET ke tipe sink asli.
Saat Anda memindahkan data dari Oracle, pemetaan berikut digunakan dari jenis data Oracle ke jenis .NET dan sebaliknya:
| Jenis data Oracle | Jenis data .NET Framework |
|---|---|
| BFILE | Byte[] |
| BLOB | Byte[] (hanya didukung pada Oracle 10g dan versi terbaru saat Anda menggunakan driver Microsoft) |
| CHAR | String |
| CLOB | String |
| TANGGAL | DateTime |
| FLOAT | Desimal, String (jika presisi > 28) |
| INTEGER | Desimal, Karakter (jika presisi > 28) |
| INTERVAL YEAR TO MONTH | Int32 |
| INTERVAL DAY TO SECOND | TimeSpan |
| LONG | String |
| LONG RAW | Byte[] |
| NCHAR | String |
| NCLOB | String |
| NUMBER | Desimal, Karakter (jika presisi > 28) |
| NVARCHAR2 | String |
| RAW | Byte[] |
| ROWID | String |
| TIMESTAMP | DateTime |
| TIMESTAMP WITH LOCAL TIME ZONE | DateTime |
| TIMESTAMP WITH TIME ZONE | DateTime |
| UNSIGNED INTEGER | Telepon |
| VARCHAR2 | String |
| XML | String |
Catatan
Tipe data INTERVAL YEAR TO MONTH dan INTERVAL DAY TO SECOND tidak didukung saat Anda menggunakan driver Microsoft.
Memetakan sumber untuk kolom sink
Untuk mempelajari selengkapnya tentang pemetaan kolom di himpunan data sumber ke kolom di himpunan data sink, lihat Memetakan kolom himpunan data di Azure Data Factory.
Bacaan yang dapat diulang dari sumber relasional
Saat menyalin data dari penyimpanan data relasional, ingatlah pengulangan untuk menghindari hasil yang tidak diinginkan. Di Azure Data Factory, Anda dapat menjalankan ulang potongan secara manual. Anda juga dapat mengonfigurasi kebijakan percobaan kembali untuk himpunan data sehingga potongan dijalankan ulang saat kegagalan terjadi. Saat potongan dijalankan, baik secara manual atau dengan kebijakan percobaan kembali, pastikan bahwa data yang sama dibaca seberapa banyak pun potongan dijalankan. Untuk informasi selengkapnya, lihat Bacaan yang dapat diulang dari sumber relasional.
Performa dan penyetelan
Lihat Panduan penyetelan dan performa Aktivitas Penyalinan, yang menjelaskan faktor-faktor utama memengaruhi performa pergerakan data (Aktivitas Penyalinan) di Azure Data Factory. Anda juga dapat mempelajari berbagai cara untuk mengoptimalkannya.