oracle跨库查询

目录

一、同主机—同库(即同实例)—不同用户

oracle查询语法

二、同主机—不同库

三、不同主机


一、同主机—同库(即同实例)—不同用户

基本信息:

本机上有1个库(实例)叫orcl,有2个用户user1、user2。user1里面有u1_table_student表,user2里面有u2_table_class表

查询需求:

登录user1用户,查询时需要join关联u2_table_class的表

oracle查询语法

第一步:创建连接引用

创建连接引用语法:

CREATE PUBLIC DATABASE LINK db_link_连接名字(自定义) CONNECT TO 用户名 IDENTIFIED BY 密码 USING '(DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST =127.0.0.1)(PORT =1521 ))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = 数据库实例名)

    )

  )';


创建连接引用例子:

CREATE PUBLIC DATABASE LINK db_link_class CONNECT TO user2 IDENTIFIED BY 

user2的密码 USING '(DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST =127.0.0.1)(PORT =1521 ))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = orcl)

    )

  )';

第二步:在查询时通过连接引用,连接到其他用户的表

语法:

SELECT * from 用户名.表名@db_link_连接名字;


例子:

SELECT stu.*, clz.className 

from user1.u1_table_student stu

left join user2.u2_table_class@db_link_class clz

on clz.sid=stu.sid

二、同主机—不同库

基本信息:

本机上有2个库(实例)分别叫orcl1、orcl2,有orcl1有用户user1,orcl2有用户user2。user1里面有u1_table_student表,user2里面有u2_table_class表

查询需求:

登录user1用户,查询时需要join关联u2_table_class的表

mysql跨库查询语法:

select stu.*,clz.className

from

orcl1.student as stu 

left join

orcl2.class as clz on stu.sid=clz.sid;

oracle跨库查询语法:

创建连接引用:

CREATE PUBLIC DATABASE LINK db_link_class CONNECT TO user2 IDENTIFIED BY 

user2的密码 USING '(DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST =127.0.0.1)(PORT =1521 ))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = orcl2)

    )

  )';


例子:

SELECT stu.*, clz.className 

from user1.u1_table_student stu

left join user2.u2_table_class@db_link_class clz

on clz.sid=stu.sid

三、不同主机

基本信息:

本机上有1个库(实例)叫orcl1、192.168.2.33上有1个库(实例)叫orcl2,orcl1有用户user1,orcl2有用户user2。user1里面有u1_table_student表,user2里面有u2_table_class表

查询需求:

登录user1用户,查询时需要join关联u2_table_class的表

oracle跨库查询语法:

创建连接引用:

CREATE PUBLIC DATABASE LINK db_link_class CONNECT TO user2 IDENTIFIED BY 

user2的密码 USING '(DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.33)(PORT =1521 ))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = orcl2)

    )

  )';


例子:

SELECT stu.*, clz.className 

from user1.u1_table_student stu

left join user2.u2_table_class@db_link_class clz

on clz.sid=stu.sid

你可能感兴趣的:(oracle,oracle,数据库)