Catalogue de données Oracle AI

Découvrez comment configurer et utiliser Oracle AI Data Catalog (AICAT).

Sujets

A propos d'Oracle AI Data Catalog

Oracle AI Data Catalog (AICAT) est un service de catalogue REST Iceberg géré par Oracle. Le service de catalogue est conçu pour gérer efficacement les tables Iceberg. Il fournit des API pour la gestion des opérations CRUD sur les tables, la gestion des métadonnées et la gestion des transactions.

AICAT fonctionne dans Oracle Autonomous AI Database et est disponible pour toutes les bases de données de cette location. Le service de catalogue utilise le schéma de base de données locataire pour stocker les métadonnées des tables.

Types de stockage pris en charge

Oracle AI Data Catalog prend en charge les fournisseurs de stockage suivants :

Démarrage rapide

AICAT est destiné à être activé sur une base de données d'IA autonome dans une location, avec d'autres bases de données d'IA autonomes dans la location qui se connectent à elle et l'utilisent, afin que toutes les bases de données d'IA puissent accéder au même catalogue Iceberg, sous réserve des droits d'accès utilisateur.

Prenez note des points suivants :

  • Seul l'administrateur de location ou un utilisateur doté du rôle ADMIN peut configurer AICAT.
  • Chaque locataire peut avoir plusieurs bases de données. Vous devez choisir la base de données qui servira de base de données Catalog. Bien qu'il soit possible d'activer AICAT sur n'importe quelle base de données Autonomous AI dans une location, Oracle recommande de l'activer sur une seule base de données. Comme le modèle d'utilisation du service de catalogue est essentiellement transactionnel, nous recommandons que la base de données Autonomous AI utilise le type de charge globale Traitement des transactions.
  • Assurez-vous que l'emplacement Object Storage que vous configurez pour le service AICAT est vide et n'est utilisé à aucune autre fin.

Le workflow est le suivant :

  1. Vous activez AICAT sur une instance Autonomous AI Database Serverless.
  2. AICAT expose les API de catalogue REST.
  3. Vous enregistrez les tables Iceberg dans l'AICAT.
  4. Vous utilisez Spark pour vous connecter à l'URL de catalogue.
  5. Le moteur de requête demande des métadonnées de table.
  6. AICAT renvoie les emplacements des métadonnées.
  7. Le moteur lit les données directement à partir d'Object Storage.

Pour configurer et utiliser AICAT, procédez comme suit :

Tâche Plus d'informations
Choisissez une instance de base de données Autonomous AI comme base de données de catalogue. Choisir la base de données du référentiel de catalogue
Activer AICAT à l'aide de balises Activer Oracle AI Data Catalog
Inscrire les métadonnées de stockage pour AICAT Inscrire les informations d'identification de stockage
[Facultatif] Enregistrer le stockage avec les données Iceberg existantes Si vous souhaitez inscrire des tables Iceberg existantes auprès d'AICAT, reportez-vous à Inscription de stockage avec des données Iceberg existantes.
[Facultatif] Autorisez un utilisateur de base de données avec le rôle AICAT_USER ou PDB_DBA. Authentifiez l'utilisateur à l'aide d'un appel d'API de jeton avec des informations d'identification utilisateur. Authentifier et autoriser les utilisateurs

Autorisation de l'accès aux sources de données privées à partir d'une base de données Autonomous AI

La base de données Autonomous AI à partir de laquelle vous accédez à AICAT doit être configurée pour utiliser une adresse privée afin de pouvoir communiquer avec des sources de base de données privées. Sinon, lorsque vous essayez de créer et de tester une telle connexion, vous risquez d'obtenir une erreur "échec de connexion".

Lorsque la base de données Autonomous AI est configurée avec une adresse privée, vous devez acheminer explicitement la connectivité sortante via l'adresse privée. En outre, vous devez définir une résolution DNS et une configuration de connexion appropriées pour garantir une communication sécurisée entre AICAT et la base de données.

Pour configurer AICAT avec un accès à l'adresse privée de base de données Autonomous AI, vous devez acheminer les connexions sortantes à partir de la base de données Autonomous AI via l'adresse privée.

