AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 124191
Accepted
RBarryYoung
RBarryYoung
Asked: 2015-12-21 13:42:40 +0800 CST2015-12-21 13:42:40 +0800 CST 2015-12-21 13:42:40 +0800 CST

为什么 SQL Developer 中的“作为 SYSDBA”不起作用?

  • 772

我是一名 SQL Server 开发人员/DBA 顾问,正在帮助一位最近失去 Oracle DBA 的客户。我在 Oracle 上做过开发,但没有太多 DBA 工作,而且在这样的多宿主环境中也没有。

问题: 我可以使用 SQL Plus 中的“SYS As SYSDBA”进行连接,但不能使用同一系统上的 SQL Developer 进行连接。但是,我可以使用“系统”与 SQL Plus或SQL Developer 进行连接。

细节:

在这台服务器上,在我的 Windows 管理员帐户中(在 Oracle Admin Asst 中也以服务器管理员身份输入),此 DOS 命令有效:

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

并且, Select * from V$INSTANCE 表明它在 MyDb 中,并且 tool 和 db 都是 11.2.0.3

这个也是:

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

(另外:输入错误的密码也可以(!))

使用相同(服务器、帐户和主页)中的 SQL-Plus 开始菜单选项,这些也可以工作:

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

Select * from V$INSTANCE 显示它在 MyDb 中,并且 tool 和 db 都是 11.2.0.3

尝试使用 SQL Developer 访问 MyDb,“system”用户名成功,但“sys”“as sysdba”失败,“ORA-01031:权限不足”。但是,这在连接到其他服务器上的其他数据库时确实有效。

我对此进行了研究,大多数已发布的帮助似乎都是针对根本无法建立连接的情况,而这里并非如此。只是为了避免其中一些:

  • 问题不在于没有设置网络,因为 SQL Developer 在本地和远程都适用于“系统”。
  • 问题不在于数据库/实例没有启动,因为它再次适用于“系统”
  • 不是我连接到错误的数据库,我检查了它的“系统”
  • AFAIK,这并不是说我在 SQL Developer 中使用错误的语法连接到数据库“作为 SYSDBA”,因为当我连接到其他数据库上的其他服务器时它可以工作。

我的直觉是

  1. 有一些设置显示“不允许 SYSDBA 通过网络连接”,或者
  2. Oracle 网络侦听器中存在一些配置/授权问题,阻止它检查我的 Windows 管理员帐户,此外,sys 密码不是我被告知的那样,最后 Oracle 给出了一个迟钝的错误消息。

对此的任何帮助或指导将不胜感激。


好的,所以使用@BalasPapp 的说明,我能够找到更多以下内容:

  • 该数据库由名为 OraDb11g_home3的第二个D:\Oracle\app\product\11.2.0\dbhome_1D:\Oracle\app\product\11.2.0\dbhome_1Oracle 11g 主目录提供服务,路径为.
  • Windows 服务没有显示它的启动参数(当然除了数据库名称)。
  • 该命令show parameter remote_login_passwordfile显示值“ EXCLUSIVE ”。

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

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)

的输出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>

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

适用于“系统,默认”,“sys,SYSDBA”失败,“权限不足”。我也尝试了许多操作系统身份验证和 Keberos 设置的组合,但无济于事。

最后,这些是目录中仅有的两个.ora文件/database:

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

它们似乎都是记事本中的二进制文件。

ALSO:select * from v$pwfile_users不返回任何行。

oracle oracle-11g
  • 1 1 个回答
  • 20166 Views

1 个回答

  • Voted
  1. Best Answer
    ik_zelf
    2017-02-17T02:00:40+08:002017-02-17T02:00:40+08:00

    要通过 sql*net 从客户端使用“as sysdba”进行连接,您需要

    1. remote_login_passwordfile 参数具有“独占”
    2. 您尝试连接的实例的密码文件 (orapw${ORACLE_SID})
    3. 让用户在数据库中授予 sysdba(sys 具有此默认值并使用 passwd 文件密码。

    密码文件的默认位置是 $ORACLE_HOME/dbs,但从 Oracle v12 开始,它也可以存储在 ASM 中。在这种情况下,您使用 srvctl 找到它

    • 2

相关问题

  • Oracle 中的数据库备份 - 导出数据库还是使用其他工具?

  • ORDER BY 使用文本列的自定义优先级

  • 舒服的sqlplus界面?[关闭]

  • 如何在数据库中找到最新的 SQL 语句?

  • 如何使用正则表达式查询名称?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve