Remarques sur le package PL/SQL pour Autonomous Database

Remarques sur les packages PL/SQL Oracle Database dans Autonomous Database.

Packages PL/SQL non disponibles

  • DBMS_DEBUG_JDWP

  • DBMS_DEBUG_JDWP_CUSTOM

Notes sur le package PL/SQL DBMS_LDAP

Fournit des remarques pour le package DBMS_LDAP :

  • La spécification d'une adresse IP dans le nom d'hôte n'est pas autorisée.

  • Le seul port autorisé est 636.

  • Les arguments SSLWRL et SSLWALLETPASSWD pour la procédure OPEN_SSL sont ignorés. La valeur par défaut de la propriété SSLWRL est définie sur le portefeuille utilisé par UTL_HTTP et DBMS_CLOUD pour effectuer des demandes Web sortantes sur Autonomous Database.

  • Les sous-programmes DBMS_LDAP.SIMPLE_BIND_S et DBMS_LDAP.BIND_S effectuent l'authentification auprès du serveur d'annuaire.

    Les sous-programmes DBMS_LDAP.SIMPLE_BIND_S et DBMS_LDAP.BIND_S sont modifiés pour accepter les objets d'informations d'identification en tant qu'argument.

    Voici les notes d'utilisation et des exemples de ces sous-programmes modifiés :

    • Les sous-programmes SIMPLE_BIND_S et BIND_S modifiés vous permettent de transmettre des objets d'informations d'identification pour définir l'authentification du serveur d'annuaire. Les objets d'informations d'identification sont des objets de schéma. Ils ne sont donc accessibles qu'aux utilisateurs dotés de privilèges et vous permettent de configurer des privilèges de niveau schéma pour contrôler les informations d'identification. La transmission des informations d'identification du planificateur est un moyen approprié et sécurisé de stocker et de gérer le nom utilisateur, le mot de passe et les clés pour l'authentification.

    • Les sous-programmes SIMPLE_BIND_S et BIND_S modifiés constituent une alternative sécurisée et pratique aux sous-programmes SIMPLE_BIND_S et BIND_S précédemment existants.

      Pour plus d'informations, reportez-vous aux sections FUNCTION simple_bind_s et FUNCTION bind_s.

    • L'argument CREDENTIAL des fonctions SIMPLE_BIND_S et BIND_S est utilisé pour effectuer une authentification basée sur les informations d'identification sur le serveur d'annuaire.

    • Exemple :
      • Créez un objet d'informations d'identification :

        BEGIN DBMS_CLOUD.CREATE_CREDENTIAL (
            credential_name => 'LDAP_CRED',
            username        => 'web_app_user',
            password        => 'password' );
        END;

        Cela crée un objet d'informations d'identification qui crée une paire nom utilisateur/mot de passe stockée.

        Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.

        Pour plus d'informations, reportez-vous à Spécification des informations d'identification de travail du planificateur.

      • Appelez DBMS_LDAP.SIMPLE_BIND_S :

        DECLARE
              l_mail_conn DBMS_LDAP.INIT;
            BEGIN 
              l_ldap_conn   := DBMS_LDAP.INIT('ldap.example.com', 636);
              l_auth_result := DBMS_LDAP.SIMPLE_BIND_S(l_ldap_conn, 'LDAP_CRED');
              ...
        END;
        

        Le code de cet exemple appelle d'abord la fonction DBMS_LDAP.INIT qui initialise une session avec un serveur LDAP et établit une connexion avec le serveur LDAP ldap.example.com au numéro de port 636. La valeur l_ldap_conn dans la fonction SIMPLE_BIND_S est l'identificateur de session LDAP et LDAP_CRED est le nom des informations d'identification.

      • function bind_s effectue une authentification complexe au serveur d'annuaire. Exemple :

        DECLARE
              l_mail_conn DBMS_LDAP.INIT;
            BEGIN 
              l_ldap_conn   := DBMS_LDAP.INIT('ldap.example.com', 636);
              l_auth_result := DBMS_LDAP.BIND_S(l_ldap_conn, 'LDAP_CRED', METH => DBMS_LDAP.AUTH_SIMPLE);
              ...
        END;
        

        Le code de cet exemple appelle d'abord la fonction DBMS_LDAP.INIT qui initialise une session avec un serveur LDAP et établit une connexion avec le serveur LDAP ldap.example.com au numéro de port 636. La valeur l_ldap_conn dans la fonction BIND_S est l'identificateur de session LDAP et LDAP_CRED est le nom des informations d'identification. METH est la méthode d'authentification. La seule valeur valide est DBMS_LDAP_UTL.AUTH_SIMPLE.

    • Les privilèges EXECUTE sur DBMS_CLOUD ou DWROLE sont requis pour créer des informations d'identification de planificateur.

    • Les informations d'identification transmises doivent être présentes dans le schéma en cours ou avoir un synonyme pointant vers des informations d'identification dans le schéma et être à l'état activé.

    • Un synonyme public ou privé pointant vers des informations d'identification dans un autre schéma utilisateur peut être fourni en tant que valeur pour le paramètre CREDENTIAL, à condition que vous disposiez du privilège EXECUTE sur l'objet d'informations d'identification de base pointé par le synonyme. Pour plus d'informations, reportez-vous à Présentation des synonymes.

  • SSL/TLS est appliqué à toutes les communications entre le serveur LDAP et Autonomous Database.

  • Lorsque votre instance Autonomous Database est configurée avec une adresse privée, définissez le paramètre de base de données ROUTE_OUTBOUND_CONNECTIONS sur PRIVATE_ENDPOINT pour indiquer que toutes les connexions LDAP sortantes sont soumises aux règles sortantes du VCN de l'adresse privée de l'instance Autonomous Database. Pour plus d'informations, reportez-vous à Sécurité améliorée pour les connexions sortantes avec des adresses privées.

  • Afin d'utiliser DBMS_LDAP pour une connexion sur une adresse privée, utilisez DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE et indiquez le paramètre private_target avec la valeur TRUE.

    Remarque

    Si vous définissez ROUTE_OUTBOUND_CONNECTIONS sur PRIVATE_ENDPOINT, la définition du paramètre private_target sur TRUE n'est pas requise dans cette API. Pour plus d'informations, reportez-vous à Sécurité améliorée pour les connexions sortantes avec des adresses privées.
  • DBMS_LDAP Erreur

    Message d'erreur Cause potentielle

    ORA-31400: Missing or invalid scheduler credential

    Les informations d'identification transmises sont NULL ou ne sont pas valides.

