Menjalankan kueri federasi di Oracle

Halaman ini menjelaskan cara menyiapkan Federasi Lakehouse untuk menjalankan kueri federasi pada data Oracle yang tidak dikelola oleh Azure Databricks. Untuk mempelajari selengkapnya tentang Federasi Lakehouse, lihat Apa itu Federasi Lakehouse?

Untuk menyambungkan ke database Oracle Anda menggunakan Lakehouse Federation, Anda harus membuat hal-hal berikut di metastore Azure Databricks Unity Catalog Anda (workspace yang dibuat setelah 9 November 2023 sudah memiliki metastore Unity Catalog yang disediakan secara otomatis):

  • Koneksi ke database Oracle Anda.
  • Katalog asing yang mencerminkan database Oracle Anda di Unity Catalog sehingga Anda dapat menggunakan sintaks kueri Unity Catalog dan alat tata kelola data untuk mengelola akses pengguna Azure Databricks ke database.

Limitations

  • Federasi Lakehouse hanya mendukung koneksi Keamanan Lapisan Transportasi (TLS) ke Oracle Cloud. Koneksi ke database Oracle lainnya menggunakan Native Network Encryption (NNE).

  • Ada masalah yang telah diketahui ketika menghubungkan dengan instance versi 11.2.0.3.0 dan yang lebih baru yang tidak memiliki nilai zona waktu Etc/UTC (Kesalahan: ORA-01882: timezone region not found).

    • Solusi sementara: Gunakan konfigurasi spark.databricks.connector.oracle.timezoneAsRegion, yang langsung memetakan ke properti JDBC driver oracle.jdbc.timezoneAsRegion.
    • Peringatan: Solusi dapat menyebabkan perilaku Daylight Saving Time (DST) yang salah. Untuk bantuan, hubungi dukungan Oracle.

License

Driver Oracle dan jar Oracle lain yang diperlukan diatur oleh lisensi FDHUT tanpa klik.

Sebelum Anda mulai

Sebelum memulai, konfirmasikan bahwa Anda memenuhi persyaratan di bagian ini.

Persyaratan Databricks

Persyaratan ruang kerja:

  • Ruang kerja telah diaktifkan untuk Unity Catalog. Ruang kerja yang dibuat setelah 9 November 2023 aktif untuk Katalog Unity secara otomatis, termasuk penyediaan metastore otomatis. Anda tidak perlu membuat metastore secara manual, kecuali jika ruang kerja Anda dibuat sebelum pengaktifan otomatis dan belum diaktifkan untuk Katalog Unity. Lihat Pengaktifan otomatis untuk Unity Catalog.

Persyaratan komputasi:

  • Konektivitas jaringan dari sumber daya komputasi Anda ke sistem database target. Lihat rekomendasi jaringan untuk Federasi Lakehouse.
  • Komputasi Azure Databricks harus menggunakan Databricks Runtime 16.1 atau lebih tinggi dan mode akses Standar atau Khusus .
  • Gudang SQL harus pro atau tanpa server dan harus menggunakan 2024.50 atau lebih tinggi.

Izin diperlukan:

  • Untuk membuat koneksi, Anda harus menjadi administrator metastore atau pengguna yang memiliki hak istimewa CREATE CONNECTION pada metastore Unity Catalog yang terhubung dengan ruang kerja. Di ruang kerja yang diaktifkan untuk Katalog Unity secara otomatis, admin ruang kerja memiliki CREATE CONNECTION hak istimewa secara default.
  • Untuk membuat katalog asing, Anda harus memiliki izin CREATE CATALOG di metastore dan menjadi pemilik koneksi atau memiliki hak istimewa CREATE FOREIGN CATALOG pada koneksi. Di ruang kerja yang diaktifkan untuk Katalog Unity secara otomatis, admin ruang kerja memiliki CREATE CATALOG hak istimewa secara default.

Persyaratan izin tambahan ditentukan di setiap bagian berbasis tugas berikut.

Persyaratan Oracle

