能直接用ALTER USER改密码,前提是能以sqlplus /nolog→conn / as sysdba本地登录;若连不上,则需用orapwd重建密码文件并重启实例。
能直接用 ALTER USER 改密码,但前提是能连上数据库
如果你还能以 / as sysdba 方式本地登录(即数据库服务端本机、oracle 用户或 windows 管理员身份运行 cmd),那最简单:启动 sqlplus /nolog → conn / as sysdba → 执行两条命令即可:
ALTER USER sys IDENTIFIED BY <new_password>;</new_password>ALTER USER system IDENTIFIED BY <new_password>;</new_password>
注意:SYS 密码改完后,下次必须带 as sysdba 才能生效,比如 sqlplus sys/<new_password> as sysdba</new_password>;只写 sqlplus sys/<new_password></new_password> 会报 ORA-01017。SYSTEM 没这个限制,改完就能直接 conn system/<new_password></new_password>。
orapwd 不是改密码,是重建密码文件,漏参数就静默失败
当你连不上数据库(/ as sysdba 都失败),说明操作系统认证也失效了——这时得换密码文件。但 orapwd 不是“修改工具”,它只覆盖生成新文件,且必须一次给全关键参数:
- 必须指定
file=,例如file=%ORACLE_HOME%\database\PWDorcl.ora(Windows)或file=$ORACLE_HOME/dbs/orapworcl(Linux);路径含空格或中文会解析失败 - 必须指定
password=,这个值只设SYS用户的新口令,不影响SYSTEM -
force=y可跳过“文件已存在”报错OPW-00002,但 Windows 下常因文件锁失效;更稳的是先手动重命名原PWD*.ora文件再执行 - 漏掉
file或password,会报OPW-00001: invalid argument或静默退出——没提示≠成功
执行完别忘了重启 Oracle 实例,否则新密码文件不加载。
Windows 下不以管理员身份运行 CMD,orapwd 必然失败
orapwd 要往 %ORACLE_HOME%\database\ 写文件,而该目录在 Windows 默认受保护。普通 CMD 启动会卡在“拒绝访问”,或生成 0 字节空文件,看着像成功实则无效。
必须右键“命令提示符” → “以管理员身份运行”,再执行。验证方法:执行后检查目标路径下 PWD*.ora 文件大小是否 > 0,且修改时间是否更新。
改完密码后仍连不上?大概率是没重启实例或角色写错
常见卡点不是命令输错,而是环境细节被忽略:
- 改完
orapwd没重启 OracleService服务,旧密码文件还在内存里 - 登录时写成
sqlplus sys/<pwd> as sys dba</pwd>(多空格)或as sysdba拼错,导致认证降级为普通用户模式 - Linux 下没切到
oracle用户,或ORACLE_SID、ORACLE_HOME环境变量未设置,orapwd生成的文件位置错误 - Oracle 12c+ 使用容器数据库(CDB),
ALTER USER需确认当前连接的是 CDB$ROOT 还是 PDB——在 PDB 里改不了 CDB 级的SYS
最省事的验证链:重启服务 → sqlplus /nolog → conn / as sysdba → show con_name 确认上下文 → 再执行 ALTER USER。