Pour plus d'informations, reportez-vous à DBMS_LDAP dans Référence sur les types et les packages PL/SQL.

DBMS_NETWORK_ACL_ADMIN Remarques sur le package PL/SQL

Fournit des remarques pour le package DBMS_NETWORK_ACL_ADMIN :

  • L'octroi de privilèges de liste de contrôle d'accès sur des adresses IP n'est pas autorisé.

  • La liste de contrôle d'accès HTTP_PROXY est autorisée sur les adresses privées.

Pour plus d'informations, reportez-vous à DBMS_NETWORK_ACL_ADMIN dans Référence sur les types et les packages PL/SQL.

DBMS_SCHEDULER Notes sur le package

Fournit des notes pour le package DBMS_SCHEDULER.

Dans Autonomous Database, la procédure DBMS_SCHEDULER.CREATE_JOB prend en charge les types de travail PLSQL_BLOCK et STORED_PROCEDURE pour le paramètre job_type.

A l'aide d'un élément job_type non pris en charge, des messages tels que les suivants peuvent s'afficher :

ORA-27399: job type EXECUTABLE requires the CREATE EXTERNAL JOB privilege
ORA-27369: JOB OF TYPE EXECUTABLE FAILED WITH EXIT CODE: OPERATION NOT PERMITTED

Pour plus d'informations, reportez-vous à Classes de travail prédéfinies avec Oracle Scheduler et à DBMS_SCHEDULER.

UTL_HTTP Remarques sur le package PL/SQL

