Question

Je suis un développeur/consultant DBA SQL Server qui aide un client qui a récemment perdu son DBA Oracle.J'ai fait du développement sur Oracle, mais pas beaucoup de travail DBA, et pas dans des environnements multi-résidents comme celui-ci.

Le problème: Je peux me connecter en utilisant "SYS As SYSDBA" depuis SQL Plus, mais pas de SQL Developer sur le même système.Cependant, je peut connectez-vous en utilisant "système" avec SQL Plus ou Développeur SQL.

Détails:

Sur ce serveur, dans mon compte Admin Windows (également saisi en tant qu'administrateur du serveur dans Oracle Admin Asst.), cette commande DOS fonctionne :

D:\Oracle\app\product\11.2.0\dbhome_1\BIN>sqlplus /@MyDb as sysdba

et Select * from V$INSTANCE montre qu'il est dans MyDb et que l'outil et la base de données sont 11.2.0.3

Celui-ci aussi :

D:\Oracle\app\product\11.2.0\dbhome_1\BIN>sqlplus sys/<pwd>@MyDb as sysdba

(AUSSI:entrant le faux le mot de passe fonctionne aussi (!))

En utilisant l'option du menu Démarrer de SQL-Plus (serveur, compte et accueil), celles-ci fonctionnent également :

Enter user-name: /@MyDb as sysdba
Enter user-name: sys/<pwd>@MyDb as sysdba

Sélectionner * dans V$INSTANCE montre qu'il se trouve dans MyDb et que l'outil et la base de données sont 11.2.0.3

Tentative d'accès à MyDb à partir de la même chose avec SQL Developer, réussit pour le nom d'utilisateur "système", mais échoue pour "sys" "as sysdba" avec "ORA-01031 : privilèges insuffisants".Cependant, ceci fait fonctionner lors de la connexion à d’autres bases de données sur d’autres serveurs.

J'ai fait des recherches à ce sujet, et la plupart de l'aide publiée à ce sujet semble être destinée aux cas où aucune connexion ne peut être établie, ce qui n'est pas le cas ici.Juste pour éviter certains d'entre eux :

  • Le problème n'est pas que le réseau n'est pas configuré, car SQL Developer fonctionne pour le « système » à la fois localement et à distance.
  • Le problème n'est pas que la base de données/l'instance n'est pas démarrée, car encore une fois, cela fonctionne pour le « système »
  • Ce n'est pas que je me connecte à la mauvaise base de données, j'ai vérifié "système"
  • AFAIK, ce n'est pas que j'utilise la mauvaise syntaxe dans SQL Developer pour me connecter à une base de données "En tant que SYSDBA" car cela fonctionne lorsque je me connecte à d'autres serveurs sur d'autres bases de données.

Mon instinct est que soit

  1. il y a un paramètre qui dit "n'autorisez pas SYSDBA via une connexion réseau", ou
  2. il y a un problème de configuration/autorisation dans l'écouteur réseau Oracle qui l'empêche de vérifier mon compte administrateur Windows, et de plus, le mot de passe système n'est pas celui qu'on m'a dit, et finalement Oracle donne un message d'erreur obtus à ce sujet.

Toute aide ou conseil à ce sujet serait grandement apprécié.


OK, donc en utilisant les instructions de @BalasPapp, j'ai pu trouver davantage ce qui suit :

  • Cette base de données est gérée par le deuxième Accueil Oracle 11g appelé OraDb11g_home3 chemin vers D:\Oracle\app\product\11.2.0\dbhome_1D:\Oracle\app\product\11.2.0\dbhome_1.
  • Les services Windows ont montré Non paramètres de démarrage (sauf le nom de la base de données, bien sûr).
  • la commande show parameter remote_login_passwordfile affiche une valeur de "EXCLUSIF".

Contenu de Listener.ora :

# listener.ora Network Configuration File: D:\Oracle\app\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 = D:\Oracle\app\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\Oracle\app\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = <SERVERNAME>.<networkname>.local)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = D:\Oracle\app

Contenu de sqlnet.ora :

# 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)

La sortie de lsnrctl status:

D:\Oracle\app\product\11.2.0\dbhome_1\BIN>lsnrctl status

LSNRCTL for 64-bit Windows: Version 11.2.0.3.0 - Production on 23-DEC-2015 12:03:55

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<SERVERNAME>.<networkname>.local)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for 64-bit Windows: Version 11.2.0.3.0 - Production
Start Date                02-DEC-2015 16:25:41
Uptime                    20 days 19 hr. 38 min. 17 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   D:\Oracle\app\product\11.2.0\dbhome_1\network\admin\listener.ora
Listener Log File         D:\Oracle\app\diag\tnslsnr\<SERVERNAME>\listener\alert\log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<SERVERNAME>.<networkname>.local)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "<DBNAME>" has 1 instance(s).
  Instance "<DBNAME>", status READY, has 1 handler(s) for this service...
The command completed successfully

D:\Oracle\app\product\11.2.0\dbhome_1\BIN>

Paramètres lors de la connexion depuis SQL Developer :

Username:  system (or sys)
Password:  <...>
Connection 
  Type:    Basic
  Role:    Default (or SYSDBA)
Hostname:  localhost
Port:      1521
SID (or Service name, both work/fail the same):
           <dbname>

(Neither OS Authentication nor Kerberos is set)

Fonctionne pour « système, par défaut », échoue pour « sys, SYSDBA » avec « Privilèges insuffisants ».J'ai également essayé de nombreuses combinaisons de paramètres d'authentification du système d'exploitation et de Keberos, en vain.

Enfin, ce sont les deux seuls .ora fichiers dans le /database annuaire:

SNCF<DBNAME>.ORA           (18MB)
SPFILE<DBNAME>.ORA         (4kb)

Ils semblent tous deux être des fichiers binaires dans le Bloc-notes.

AUSSI: select * from v$pwfile_users ne renvoie aucune ligne.

Était-ce utile?

La solution

Pour vous connecter en utilisant 'as sysdba' à partir d'un client via sql*net, vous devez disposer du

  1. paramètre remote_login_passwordfile pour avoir « exclusif »
  2. fichier de mot de passe (orapw${ORACLE_SID}) présent pour l'instance à laquelle vous essayez de vous connecter
  3. demander à l'utilisateur d'accorder sysdba dans la base de données (sys a cette valeur par défaut et utilise le mot de passe du fichier passwd.

L'emplacement par défaut du fichier de mots de passe est $ORACLE_HOME/dbs mais depuis Oracle v12, il peut également être stocké dans ASM.Dans ce cas, vous le trouvez en utilisant srvctl

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top