






















当通过 Database Link 查询时,如果遇到 ORA-28001: the password has expired 错误,说明远程数据库上该链接使用的用户密码已经过期。处理思路分三步:远程库重置密码 → 本地库更新链接密码 → 调整策略防止再过期。
以 DBA 或有 ALTER USER 权限的身份登录远程数据库,确认状态并修改密码:
-- 检查用户状态和密码过期时间
SELECT USERNAME, ACCOUNT_STATUS, EXPIRY_DATE, PROFILE
FROM DBA_USERS
WHERE USERNAME = '远程用户名'; -- 改成实际的 DBLink 用户
-- 修改密码(同时会重置过期时间)
ALTER USER 远程用户名 IDENTIFIED BY "新密码";
-- 如果账户被锁定,一并解锁
ALTER USER 远程用户名 ACCOUNT UNLOCK;
如果因为密码已过期连
SQL*Plus都登不上,先用/ as sysdba登录再操作。
必须同步本地 DBLink 的密码,否则即使远程密码已更新,本地仍会因凭证错误而失败。
-- 私有 DBLink
ALTER DATABASE LINK 链接名
CONNECT TO 远程用户名 IDENTIFIED BY "新密码";
-- 公有 DBLink
ALTER PUBLIC DATABASE LINK 链接名
CONNECT TO 远程用户名 IDENTIFIED BY "新密码";
如果记得链接的具体定义,也可以删除重建:
DROP DATABASE LINK 链接名;
CREATE DATABASE LINK 链接名
CONNECT TO 远程用户名 IDENTIFIED BY "新密码"
USING '远程TNS名';
验证是否修复:
SELECT * FROM dual@链接名;
密码过期通常是因为用户的 PROFILE 中设置了 PASSWORD_LIFE_TIME。可以把该用户的密码设为永不过期(或延长至一个很长的周期)。
ALTER PROFILE 用户当前的PROFILE名 LIMIT PASSWORD_LIFE_TIME UNLIMITED;
CREATE PROFILE dblink_profile LIMIT PASSWORD_LIFE_TIME UNLIMITED;
ALTER USER 远程用户名 PROFILE dblink_profile;
修改 PROFILE 后,已经过期的用户不会自动恢复,需要重新改一次密码(即重复第 1 步)才会应用新的生命周期。
ALTER DATABASE LINK 权限;远程改密码需要 ALTER USER 权限。按上述步骤操作后,DBLink 密码过期的问题即可解决。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。