FAIRYFAR-INTERNAL
 
  FAIRYFAR-INTERNAL  |  SITEMAP  |  ABOUT-ME  |  HOME  
GPDB取消用户与资源组的关联

一、问题

GPDB删除资源组时,可能会报以下错误:

resource group is used by at least one role

snippet.sql
test=# DROP RESOURCE GROUP rgroup1;
ERROR:  resource GROUP IS used BY at least one ROLE

二、原因

被删除的资源组上关联了用户,需要将这些关联的用户全部移出。

三、解决方法

先查询资源组关联了哪些用户:

snippet.sql
tpch1s=# SELECT rolname, rsgname FROM pg_roles, pg_resgroup WHERE pg_roles.rolresgroup=pg_resgroup.oid;
 rolname |   rsgname   
---------+-------------
 gpadmin | admin_group
 user1   | rgroup1
(2 ROWS)

取消关联:

snippet.sql
test=# ALTER ROLE user1 RESOURCE GROUP NONE;
NOTICE:  resource GROUP required -- using default resource group "default_group"
ALTER ROLE
tpch1s=# SELECT rolname, rsgname FROM pg_roles, pg_resgroup WHERE pg_roles.rolresgroup=pg_resgroup.oid;
 rolname |   rsgname   
---------+-------------
 gpadmin | admin_group
 user1   | default_group
(2 ROWS)

注意:

一个用户必须关联到一个资源组,所以,当一个用户取消关联资源组时,实际上是迁移到了“缺省资源组”。所以,我们也可以通过将用户指定到其它资源组的方式来取消与当前资源组的关联。例如:

snippet.sql
test=# ALTER ROLE yz_role1 RESOURCE GROUP default_group;


打赏作者以资鼓励:
移动端扫码阅读: