Как решить ORA-01031: ошибка недостаточных прав при установке Windows?

12

Я установил Oracle 11G на моем Windows 2008 R2 Server. Я также установил клиентские библиотеки Oracle, используя отдельный установочный носитель. После установки клиента, когда я пытаюсь войти в базу данных, используя:

C:\>sqlplus / as sysdba

Я получаю следующую ошибку:

ORA-01031: недостаточные привилегии

Это работало до установки клиента. Мой аккаунт в ORA_DBAгруппе. Моя учетная запись также находится в группе администраторов. Я не ORACLE_SIDустановил в своем списке переменных среды. Это должно быть? Это работало до установки клиента, и у меня не было этой переменной в то время.

UAC включен на самом низком уровне, и я всегда работаю cmdкак администратор.

У меня есть такой sqlnet.oraфайл в папке:

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

Из реестра Windows (используя regedit), по пути Computer > HKEY_LOCAL_MACHINE > SOFTWARE > Wow6432Node > ORACLEя могу найти два ключа:

KEY_OraClient11g_home1
KEY_OraDb11g_home1

И под этими ключами я могу найти ORACLE_HOMEпеременные. Так что похоже, что клиентская установка сгенерирована ORACLE_HOMEтак, что у меня теперь две ORACLE_HOMEс. Я не знаю, имеет ли это какое-то отношение к этой проблеме?

Как устранить эту ошибку на моем компьютере с Windows?

jrara
источник

Ответы:

7

Проблема в том, что ваша установка Oracle Client находится в системной переменной PATH до установки Oracle Server (фактически вы даже упоминаете, что она работала до установки клиента).

Действуйте следующим образом:

  1. Удалите клиент Oracle, так как это только сбивает с толку. Используйте параметр удаления, но после этого проверьте, что каталог и раздел реестра Oracle Client пропали, и удалите его вручную, если это необходимо.

    (Можно заставить это работать, если клиент Oracle находится дома по пути после сервера, но гораздо проще просто выполнить однократную установку. В любом случае установка сервера Oracle уже содержит полный клиент Oracle).

  2. Убедитесь, что путь к дому сервера находится в вашем PATH. И никакой другой дом Оракула не на пути.

  3. Убедитесь, что ваш аккаунт входит в группу ORA_DBA. Проверьте это дважды, особенно если вы используете домены.

  4. Если ничего не SQLNET.AUTHENTICATION_SERVICES=(NTS)помогает , вы можете удалить его из sqlnet.ora, так как это заставит вас использовать аутентификацию по паролю.

Колин т Харт
источник
Помогли мне поставить корзину OracleXE перед корзинами клиента в PATH
mmey
моя проблема была SQLNET.AUTHENTICATION_SERVICES = (NONE) вместо NTS
jcho360
0

У меня на ноутбуке установлены 10g и 11g, а также OBIEE клиент. Я имел обыкновение входить в систему как sysdb для экземпляра 11g, но получил следующее утро:

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

Я решил проблему, выполнив следующие действия:

  1. запуск db & listener;
  2. убедитесь, что tnsname работает tnsping orcl; тогда
  3. set ORACLE_SID=orcl
  4. sqlplus sys/"passwd"@orcl as sysdba

Надеюсь это поможет.

user57255
источник