oracle数据库重置密码需先以操作系统管理员身份登录服务器,启用操作系统认证(检查sqlnet.ora和dba组权限),再通过sqlplus /nolog → conn / as sysdba登录,执行alter user system/sys identified by 新密码;若ora-01031报错,需检查remote_login_passwordfile参数、重建密码文件或修复注册表配置。
能直接重置,前提是必须登录数据库所在服务器的系统管理员账户(windows 的 administrator / linux 的 root 或 oracle 用户),且数据库未禁用操作系统认证。
确认数据库是否启用操作系统认证
Oracle 默认开启操作系统认证,但部分生产环境会手动关闭。检查关键配置:
-
sqlnet.ora文件中是否存在SQLNET.AUTHENTICATION_SERVICES = (NONE)—— 若存在,需临时注释掉并重启监听器 - Linux 下确认
oracle用户是否在dba组:id oracle,输出中必须含gid=... (dba) - Windows 下确认当前用户属于
ORA_DBA组(不是 Administrators 组就能自动认证)
用 / as sysdba 登录并修改密码
这一步失败基本等于权限或配置问题,不是命令写错:
- 打开终端(Windows 用 cmd,Linux/macOS 用 shell),确保以 oracle 用户(Linux)或 ORA_DBA 组成员(Windows)身份运行
- 执行
sqlplus /nolog,再输入conn / as sysdba—— 成功时显示Connected.,失败则报ORA-01031: insufficient privileges - 登录成功后,立即执行:
ALTER USER system IDENTIFIED BY newpass123;和ALTER USER sys IDENTIFIED BY newpass123; - 注意:密码不能纯数字,不能以数字开头,否则报
ORA-00988: missing or invalid password
如果 conn / as sysdba 报 ORA-01031
说明操作系统认证被拦截,常见原因和绕过方式:
- 数据库启用了密码文件但未正确配置:检查
remote_login_passwordfile参数是否为EXCLUSIVE(用SHOW PARAMETER remote_login_passwordfile查看) - 密码文件丢失或损坏:用
orapwd重建,例如 Linux 下:orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=newpass123 force=y - Windows 注册表项被改:检查
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_<home_name></home_name>下ORA_<sid>_AUTOSTART</sid>是否为FALSE,或SQLNET.AUTHENTICATION_SERVICES被设为(NONE)
真正卡住的地方往往不是 SQL 命令本身,而是你手头有没有数据库服务器的操作系统级访问权限——没有它,所有重置操作都无从谈起。