Procédez comme suit :

  1. Pour définir la propriété de routage, connectez-vous à SQL Web en tant qu'utilisateur ADMIN et exécutez l'instruction suivante :

    ALTER DATABASE PROPERTY SET ROUTE_OUTBOUND_CONNECTIONS = 'PRIVATE_ENDPOINT';

    Remarque

    Si l'exécution de cette commande échoue, contactez le support technique Oracle Autonomous AI Database.
  2. Pour vérifier que la configuration du routage est définie correctement, exécutez la requête suivante :
    SELECT *FROM
          DATABASE_PROPERTIESWHERE PROPERTY_NAME =
          'ROUTE_OUTBOUND_CONNECTIONS';

    La valeur attendue est PRIVATE_ENDPOINT.

Choisir la base de données du référentiel de catalogue

Vous devez créer ou sélectionner une instance de base de données Autonomous AI existante sur laquelle Oracle AI Data Catalog sera exécuté. Cette instance de base de données sera utilisée comme référentiel de métadonnées de catalogue.

Choisissez l'entrepôt de la location dans lequel le catalogue sera créé. Prenez note des points suivants :
  • Si le catalogue d'une location est déjà créé avec une base de données centralisée, toutes les autres bases de données de locataire peuvent pointer vers le catalogue existant de la location.
  • Si vous voulez créer plusieurs catalogues pour un locataire, nous vous recommandons d'obtenir des détails sur le catalogue existant et d'utiliser le catalogue centralisé au lieu d'autoriser les locataires à créer plusieurs catalogues.

Activer Oracle AI Data Catalog

Pour activer Oracle AI Data Catalog (AICAT) sur une instance Autonomous AI Database Serverless, vous devez définir la balise OCI ADB$TOOLS sur AI_CAT. Vous pouvez ensuite vous connecter au service de catalogue à l'aide de l'URL de service générée.

Prenez note des points suivants :

  • La définition de la balise OCI AI_CAT sur une instance ADB-S active le service AI Data Catalog pour cette base de données.
  • Le service prend en charge jusqu'à 32 ECPU dans la version initiale. La consommation d'ECPU est facturée au tarif standard de la base de données Autonomous AI lorsque les ressources de calcul du service de catalogue sont actives et en cours d'utilisation. Pour plus d'informations sur la facturation des ECPU pour les machines virtuelles et les ressources de calcul supplémentaires, reportez-vous à Informations de facturation sur le modèle de calcul d'ECPU.
  • Le service AICAT est configuré avec un délai d'inactivité par défaut de 2 heures (120 minutes). Cette configuration permet de garder le service facilement disponible et réactif pour les modèles d'utilisation normaux tout en évitant la facturation inutile lorsque le service est inactif. Cela garantit également que lorsque le service reste inactif au-delà du délai d'inactivité configuré, les ressources de calcul associées sont automatiquement arrêtées et ne sont plus facturées.
  • Si le service AICAT a expiré, toute demande ultérieure au service déclenche automatiquement un redémarrage du service de catalogue. Dans la plupart des cas, le service devient disponible en 30 secondes environ.

Vous pouvez activer AICAT sur les types de base de données Lakehouse et Autonomous Transaction Processing (ATP). Oracle recommande d'utiliser des bases de données ATP car les opérations de catalogue telles que la gestion des métadonnées, les appels d'API, les vérifications d'autorisation et les mises à jour de catalogue seraient mieux optimisées à l'aide de ATP.

Pour activer AICAT et obtenir l'URL de l'instance :

  1. Connectez-vous à OCI et accédez à l'instance Autonomous AI Database Serverless que vous avez sélectionnée comme référentiel de métadonnées de catalogue.
  2. Accédez à Balises.
  3. Définissez la balise suivante :
    • Nom de clé de balise : ADB$TOOLS
    • Valeur de balise : AI_CAT

    Cela active AICAT pour l'instance Autonomous AI Database Serverless.

  4. Pour obtenir l'adresse, accédez à ADBS dans OCI et sélectionnez l'onglet Configuration des outils. Modifiez l'URL affichée au format <database name>/catalog.

    Par exemple, remplacez https://test1234.adb.us-phoenix-1.oraclecloudapps.com/ords/apex par https://test1234.adb.us-phoenix-1.oraclecloudapps.com/catalog.

