devstory

Installer Oracle REST Data Services (ORDS) pour Oracle APEX

  1. Qu'est-ce que Oracle REST Data Services ?
  2. Interaction entre Oracle ORDS et Oracle APEX
  3. Download Oracle ORDS
  4. Configurer ORDS pour APEX
  5. Déploiement ORDS

1. Qu'est-ce que Oracle REST Data Services ?

Oracle REST Data Services (ORDS) est le service des données qui sert à remplacer Oracle HTTP server et mod_plsql. Il s'appuie sur Java EE qui fournit des services RESTful et améliore la capacité de sécurité. Il peut être déployé sur WebLogic, Tomcat, Glassfish ou indépendamment.

2. Interaction entre Oracle ORDS et Oracle APEX

Généralement, il y a 2 méthodes d'installer Oracle APEX.

Méthode 1: Configurer Embedded PL/SQL Gateway: C'est la facon que vous configurez Oracle APEX qui peut être exécuter sur Oracle XML DB HTTP Server, il est un HTTP disponible lors que vous installez Oracle 11g ou la version plus avancée.

Méthode 2: Installer Oracle APEX sur un serveur web précis, par exemple WebLogic, Tomcat ou Glassfish,...
Le lien a travaillé avec Oracle APEX comme ci-dessous:
  • http://your-server:8080/apex
Afin d'utiliser des services RESTful, vous devez installer Oracle ORDS qui peut être déployé sur WebLogic Server, Tomcat, Glassfish,.. ou exécuté indépendamment. Oracle ORDS peut lire directement sur Oracle APEX et peut remplacer complètement Oracle HTTP Server. Pour cette raison, vous pouvez utiliser des services RESTful sur APEX et utiliser le nouveau URL en but de travailler avec Oracle APEX.
  • http://your-server:8080/ords

3. Download Oracle ORDS

Vous pouvez télécharger Oracle ORDS à:
Les résultats de téléchargement :

4. Configurer ORDS pour APEX

CD vers le répertoire personnel de apex.
Connectez-vous à sqlplus sous l'autorisation de sysdba.
Réexécutez de la commandes pour configurer REST Service.
-- Configuring REST Service.


@apex_rest_config.sql
Après l'achèvement d'exécution ces lesdites commandes, 2 utilisateurs APEX_LISTENER et APEX_REST_PUBLIC_USER sont été créés.
  1. APEX_LISTENER - Le compte utilisé pour requêterles les définitions des services RESTful stockés dans Oracle APEX.
  2. APEX_REST_PUBLIC_USER - Le compte utilisé lors de l'appel des définitions des services RESTful qui sont stockés dans Oracle APEX.
Activer les services réseaux (Network Services)
Par défaut, les services réseau (Network Services) sont désactivés dans Oracle 11g ou la version la plus récente. Par conséquent, vous devez utiliser le package de DBMS_NETWORK_ACL_ADMIN afin d'accorder des privilèges de connexion à n'importe quel hôte pour l'utilisateur de base de données APEX_050000.
Vous devez requêter pour voir les utilisateurs APEX dans la base de données:
Select Username from All_Users where username like 'APEX%';
Exécutez la commande pour accorder des privilèges de connexion à n'importe quel hôte pour l'utilisateur de base de données APEX_050000.
Declare
   Acl_Path Varchar2(4000);
Begin
   -- Look for the ACL currently assigned to '*' and give APEX_050000
   -- the "connect" privilege if APEX_050000 does not have the privilege yet.
   Select Acl
   Into   Acl_Path
   From   Dba_Network_Acls
   Where  Host = '*'
   And    Lower_Port Is Null
   And    Upper_Port Is Null;
   If Dbms_Network_Acl_Admin.Check_Privilege(Acl_Path
                                            ,'APEX_050000'
                                            ,'connect') Is Null Then
      Dbms_Network_Acl_Admin.Add_Privilege(Acl_Path
                                          ,'APEX_050000'
                                          ,True
                                          ,'connect');
   End If;
Exception
   -- When no ACL has been assigned to '*'.
   When No_Data_Found Then
      Dbms_Network_Acl_Admin.Create_Acl('power_users.xml'
                                       ,'ACL that lets power users to connect to everywhere'
                                       ,'APEX_050000'
                                       ,True
                                       ,'connect');
      Dbms_Network_Acl_Admin.Assign_Acl('power_users.xml'
                                       ,'*');
End;
/

Commit;
Accorder la connexion à l'utilisateur APEX_050000 (Oracle 11g):
Declare
   Acl_Path Varchar2(4000);
Begin
   -- Look for the ACL currently assigned to '*' and give APEX_050000
   -- the "connect" privilege if APEX_050000
   --does not have the privilege yet.
   Select Acl
   Into   Acl_Path
   From   Dba_Network_Acls
   Where  Host = '*'
   And    Lower_Port Is Null
   And    Upper_Port Is Null;
   If Dbms_Network_Acl_Admin.Check_Privilege(Acl_Path
                                            ,'APEX_050000'
                                            ,'connect') Is Null Then
      Dbms_Network_Acl_Admin.Add_Privilege(Acl_Path
                                          ,'APEX_050000'
                                          ,True
                                          ,'connect');
   End If;
Exception
   -- When no ACL has been assigned to '*'.
   When No_Data_Found Then
      Dbms_Network_Acl_Admin.Create_Acl('power_users.xml'
                                       ,'ACL that lets power users to connect to everywhere'
                                       ,'APEX_050000'
                                       ,True
                                       ,'connect');
      Dbms_Network_Acl_Admin.Assign_Acl('power_users.xml'
                                       ,'*');
End;
/

Commit;
Accorder la connexion à l'utilisateur APEX_050000 (Oracle 12c):
Des procédures CREATE_ACL, ASSIGN_ACL, ADD_PRIVILEGE et CHECK_PRIVILEGE dans le package DBMS_NETWORK_ACL_ADMIN sont obsolètes dans Oracle Database 12c. Oracle vous recommande d'utiliser plustôt APPEND_HOST_ACE.
-- Sử dụng cho Oracle 12c.

BEGIN
    DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => '*',
        ace => xs$ace_type(privilege_list => xs$name_list('connect'),
                           principal_name => 'APEX_050000',
                           principal_type => xs_acl.ptype_db));
END;
/

5. Déploiement ORDS

Remarque: Assurez-vous que vous avez installé Java la version 7 ou la version plus récente et que vous avez déclaré la variable d'environnement PATH au dossier bin de Java. Vous pouvez voir en détails des instructions de l'installion de Java à:
Ajoutez le chemin vers le dossier bin de Java à la fin de PATH
;C:\DevPrograms\Java\jdk1.8.0_65\bin
Décompressez le dossier ords-**.zip que vous venez de télécharger dans un répertoire.
Vous pouvez voir que le dossier décompressé comprend le fichier ords.war
Copiez le dossier images dans apex au dossier ords:
Maintenant, nous installerons Oracle ORDS indépendamment (Ce n'est pas nécessaire de déployer sur WebLogic, Tomcat ou un autre web server quelconque)
CD au dossier ords:
Ensuite, connectez-vous à sqlplus avec l'autorité de sysdba.
Votre Oracle APEX exécute sur Oracle XML DB HTTP Server, vous devez le désactiver avec la commande :
--  Disable Oracle APEX on Oracle XML DB HTTP Server.

EXEC DBMS_XDB.SETHTTPPORT(0);


-- Note: You can enable it with command:

EXEC DBMS_XDB.SETHTTPPORT(8080)
Quittez sqlplus. Et CD au dossier ords:
Exécutez la commande :
# Run command:

java -jar ords.war

# Or:

java -jar ords.war install
Saisissez l'adresse de la machine qui contient la base de données (Par défaut elle est localhost):
Le port de la base de données (Par défaut, il est 1521):
Saisissez Service Name ou SID de la base de données:
Saisissez le mot de passe pour l'utilisateur de la base de données : ORDS_PUBLIC_USER
Sqlplus demande de ressaisir les informations de l'utilisateur de base de données avec l'autorité de sysdba. (Saisissez sys et puis password).
SQLPlus vous demandera si vous utilisez Oracle APEX ou non, si oui, saisissez 1 et appuyez sur le bouton 'enter' pour continuer :
Saisissez un mot de passe pour l'utitisateur qui sera créé APEX_PUBLIC_USER:
Ensuite, saisissez 1 afin de préciser le mot de passe pour 2 utilisateurs de base de données qui viennent d'être créés (APEX_LISTENER, APEX_REST_PUBLIC_USER).
Sélectionnez 1 pour démarrer ORDS indépendamment (Standalone).
Vous avez configuré ORDS avec succès. Fermez la fenêtre CMD.
Exécution ORDS
Remarque: Vous pouvez exécuter la commande suivante pour voir les instructions en détails :
java -jar ords.war help standalone
CD au dossier ORDS et exécutez de la commande :
java -jar ords.war standalone --port 8080 --apex-images C:/DevPrograms/ords/images
Pour la 1ère fois, il demandera où le fichier de configuration se trouve :
ORDS a été déployé avec succès.
Remarque: Si vous recevez une erreur :
Débloquez l'utilisateur APEX_PUBLIC_USER
Column username format a25;
Column account_status format a25;

-- Query unlocked APEX user.

select username,account_status from dba_users
 where lock_date is not null
 and username like 'APEX%';
Alter user APEX_PUBLIC_USER account unlock;
Le fichier de configuration est également créé après que vous avez déployé ORDS:
Ne fermez pas la fenêtre ci-dessus, vous pouvez utiliser APEX avec le nouveau chemin URL :