Si vous êtes un fidèle lecteur de mon blog, vous avez sans doute lu mon article pour créer une caslibc odbc.
Aujourd'hui, je vous présente comment créer un caslib oracle (ce qui est plus ou moins la même chose)
Avant de vérifier si la connexion à Oracle fonctionne dans CAS, vérifier la présence des variables d'environnement dans les fichiers de configuration cas.settings ou cas_usermods.settings (dans /opt/sas/viya/config/etc/cas/default).
Votre fichier doit contenir au moins les 3 variables ci-dessous :
export ORACLE_HOME="/opt/sas/instantclient_12_2" export TNS_ADMIN="/opt/sas/instantclient_12_2" export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"Bien-sûr les chemins indiqués doivent correspondre à votre installation. La première étape consiste à créer une session cas :
cas sessionhousset sessopts=(caslib=casuser timeout=3600 metrics=true);Supprimons ensuite la caslib oralib (on ne sait jamais si elle existe encore ... ) :
caslib oralib drop;Nous pouvons maintenant créer notre caslib oracle :
caslib oralib desc='Oracle Caslib' datasource=(srctype="oracle" username="SASUSER" password="password" schema="SASUSER" path="XE");Puis les librairies associés :
caslib _all_ assign;Enfin, chargeons un table depuis Oracle vers CAS :
proc casutil; list tables incaslib="oralib"; load casdata="PERSONS60" incaslib="oralib" outcaslib="oralib" casout="PERSONS60"; list tables incaslib="oralib"; quit;A noter, que la connexion à la base de données ne se fait PASau moment de la création de la caslib, mais au moment de l'exécution de proc casutil de chargement ou lorsque vous souhaitez lister les tables qu'il est possible de charger en mémoire CAS ( via la commande ci-dessous) :
proc casutil; list files incaslib="oralib"; run;
Quelques erreurs
Au moment de l'exécution de la proc casutil, vous pouvez obtenir l'erreur ci-dessous :NOTE: Executing action 'table.loadTable'.
NOTE: Performing serial LoadTable action using SAS Data Connector to Oracle.
ERROR: The connection to the data source driver failed.
ERROR: General error ORA-01017: invalid username/password; logon denied
ERROR: Function failed.
ERROR: The action stopped due to errors.
Si cette erreur survient, et comme l'indique le message d'erreur Oracle ( ORA-01017) il faut vérifier votre les valeur de username et de password. Contrairement au libname, dans une caslib, la valeur de username est sensible à la casse. Vérifier cette valeur dans votre base de données Oracle :
select username from dba_users;
Pour valider la casse du mot de passe, vous pouvez également exécuter le code suivant dans votre session SAS :
PROC FEDSQL nolibs noprompt='DRIVER=ORACLE;uid="sasuser";pwd="xxxxx";path="XE";catalog="ORALIB" '; quit;
Ce qui donne :
Le même test avec le login en majuscule :
PROC FEDSQL nolibs noprompt='DRIVER=ORACLE;uid="SASUSER";pwd="xxxx";path="XE";catalog="ORALIB" '; quit;Ce qui donne :