Un écran de démarrage apparaît et répertorie les étapes à suivre pour commencer à utiliser AICAT, ainsi que des liens vers les rubriques d'aide.

Inscrire les informations d'identification de stockage

Pour enregistrer du stockage, utilisez la procédure ORACLE_AI_DATA_CATALOG.REGISTER_STORAGE_<VENDOR>() PL/SQL.

L'appelant doit être un utilisateur ADMIN ou un utilisateur auquel le rôle PDB_DBA est affecté. Pour plus d'informations sur l'octroi de rôles et l'ajout ou la mise à jour de privilèges pour un utilisateur, reportez-vous à Gestion des rôles et des privilèges utilisateur sur une base de données Autonomous AI.

Oracle AI Data Catalog prend en charge les fournisseurs de stockage suivants :

Pour mettre à jour les informations d'identification de stockage, reportez-vous à Mise à jour des informations d'identification de stockage. Pour annuler l'enregistrement des informations d'identification de stockage, reportez-vous à Annulation de l'enregistrement des informations d'identification de stockage.

Compatibilité entre Oracle Cloud Infrastructure et S3

Voici un exemple de procédure d'enregistrement de votre entrepôt pour le stockage compatible OCI S3 :

begin
   oracle_ai_data_catalog.register_storage_oci(
   p_warehouse => 's3://<bucket>',
   p_endpoint => 'https://<namespace>.compat.objectstorage.<region>.oci.customer-oci.com',
   p_region     => '<region>',
   p_access_key => '<access-key-id>',
   p_secret_key => '<secret-key-id>'
   );
end;
/

Pour plus d'informations sur le format d'adresse de stockage, reportez-vous à Prise en charge du style hébergé de l'API de compatibilité Amazon S3 dans Object Storage.

Reportez-vous aux instructions dans https://docs.oracle.com/en-us/iaas/Content/Identity/Tasks/managingcredentials.htm#create-secret-key pour obtenir la clé d'accès et la clé secrète.

Stockage Azure (ADLS et BLOB)

Voici un exemple de procédure d'inscription de votre entrepôt pour le stockage Azure ADLS :

begin oracle_ai_data_catalog.register_storage_azure(
    p_warehouse            => 'abfss://<container>',
    p_endpoint             => 'https://<account>.dfs.core.windows.net',
    p_storage_account_name => '<storage_account_name>',
    p_storage_account_key  => '<storage_account_key>'
);
end;
/

Voici un exemple de procédure d'enregistrement de votre entrepôt pour Azure BLOB Storage :

begin oracle_ai_data_catalog.register_storage_azure(
    p_warehouse            => 'abfss://<container>',
    p_endpoint             => 'https://<account>.blob.core.windows.net',
    p_storage_account_name => '<storage_account_name>',
    p_storage_account_key  => '<storage_account_key>'
);
end;
/

ZFS Storage

Voici un exemple de procédure d'enregistrement de votre entrepôt pour le stockage ZFS :

begin
   oracle_ai_data_catalog.register_storage_zfs(
   p_warehouse  => 's3a://icebergs3/iceberg_warehouse_s3/',
   p_endpoint   => 'https://<account>.us.oracle.com',
   p_accesskey => '<access-key-id>',
   p_secret_key => '<secret-key-id>'
   );
end;
/

Mettre à jour les informations d'identification de stockage

Pour mettre à jour les informations d'identification de stockage, utilisez la procédure ORACLE_AI_DATA_CATALOG.UPDATE_STORAGE_CREDENTIAL_<VENDOR>() PL/SQL.

L'appelant doit être un utilisateur ADMIN ou un utilisateur auquel le rôle PDB_DBA est affecté. Pour plus d'informations sur l'octroi de rôles et l'ajout ou la mise à jour de privilèges pour un utilisateur, reportez-vous à Gestion des rôles et des privilèges utilisateur sur une base de données Autonomous AI.

Oracle AI Data Catalog prend en charge les fournisseurs de stockage suivants :

Pour annuler l'enregistrement des informations d'identification de stockage, utilisez la procédure UNREGISTER_STORAGE_CREDENTIAL. Reportez-vous à Annulation de l'inscription des informations d'identification de stockage.

Compatibilité entre Oracle Cloud Infrastructure et S3

Voici un exemple de procédure de mise à jour des informations d'identification pour le stockage compatible OCI S3 :

BEGIN
    oracle_ai_data_catalog.update_storage_credential_oci(
        p_access_key      => '<value>',
        p_secret_key      => '<value>'
    );
END;
/

Stockage Azure (ADLS et BLOB)

Voici un exemple de procédure de mise à jour des informations d'identification pour Azure Storage :

BEGIN
    oracle_ai_data_catalog.update_storage_credential_azure(
        p_storage_account_name      => '<value>',
        p_storage_account_key      => '<value>'
    );
END;
/

ZFS Storage

Voici un exemple de procédure de mise à jour des informations d'identification pour Azure Storage :

BEGIN
    oracle_ai_data_catalog.update_storage_credential_zfs(
        p_access_key      => '<value>',
        p_secret_key      => '<value>'
    );
END;
/

Désinscription des informations d'identification de stockage

Pour annuler l'enregistrement des informations d'identification de stockage, utilisez la procédure ORACLE_AI_DATA_CATALOG.UNREGISTER_STORAGE_CREDENTIAL(...) PL/SQL.

L'appelant doit être un utilisateur ADMIN ou un utilisateur auquel le rôle PDB_DBA est affecté.

Exécutez la procédure suivante :

BEGIN
    oracle_ai_data_catalog.unregister_storage_credential;
END;
/

Pour réutiliser l'AICAT, utilisez la procédure UPDATE_STORAGE_CREDENTIAL_<VENDOR>(). Reportez-vous à Mise à jour des informations d'identification de stockage.

Enregistrer le stockage avec les données Iceberg existantes

AICAT prend en charge l'enregistrement des tables Apache Iceberg existantes qui sont stockées dans Object Storage. Une fois enregistrés, les métadonnées et les définitions de table Iceberg deviennent détectables et accessibles via l'AICAT.

Avant d'enregistrer les tables Iceberg dans AICAT, assurez-vous que :

  • AICAT est déjà activé sur une instance sans serveur Autonomous Database. Reportez-vous à Activation d'Oracle AI Data Catalog.
  • Vous êtes connecté à l'instance Autonomous Database Serverless en tant qu'utilisateur ADMIN ou utilisateur doté du rôle PDB_DBA ou AICAT_USER.
  • Vous avez enregistré votre stockage auprès d'AICAT. Reportez-vous à Inscription des informations d'identification de stockage.
  • Le bucket Object Storage contient des métadonnées et des données de table Iceberg valides dans le format correct.

    Par exemple,

    Bucket/Warehouse: N-Warehouse
    -NAMESPACE 
      -TABLE_NAME_NAMESPACE
        - data
          - parquet files.
        - metadata
          - json files

    Ici:

    • NAMESPACE représente l'espace de noms/le schéma Iceberg.
    • TABLE_NAME_NAMESPACE représente la table Iceberg
    • data contient les fichiers de données de la table (généralement Parquet).
    • metadata contient les métadonnées Iceberg et les fichiers JSON d'instantané requis pour la gestion des tables et l'interrogation.
  • Vous disposez de droits d'accès au bucket et aux objets.

