Introduction Conditions - Trivadis
Introduction Conditions - Trivadis
Introduction Conditions - Trivadis
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Objet Connexion interne sous Windows (W2K)<br />
Auteur Kalled Belkacem (kalled.belkacem@trivadis.com)<br />
Infos Analyse technique détaillée du processus (janvier 2002)<br />
Source Expériences pratiques des consultants <strong>Trivadis</strong><br />
<strong>Introduction</strong><br />
L’administrateur de bases de données (DBA) doit quelquefois établir des connexions sans<br />
mot de passe. Dans ce cas, l’authentification est effectuée par le système d’exploitation<br />
selon les procédures suivantes :<br />
• l’utilisateur Oracle est authentifié de façon externe ;<br />
• les utilisateurs OS du groupe ORA_DBA ou ORA__DBA (pour NT), ou dba<br />
(pour UNIX), sont soumis à l'établissement de connexions internes.<br />
Ces concepts semblent faciles, mais en pratique, si le DBA choisit d’utiliser la structure<br />
OFA sur le système d’exploitation Windows (NT/W2K), il risque de rencontrer quelques<br />
surprises.<br />
Ce dernier point est l'objet du présent document.<br />
Notez que tous mes tests ont été effectués sous l’environnement suivant :<br />
• WIN2000<br />
• Oracle 8.1.7 avec patch 8.1.7.2<br />
<strong>Conditions</strong><br />
Je décrirai dans ce chapitre les conditions nécessaires pour réaliser une authentification<br />
correcte dans tous les cas de figure, à savoir :<br />
• le fichier sqlnet.ora avec sa syntaxe de connexion pour l'authentification ;<br />
• la variable TNS_ADMIN définie dans le Registre, ou dans le système d’exploitation<br />
comme une variable globale.<br />
Sqlnet.ora<br />
Ce fichier doit contenir au moins la ligne suivante :<br />
SQLNET.AUTHENTICATION_SERVICES= (NTS)
Cette ligne signifie qu'Oracle délègue à NT la responsabilité de l'authentification. De cette<br />
façon, un utilisateur du groupe ORA_DBA ou ORA__DBA sera autorisé à se<br />
connecter en interne et chaque utilisateur créé avec l’option identified externally sera en<br />
mesure de se connecter à la base de données. Dans ces cas de figure, aucun mot de passe<br />
ne sera exigé.<br />
TNS_ADMIN<br />
Oracle utilise cette ”variable environnementale” pour définir l’emplacement des fichiers<br />
sqlnet.ora, tnsnames.ora et listener.ora.<br />
La valeur par défaut pour cette variable est %ORACLE_HOME%/network/admin<br />
Sous NT, il existe plusieurs façons de définir une variable environnementale :<br />
- dans le Registre<br />
- dans le système, en tant que variable environnementale globale<br />
- à l’aide du jeu de commande TNS_ADMIN=value (dans un traitement par lots)<br />
Dans notre cas, seules fonctionneront les 2 premières solutions.<br />
Utilisation<br />
Connexion SYSDBA<br />
Chaque utilisateur des groupes ORA_DBA ou ORA__DBA peut se connecter en<br />
interne sans mot de passe. Cette possibilité est utile pour la création des bases de données,<br />
des traitements par lots, etc. L’administrateur Windows peut inclure dans ce groupe<br />
certains utilisateurs interrogés.<br />
Depuis Oracle9i, l’authentification "as SYSDBA" s’effectue avec la commande suivante :<br />
sqlplus “/ as sysdba”<br />
SQL>Connected.<br />
Avant Oracle9i, la commande équivalente était :<br />
F:\>svrmgrl<br />
SVRMGR> connect internal<br />
Connected.<br />
Remarque :<br />
Pour les utilisateurs NT qui ne sont pas inclus dans ces groupes, il existe tout de même une<br />
possibilité de se connecter "as SYSDBA". Un fichier de mot de passe est alors exigé, et le<br />
paramètre REMOTE_LOGIN_PASSWORDFILE doit être défini comme "exclusif" ou<br />
"partagé" dans le fichier init.ora.
Connexion en tant qu’utilisateur défini en externe<br />
Pour être autorisé à se connecter ainsi, l’utilisateur doit être créé dans la base de données<br />
avec une syntaxe spécifique :<br />
Create user “\”<br />
identified externally…..;<br />
Le nom de l'utilisateur doit être écrit en majuscules.<br />
os_authent_prefix est un paramètre init.ora.<br />
Exemple :<br />
Avec os_authent_prefix=”OS$”<br />
Sqlplus system/manager<br />
Create user “OS$TRIVADIS\KBE” identified externally<br />
Default tablespace USERS<br />
Temporary tablespace TEMP;<br />
Quelques remarques<br />
Je recommande de définir le paramètre remote_os_authent comme faux (false) dans le<br />
fichier init.ora ; sinon, le DBA peut créer un intervalle de sécurité.<br />
J’ai mentionné précédemment que tous les tests ont été réalisés sous la version 8.1.7. Sous<br />
la version 8.1.6, la fonctionnalité du chapitre 3.1 ne s’exécute pas.<br />
La connexion "as SYSDBA" sans mot de passe n’est possible que sous la condition suivante<br />
: si l’utilisateur NT est membre du groupe ORA_DBA ou ORA__DBA. Ces groupes<br />
doivent être des groupes locaux pour le serveur NT et la station de travail NT, et former un<br />
groupe domaine pour le contrôleur de domaine principal (PDC) et le contrôleur de<br />
domaine de sauvegarde (BDC).<br />
Conclusion<br />
Bien que la solution de ce problème semble relativement facile, la connexion interne sous<br />
Windows a déjà perturbé bon nombre de DBA parfaitement expérimentés. Le fait qu'aucun
ORA_DBA ne soit créé sur un contrôleur de domaine de sauvegarde peut ainsi empêcher<br />
l’utilisation d’une connexion interne. Si vous rencontrez des difficultés de ce genre,<br />
j’espère que ce document vous aidera à vous connecter sans mot de passe.<br />
<strong>Trivadis</strong> AG E-mail : kalled.belkacem@trivadis.com<br />
Kalled Belkacem<br />
Kanalstrasse 5 Tél. : +41 1 808 70 20<br />
8152 Glattbrugg Fax : +41 1 808 70 21<br />
Internet : http://www.trivadis.com