Oracle 跨库 查询 复制表数据 分布式查询介绍

方法一:

在目前绝大部分数据库有分布式查询的需要。下面简单的介绍如何在oracle中配置实现跨库访问。
比如现在有2个数据库服务器,安装了2个数据库。数据库server a和b。现在来实现在a库中访问b的数据库。

第一步、配置a服务器端的tnsnames.ora文件(tnsnames.ora network configuration file),该文件存放的位置为:

$oracle_home/network/admin/tnsnames.ora

添加如下行,其中dblink为连接名(可自定义),host和port为数据库侦听的ip及端口,service_name为数据库的sid,

复制代码 代码如下:

mediadblink =

  (description =

    (address_list =

      (address = (protocol = tcp)(host = 10.0.0.1)(port = 1521))

    )

    (connect_data =

      (service_name = db)

    )

  )

第二步、在a服务器的一个库中建立b的一个数据的dblink。

语法如下:

执行如下查询语句,其中mediadb为database link名(可自定义),mediadblink为先前在tnsnames.ora中定义的连接名,
  dbuser为用户名,password为密码

复制代码 代码如下:

  — create database link

  create database link mediadb

  connect to dbuser identified by password

  using ‘mediadblink’;

第三步.使用链接的数据库 
  
  3.1 查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@database link名”,如
 
  select * from table_name@mediadb ;
 
  3.2 也可以为这个表创建一个同义词
 
  create synonym aaa for table_name@mediadb ;
 
  如下语句的效果和3.1中的一样
 
  select * from aaa;
 
  删除同义词的语句为
 
  drop synonym aaa;

select * from tabname@dcmdb where 1=1;

方法二:

首先创建数据库链接:

复制代码 代码如下:

create public database link 数据链名称 connect to 登陆用户名 identified by 密码 using ‘(description =

     (address_list =

       (address = (protocol = tcp)(host = 对方oracle服务器的ip地址)(port = 端口号))

     )

     (connect_data =

(service_name = 对方oracle服务器服务名)

     )

   )’

其中 数据链名称 为添加到本地oracle数据库控制台(oracle enterprise manager console)树节点的服务名
要查询对方数据库的表tablename语句如下:
select 字段名 from tablename@数据链名称;

复制表数据:

insert into 表名(字段名) (select 字段名 from tablename@数据链名称);

查看dblink:

select owner, db_link from dba_db_links;

删除:

drop database link dblink名称
drop public database link dblink名称

oracle密码的问题:

sql> create user aaa identified by 1;
create user aaa identified by 1
                              *
error 位于第 1 行:
ora-00988: 缺少或无效口令

sql> create user aaa identified by”1″;

用户已创建

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