RDS PPAS由于没有对外开放超级用户,用户无法像线下使用PPAS那样使用superuser账号管理数据库对象。为此,我们推出了一组管理函数,帮助用户顺利使用云上PPAS的各种功能。

管理函数的使用规则

在云上的各类管理函数都要求用户使用 RDS 根账号来执行。RDS 根账号是分配实例时指定的管理账号,具有 createdb createrole login 权限。

  • 插件管理函数 rds_manage_extension。

    该函数帮助用户管理云上的插件,用户可以使用该函数创建和删除 PPAS 目前已经支持的插件。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    rds_manage_extension(operation text, pname text, schema text default NULL,logging bool default false)
      operation: create 或 drop
      pname:    支持的插件名
      schema:插件创建到的目标模式
      logging:插件创建时的日志信息
      目前支持的插件有:
      pg_stat_statements  
      btree_gin  
      btree_gist  
      chkpass  
      citext  
      cube  
      dblink  
      dict_int  
      earthdistance  
      hstore  
      intagg  
      intarray  
      isn  
      ltree  
      pgcrypto  
      pgrowlocks  
      pg_prewarm  
      pg_trgm  
      postgres_fdw  
      sslinfo  
      tablefunc  
      tsearch2  
      unaccent  
      postgis  
      postgis_topology  
      fuzzystrmatch  
      postgis_tiger_geocoder  
      plperl  
      pltcl  
      plv8  
      "uuid-ossp"  
      plpgsql
      oss_fdw
      举例:
      1 创建插件 dblink
          select rds_manage_extension('create','dblink');
      2 删除插件 dblink
          select rds_manage_extension('drop','dblink');
  • 当前连接会话 rds_pg_stat_activity()。

    该函数类似 pg_stat_activity 视图,返回用户相关的所有连接会话信息。

  • 查看慢 SQL 的函数 rds_pg_stat_statements()。

    该函数是视图 pg_stat_statements 的封装,目的是让用户查看自己权限范围内的慢SQL。

  • 性能分析函数。

    本组函数,类似 Oracle AWR 报告,提供给用户一组函数帮助用户分析目前 PPAS 实例的试试性能信息。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    1 rds_truncsnap()
      说明: 删除目前保存的所有快照。
      2 rds_get_snaps()
      说明: 获得目前保存的所有快照信息。
      3 rds_snap()
      说明:产生一个实时快照。
      4 rds_report(beginsnap bigint, endsnap bigint)
      制定一个初始快照变化和结束快照变化,产生基于快照的性能分析报告。
      举例:下面是一个通过产生快照生成性能分析报告的过程
      SELECT * FROM rds_truncsnap(); //删除之前保存的快照
      SELECT * from rds_snap();    // 产生一个快照
      SELECT * from rds_snap(); // 产生一个快照
      SELECT * from rds_snap(); // 产生一个快照
      SELECT * FROM rds_get_snaps(); //获取目前产生的快照ID: 1 2 3
      SELECT * FROM edbreport(1, 3); //根据快照产生一个性能分析报告
  • 终止会话函数。
    1
    2
    3
    4
    5
    rds_pg_terminate_backend(upid int)
      rds_pg_cancel_backend(upid int)
      该函数分别对应原生的 pg_terminate_backend 和 pg_cancel_backend,区别仅是他们无法操作 supueruser 建立的连接。
      举例:终止进程号为 123456 的会话
      select rds_pg_cancel_backend(123456);
  • VPD 函数。

    VPD 即 Virtual Private Database,是兼容 Package DBMS_RLS 的一种封装,参数完全相同。

    1
    2
    3
    1 rds_drop_policy 对应 DBMS_RLS.DROP_POLICY
      2 rds_enable_policy 对应 DBMS_RLS.ENABLE_POLICY
      3 rds_add_policy 对应 DBMS_RLS.ADD_POLICY

VPD 参考链接