Fournit des remarques pour le package UTL_HTTP :

  • Les connexions par le biais d'adresses IP ne sont pas autorisées.

  • Seul HTTPS est autorisé lorsque l'instance Autonomous Database se trouve sur une adresse publique. Lorsque l'instance Autonomous Database se trouve sur une adresse privée, les connexions HTTPS et HTTP_PROXY sont autorisées (les connexions HTTP sont interdites pour les adresses publiques et privées).

  • L'API UTL_HTTP.set_proxy est autorisée lorsque l'instance Autonomous Database se trouve sur une adresse privée.

  • Lorsque l'instance Autonomous Database se trouve sur une adresse privée et que vous utilisez HTTP_PROXY ou l'API UTL_HTTP.SET_PROXY :

    • Les demandes DBMS_CLOUD n'honorent pas le serveur proxy défini avec UTL_HTTP.SET_PROXY. Cela inclut DBMS_CLOUD.SEND_REQUEST et tous les accès au stockage d'objet pour les tables externes DBMS_CLOUD que vous définissez avec DBMS_CLOUD.CREATE_EXTERNAL_TABLE, DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE ou DBMS_CLOUD.CREATE_HYBRID_PART_TABLE.

    • Les demandes APEX_WEB_SERVICE ne respectent pas le serveur proxy que vous avez défini avec UTL_HTTP.SET_PROXY.

  • Tous les services Web doivent être sécurisés. Le seul port autorisé est 443 lorsque l'instance Autonomous Database se trouve sur une adresse publique. Lorsque l'instance Autonomous Database se trouve sur une adresse privée, cette restriction ne s'applique pas.

    Votre instance Autonomous Database est préconfigurée avec un Oracle Wallet qui contient plus de 90 des certificats SSL intermédiaires et racine les plus fréquemment approuvés. Oracle Wallet est géré de manière centralisée. Vous pouvez configurer UTL_HTTP afin d'utiliser un portefeuille pour un site protégé à l'aide de certificats SSL autosignés. Pour plus d'informations, reportez-vous à Utilisation d'un portefeuille géré par le client pour les appels externes avec UTL_HTTP.

  • La procédure SET_AUTHENTICATION_FROM_WALLET n'est pas autorisée.

  • Les arguments WALLET_PATH et WALLET_PASSWORD pour les procédures CREATE_REQUEST_CONTEXT, REQUEST et REQUEST_PIECES sont ignorés.

  • L'argument CREDENTIAL de la procédure SET_CREDENTIAL est utilisé pour transmettre l'objet d'informations d'identification en tant qu'entrée à la procédure. Pour plus d'informations, reportez-vous à Spécification des informations d'identification de travail du planificateur et à Procédure CREATE_CREDENTIAL.

  • Les privilèges EXECUTE sur DBMS_CLOUD ou DWROLE sont requis pour créer des objets d'informations d'identification.

  • Les informations d'identification transmises doivent être présentes dans le schéma utilisateur en cours et être à l'état activé.

  • Un synonyme public ou privé pointant vers des informations d'identification dans un autre schéma utilisateur peut être fourni en tant que valeur pour le paramètre CREDENTIAL, à condition que vous disposiez du privilège EXECUTE sur l'objet d'informations d'identification de base pointé par le synonyme. Pour plus d'informations, reportez-vous à Présentation des synonymes.

  • La configuration d'Oracle Wallet ne peut pas être modifiée. Tous les arguments pour la procédure SET_WALLET sont ignorés.

  • Lorsque votre instance Autonomous Database est configurée avec une adresse privée, définissez le paramètre de base de données ROUTE_OUTBOUND_CONNECTIONS sur PRIVATE_ENDPOINT pour indiquer que toutes les connexions UTL_HTTP sortantes sont soumises aux règles sortantes du VCN de l'adresse privée de l'instance Autonomous Database. Pour plus d'informations, reportez-vous à Sécurité améliorée pour les connexions sortantes avec des adresses privées.

  • UTL_HTTP : erreurs

    Le tableau suivant présente les messages d'erreur et leurs causes possibles lors de l'utilisation du package UTL_HTTP :

    Message d'erreur Cause potentielle

    ORA-12545: Connect failed because target host or object does not exist

    L'hôte ou l'objet cible n'existe pas ou est privé.

    ORA-24247: network access denied by access control list (ACL)

    La liste de contrôle d'accès de l'hôte indiqué est introuvable.

    ORA-29024: Certificate validation failure

    Le certificat de l'hôte n'existe pas ou fait partie des certificats pris en charge.

    ORA-29261: Bad argument

    Les informations d'identification transmises ne sont pas valides ou sont désactivées, ou l'utilisateur ne dispose pas de privilèges suffisants sur les informations d'identification.

Pour plus d'informations, reportez-vous à UTL_HTTP dans Référence sur les types et les packages PL/SQL.

UTL_INADDR Remarques sur le package PL/SQL

