ORA-01017: 用户名/密码无效;登录被拒绝
总结
出现此错误的原因有多种:
您的用户名或密码实际上不正确
数据库配置不正确(tnanames.ora、 $ORACLE_SID 参数)
现在,我们来看看这个错误的解决方案。
ORA-01017 解决方案
有几种方法可以解决 ORA-01017 错误:
检查用户名和密码是否正确
这似乎是一个显而易见的步骤,但请确保您输入的用户名和密码正确。
如果您将它们存储在其他地方,请确保您正在查找正确的密码。
另外,请尝试手动输入用户名和密码,而不是复制和粘贴(反之亦然),以确保不存在回车或奇怪字符的问题。
Oracle 11g 密码区分大小写,因此请确保您的连接字符串符合此要求。
如果您要连接到 Oracle 11g 数据库,则密码区分大小写。
这是Oracle 11g 中引入的新功能。这是一个可以打开和关闭的数据库设置,但如果它打开,您将需要以不同的方式处理连接字符串。
要解决此问题,您可以在连接到数据库时在双引号内指定密码。
例如,如果您的密码是“DatabaseStar”,并且您正在连接到这样的数据库,您将收到错误消息:
CONN bob/databasestar;
要解决此错误,请在双引号中指定密码:
CONN bob/"DatabaseStar";
请注意注意目前使用的的数据库SID是否正确
若连到其他数据库实例,即使输入正确的账号密码也会出错
请检查数据库链接设置
如果您在运行查询时收到此错误,但您已经登录到数据库,则可能是因为您的查询使用数据库链接,并且数据库链接的连接详细信息不正确。
要检查数据库链接,您可以对其运行简单的查询以查看其是否有效。
然后,您可以检查连接字符串以确保用户正确,并且密码区分大小写(如果您使用的是 Oracle 11g 数据库)。
如果您连接到 Oracle 11g 数据库但从 10g 或更早版本运行查询,则区分大小写仍然适用。它与您要连接的数据库有关,而不是来自数据库。
使用前面的示例,如果您在连接字符串中将密码指定为 DatabaseStar,则会收到错误消息。
这是因为DatabaseStar的密码被转换为大写,即DATABASESTAR。然后根据 DatabaseStar 的存储值进行检查,发现有所不同。
要解决此问题,请将您的密码放在双引号内。
CONNECT TO order_database IDENTIFIED BY bob USING "DatabaseStar";
因此,请检查数据库连接字符串的这些内容。
检查您的 TNSNAMES.ORA 文件
您的 TNSNAMES.ORA 文件包含数据库的服务 ID 信息列表。
如果该文件中的信息不正确,您可能会收到此 ORA-01017 错误。
打开文件并检查此信息是否正确,例如服务名称和 ID。