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 :
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.
Ce qui donne :
NOTE: Libref ORA12 was successfully assigned as follows:
Engine: ORACLE
Physical Name: ora12
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 »
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)
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 : 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 ) :
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 : 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 :
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 »
1 |
libname test meta library='ORA12' libdebug; |