Pour enregistrer vos tables Iceberg existantes avec AICAT :

  1. Connectez-vous à votre instance AICAT à l'aide de vos informations d'identification d'authentification de base de données.

    Utilisez la commande suivante pour générer un jeton d'accès :

    TOKEN=$(curl -k -s --location '<URI>/v1/auth/token' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode 'grant_type=client_credentials' \
    --data-urlencode 'client_id=<dbUser>' \
    --data-urlencode 'client_secret=<dbPwd>' \
    --data-urlencode 'scope=PRINCIPAL_ROLE:ALL' | jq -r '.access_token')
    

    Ici,

    • <URI> est l'URL du serveur de catalogue.
    • <dbUser> est le nom utilisateur de votre base de données.
    • <dbPwd> est le mot de passe de votre base de données.

    Si la valeur de jeton renvoie la valeur null, réexécutez la demande à l'aide de l'option -v pour une sortie détaillée afin de résoudre les problèmes d'authentification ou de connectivité.

    Exemple :

    curl -v -k --location '<URI>/v1/auth/token'
  2. Déterminez l'emplacement du fichier de métadonnées Iceberg pour la table que vous souhaitez enregistrer dans le catalogue. Vous pouvez obtenir l'emplacement des métadonnées de l'une des manières suivantes :
    • Chargez les métadonnées de la table à partir d'un serveur de catalogue précédent.
    • Parcourez manuellement l'entrepôt ou le bucket Object Storage et identifiez le fichier JSON de métadonnées Iceberg en cours.
    Par exemple :
    Namespace           : SILVER
    Table               : COMPETITOR_PRICING_SILVER
    Metadata Location   : s3://0A-Warehouse/SILVER/COMPETITOR_PRICING_SILVER/metadata/00002-f2662b11-3268-4792-90f9-b8f4b851d629.metadata.json

    Le fichier JSON de métadonnées contient les informations de définition de table Iceberg, de schéma, d'instantanés, de manifestes et d'état de table requises pour l'enregistrement du catalogue.

    Pour créer l'espace de noms SILVER s'il n'existe pas déjà, utilisez la commande suivante :

    curl -k --location '<URI>/v1/namespaces' \
    --header "Authorization: Bearer $TOKEN" \
    --header 'Content-Type: application/json' \
    --data '{"namespace": ["SILVER"], "properties": {}}'
  3. Pour enregistrer la table, exécutez la commande suivante :
    curl -k --location '<URI>/v1/namespaces/SILVER/register' \
    --header 'Content-Type: application/json' \
    --header "Authorization: Bearer $TOKEN" \
    --data '{
        "name":"COMPETITOR_PRICING_SILVER",
        "metadata-location": "s3://0A-Warehouse/SILVER/COMPETITOR_PRICING_SILVER/metadata/00002-f2662b11-3268-4792-90f9-b8f4b851d629.metadata.json",
        "overwrite": false
    }'
  4. Pour charger la nouvelle table enregistrée, exécutez la commande suivante :
    curl -k --location '<URI>/v1/namespaces/SILVER/tables/COMPETITOR_PRICING_SILVER' \
    --header "Authorization: Bearer $TOKEN" \
    --header 'Content-Type: application/json'
  5. De même, enregistrez d'autres tables.

Authentifier et autoriser les utilisateurs

Pour autoriser un utilisateur de base de données à accéder au service AICAT (reportez-vous à Choix de la base de données du référentiel de catalogue), il doit s'agir d'un utilisateur ADMIN ou vous devez autoriser l'utilisateur avec le rôle AICAT_USER ou PDB_DBA.

Vous pouvez authentifier les utilisateurs à l'aide d'un appel d'API de jeton avec des informations d'identification utilisateur. Pour obtenir le jeton d'accès, envoyez la demande suivante :

POST https://public_lb_host/catalog/v1/auth/token

Exemple de paramètre de demande utilisant cURL :

curl -k -s --location '<URI>/catalog/v1/auth/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=<dbUser>' \
--data-urlencode 'client_secret=<dbPwd>' \
--data-urlencode 'scope=PRINCIPAL_ROLE:ALL' | jq -r '.access_token'

Lorsque le jeton expire, vous recevez une réponse 401. Utilisez la même adresse pour obtenir un nouveau jeton.

Voici un exemple de jeton de réponse :

{
    "access_token": "<token>",
    "issued_token_type": "urn:ietf:params:oauth:token-type:access_token",
    "token_type": "bearer",
    "expires_in": 3600
}

Utilisez le jeton obtenu comme jeton Bearer dans l'en-tête d'autorisation :

Authorization: Bearer <your_token>

Pour plus d'informations sur chaque adresse REST d'API de catalogue, reportez-vous à API REST pour Oracle AI Data Catalog.

Catalogue REST AICAT Iceberg

