ORA-01031: insufficient privileges sur SYS AS SYSDBA remote

Musée des erreurs, scripts et trucs Ajouter un commentaire

(user SYS : remote connection failure or remote authentication failure)

Il est possible avec Oracle de se connecter SYSDBA à distance…mais pas toujours ;-) :

SQL> connect sys/monpassword@base_distante as sysdba
ERROR:
ORA-01031: insufficient privileges
Warning: You are no longer connected to ORACLE.

Il faut 3 conditions pour pouvoir faire une authentification a distance (remote authentication) :

  • un fichier de mot de passe (password file)
  • l’autorisation de s’authentifier ( REMOTE_OS_ATHENT=TRUE)
  • la déclaration du password file ( REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE …ou SHARED )

Attention : cette authentification à distance d’un user très privilégié, en fait le + privilégié  (équivallent à SYS) est fortement déconseillée pour des raisons de sécurité.

Le password file d’Oracle est créé avec un utilitaire : orapwd

A sa création le user SYS est par défaut ajouté dans le fichier, une fois que le fichier existe on peut y rajouter d’autres utilisateurs que SYS en utilisant la commande GRANT SYSDBA

– exemple minimal

$> orapwd password=mypassword
– par défaut le fichier créé est  <$ORACLE_HOME>/dbs/orapwd<$ORACLE_SID>
– et plus tard on rajoute un user
SQL> GRANT SYSDBA TO SCOTT;

Attention !!!!!!!!!!!!!!!!!! si on créé un fichier ailleurs (avec le parametre ‘file=’ la commande orapwd s’execute correctyement …et Oracle sera incapable de retrouver le fichier au démarrage !!!!!!!!!! ou si on ne redémarre pas on aura tjs l’erreur ORA-03113
Pas de FILE ici donc un nom par defaut si echoue on n’a aucune erreur !!!

On peut éventuellement s’en apercevoir si on fait un GRANT SYSDBA :
SQL> grant sysdba to sys;
grant sysdba to sys
*
ERROR at line 1:
ORA-01994: GRANT failed: password file missing or disabled

Syntaxe complete de orapwd :

Usage: orapwd file=<fname> password=<password> entries=<users> force=<y/n> nosysdba=<y/n>

where
file - name of password file (mand),le nom et l’emplacement du fichier, c’est faux ce n’est pas obligatoire, au contraire  !
password - password for SYS (mand),
entries - maximum number of distinct DBA, nb max de DBA dans le fichier
force - whether to overwrite existing file (opt), écrase le fichier existant
nosysdba - whether to shut out the SYSDBA logon (opt for Database Vault only).,

Il est possible de vérifier les users enregistrés dans le password file grace a la vue v$pwfile_users :

SQL> select * from v$pwfile_users;
USERNAME                       SYSDB SYSOP
SYS                            TRUE  TRUE

Faire un commentaire