Tutorial: Oracle Kueri dari Kluster Big Data SQL Server

Berlaku untuk: SQL Server 2019 (15.x)

Penting

Add-on Kluster Big Data Microsoft SQL Server 2019 akan dihentikan. Dukungan untuk Kluster Big Data SQL Server 2019 akan berakhir pada 28 Februari 2025. Semua pengguna SQL Server 2019 yang ada dengan Jaminan Perangkat Lunak akan didukung penuh pada platform dan perangkat lunak akan terus dipertahankan melalui pembaruan kumulatif SQL Server hingga saat itu. Untuk informasi selengkapnya, lihat posting blog pengumuman dan opsi Big data di platform Microsoft SQL Server.

Tutorial ini menunjukkan cara Mengkueri data Oracle dari kluster big data SQL Server 2019. Untuk menjalankan tutorial ini, Anda harus memiliki akses ke server Oracle. Akun pengguna Oracle dengan hak istimewa baca ke objek eksternal diperlukan. Autentikasi pengguna Oracle Proxy didukung. Jika Anda tidak memiliki akses, tutorial ini dapat memberi Anda rasa bagaimana virtualisasi data berfungsi untuk sumber data eksternal di SQL Server kluster big data.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Buat tabel eksternal untuk data di database Oracle eksternal.
  • Gabungkan data ini dengan data bernilai tinggi dalam instans master.

Tip

Jika mau, Anda dapat mengunduh dan menjalankan skrip untuk perintah dalam tutorial ini. Untuk mengetahui petunjuknya, lihat Sampel virtualisasi data di GitHub.

Prasyarat

Membuat tabel Oracle

Langkah-langkah berikut membuat tabel sampel bernama INVENTORY di Oracle.

  1. Sambungkan ke instans dan database Oracle yang ingin Anda gunakan untuk tutorial ini.

  2. Jalankan pernyataan berikut untuk membuat INVENTORY tabel:

     CREATE TABLE "INVENTORY"
     (
         "INV_DATE" NUMBER(10,0) NOT NULL,
         "INV_ITEM" NUMBER(10,0) NOT NULL,
         "INV_WAREHOUSE" NUMBER(10,0) NOT NULL,
         "INV_QUANTITY_ON_HAND" NUMBER(10,0)
     );
    
     CREATE INDEX INV_ITEM ON HR.INVENTORY(INV_ITEM);
    
  3. Impor isi file inventory.csv ke dalam tabel ini. File ini dibuat oleh skrip pembuatan sampel di bagian Prasyarat .

Membuat sumber data eksternal

Langkah pertama adalah membuat sumber data eksternal yang dapat mengakses server Oracle Anda.

  1. Di Azure Data Studio, sambungkan ke instans master SQL Server kluster big data Anda. Untuk informasi selengkapnya, lihat Menyambungkan ke instans master SQL Server.

  2. Klik dua kali pada koneksi di jendela Server untuk menampilkan dasbor server untuk instans master SQL Server. Pilih Kueri Baru.

    SQL Server kueri instans master

  3. Jalankan perintah Transact-SQL berikut untuk mengubah konteks ke database Penjualan dalam instans master.

    USE Sales
    GO
    
  4. Buat kredensial lingkup database untuk menyambungkan ke server Oracle. Berikan kredensial yang sesuai ke server Oracle Anda dalam pernyataan berikut.

    CREATE DATABASE SCOPED CREDENTIAL [OracleCredential]
    WITH IDENTITY = '<oracle_user,nvarchar(100),SYSTEM>', SECRET = '<oracle_user_password,nvarchar(100),manager>';
    
  5. Buat sumber data eksternal yang menunjuk ke server Oracle.

    CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
    WITH (LOCATION = 'oracle://<oracle_server,nvarchar(100)>',CREDENTIAL = [OracleCredential]);
    

Opsional: Autentikasi proksi Oracle

Oracle mendukung autentikasi proksi untuk menyediakan kontrol akses butir halus. Pengguna proksi tersambung ke database Oracle menggunakan kredensialnya dan meniru pengguna lain dalam database.

Pengguna proksi dapat dikonfigurasi untuk memiliki akses terbatas dibandingkan dengan pengguna yang ditiru. Misalnya, pengguna proksi dapat diizinkan untuk terhubung menggunakan peran database tertentu dari pengguna yang ditiru. Identitas pengguna yang terhubung ke database Oracle melalui pengguna proksi dipertahankan dalam koneksi, bahkan jika beberapa pengguna terhubung menggunakan autentikasi proksi. Ini memungkinkan Oracle untuk menerapkan kontrol akses dan untuk mengaudit tindakan yang diambil atas nama pengguna yang sebenarnya.

Jika skenario Anda memerlukan penggunaan pengguna proksi oracle, ganti langkah 4 dan 5 sebelumnya dengan yang berikut ini.

  1. Buat kredensial lingkup database untuk menyambungkan ke server Oracle. Berikan kredensial pengguna proksi oracle yang sesuai ke server Oracle Anda dalam pernyataan berikut.

    CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
    WITH IDENTITY = '<oracle_proxy_user,nvarchar(100),SYSTEM>', SECRET = '<oracle_proxy_user_password,nvarchar(100),manager>';
    
  2. Buat sumber data eksternal yang menunjuk ke server Oracle.

    CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
    WITH (LOCATION = 'oracle://<oracle_server,nvarchar(100)>',
    CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
    CREDENTIAL = [OracleProxyCredential]);
    

Membuat tabel eksternal

Selanjutnya, buat tabel eksternal bernama iventory_ora di INVENTORY atas tabel di server Oracle.

CREATE EXTERNAL TABLE [inventory_ora]
    ([inv_date] DECIMAL(10,0) NOT NULL, [inv_item] DECIMAL(10,0) NOT NULL,
    [inv_warehouse] DECIMAL(10,0) NOT NULL, [inv_quantity_on_hand] DECIMAL(10,0))
WITH (DATA_SOURCE=[OracleSalesSrvr],
        LOCATION='<oracle_service_name,nvarchar(30),xe>.<oracle_schema,nvarchar(128),HR>.<oracle_table,nvarchar(128),INVENTORY>');

Catatan

Nama tabel dan nama kolom akan menggunakan pengidentifikasi yang dikutip ANSI SQL saat mengkueri terhadap Oracle. Akibatnya, nama-nama tersebut peka huruf besar/kecil. Penting untuk menentukan nama dalam definisi tabel eksternal yang cocok dengan kasus yang tepat dari nama tabel dan kolom dalam metadata Oracle.

Mengkueri data

Jalankan kueri berikut untuk menggabungkan data dalam iventory_ora tabel eksternal dengan tabel di database lokal Sales .

SELECT TOP(100) w.w_warehouse_name, i.inv_item, SUM(i.inv_quantity_on_hand) as total_quantity
  FROM [inventory_ora] as i
  JOIN item as it
    ON it.i_item_sk = i.inv_item
  JOIN warehouse as w
    ON w.w_warehouse_sk = i.inv_warehouse
 WHERE it.i_category = 'Books' and i.inv_item BETWEEN 1 and 18000 --> get items within specific range
 GROUP BY w.w_warehouse_name, i.inv_item;

Membersihkan

Gunakan perintah berikut untuk menghapus objek database yang dibuat dalam tutorial ini.

DROP EXTERNAL TABLE [inventory_ora];
DROP EXTERNAL DATA SOURCE [OracleSalesSrvr] ;
DROP DATABASE SCOPED CREDENTIAL [OracleCredential];

Langkah berikutnya

Pelajari cara menyerap data ke dalam kumpulan data: