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

几百个微服务的用户,都用了同一个用户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 看)。

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

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据