Fournit des remarques pour le package UTL_INADDR :

  • Le package UTL_INADDR peut être utilisé sur une instance Autonomous Database avec une adresse privée.

  • La fonction GET_HOST_ADDRESS est disponible.

  • La fonction GET_HOST_NAME n'est pas disponible.

Pour plus d'informations, reportez-vous à UTL_INADDR dans le manuel PL/SQL Packages and Types Reference.

UTL_SMTP Remarques sur le package PL/SQL

Fournit des remarques pour le package UTL_SMTP :

  • Les adresses SMTP publiques peuvent être utilisées tant que le routage est effectué via l'adresse de connexion inverse du client (RCE).

  • Les courriels avec une adresse IP dans le nom d'hôte ne sont pas autorisés.

  • Seuls les ports 25 et 587 sont autorisés.

  • L'argument CREDENTIAL de la fonction SET_CREDENTIAL est utilisé pour transmettre l'objet d'informations d'identification du planificateur en tant qu'entrée à la fonction. Pour plus d'informations, reportez-vous à Spécification des informations d'identification de travail du planificateur et à Procédure CREATE_CREDENTIAL.

  • Les privilèges EXECUTE sur DBMS_CLOUD ou DWROLE sont requis pour créer des objets d'informations d'identification.

  • L'argument CREDENTIAL de la procédure SET_CREDENTIAL est utilisé pour transmettre l'objet d'informations d'identification en tant qu'entrée à la procédure. Pour plus d'informations, reportez-vous à Spécification des informations d'identification de travail du planificateur.

  • Les informations d'identification transmises doivent être présentes dans le schéma utilisateur en cours et être à l'état activé.

  • Un synonyme public ou privé pointant vers des informations d'identification dans un autre schéma utilisateur peut être fourni en tant que valeur pour le paramètre CREDENTIAL, à condition que vous disposiez du privilège EXECUTE sur l'objet d'informations d'identification de base pointé par le synonyme. Pour plus d'informations, reportez-vous à Présentation des synonymes.

  • Lorsque votre instance Autonomous Database est configurée avec une adresse privée, définissez le paramètre de base de données ROUTE_OUTBOUND_CONNECTIONS sur PRIVATE_ENDPOINT pour indiquer que toutes les connexions UTL_SMTP sortantes sont soumises aux règles sortantes du VCN de l'adresse privée de l'instance Autonomous Database. Pour plus d'informations, reportez-vous à Sécurité améliorée pour les connexions sortantes avec des adresses privées.

  • UTL_SMTP Erreur

    Message d'erreur Cause potentielle

    ORA-29261: Bad argument

    Les informations d'identification transmises ne sont pas valides ou sont désactivées, ou l'utilisateur ne dispose pas de privilèges suffisants sur les informations d'identification.

Pour plus d'informations, reportez-vous à UTL_SMTP dans Référence sur les types et les packages PL/SQL.

UTL_TCP Remarques sur le package PL/SQL

Fournit des remarques pour le package UTL_TCP :

  • L'adresse IP n'est pas autorisée dans le nom d'hôte.

  • Seuls les ports 443 (HTTP), 25 et 587 (SMTP) sont autorisés.

  • Pour le port 443, seules les URL HTTPS sont autorisées.

  • Les arguments WALLET_PATH et WALLET_PASSWORD pour la procédure OPEN_CONNECTION sont ignorés. La valeur par défaut des propriétés WALLET_PATH et WALLET_PASSWORD est définie sur le portefeuille utilisé par UTL_HTTP et DBMS_CLOUD pour effectuer des demandes Web sortantes sur Autonomous Database.

  • SSL/TLS est appliqué à toutes les communications qui se produisent sur des connexions TCP/IP.

  • Lorsque votre instance Autonomous Database est configurée avec une adresse privée, définissez le paramètre de base de données ROUTE_OUTBOUND_CONNECTIONS sur PRIVATE_ENDPOINT pour indiquer que toutes les connexions UTL_TCP sortantes sont soumises aux règles sortantes du VCN de l'adresse privée de l'instance Autonomous Database. Pour plus d'informations, reportez-vous à Sécurité améliorée pour les connexions sortantes avec des adresses privées.

Pour plus d'informations, reportez-vous à UTL_TCP dans Référence sur les types et les packages PL/SQL.