使用OCI或SQL*Plus从客户端计算机以SYSDBA的身份连接到Oracle
我正在使用Instant Client 12.1.0.2.0,连接到12.1.0.1.0(Linux)服务器,配置为多租户 使用以下任一方法:使用OCI或SQL*Plus从客户端计算机以SYSDBA的身份连接到Oracle,oracle,sqlplus,oracle-call-interface,oracle12c,Oracle,Sqlplus,Oracle Call Interface,Oracle12c,我正在使用Instant Client 12.1.0.2.0,连接到12.1.0.1.0(Linux)服务器,配置为多租户 使用以下任一方法: SQL*Plus OCILogon2 OCIServerAttach+OCISessionBegin(OCI_RDBMS凭据,OCI_默认模式) 我可以使用SYSTEM从客户机连接到服务器上的PDB(使用EZCONNECT,完全没有环境变量)。例如 c:\>sqlplus system@'//host/pdb12c_1.domain.net'
- SQL*Plus
- OCILogon2
- OCIServerAttach+OCISessionBegin(OCI_RDBMS凭据,OCI_默认模式)
c:\>sqlplus system@'//host/pdb12c_1.domain.net'
SQL*Plus: Release 12.1.0.2.0 Production on Tue Oct 20 11:14:10 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Enter password:
Last Successful login time: Tue Oct 20 2015 11:10:10 +02:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> quit
但只要我将ASSYSDBA添加到命令行,它就会失败:
c:\>sqlplus system@'//host/pdb12c_1.domain.net' as SYSDBA
SQL*Plus: Release 12.1.0.2.0 Production on Tue Oct 20 11:14:22 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Enter password:
ERROR:
ORA-01017: invalid username/password; logon denied
我已经修改了我的OCI应用程序,使用OCI_SYSDBA作为OCISessionBegin的模式,它以同样的方式失败。我已经用SQL*Plus和我的OCI客户端应用程序尝试了SYSOPER,但它也以同样的方式失败
我错过了什么?对想要获得SYSDBA的连接有什么样的限制?这种模式在客户端机器上不可能吗?还是因为我连接的是PDB而不是CDB
我希望能有一些见解。谢谢
是的,我反复检查了一遍,密码输入正确了
c:>sqlplus system@'/host/pdb12c_1.domain.net'作为SYSDBA
您使用的是不正确的系统用户。您需要使用SYS
比如说,
C:\Users\lkb>sqlplus sys@pdborcl as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Tue Oct 20 15:11:25 2015
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>
如果是由于限制,您将得到不同的错误<代码>无效的用户名/密码错误非常具体,用户名-密码组合错误我在您的评论后再次尝试。如果没有SYSDBA那样的
,它就会工作,如果有它,它就会失败。正如上面所示。因此,我认为您不正确。您是否尝试过以下方法:sqlplus系统作为sysdba@'//host/pdb12c_1.domain.net“这清楚地表明我显示的语法是正确的。不过我试过你的,这就产生了帮助信息。包括is:{[/][@]|/}[AS{SYSDBA | SYSOPER | SYSASM | SYSBACKUP | SYSDG | SYSKM}][EDITION=value]
SYS如果没有您正在使用的SYSOPER/SYSDBA选项,系统将无法连接。使用SYS
。谢谢。您曾写道,没有SYSDBA/SYSOPER,SYS就无法连接,但这里适用的是,系统无法与SYSDBA/SYSOPER连接。换言之,SYSDBA/SYSOPER只能与SYS一起使用。对的(顺便说一句,当使用SYS作为SYSDBA时,我的OCI应用程序也可以工作。已解决!)这取决于您是否已将SYSDBA
授予用户,然后您可以将其作为SYSDBA连接。但是,请注意,SYS/SYSDBA是特殊的。它不是通用的。系统不需要SYSDBA,如果您尝试在没有SYSDBA的情况下连接SYS,则无法连接。这就是您的情况,您尝试在没有SYSDBA的情况下登录SYS,但登录被拒绝。您必须为SYS使用SYSDBA。谢谢,为了记录在案,我以SYSDBA的身份尝试了系统,而不是没有SYSDBA的SYS。Ok。如果您能够以SYSDBA身份登录系统,则意味着系统被授予了SYSDBA权限。