Le catalogue REST Iceberg d'AICAT est le catalogue Iceberg REST par défaut intégré à AICAT. Il est conçu pour gérer efficacement les tables Iceberg en fournissant des API REST pour les opérations de cycle de vie des tables, notamment la création, la lecture, la mise à jour et la suppression (CRUD), ainsi que la gestion des métadonnées et la gestion des transactions. Le catalogue REST Iceberg d'AICAT suit la spécification d'API standard du catalogue REST Iceberg d'Apache. Vous devez être un utilisateur ADMIN ou un utilisateur disposant du rôle PDB_DBA ou AICAT_USER.

Pour plus d'informations sur chaque adresse REST d'API de catalogue, reportez-vous à API REST pour Oracle AI Data Catalog.

Utiliser AICAT avec les moteurs de requête

AICAT s'intègre à plusieurs moteurs de requête pour demander et extraire des informations. Vous pouvez utiliser AICAT avec des moteurs de requête tels qu'Apache Spark, ajouter des tables externes sur des tables AICAT, monter AICAT sur le catalogue de SGBD, et créer des tables Apache Iceberg à l'aide d'Oracle Data Transforms.

En cas de problème, enregistrez une demande d'assistance sur le support Oracle Cloud ou contactez votre représentant du support.

Interroger AICAT à l'aide d'Apache Spark

Pour utiliser des requêtes Apache Spark sur AICAT, vous devez d'abord télécharger le fichier binaire d'exécution Spark.
  1. Téléchargez et extrayez le fichier tgz binaire d'exécution spark-3.5.6-bin-hadoop.
  2. Ajoutez iceberg-aws-bundle-1.9.2.jar sous le répertoire spark-3.5.6-bin-hadoop3/jars.
  3. A partir du répertoire racine (spark-3.5.6-bin-hadoop3), exécutez la commande suivante.

    Pour configurer Spark avec OCI S3, procédez comme suit :

    bin/spark-shell \
    --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.10.0 \
    --conf spark.sql.catalog.aicat=org.apache.iceberg.spark.SparkCatalog \
    --conf spark.sql.catalog.aicat.type=rest \
    --conf spark.sql.catalog.aicat.uri=http://<host>:<port>/catalog \
    --conf spark.sql.catalog.aicat.warehouse=aicat_iceberg_rest_catalog \
    --conf spark.sql.catalog.aicat.s3.access-key-id=<s3AccessKeyId> \
    --conf spark.sql.catalog.aicat.s3.secret-access-key=<s3SecretAccessKey> \
    --conf spark.sql.catalog.aicat.rest.auth.type=oauth2 \
    --conf spark.sql.catalog.aicat.oauth2-server-uri=http://<host>:<port>/catalog/v1/auth/token \
    --conf spark.sql.catalog.aicat.credential=<dbusername>:<dbpassword> \
    --conf spark.sql.catalog.aicat.scope=PRINCIPAL_ROLE:ALL \
    --conf spark.driver.extraJavaOptions=" -Dhttp.proxyHost=www-proxy-hqdc.us.oracle.com -Dhttp.proxyPort=80 -Dhttps.proxyHost=www-proxy-hqdc.us.oracle.com -Dhttps.proxyPort=80"

    Pour créer une clé secrète et une clé d'accès secrète, reportez-vous à Création d'une clé secrète client.

    Pour configurer Spark avec Azure, procédez comme suit :

    bin/spark-shell \
    --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.10.0 \
    --conf spark.sql.catalog.aicat=org.apache.iceberg.spark.SparkCatalog \
    --conf spark.sql.catalog.aicat.type=rest \
    --conf spark.sql.catalog.aicat.uri=http://<host>:<port>/catalog \
    --conf spark.sql.catalog.aicat.warehouse=oadc_iceberg_rest_catalog \
    --conf spark.sql.catalog.aicat.rest.auth.type=oauth2 \
    --conf spark.sql.catalog.aicat.oauth2-server-uri=http://<host>:<port>/catalog/v1/auth/token \
    --conf spark.sql.catalog.aicat.credential=<username>:<password> \
    --conf spark.sql.catalog.aicat.scope=PRINCIPAL_ROLE:ALL \
    --conf spark.sql.catalog.aicat.io-impl=org.apache.iceberg.azure.adlsv2.ADLSFileIO \
    --conf spark.sql.catalog.aicat.adls.account=<accountName> \
    --conf spark.sql.catalog.aicat.adls.endpoint=https://<accountName>.blob.core.windows.net/<container> \
    --conf spark.sql.catalog.aicat.adls.auth.shared-key.account.name=<accountName> \
    --conf spark.sql.catalog.aicat.adls.auth.shared-key.account.key=<accountKey> \
    --conf spark.driver.extraJavaOptions=" -Dhttp.proxyHost=www-proxy-hqdc.us.oracle.com -Dhttp.proxyPort=80 -Dhttps.proxyHost=www-proxy-hqdc.us.oracle.com -Dhttps.proxyPort=80"
    
    
    
  4. Exécutez l'une des commandes SQL Spark suivantes :
    • spark.sql("SHOW NAMESPACES IN aicat").show()
    • spark.sql("CREATE NAMESPACE IF NOT EXISTS aicat.`KBNSXI`").show()
    • spark.sql("CREATE TABLE IF NOT EXISTS aicat.`KBNSXI`.TABLE2 (name STRING, add STRING)").show()
    • spark.sql("INSERT INTO aicat.`KBNSXI`.TABLE2 VALUES ('John Doe', 'USA, 12345')").show()
    • spark.sql("SELECT * FROM aicat.`KBNSXI`.TABLE2").show()

