OceanBase学习之路43|如何删除不再使用的资源单元?

您可以删除不再使用的资源单元。

前提条件

删除资源单元前必须确保当前资源单元未被使用。如果资源单元正在被使用,则需要先将资源单元从资源池中移出后再删除资源单元。

在删除资源单元前,需要确认资源单元是否被使用,具体操作如下:

  1. 使用  root 用户登录数据库的  sys 租户。

  2. 执行以下语句,查看资源单元是否被指定资源池。

    示例如下:

     obclient> SELECT a.UNIT_CONFIG_ID, a.NAME FROM oceanbase.DBA_OB_UNIT_CONFIGS a,oceanbase.DBA_OB_RESOURCE_POOLS b WHERE b.UNIT_CONFIG_ID=a.UNIT_CONFIG_ID;
     +----------------+-----------------+
     | UNIT_CONFIG_ID | NAME            |
     +----------------+-----------------+
     |              1 | sys_unit_config |
     |           1001 | unit001         |
     |           1001 | unit001         |
     +----------------+-----------------+
     3 rows in set

根据查询结果,如果查询结果的  name 列中无该资源单元名称,则表示该资源单元未被指定给资源池;如果查询结果的  name 列中有该资源单元名称,则表示资源单元已被指定给资源池。

通过 SQL 语句删除资源单元

删除资源单元

  • 对于资源单元未被使用的场景

    如果资源单元未被指定给资源池,您可以直接执行以下语句,删除资源单元。示例语句如下:

    obclient> DROP RESOURCE UNIT unit1;

    注意

    使用  DROP RESOURCE UNIT 语句删除资源单元时,仅支持删除单个资源单元,不支持批量删除多个资源单元。

  • 对于资源单元正在被使用的场景

    如果资源单元已被指定给资源池,需要为原资源池指定新的资源单元后,再删除资源单元。

    示例如下:

    假设待删除的资源单元为  unit1unit1 被指定给了资源池  pool1,如果要移除资源单元  unit1,则需要先创建资源单元  unit2,并将  unit2 指定给  pool1 后,再删除  unit1

    obclient> CREATE RESOURCE UNIT unit2 MAX_CPU=4, MIN_CPU=4, MEMORY_SIZE='5G', MAX_IOPS=1024, MIN_IOPS=1024, IOPS_WEIGHT=0, LOG_DISK_SIZE='2G';
    obclient> ALTER RESOURCE POOL pool1 UNIT='unit2';
    obclient> DROP RESOURCE UNIT unit1;


请使用浏览器的分享功能分享到微信等