只要操作系统账户属于ORA_DBA(Windows)或dba(Linux/Unix)组,即可用sqlplus / as sysdba免密登录并直接修改sys/system密码,无需原密码或重启数据库;若失败则检查sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES配置,必要时用orapwd重建密码文件。

只要操作系统账户属于 ORA_DBA(Windows)或 dba(Linux/Unix)组,就能用 sqlplus / as sysdba 直接登录并修改 sys 和 system 密码——不需要原密码,也不用重启数据库。
用操作系统认证直接改密码最简单
这是绝大多数场景下首选方式。前提是:你有服务器本地管理员权限,且 Oracle 的认证方式启用了操作系统验证(默认开启)。
-
sqlplus /nolog→conn / as sysdba成功即说明可用 - 执行
alter user sys identified by 新密码;和alter user system identified by 新密码; - 注意:密码不能纯数字,不能以数字开头,否则报
ORA-00988 - 改完立刻生效,无需重启实例或重载监听
当 conn / as sysdba 失败时,检查 sqlnet.ora
如果连 / as sysdba 都被拒绝,大概率是 sqlnet.ora 里禁用了操作系统认证。
- 路径通常是
$ORACLE_HOME/network/admin/sqlnet.ora - 确认存在且未被注释的行:
SQLNET.AUTHENTICATION_SERVICES = (NTS)(Windows)或(BEQ)(Linux) - 若该行被删、注释或设为
NONE,就会强制走密码文件验证,此时必须用orapwd重建密码文件
密码文件损坏或丢失:用 orapwd 重建
仅当操作系统认证不可用,且你又忘了两个密码时才需要这步。它会覆盖原有密码文件,只重置 sys 口令(system 仍需后续用 sys 登录后手动改)。
管理和控制 macOS 系统功能。包括查看系统信息、管理进程、控制音量/亮度、 网络管理、电源管理、截图、剪贴板、Finder 操作等。当用户要求查看系统状态、 控制系统设置、管理进程、截图、调节音量亮度、查看网络信息、 关机重启睡眠等 Mac 系统操作时使用。
- 先停库:
shutdown immediate;再启动到nomount状态:startup nomount - 在命令行运行:
orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=新密码 entries=10 - Linux 下注意大小写:
orapw$ORACLE_SID文件名必须全小写,且$ORACLE_SID要实际替换 - 完成后
startup启库,再用sqlplus sys/新密码 as sysdba登录,接着改system
改完密码但登录仍免密?那是认证方式没变
改了 sys 密码后,sqlplus / as sysdba 还是不用输密码——这不是失败,是正常行为。Oracle 的操作系统认证优先级高于口令认证。
- 这意味着:只要你是
ORA_DBA或dba组成员,就永远能免密as sysdba - 真正生效的是远程连接或非 DBA 组用户的登录,比如
sqlplus sys/新密码@tns_alias as sysdba - 如果你希望彻底禁用 OS 认证,只能改
sqlnet.ora并重启监听+实例,但不推荐——会断掉所有本地 DBA 管理通道
最易忽略的一点:改密码前先确认当前实例名($ORACLE_SID),尤其是 RAC 或多实例环境;orapwd 命令里的文件名和 startup 时的实例名必须严格匹配,否则启动报 ORA-01078 或找不到参数文件。










