Tutoriel : Interroger Oracle à partir d’un cluster Big Data SQL Server
S’applique à : SQL Server 2019 (15.x)
Important
Le module complémentaire Clusters Big Data Microsoft SQL Server 2019 sera mis hors service. La prise en charge de la plateforme Clusters Big Data Microsoft SQL Server 2019 se terminera le 28 février 2025. Tous les utilisateurs existants de SQL Server 2019 avec Software Assurance seront entièrement pris en charge sur la plateforme, et le logiciel continuera à être maintenu par les mises à jour cumulatives SQL Server jusqu’à ce moment-là. Pour plus d’informations, consultez le billet de blog d’annonce et les Options Big Data sur la plateforme Microsoft SQL Server.
Ce tutoriel montre comment interroger les données Oracle à partir d’un cluster Big Data SQL Server 2019. Pour exécuter ce tutoriel, vous devez avoir accès à un serveur Oracle. Un compte d’utilisateur Oracle avec des privilèges de lecture sur l’objet externe est requis. L’authentification des utilisateurs du proxy Oracle est prise en charge. Si vous n’y avez pas accès, ce tutoriel peut vous donner une idée du fonctionnement de la virtualisation de données pour les sources de données externes dans un cluster Big Data SQL Server.
Dans ce tutoriel, vous allez apprendre à :
- Créer une table externe pour les données d’une base de données Oracle externe.
- Associer ces données à des données à valeur élevée dans l’instance maître.
Conseil
Si vous préférez, vous pouvez télécharger et exécuter un script pour les commandes de ce tutoriel. Pour obtenir des instructions, consultez les exemples de virtualisation de données sur GitHub.
Prérequis
- Outils Big Data
- kubectl
- Azure Data Studio
- Extension SQL Server 2019
- Charger des exemples de données dans votre cluster Big Data
Créer une table Oracle
Les étapes suivantes permettent de créer un exemple de table nommée INVENTORY
dans Oracle.
Connectez-vous à une instance Oracle et à une base de données que vous souhaitez utiliser pour ce tutoriel.
Exécutez l’instruction suivante pour créer la table
INVENTORY
: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);
Importez le contenu du fichier inventory.csv dans cette table. Ce fichier a été créé par les exemples de scripts de création de la section Conditions préalables.
Créer une source de données externe
La première étape consiste à créer une source de données externe qui peut accéder à votre serveur Oracle.
Dans Azure Data Studio, connectez-vous à l’instance maître SQL Server de votre cluster Big Data. Pour plus d’informations, consultez Se connecter à l’instance maître SQL Server.
Double-cliquez sur la connexion dans la fenêtre Serveurs pour afficher le tableau de bord de serveur de l’instance maître SQL Server. Sélectionnez Nouvelle requête.
Exécutez la commande Transact-SQL suivante pour remplacer le contexte par celui de la base de données Sales dans l’instance maître.
USE Sales GO
Créez des informations d’identification étendues à la base de données pour vous connecter au serveur Oracle. Fournissez les informations d’identification appropriées à votre serveur Oracle dans l’instruction suivante.
CREATE DATABASE SCOPED CREDENTIAL [OracleCredential] WITH IDENTITY = '<oracle_user,nvarchar(100),SYSTEM>', SECRET = '<oracle_user_password,nvarchar(100),manager>';
Créez une source de données externe qui pointe vers le serveur Oracle.
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr] WITH (LOCATION = 'oracle://<oracle_server,nvarchar(100)>',CREDENTIAL = [OracleCredential]);
Facultatif : Authentification du proxy Oracle
Oracle prend en charge l’authentification du proxy pour fournir un contrôle d’accès précis. Un utilisateur proxy se connecte à la base de données Oracle à l’aide de ses informations d’identification et emprunte l’identité d’un autre utilisateur de la base de données.
Un utilisateur proxy peut être configuré pour disposer d’un accès limité par rapport à l’utilisateur dont l’identité est empruntée. Par exemple, un utilisateur proxy peut être autorisé à se connecter à l’aide d’un rôle de base de données spécifique de l’utilisateur dont l’identité est empruntée. L’identité de l’utilisateur qui se connecte à la base de données Oracle par le biais d’un utilisateur proxy est conservée dans la connexion, même si plusieurs utilisateurs se connectent à l’aide de l’authentification proxy. Cela permet à Oracle d’appliquer le contrôle d’accès et d’auditer les actions effectuées pour le compte de l’utilisateur réel.
Si votre scénario requiert l’utilisation d’un utilisateur de proxy Oracle, remplacez les étapes 4 et 5 précédentes par les suivantes.
Créez des informations d’identification étendues à la base de données pour vous connecter au serveur Oracle. Fournissez les informations d’identification d’utilisateur de proxy appropriées à votre serveur Oracle dans l’instruction suivante.
CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential] WITH IDENTITY = '<oracle_proxy_user,nvarchar(100),SYSTEM>', SECRET = '<oracle_proxy_user_password,nvarchar(100),manager>';
Créez une source de données externe qui pointe vers le serveur Oracle.
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr] WITH (LOCATION = 'oracle://<oracle_server,nvarchar(100)>', CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER', CREDENTIAL = [OracleProxyCredential]);
Créer une table externe
Créez ensuite une table externe nommée inventory_ora sur la table INVENTORY
sur le serveur 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>');
Notes
Les noms de table et de colonne utilisent l’identificateur entre guillemets SQL ANSI lors de l’interrogation d’Oracle. Par conséquent, les noms respectent la casse. Il est important de spécifier le nom dans la définition de table externe qui correspond à la casse exacte des noms de table et de colonne dans les métadonnées Oracle.
Interroger les données
Exécutez la requête suivante pour associer les données de la table externe iventory_ora
aux tables de la base de données Sales
locale.
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;
Nettoyer
Utilisez la commande suivante pour supprimer les objets de base de données créés dans ce tutoriel.
DROP EXTERNAL TABLE [inventory_ora];
DROP EXTERNAL DATA SOURCE [OracleSalesSrvr] ;
DROP DATABASE SCOPED CREDENTIAL [OracleCredential];
Étapes suivantes
Découvrez comment ingérer des données dans le pool de données :