Pergunta

Sou um desenvolvedor SQL Server/consultor DBA que está ajudando um cliente que recentemente perdeu seu DBA Oracle.Fiz desenvolvimento em Oracle, mas não trabalhei muito como DBA, e não em ambientes multi-homed como este.

O problema: Posso me conectar usando "SYS As SYSDBA" do SQL Plus, mas não do SQL Developer no mesmo sistema.No entanto, eu pode conecte-se usando "sistema" com SQL Plus ou Desenvolvedor SQL.

Detalhes:

Neste servidor, na minha conta Admin do Windows (também inserida como administrador do servidor no Oracle Admin Asst.), este comando DOS funciona:

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

e, Select * from V$INSTANCE mostra que está em MyDb e que tanto a ferramenta quanto o banco de dados são 11.2.0.3

O mesmo acontece com este:

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

(TAMBÉM:entrando no errado a senha também funciona (!))

Usando a opção do menu iniciar do SQL-Plus do mesmo (servidor, conta e página inicial), eles também funcionam:

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

Selecionar * em V$INSTANCE mostra que está no MyDb e que a ferramenta e o banco de dados são 11.2.0.3

Tentativa de acessar o MyDb a partir do mesmo com o SQL Developer, é bem-sucedida para o nome de usuário "sistema", mas falha para "sys" "como sysdba" com “ORA-01031: privilégios insuficientes”.No entanto, isso faz funcionam ao conectar-se a outros bancos de dados em outros servidores.

Eu pesquisei isso, e a maior parte da ajuda postada parece ser direcionada a casos em que nenhuma conexão pode ser feita, o que não é o caso aqui.Apenas para evitar alguns destes:

  • O problema não é que a rede não esteja configurada, porque o SQL Developer funciona para o "sistema" local e remotamente.
  • O problema não é que o banco de dados/instância não foi iniciado, porque, novamente, funciona para "sistema"
  • Não é que eu esteja me conectando ao banco de dados errado, verifiquei se há "sistema"
  • AFAIK, não estou usando a sintaxe errada no SQL Developer para conectar-me a um banco de dados "Como SYSDBA" porque funciona quando me conecto a outros servidores em outros bancos de dados.

Minha intuição é que também

  1. há alguma configuração que diz "não permita SYSDBA através de uma conexão de rede", ou
  2. há algum problema de configuração/autorização no ouvinte da rede Oracle que o impede de verificar minha conta de administrador do Windows e, além disso, a senha do sys não é o que me disseram que era e, finalmente, a Oracle está fornecendo uma mensagem de erro obtusa para isso.

Qualquer ajuda ou orientação sobre isso seria muito apreciada.


OK, usando as instruções do @BalasPapp, consegui encontrar mais o seguinte:

  • Este banco de dados é atendido pelo segundo Home do Oracle 11g chamado OraDb11g_home3 com caminho para D:\Oracle\app\product\11.2.0\dbhome_1D:\Oracle\app\product\11.2.0\dbhome_1.
  • Serviços do Windows mostraram não parâmetros de inicialização para ele (exceto o nome do banco de dados, é claro).
  • o comando show parameter remote_login_passwordfile mostra um valor de "EXCLUSIVO".

Conteúdo do 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

Conteúdo do 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)

A saída 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>

Parâmetros ao conectar-se do 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)

Funciona para "sistema, padrão", falha para "sys, SYSDBA" com "privilégios insuficientes".Eu tentei muitas combinações de configurações de autenticação do sistema operacional e Keberos também, sem sucesso.

Finalmente, estes são os únicos dois .ora arquivos no /database diretório:

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

Ambos parecem ser arquivos binários no Bloco de Notas.

TAMBÉM: select * from v$pwfile_users não retorna nenhuma linha.

Foi útil?

Solução

Para conectar usando 'as sysdba' de um cliente via sql*net você precisa ter o

  1. Parâmetro remote_login_passwordfile para ter 'exclusivo'
  2. arquivo de senha (orapw${ORACLE_SID}) presente para a instância à qual você tenta se conectar
  3. faça com que o usuário conceda sysdba no banco de dados (sys tem esse padrão e usa a senha do arquivo passwd.

O local padrão para o arquivo de senha é $ORACLE_HOME/dbs, mas desde o Oracle v12 ele também pode ser armazenado no ASM.Nesse caso você encontra usando srvctl

Licenciado em: CC-BY-SA com atribuição
Não afiliado a dba.stackexchange
scroll top