You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量修改Oracle Database 19c所有用户的密码?

批量修改Oracle 19c所有用户密码(开发测试环境)

操作步骤

1. 以SYSDBA身份登录数据库

打开终端执行命令:

sqlplus / as sysdba

2. 获取初始密码的哈希值(可选,精准匹配)

Oracle存储的是密码哈希而非明文,若仅需修改初始密码为password123的用户,先创建临时用户获取对应哈希:

CREATE USER temp_user IDENTIFIED BY password123;
SELECT password FROM dba_users WHERE username = 'TEMP_USER';
DROP USER temp_user;

复制输出的哈希值(格式类似S:9E8F6D...)备用。

3. 执行批量修改脚本

方案一:仅修改初始密码为password123的用户

将v_old_hash的值替换为上一步获取的哈希:

SET SERVEROUTPUT ON;
DECLARE
  v_old_hash VARCHAR2(100) := '替换为你的初始密码哈希';
BEGIN
  FOR rec IN (
    SELECT username 
    FROM dba_users 
    WHERE password = v_old_hash 
      AND account_status = 'OPEN'
      AND username NOT IN ('ANONYMOUS', 'XS$NULL') -- 排除无需修改的内置用户
  ) LOOP
    EXECUTE IMMEDIATE 'ALTER USER ' || rec.username || ' IDENTIFIED BY password456';
    DBMS_OUTPUT.PUT_LINE('已更新用户: ' || rec.username);
  END LOOP;
END;
/

方案二:修改所有已启用的用户(开发测试环境直接用)

如果不需要精准匹配初始密码,直接修改所有正常启用的用户:

SET SERVEROUTPUT ON;
BEGIN
  FOR rec IN (
    SELECT username 
    FROM dba_users 
    WHERE account_status = 'OPEN'
      AND username NOT IN ('ANONYMOUS', 'XS$NULL', 'MGMT_VIEW')
  ) LOOP
    EXECUTE IMMEDIATE 'ALTER USER ' || rec.username || ' IDENTIFIED BY password456';
    DBMS_OUTPUT.PUT_LINE('已更新用户: ' || rec.username);
  END LOOP;
END;
/

4. 验证修改结果

执行以下语句确认用户状态及密码更新情况:

SELECT username, account_status FROM dba_users WHERE account_status = 'OPEN';

重要提醒

  • 此操作仅适用于开发测试环境,生产环境严禁批量修改所有用户密码
  • 保留ANONYMOUS、XS$NULL等系统内置用户的密码,避免破坏数据库默认功能
  • 修改后务必同步新密码password456给所有相关开发测试人员

内容的提问来源于stack exchange,提问作者Majkl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 15:22:37