我在 Fedora 19 上安装了 SQL*Plus 12.1,试图连接到 Oracle 11g 数据库。我从这里安装了 Instantclient RPM 软件包(basic、devel、sqlplus)。我可以使用 SQL*Plus 成功连接到其他 Oracle 数据库,因此我知道我已经安装了该软件。但是,当我尝试连接到这个特定的数据库时,我收到了这个错误:
ERROR:
ORA-01017: invalid username/password; logon denied
这是我的 tnsnames.ora 文件(主机和端口被混淆了):
PSPRODDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = #HOST-ADDR)(PORT = #PORT-NUM))
)
(CONNECT_DATA =
(SERVICE_NAME = PSPRODDB)
)
)
我的 TNS_ADMIN 环境变量设置为我的 tnsnames.ora 文件的路径。
我正在运行连接的命令:
sqlplus username/password@PSPRODDB
按下回车后,它会在版本和版权信息上挂起大约 2-3 秒,然后给我 ORA-01017 错误。
我知道我输入了正确的用户名和密码,因为我从另一个成功连接到数据库的应用程序中复制并粘贴了它。
编辑
我查看了 log.xml 文件(在 中C:\oracle\product\11.2.0\diag\tnslsnr\test\listener\alert\log.xml
),发现有一些条目表明我正在与正确的听众交谈。这是日志条目的示例,但对可能的敏感信息进行了混淆:
<msg time='2013-11-25T09:54:08.530-07:00' org_id='oracle' comp_id='tnslsnr'
type='UNKNOWN' level='16' host_id='PSTEST100-50'
host_addr='*my address*'>
<txt>25-NOV-2013 09:54:08 * (CONNECT_DATA=(SERVICE_NAME=PSPRODDB)(CID=(PROGRAM=sqlplus)(HOST=*localhost*)(USER=njones))) * (ADDRESS=(PROTOCOL=tcp)(HOST=*addr*)(PORT=38906)) * establish * PSPRODDB * 0
</txt>
</msg>
从那以后,我也尝试将 tnsnames.ora 文件中的 *SERVICE_NAME* 元素更改为SID,没有区别。
用引号包围我的密码也不能解决问题。
会不会是版本问题?我使用的是 Instantclient 和 sqlplus 12.1 版,但数据库是 11.2 版。
编辑 2
嗯,这是官方的。我是个白痴,这就是导致错误的原因。我输入了错误的密码,我猜我复制粘贴的内容也是错误的。