Gestion d’une bibliothèque Oracle dans SAS
Lorsque que l’on administre une plateforme SAS, on en vient très vite à configurer des bibliothèques pointant vers des bases de données (via les modules SAS/ACCESS interface to).
L’une des problématiques est de définir les utilisateurs de cette base de données (un compte Oracle par exemple) et de lier cette identité à son ou ses utilisateurs SAS.
Pour bien comprendre, prenons un exemple simple.
Mon environnement SAS contient 2 utilisateurs :
Aussi, une fois connecté à SAS Enterprise Guide, avec son compte nicolas, l’utilisateur peut se connecter à sa base de données oracle en soumettant l’instruction LIBNAME suivant :
L’utilisateur ayant implicitement saisit le compte utilisateur et le mot de passe du compte oracle (scott/tiger), la connexion se fait sans problème.
Maintenant, imaginons que notre utilisateur souhaite ne plus avoir à créer cette bibliothèque manuellement et aimerait qu’elle soit automatiquement présente à l’ouverture de SAS Enterprise Guide.
Il se tourne donc vers son administrateur SAS et lui demande de créer une nouvelle bibliothèque Oracle dans les métadonnées.
![utilisateurs-oracle-dan-sas-2](https://www.nicolas-housset.fr/wp-content/uploads/2016/09/utilisateurs-oracle-dan-sas-2.jpg)
Maintenant que la bibliothèque Oracle est créée dans les métadonnées, l’administrateur vérifie si l’instruction libname associé est correcte :
L’administrateur est alors « prompté » et doit saisir les informations de connexion à LA BASE ORACLE :
L’instruction libname est ensuite affichée :
Pour valider, l’administrateur copie puis colle cette instruction dans une session SAS ( Base SAS ou SAS Enterprise Guide ) :
Ce qui donne :
NOTE: Libref ORA12 was successfully assigned as follows:
Engine: ORACLE
Physical Name: ora12
L’erreur est la suivante :
[Error] ORACLE connection error: ORA-01005: null password given; logon denied.
Pour aller plus loin dans l’investigation et déterminer la cause de problème, l’administrateur demande à nicolas de soumettre le code suivant (en mode debug), toujours dans une session Guide :
Ce qui donne :
LIBDEBUG: Libname ORA12 ORACLE PATH="ORA12" USER="nicolas" SCHEMA='customer';
ERROR: ORACLE connection error: ORA-01005: null password given; logon denied.
ERROR: Error in the LIBNAME statement.
L’origine de l’erreur apparaît clairement : SAS essaye de se connecter à Oracle en utilisant les informations d’identification du compte SAS !
Il faut donc modifier son paramétrage SAS pour associer son compte « nicolas » au compte oracle « scott »
Il faut maintenant modifier la bibliothèque ORA 12 :
Cliquez sur l’onglet « Data Server »
Puis dans la zone « Informations d’authentification », cliquez sur « Nouvelle » puis dans « Assistant Nouvelle connexion » choisissez le domaine « oracle » :
L’utilisateur peut maintenant soumettre l’instruction libname de test, toujours avec l’option LIBDEBUG :
Ce qui donne :
LIBDEBUG: Libname ORA12 ORACLE PATH="ORA12" USER="scott" PASSWORD='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' SCHEMA='customer';
NOTE: Libref TEST was successfully assigned as follows:
Engine: META
Physical Name: ORA12A
Nous constatons que SAS utilise bien les identifiants de connexion définit sur le domaine« oracle» non plus ceux définit sur le domaine « DefaultAuth»
- Un administrateur (sasadm@saspw)
- Un utilisateur SAS Enterprise Guide (nicolas)
![utilisateurs-oracle-dan-sas](https://www.nicolas-housset.fr/wp-content/uploads/2016/09/utilisateurs-oracle-dan-sas.jpg)
1 |
libname xe oracle user=scott pw=tiger path=ora12 shema=customer; |
Créer une bibliothèque Oracle dans les métadonnées.
L’administrateur SAS accepte volontiers et crée la bibliothèque Oracle en suivant les étapes ci-dessous :![utilisateurs-oracle-dan-sas-2](https://www.nicolas-housset.fr/wp-content/uploads/2016/09/utilisateurs-oracle-dan-sas-2.jpg)
![utilisateurs-oracle-dan-sas-1](https://www.nicolas-housset.fr/wp-content/uploads/2016/09/utilisateurs-oracle-dan-sas-1.jpg)
![utilisateurs-oracle-dan-sas-3](https://www.nicolas-housset.fr/wp-content/uploads/2016/09/utilisateurs-oracle-dan-sas-3.jpg)
![utilisateurs-oracle-dan-sas-4](https://www.nicolas-housset.fr/wp-content/uploads/2016/09/utilisateurs-oracle-dan-sas-4.jpg)
![afficher-l-instruction-libname](https://www.nicolas-housset.fr/wp-content/uploads/2016/09/afficher-l-instruction-libname.jpg)
![afficher-l-instruction-libname-prompt](https://www.nicolas-housset.fr/wp-content/uploads/2016/09/afficher-l-instruction-libname-prompt.jpg)
![afficher-l-instruction-libname-affichage](https://www.nicolas-housset.fr/wp-content/uploads/2016/09/afficher-l-instruction-libname-affichage.jpg)
1 |
LIBNAME ORA12 ORACLE PATH=ORA12 SCHEMA=customer USER=scott PASSWORD="{sas002}F77E0C345A42C6A753443DCE" ; |
Validation par l'utilisateur
L’administrateur a créé sa bibliothèque, il informe l’utilisateur et lui demande de tester. Comme au début de l'article, l'utilisateur se connecte à guide avec son compte nicolas. La bibliothèque ORA12 est bien visible dans SASApp mais inaccessible. Il obtient un message d'erreur lorsqu'il essaye de l'activer :![erreur-oracle-ORA-01005-dans-sas-guide](https://www.nicolas-housset.fr/wp-content/uploads/2016/09/erreur-oracle-ORA-01005-dans-sas-guide.jpg)
1 |
libname test meta library='ORA12' libdebug; |
Associer un compte utilisateur SAS à un compte utilisateur Oracle
Voilà « l’histoire » que nous voulons raconter.- L’utilisateur « nicolas » se connecter au serveur de métadonnées en utilisant son compte SAS
- Lorsqu’il essaye de se connecter à la base Oracle, ce n’est pas le compte SAS qu’il faut utiliser mais le compte « scott »
![creation-domaine-compte-oracle](https://www.nicolas-housset.fr/wp-content/uploads/2016/09/creation-domaine-compte-oracle.jpg)
![creation-domaine-compte-oracle-2](https://www.nicolas-housset.fr/wp-content/uploads/2016/09/creation-domaine-compte-oracle-2.jpg)
![creation-domaine-compte-oracle-3](https://www.nicolas-housset.fr/wp-content/uploads/2016/09/creation-domaine-compte-oracle-3.jpg)
![oracle-libref-propriete-sas-smc](https://www.nicolas-housset.fr/wp-content/uploads/2016/09/oracle-libref-propriete-sas-smc.jpg)
![assistant-nouvelle-connexion-domaine-oracle-sas-smc](https://www.nicolas-housset.fr/wp-content/uploads/2016/09/assistant-nouvelle-connexion-domaine-oracle-sas-smc.jpg)
1 |
libname test meta library='ORA12' libdebug; |