Untuk koneksi yang menggunakan Enkripsi Jaringan Asli (Native Network Encryption, NNE), Anda harus mengaktifkan NNE di sisi server dengan tingkat ACCEPTED minimal. Lihat Mengonfigurasi Enkripsi Data Jaringan dalam dokumentasi Oracle. Ini tidak berlaku untuk koneksi Oracle Cloud, yang menggunakan TLS sebagai gantinya.

Membuat koneksi Azure Databricks

Koneksi menentukan jalur dan kredensial untuk mengakses sistem database eksternal. Untuk membuat koneksi, Anda bisa menggunakan Catalog Explorer atau perintah SQL CREATE CONNECTION di buku catatan Azure Databricks atau editor kueri Databricks SQL.

Note

Anda juga dapat menggunakan Databricks REST API atau Databricks CLI untuk membuat koneksi. Lihat perintah POST /api/2.1/unity-catalog/connections dan perintah Unity Catalog.

Izin diperlukan: admin metastore atau pengguna dengan hak istimewa CREATE CONNECTION.

Eksplorer Katalog

  1. Di ruang kerja Azure Databricks, klik ikon Data.Katalog.
  2. Klik ikon Colokkan.Sambungkan, lalu klik Koneksi.
  3. Klik tombol Buat koneksi .
  4. Pada halaman dasar-dasar Koneksi dari wizard Menyiapkan koneksi, masukkan Nama Koneksi yang mudah dipahami.
  5. Pilih jenis Koneksi dari Oracle.
  6. (Opsional) Tambahkan komentar.
  7. Klik Berikutnya.
  8. Pada halaman Autentikasi , masukkan yang berikut ini untuk instans Oracle:
    • host: Misalnya, oracle-demo.123456.rds.amazonaws.com
    • Port: Misalnya, 1521
    • Pengguna : Misalnya, oracle_user
    • Kata Sandi : Misalnya,
    • Protokol enkripsi: Native Network Encryption (default) atau Transport Layer Security
  9. Klik Buat koneksi.
  10. Pada halaman dasar-dasar katalog , masukkan nama untuk katalog asing. Katalog asing mencerminkan database dalam sistem data eksternal sehingga Anda dapat mengkueri dan mengelola akses ke data dalam database tersebut menggunakan Azure Databricks dan Unity Catalog.
  11. (Opsional) Klik Uji koneksi untuk mengonfirmasi bahwa koneksi berfungsi.
  12. Klik Buat katalog.
  13. Pada halaman Access, pilih ruang kerja tempat pengguna dapat mengakses katalog yang Anda buat. Anda dapat memilih Semua ruang kerja memiliki akses, atau klik Tetapkan ke ruang kerja, pilih ruang kerja, lalu klik Tetapkan.
  14. Ubah Pemilik yang akan dapat mengelola akses ke semua objek dalam katalog. Mulai ketik prinsipal dalam kotak teks, lalu klik prinsipal dalam hasil yang dikembalikan.
  15. Berikan Hak Akses pada katalog. Klik Izinkan:
    1. Tentukan Prinsipal yang akan memiliki akses ke objek dalam katalog. Mulai ketik prinsipal dalam kotak teks, lalu klik prinsipal dalam hasil yang dikembalikan.
    2. Pilih preset Hak Istimewa untuk diberikan kepada setiap prinsipal. Semua pengguna akun diberikan BROWSE secara default.
      • Pilih Pembaca Data dari menu drop-down untuk memberikan izin read pada objek dalam katalog.
      • Pilih Editor Data dari menu drop-down untuk memberikan hak istimewa dan pada objek dalam katalog.
      • Pilih hak istimewa yang akan diberikan secara manual.
    3. Klik pada Berikan.
  16. Klik Berikutnya.
  17. Pada halaman Metadata, tentukan pasangan kunci-nilai tag. Untuk informasi selengkapnya, lihat Menerapkan tag ke objek yang dapat diamankan pada Katalog Unity.
  18. (Opsional) Tambahkan komentar.
  19. Kliklah Simpan.

SQL

Jalankan perintah berikut ini di buku catatan atau editor kueri Databricks SQL:

CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>',
  encryption_protocol '<protocol>' -- optional
);

Databricks merekomendasikan agar Anda menggunakan Azure Databricks rahasia alih-alih string teks biasa untuk nilai sensitif seperti kredensial. Contohnya:

CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>'),
  encryption_protocol '<protocol>' -- optional
)

Jika Anda harus menggunakan string teks biasa dalam perintah SQL notebook, hindari memotong string dengan melarikan diri dari karakter khusus seperti $ dengan \. Misalnya: \$.

Untuk informasi tentang menyiapkan rahasia, lihat Manajemen rahasia.

Membuat katalog asing

Note

Jika Anda menggunakan UI untuk membuat koneksi ke sumber data, pembuatan katalog asing disertakan dan Anda dapat melewati langkah ini.

Katalog asing mencerminkan database dalam sistem data eksternal sehingga Anda dapat mengkueri dan mengelola akses ke data dalam database tersebut menggunakan Azure Databricks dan Unity Catalog. Untuk membuat katalog asing, Anda menggunakan koneksi ke sumber data yang telah ditentukan.

Untuk membuat katalog asing, Anda bisa menggunakan Catalog Explorer atau perintah CREATE FOREIGN CATALOG SQL di buku catatan Azure Databricks atau editor kueri SQL. Anda juga dapat menggunakan Databricks REST API atau Databricks CLI untuk membuat katalog. Lihat perintah POST /api/2.1/unity-catalog/catalogs dan perintah Unity Catalog.

Izin yang diperlukan: izinCREATE CATALOG pada metastore dan kepemilikan koneksi atau hak istimewa CREATE FOREIGN CATALOG pada koneksi.

Eksplorer Katalog

  1. Di ruang kerja Azure Databricks, klik ikon Data.Katalog untuk membuka Catalog Explorer.

  2. Di bagian atas panel Katalog , klik ikon Tambahkan atau plus dan pilih Tambahkan katalog dari menu.

    Atau, dari halaman akses cepat, klik tombol Katalog, lalu klik tombol Buat katalog.

  3. Ikuti instruksi untuk membuat katalog asing di Membuat katalog.

SQL

Jalankan perintah SQL berikut ini di buku catatan atau editor kueri SQL. Item dalam tanda kurung bersifat opsional. Ganti nilai placeholder ini:

  • <catalog-name>: Nama untuk katalog di Azure Databricks.
  • <connection-name>: Objek koneksi yang menentukan sumber data, jalur, dan kredensial akses.
  • <service-name>: Nama layanan yang ingin Anda cerminkan sebagai katalog di Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (service_name '<service-name>');

Fitur pushdown yang didukung

Tabel berikut mencantumkan operasi pushdown yang didukung untuk Oracle, bersama dengan perhitungan yang diperlukan untuk setiap operasi.

Pushdown Komputasi yang didukung
Aggregates Didukung Semua komputasi
Cast Didukung Semua komputasi
Berisi, Dimulai dengan, Diakhiri dengan Didukung Semua komputasi
Filters Didukung Semua komputasi
Limit Didukung Semua komputasi
Offset Didukung Semua komputasi
Projections Didukung Semua komputasi
Joins Didukung Databricks Runtime 17.2 ke atas dan gudang SQL 2025.30 ke atas

Pemetaan jenis data

Saat Anda membaca dari Oracle ke Spark, jenis data dipetakan sebagai berikut:

Jenis Oracle Jenis Spark
TANDA WAKTU DENGAN TIMEZONE, TANDA WAKTU DENGAN LOKAL TIMEZONE TimestampType
TANGGAL, TANDA WAKTU TimestampType/TimestampNTZType*
BILANGAN, FLOAT DecimalType**
FLOAT BINER FloatType
BINER DOUBLE DoubleType
CHAR, NCHAR, VARCHAR2, NVARCHAR2 StringType

* DATE dan TIMESTAMP dipetakan ke Spark TimestampType jika spark.sql.timestampType = TIMESTAMP_LTZ (default). Mereka akan dipetakan ke TimestampNTZType jika spark.sql.timestampType = TIMESTAMP_NTZ.

** NUMBER tanpa menentukan presisi akan dipetakan ke DecimalType(38, 10) karena tidak ada dukungan untuk Desimal floating point murni di Spark.

Sumber daya tambahan