能重置,但需分两种情况:能本地免密登录时直接ALTER USER改密码;/ as sysdba失效时须用orapwd重建密码文件并重启实例,缺一不可。

能重置,但必须分两种情况处理:一种是你还能本地免密登录数据库,另一种是连 / as sysdba 都失败了。前者直接改密码就行;后者得重建密码文件并重启实例,漏一步都不行。
还能用 sqlplus / as sysdba 登录时,直接执行 ALTER USER
这是最常见也最省事的场景——你人在数据库服务器本机,且是 oracle 用户(Linux)或管理员(Windows),sqlplus / as sysdba 能成功连接。
-
ALTER USER sys IDENTIFIED BY <new_password>必须带as sysdba才能生效,下次登录得写全:sqlplus sys/<new_password> as sysdba;只写sqlplus sys/<new_password>会报ORA-01017 -
ALTER USER system IDENTIFIED BY <new_password>没这个限制,改完就能直接conn system/<new_password> - 密码策略在 19c 默认启用:至少 8 位,含大小写字母、数字、特殊字符;输错会报
ORA-28003,不是语法错
连 / as sysdba 都被拒绝,说明密码文件失效,得用 orapwd
这时操作系统认证已不可用,必须重建密码文件。注意:orapwd 不是“修改工具”,它只覆盖生成新文件,参数缺一不可,且 Windows 下权限卡得死。
- 必须指定
file=:Linux 是$ORACLE_HOME/dbs/orapw<ORACLE_SID>,Windows 是%ORACLE_HOME%\database\PWD<ORACLE_SID>.ora;路径含空格或中文会静默失败 - 必须指定
password=:这个值只设SYS用户的新口令,不影响SYSTEM;别指望它批量改多个用户 - Windows 下必须右键 CMD → “以管理员身份运行”,否则写入失败,生成 0 字节空文件,看着像成功
- 执行完别忘了重启 Oracle 实例(
shutdown immediate+startup),否则新文件不加载
改完还是连不上?重点检查这几个硬性条件
绝大多数失败不是命令输错,而是环境细节被跳过:
- 登录时写成
sqlplus sys/<pwd> as sys dba(中间多空格)或拼错as sysdba,导致降级为普通用户认证,必然ORA-01017 - Linux 下没切到
oracle用户,或ORACLE_SID、ORACLE_HOME环境变量没设对 - Windows 下改完密码文件但没重启
OracleService<ORACLE_SID>服务,旧文件还在内存里 -
orapwd执行后检查目标路径下文件大小是否 > 0,修改时间是否更新——这是唯一靠谱的验证方式
真正麻烦的从来不是命令本身,而是路径、权限、服务状态这些“看不见”的依赖。每一步都得眼见为实,不能靠回车成功就以为完事了。


















