以sys和服务器登录密码连接服务器上Oracle时出现了ora-01017的错误,在网上搜了,发现一片解释很好的博文,借以转载,方便大家学习,也方便自己以后回顾。南京OCP培训
转:今天在远程登录我们的外网Oracle服务器时出现ORA-01017: invalid username/password; logon denied错误,但是在本地登录时USERNAME,PASSWORD都是对的。在反复试验多次,并上网查询问题原因后,问题得到了解决:
在本地登录,修改SYS用户名(可以改成一样的),应用,在远程登录成功。
原因:
在数据库没有启动之前,数据库内建用户是无法通过数据库来验证身份的。
口令文件中存放sysdba/sysoper用户的用户名及口令,允许用户通过口令文件验证,在数据库未启动之前登陆,从而启动数据库。
如果没有口令文件,在数据库未启动之前就只能通过操作系统认证.
如果是远程sysdba登陆,需要通过passwordfile认证.
PFILE文件中有个参数remote_login_passwordfile 对passwordfile进行控制,当
remote_login_passwordfile=NONE时
停用口令文件验证,Oracle数据库不允许远程SYSDBA/SYSOPER身份登录,无法通过远程进行数据库起停等操作管理;南京OCP培训
remote_login_passwordfile=exclusive时
启用口令文件,允许远程登录;
remote_login_passwordfile = shared时
多个数据库可以共享一个口令文件,但是只可以识别一个用户:SYS;
当口令文件丢失时,用/NOLOG方式登录,通过orapwd重建口令文件来解决
如果口令文件丢失,可以使用orapwd可以重建口令文件,语法如下:南京OCP培训
[Oracle@jumper Oracle]$ orapwd
Usage: orapwd file=<fname> password=<password> entries=<users>
以EXCLUSIVE 方式启动以后,实例名称信息被写入口令文件.
此时如果有其他实例以Exclusive模式启动仍然可以使用这个口令文件,口令文件中的实例名称同时被改写.也就是说,数据库只在启动过程中才读取口令文件,数据库运行过程中并不锁定该文件,类似于pfile/spfile文件.南京Oracle培训
注意此时可以增加SYSDBA用户,并且这些信息可以被写入到口令文件.
一旦口令文件中增加了其他SYSDBA用户,此文件不再能够被其他Exclusive的实例共享.
实际上,口令文件对于其他用户来说就是启到了一个 sudo 的作用.
问题分析:
远程不能登录的原因其实还不清楚,因为Oracle的PFILE文件 remote_login_passwordfile=exclusive是对的,没有动过。产生问题的原因在于口令文件中记录的SYS用户口令于本地登录时用的口令不符了,问题是什么原因会导致本地登录的口令会与口令文件中记录不符呢?南京OCP培训
另记:Oracle用户初始口令:
internal/Oracle
sys/change_on_install
system/manager
scott/tiger
sysman/oem_temp