web-dev-qa-db-fra.com

Comment résoudre ORA-01031: erreur de privilèges insuffisants sur l'installation de Windows?

J'ai installé Oracle 11G sur mon serveur Windows 2008 R2. J'ai également installé les bibliothèques client Oracle à l'aide d'un support d'installation distinct. Après l'installation du client, lorsque j'essaie de me connecter à la base de données en utilisant:

C:\>sqlplus / as sysdba

J'obtiens une erreur suivante:

ORA-01031: privilèges insuffisants

Cela a fonctionné avant l'installation du client. Mon compte est sur le ORA_DBA groupe. Mon compte est également dans le groupe Administrateur. Je n'ai pas Oracle_SID défini dans ma liste de variables d'environnement. Est-ce que c'est obligé? Cela fonctionnait avant l'installation du client, et je n'avais pas non plus cette variable à ce moment-là.

UAC est activé au niveau le plus bas et j'exécute toujours cmd en tant qu'administrateur.

J'ai un sqlnet.ora fichier comme celui-ci dans le dossier:

C:\app\myaccount\product\11.2.0\dbhome_1\NETWORK\ADMIN

sqlnet.ora

# sqlnet.ora Network Configuration File: C:\app\myaccount\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.

# This file is actually generated by netca. But if customers choose to 
# install "Software Only", this file wont exist and without the native 
# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

tnsnames.ora

# tnsnames.ora Network Configuration File: C:\app\myaccount\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(Host = localhost)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(Host = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.mydb.com)
    )
  )

listener.ora

# listener.ora Network Configuration File: C:\app\myaccount\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (Oracle_HOME = C:\app\myaccount\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\myaccount\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(Host = localhost)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = C:\app\myaccount

Depuis le registre Windows (en utilisant regedit), depuis le chemin Computer > HKEY_LOCAL_MACHINE > SOFTWARE > Wow6432Node > Oracle Je peux trouver deux clés:

KEY_OraClient11g_home1
KEY_OraDb11g_home1

Et sous ces clés, je peux trouver Oracle_HOME variables. Il semble donc que l'installation cliente ait également généré Oracle_HOME de sorte que j'en ai maintenant deux Oracle_HOMEs. Je ne sais pas si cela a quelque chose à voir avec ce problème?

Comment résoudre cette erreur sur ma machine Windows?

12
jrara

Le problème est que votre installation Oracle Client est dans le système PATH avant votre installation Oracle Server (en fait, vous mentionnez même que cela a fonctionné avant d'installer le client).

Procédez comme suit:

  1. Supprimez le client Oracle car cela ne fait que semer la confusion. Utilisez l'option de désinstallation, mais vérifiez ensuite que le répertoire et la clé de registre Oracle Client ont disparu et supprimez-les à la main si nécessaire.

    (Il est possible de faire fonctionner cela en ayant le client Oracle home dans le chemin après le serveur home, mais il est beaucoup plus simple de n'avoir qu'une seule installation. Une installation de serveur Oracle contient déjà un client Oracle complet de toute façon ).

  2. Assurez-vous que le chemin d'accès à la maison du serveur se trouve dans votre CHEMIN. Et aucune autre maison Oracle n'est sur le chemin.

  3. Assurez-vous que votre compte est dans le groupe ORA_DBA. Vérifiez bien ceci, surtout si vous utilisez des domaines.

  4. Si tout le reste échoue, vous pouvez supprimer SQLNET.AUTHENTICATION_SERVICES=(NTS) de votre sqlnet.ora car cela vous forcera à utiliser l'authentification par mot de passe.

7
Colin 't Hart

J'ai à la fois 10g et 11g installés sur mon ordinateur portable, plus le client OBIEE le plus récemment. Avant, je pouvais me connecter en tant qu'instance sysdb à 11g, mais j'ai obtenu ce qui suit ce matin:

SQL> conn / as sysdba
ERROR:
ORA-01031: insufficient privileges

J'ai résolu le problème en procédant comme suit:

  1. démarrage db & listener;
  2. assurez-vous que tnsname fonctionne par tnsping orcl; puis
  3. set Oracle_SID=orcl
  4. sqlplus sys/"passwd"@orcl as sysdba

J'espère que cela t'aides.

0
user57255