IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    oracle无感知修改应用用户密码

    Jimmy He发表于 2024-12-30 03:51:56
    love 0

    几百个微服务的用户,都用了同一个用户user1来连接数据库。如果要修改user1的用户,会导致几百个微服务都要在同一时间内重启,业务不太接受这种方式,业务希望用灰度的方式逐步切换。

    因此可以采用代理用户的方式来修改密码。

    大致步骤:
    (1)假如平时用的用户叫user1,创建代理用户 create user proxy_user1 identified by PASSWORD;
    (2)alter user uese1 grant connect throgh proxy_user1
    (3)应用【逐个切换】切换到代理代理用户proxy_user1,需要注意的地方,是连接方式修改了。 本来是 conn user1/passwd_of_user1,现在是要 conn proxy_user1[user1]/passwd_of_proxy_user1. 需要应用逐个修改连接方式。用代理用户的密码来登录。
    (4)全部应用的连接,切到代理用户之后,修改原来的user1的密码。
    (5)修改user1为新密码
    (6)应用逐个切回user1

    检查当前的连接,是否有使用代理用户(在v$session是看不到代理用户,只能看到被代理的用户,需要配合v$session_connect_info 看)。

    select s.sid, s.serial#, s.username, s.osuser, sci.authentication_type
    from   v$session s,
           v$session_connect_info sci
    where  s.sid = sci.sid
    and    s.serial# = sci.serial#
    and    sci.authentication_type = 'PROXY';

    不得不说,oracle还是挺强大,在别的数据库好像没这个功能。



沪ICP备19023445号-2号
友情链接