Windows 7 x64下Oracle 11g XE数据库访问及登录故障求助
解决Oracle XE 11g执行修复步骤后ORA-01017登录失败的问题
我太懂这种按教程操作反而出岔子的郁闷了——明明没碰过密码,之前登录好好的,结果折腾完数据库找不到的问题后,反而连sqlplus都进不去了。别慌,咱们一步步来排查解决:
先通过操作系统认证绕过密码登录:
打开命令提示符(Windows)或终端(Linux),直接输入:sqlplus / as sysdba这个命令利用Oracle的本地操作系统认证机制,只要你是安装Oracle的系统用户或者属于dba组,就能直接以SYSDBA身份进入数据库,不用输密码。
检查并修复用户账户状态:
登录成功后,先查一下你常用的那个用户(比如SYSTEM、HR或者你自己创建的账户)的状态,执行这条SQL:SELECT username, account_status FROM dba_users WHERE username = '你的用户名';注意把
你的用户名换成实际的,而且要大写(Oracle用户名默认是大写存储的)。- 如果结果显示
LOCKED或者EXPIRED,说明账户被锁或者密码过期了,执行下面两条命令解锁并重置密码(密码可以设回你之前用的,只要符合Oracle的复杂度要求):ALTER USER 你的用户名 ACCOUNT UNLOCK; ALTER USER 你的用户名 IDENTIFIED BY 你的原密码; - 如果账户状态是
OPEN,那大概率是修复过程中密码的哈希值出了问题,直接执行上面的重置密码命令就行,哪怕用原来的密码,刷新一下哈希就能解决。
- 如果结果显示
检查sqlnet.ora配置是否被修改:
有时候修复步骤可能改了认证相关的配置文件,找到Oracle XE的安装目录:- Windows一般是
C:\oraclexe\app\oracle\product\11.2.0\server\network\admin - Linux一般是
/u01/app/oracle/product/11.2.0/xe/network/admin
打开sqlnet.ora文件,找到SQLNET.AUTHENTICATION_SERVICES这个参数: - 如果它的值是
NONE,会强制要求密码验证,连操作系统认证都用不了,改成(NTS)(Windows)或者(ALL)(Linux)就行。
修改完保存后,重启Oracle服务:Windows在服务列表里找OracleServiceXE右键重启;Linux执行sudo service oracle-xe restart。
- Windows一般是
最后测试登录:
退出sqlplus,用重置后的密码尝试登录,比如:sqlplus 你的用户名/你的密码或者先输入
sqlplus /nolog,再执行CONNECT 你的用户名/你的密码。
另外提醒一下:Oracle 11g默认对用户名是大小写不敏感的,但如果之前修改过SEC_CASE_SENSITIVE_LOGON参数开启了大小写敏感,那输入用户名和密码的时候要严格匹配原来的大小写哦。
内容的提问来源于stack exchange,提问作者FelipeFonsecabh
相关产品推荐
相关产品推荐

