四、Enable and Configure Cross-Database Access

4.1 启用跨租户数据库访问

在租户数据库之间的只读查询是支持的,但是缺省状态是不启用的。你必须要在系统数据库中启用这个功能,然后再配置两个数据库之间的通讯

Situation

租户数据库TN1需要访问租户数据库TN2下面的Table_A

Procedure

1.在系统数据库中启用cross_database_access

ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') 
set ('cross_database_access', 'enabled')='true' WITH RECONFIGURE;

 

2.配置源数据库和目标数据库

ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') 
set ('cross_database_access', 'targets_for_<source_db_name>')='<target_db1>[,<target_db2>...]' WITH RECONFIGURE;

NOTE:<source_db_name>是源数据库,<target_db1>是目标数据库,<source_db_name>从<target_db1>取数据

Example:

ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') 
set ('cross_database_access', 'targets_for_TN1')='TN2' WITH RECONFIGURE;

 

3.在目标数据库(TN2)中创建用户,并将这个用户与源数据库(TN1)的用户做一个映射

Example:

CREATE USER User_2 PASSWORD aA111111;

ALTER USER User_2 ADD REMOTE IDENTITY User_1 AT DATABASE TN1;

或者直接用一条语句替换

CREATE USER User_2 PASSWORD aA111111 WITH REMOTE IDENTITY User_1 AT DATABASE TN1;

 

4.将Table_A的查询权限赋给User_2

GRANT SELECT ON TABLE Table_A TO User_2 WITH GRANT OPTION;

 

5.在TN1中使用用户User_1查询TN2中表Table_A 的数据

4.2 使用跨租户数据库访问会遇到的问题

Situation 1
不支持多级租户数据库访问
 
Situation 2
 
涉及到多个租户数据库对象查询所生成的执行计划可能产生任意两个租户数据库之间的访问,例如上面的例子,DB2中的表需要与DB3中的表做关联,你就需要启用相关数据库之间的通信,解决方法如下图:
 
Situation 3
如果你在DB2中创建了一个依赖与DB3中表的view,当你删除了DB3的表并且重新创建了它,当你访问DB2中的view的时候依旧会报错(error message:invalidated view or invalidated procedure.),这个时候你需要重新创建view才能是view再次生效
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值