跨数据库访问表
访问同一实例内的其它数据库
表名使用格式:dbname:tablename
访问。例如:
select * from testdb2:table1
跨实例(跨服务器)访问表
前提条件:两实例不可同名。
当前数据库实例所使用的SQLHOSTS文件内要有目标实例的配置。
sqlhosts文件在安装目录的/etc下
例如,有两台服务器不同的实例名,假设当前实例名为gbase1
实例名 | IP |
---|---|
gbase1 | 192.168.48.128 |
gbase2 | 192.168.48.130 |
则gbase1的SQLHOSTS文件内应有以下内容:
gbase1 onstctcp host(gbase1) port(gbase1) #当前实例配置
gbase2 onsoctcp host(gbase2) port(gbase2) #目标实例配置
示例:
gbase1 onstctcp 192.168.48.128 9088
gbase2 onstctcp 192.168.48.130 9088
如果两个实例不在同一台服务器上,需要配置互信。
在gbasedbt主文件夹下新建.rhosts文件,写入对方数据库的主机名(IP)与用户名
su - gbasedbt
vim ~/.rhosts
写入:host(ip) gbasedbt
;对方主机名,本机不需要写。
例如:192.168.48.128 gbasedbt #在130服务器中配置
192.168.48.130 gbasedbt #在128服务器中配置
可以使用dbaccess菜单工具直连对方数据库来进行测试,不输入用户名与密码
连接成功即为互信。
以上内容配置完成后,访问目标实例的表名使用以下格式:dbname@gbase2 :tablename
, 库名@实例名:表名
例如:
select * from testdb@gbase2:table1