Jak rozwiązać problem z ORA-01031: błąd niewystarczających uprawnień podczas instalacji systemu Windows?

12

Zainstalowałem Oracle 11G na moim systemie Windows 2008 R2 Server. Zainstalowałem także biblioteki klienta Oracle przy użyciu oddzielnego nośnika instalacyjnego. Po instalacji klienta, kiedy próbuję zalogować się do bazy danych przy użyciu:

C:\>sqlplus / as sysdba

Otrzymuję następujący błąd:

ORA-01031: niewystarczające uprawnienia

Działało to przed instalacją klienta. Moje konto jest w ORA_DBAgrupie. Moje konto znajduje się również w grupie Administrator. Nie ORACLE_SIDustawiłem na liście zmiennych środowiskowych. Czy to musi być? Działało to przed instalacją klienta, a ja również nie miałem tej zmiennej.

Kontrola konta użytkownika jest włączona na najniższym poziomie i zawsze działam cmdjako administrator.

Mam taki sqlnet.oraplik w folderze:

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

Z rejestru systemu Windows (przy użyciu regedit), ze ścieżki Computer > HKEY_LOCAL_MACHINE > SOFTWARE > Wow6432Node > ORACLEmogę znaleźć dwa klucze:

KEY_OraClient11g_home1
KEY_OraDb11g_home1

I pod tymi kluczami mogę znaleźć ORACLE_HOMEzmienne. Wygląda więc na to, że instalacja klienta również została wygenerowana, ORACLE_HOMEwięc mam teraz dwa ORACLE_HOME. Nie wiem czy to ma coś wspólnego z tym problemem?

Jak rozwiązać ten błąd na moim komputerze z systemem Windows?

jrara
źródło

Odpowiedzi:

7

Problem polega na tym, że instalacja Oracle Client znajduje się w systemie PATH przed instalacją Oracle Server (w rzeczywistości wspominasz nawet, że działała przed zainstalowaniem klienta).

Postępować w następujący sposób:

  1. Usuń klienta Oracle, ponieważ to tylko mylące rzeczy. Użyj opcji odinstalowania, ale następnie sprawdź, czy katalog i klucz rejestru Oracle Client zniknęły, i usuń je ręcznie, jeśli to konieczne.

    (Można to osiągnąć, utrzymując dom klienta Oracle na ścieżce po domu serwera, ale o wiele łatwiej jest mieć tylko jedną instalację. Instalacja serwera Oracle zawiera już kompletnego klienta Oracle).

  2. Upewnij się, że ścieżka do domu serwera znajduje się w ŚCIEŻCE. I żaden inny dom Oracle nie jest na drodze.

  3. Upewnij się, że twoje konto należy do grupy ORA_DBA. Sprawdź to dwukrotnie, szczególnie jeśli używasz domen.

  4. Jeśli wszystko inne zawiedzie, możesz usunąć SQLNET.AUTHENTICATION_SERVICES=(NTS)z pliku sqlnet.ora, ponieważ wymusi to użycie uwierzytelniania za pomocą hasła.

Colin 't Hart
źródło
Pomógł mi umieścić pojemnik OracleXE przed binami klienta w ŚCIEŻCE
mmey
moim problemem był SQLNET.AUTHENTICATION_SERVICES = (BRAK) zamiast NTS
jcho360
0

Mam na laptopie zarówno 10 g, jak i 11 g, a ostatnio także klienta OBIEE. Kiedyś mogłem się zalogować jako instancja sysdb do instancji 11g, ale otrzymałem następujące informacje rano:

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

Rozwiązałem problem, wykonując następujące czynności:

  1. startup db & listener;
  2. upewnij się, że tnsname działa przez tnsping orcl; następnie
  3. set ORACLE_SID=orcl
  4. sqlplus sys/"passwd"@orcl as sysdba

Mam nadzieję że to pomoże.

użytkownik57255
źródło