Ajouter des tables externes sur les tables d'iceberg AICAT

Pour utiliser des tables externes, chaque objet de catalogue doit être identifié par un nom qualifié complet au format <catalog_name>.<namespace>.<table>.

Ouvrez SQL Worksheet pour votre instance de base de données AI et exécutez les commandes suivantes :

-- setup ACL Rules --
-- for XT to communicate to ai catalog instance
-- for XT to communicate to object storage bucket, OCI in this example.

BEGIN
dbms_network_acl_admin.append_host_ace(
host => '*.oraclecloudapps.com',
lower_port => 443,
upper_port => 443,
ace => xs$ace_type(
privilege_list => xs$name_list('http', 'http_proxy'),
principal_name =>  'ADMIN',
principal_type => xs_acl.ptype_db));

dbms_network_acl_admin.append_host_ace(
host => '*.oci.customer-oci.com',
lower_port => 443,
upper_port => 443,
ace => xs$ace_type(
privilege_list => xs$name_list('http', 'http_proxy'),
principal_name =>  'ADMIN',
principal_type => xs_acl.ptype_db));
END;
/

-- create storage and catalog access credentials --
begin
dbms_cloud.create_credential(
  credential_name => '<catalogAuthCreds>',
  username        => '<dbUserName>',
  password        => '<dbUserPwd>'
);
end;
/

begin
  dbms_cloud.create_credential(
    credential_name => '<storageCredentialName>',
    username        => '<s3accessKey>',
    password        => '<s3secretKey>'
  );
end;
/


-- XT Creation with AI Cat Syntax --
-- <catalogURI> eg: https://<dbIdentifierString>.adb.<region>.oraclecloudapps.com/catalog
-- <authUri> eg: https://<dbIdentifierString>.adb.<region>.oraclecloudapps.com/catalog/v1/auth/token

begin
dbms_cloud.create_external_table(
  table_name      => '<extTableName>',
  credential_name => '<storageCredentialName>',
  format          => '{
    "access_protocol": {
      "protocol_type": "iceberg",
      "protocol_config": {
        "iceberg_catalog_type": "oracle_ai_data_catalog",
        "rest_catalog_endpoint":"<catalogURI>",
        "rest_authentication": {
          "rest_auth_cred": "<catalogAuthCreds>",
          "rest_auth_endpoint":"<authUri>"
        },
        "table_path": ["<namespaceName>", "<tableName>"]
      }
    }
  }'
);
end;
/

select * from <extTableName>;

Pour plus d'informations, reportez-vous à Interrogation des tables d'iceberg Apache.

Monter et interroger AICAT dans le catalogue de SGBD

Ouvrez SQL Worksheet pour votre instance de base de données AI et exécutez les commandes suivantes :

