数据管理DMS的跨库查询功能可便捷地对库表进行跨实例的关联查询。本文介绍开启DBLink及使用跨库查询的方法。

前提条件

数据库类型如下:
  • MySQL:RDS MySQLPolarDB MySQL版MyBase MySQLPolarDB分布式版AnalyticDB MySQL 3.0、其他来源MySQL
  • SQL Server:RDS SQL ServerMyBase SQL Server、其他来源SQL Server
  • PostgreSQL:RDS PostgreSQLPolarDB PostgreSQL版MyBase PostgreSQLAnalyticDB PostgreSQL版、其他来源PostgreSQL
  • PolarDB PostgreSQL版(兼容Oracle)
  • Redis
说明 仅支持物理库的跨库查询。
  • 物理库:具体的某个数据库。
  • 逻辑库:由单个或多个物理库配置而成,可便捷的进行分库分表的操作。更多信息,请参见逻辑库

使用场景

  • 跨实例查询
  • 异构数据库的关联查询

费用说明

该功能免费使用。

注意事项

仅支持在DMS中进行跨库查询,不支持在客户端或程序代码等其他端进行跨库查询。

步骤一:开启DBLink

说明 若实例已开启DBLink,请直接进行跨库查询操作。具体操作,请参见跨库查询

前提条件

  • 待开启DBLink的数据库实例的管控模式为安全协同。变更管控模式,请参见变更管控模式
  • 系统角色为DBA或管理员。查看系统角色的具体操作,请参见查看我的系统角色

注意事项

进行跨实例的数据查询,涉及的每个实例都需要开启DBLink。

  1. 登录数据管理DMS 5.0
  2. 在首页左侧的数据库实例列表中,右键单击目标数据库实例,在选项框中单击编辑实例
    说明 您还可以在顶部菜单栏中,选择数据资产 > 实例管理,选择目标数据库实例,编辑实例信息。
  3. 编辑实例对话框中,单击高级信息
  4. 选中开启DBLink复选框,输入DBLink名称。
    说明 DBLink名称有如下限制:
    • 由小写字母和下划线(_)组成。
    • DBLink名称需要在租户内保持全局唯一性。
  5. 单击保存

步骤二:跨库查询

  1. 登录数据管理DMS 5.0
  2. 在顶部菜单栏中,选择SQL窗口 > 跨库查询
  3. 确认您拥有目标数据库的访问权限。
    可视化操作区域各选项的含义:
    权限对象
    有权限:开启跨库查询功能且拥有访问权限的实例、数据库和表所在的数据库。管理员和DBA对所有实例都有访问权限。DBLink:符合条件的实例对应的DBLink列表。
    全部:该租户下所有开启跨库查询功能的实例或数据库。数据库:符合条件的数据库列表。

    查看是否有该库的访问权限

    在页面左侧的可视化操作区域,右键单击目标数据库,选择查看该库权限
    • 有权限:可进行下一步操作。
    • 没有权限:若没有该库的访问权限,您可根据下面的操作步骤申请权限。
      1. 单击申请库权限
      2. 权限申请对话框中,选中您需要的权限类型。2SQL窗口 垮库权限申请
      3. 期限列表中,选择您需要的权限期限。
      4. 权限类型文本框中,输入申请权限的原因、背景,减少审批流程中的沟通成本。
        说明 系统默认输入SQLConsole查询操作无权限,一键生成工单。
      5. 单击确认

      审批通过后,您会拥有该数据库的权限,可以进行下一步操作。

  4. 在SQL命令区域,输入跨库查询的SQL语句,单击执行
    示例SQL如下:
    SELECT *    
    FROM dblink1.db1.table1 t1,         
         dblink2.db2.table2 t2    
    where t1.id= t2.id;
  5. 在执行结果区域,查看SQL的执行结果。
    说明
    • 您还可以在安全与规范 > 操作审计中,查看跨库查询的操作日志。
    • 跨库查询最大返回行数默认100行,如果您想要查看更多数据,进入运维管理 > 配置管理,在参数跨库查询最大返回行数操作列中,单击编辑,设置跨库查询最大返回行数,允许设置的最大返回行数为3000行。
    • 如果您想要查询超过3000行的跨库查询数据,可以在任务编排中创建Spark SQL任务,将目标结果集写入一个新的临时表,然后对临时表进行单库查询。关于Spark SQL任务,请参见配置跨库Spark SQL节点