如何解决 ORA-01031:Windows 安装权限不足错误?

jra*_*ara 12 oracle windows installation

我在 Windows 2008 R2 服务器上安装了 Oracle 11G。我还使用单独的安装介质安装了 Oracle 客户端库。客户端安装后,当我尝试使用以下方法登录数据库时:

C:\>sqlplus / as sysdba
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ORA-01031: 权限不足

这在客户端安装之前有效。我的账号在ORA_DBA群里。我的帐户也在管理员组中。ORACLE_SID我的环境变量列表中没有设置。必须是吗?这在客户端安装之前有效,当时我也没有那个变量。

UAC 处于最低级别,我始终cmd以管理员身份运行。

sqlnet.ora在文件夹中有一个这样的文件:

C:\app\myaccount\product\11.2.0\dbhome_1\NETWORK\ADMIN
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

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)
    )
  )
Run Code Online (Sandbox Code Playgroud)

听者.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
Run Code Online (Sandbox Code Playgroud)

从 Windows 注册表(使用 regedit),从路径中Computer > HKEY_LOCAL_MACHINE > SOFTWARE > Wow6432Node > ORACLE我可以找到两个键:

KEY_OraClient11g_home1
KEY_OraDb11g_home1
Run Code Online (Sandbox Code Playgroud)

在这些键下,我可以找到ORACLE_HOME变量。所以看起来客户端安装也生成了,ORACLE_HOME所以我现在有两个ORACLE_HOMEs。不知道和这个问题有没有关系?

如何在我的 Windows 机器上解决此错误?

Col*_*art 7

问题是您的 Oracle 客户端安装在安装 Oracle Server 之前位于系统 PATH 中(实际上,您甚至提到它在安装客户端之前就可以工作)。

进行如下操作:

  1. 删除 Oracle Client,因为它只是令人困惑的事情。使用卸载选项,但随后检查目录和 Oracle 客户端注册表项是否已消失并在必要时手动删除。

    (可以通过将 Oracle 客户端主目录放在服务器主目录之后的路径中来使其工作,但仅进行单个安装要简单得多。无论如何,Oracle 服务器安装已经包含完整的 Oracle 客户端)。

  2. 确保服务器主目录的路径在您的 PATH 中。路径中没有其他 Oracle 主目录。

  3. 确保您的帐户在 ORA_DBA 组中。仔细检查这一点,特别是如果您使用域。

  4. 如果所有其他方法都失败了,您可以SQLNET.AUTHENTICATION_SERVICES=(NTS)从 sqlnet.ora 中删除,因为这将强制您使用密码身份验证。