-- setup ACL Rules --
-- for XT to communicate to ai catalog instance
-- for XT to communicate to object storage bucket, OCI in this example.

BEGIN
dbms_network_acl_admin.append_host_ace(
host => '*.oraclecloudapps.com',
lower_port => 443,
upper_port => 443,
ace => xs$ace_type(
privilege_list => xs$name_list('http', 'http_proxy'),
principal_name =>  'ADMIN',
principal_type => xs_acl.ptype_db));

dbms_network_acl_admin.append_host_ace(
host => '*.oci.customer-oci.com',
lower_port => 443,
upper_port => 443,
ace => xs$ace_type(
privilege_list => xs$name_list('http', 'http_proxy'),
principal_name =>  'ADMIN',
principal_type => xs_acl.ptype_db));
END;
/

-- create bearer token and catalog access credentials --
-- <authUri> eg: https://<dbIdentifierString>.adb.<region>.oraclecloudapps.com/catalog/v1/auth/token
BEGIN
    DBMS_SHARE.CREATE_BEARER_TOKEN_CREDENTIAL(
        CREDENTIAL_NAME => '<bearerTokenCredName>',
        BEARER_TOKEN    => 'BEARER_TOKEN',
        TOKEN_ENDPOINT  => '<authUri>',
        CLIENT_ID       => '<dbUserName>',
        CLIENT_SECRET   => '<dbUserPwd>',
        TOKEN_SCOPE     => 'PRINCIPAL_ROLE:ALL'
    );
END;
/

begin
  dbms_cloud.create_credential(
    credential_name => '<storageCredentialName>',
    username        => '<s3accessKey>',
    password        => '<s3secretKey>'
  );
end;
/


-- XT Creation with AI Cat Syntax --
-- <catalogURIForIceberg> eg: https://<dbIdentifierString>.adb.<region>.oraclecloudapps.com/catalog/v1
-- <authUri> eg: https://<dbIdentifierString>.adb.<region>.oraclecloudapps.com/catalog/v1/auth/token

-- DBMS_CATALOG with AI CAT --
BEGIN
dbms_catalog.mount_iceberg(
catalog_name             => '<catalogName>',
endpoint                 => '<catalogURIforIceberg>',
catalog_credential       => '<bearerTokenCredentialName>',
data_storage_credential  => '<storageCredentialName>',
catalog_type             => 'ICEBERG_ORACLE');
END;
/

-- sample queries once catalog is mounted
-- show mounted catalogs
SELECT c.catalog_name AS mounted_catalog_name, c.catalog_type AS mounted_catalog_type
FROM user_mounted_catalogs c
ORDER BY c.catalog_name;

-- show schemas
select schema_name from dbms_catalog.get_schemas('<catalogName>');

-- show tables
select table_name from dbms_catalog.get_tables('<catalogName>', '<schemaName>');

-- query existing tables
select FIRST_NAME, LAST_NAME from "<schemaName>"."<tableName>"@<catalogName> where rownum < 10;

-- create new table
CREATE ICEBERG TABLE  "<schemaName>"."<tableName>"
(   type  STRING,
    address   STRING
)
WITHIN CATALOG "<catalogName>"
STORAGE LOCATION "s3://<ociBucketNameUsedInStep#2>/<schemaName>/<tableName>/";

-- insert into table;
create table TESTLOCAL (type varchar2(10), address varchar2(10));
insert into TESTLOCAL values ('Alan', 'Matthews');
commit;

-- insert into iceberg table via ai catalog from local table
INSERT INTO "<schemaName>"."<tableName>"@<catalogName> select * from TESTLOCAL;

-- query the table in ai cat
select * from "<schemaName>"."<tableName>"@<catalogName>;

select DBMS_CATALOG.GENERATE_TABLE_SELECT('<catalogName>', '"<schemaName>"', '"<tableName>"') from dual;

Utiliser AICAT en tant que fournisseur de catalogue dans Oracle Data Transforms

Vous pouvez utiliser Data Transforms pour vous connecter au catalogue REST AICAT et charger des données dans les tables Apache Iceberg. Pour plus d'informations, reportez-vous à Création d'une connexion Apache Iceberg à l'aide d'Oracle AI Data Catalog.