远程数据库连接 dblink

oracle建立dblink 

易混淆术语介绍: 

Db_name:对一个数据库(Oracle database)的唯一标识,该数据库为第一章讲到的Oracle database。这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这种命令数据库的方法给数据库的管理造成一定的负担,因为各个数据库的名字可能一样,造成管理上的混乱。为了解决这种情况,引入了Db_domain参数,这样在数据库的标识是由Db_name和Db_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。这类似于互连网上的机器名的管理。我们将Db_name和Db_domain两个参数用’.’连接起来,表示一个数据库,并将该数据库的名称称为Global_name,即它扩展了Db_name。Db_name参数只能由字母、数字、’_’、’#’、’$’组成,而且最多8个字符。 

Db_domain:定义一个数据库所在的域,该域的命名同互联网的’域’没有任何关系,只是数据库管理员为了更好的管理分布式数据库而根据实际情况决定的。当然为了管理方便,可以将其等于互联网的域。 

Global_name:对一个数据库(Oracle database)的唯一标识,oracle建议用此种方法命令数据库。该值是在创建数据库是决定的,缺省值为Db_name. Db_domain。在以后对参数文件中Db_name与Db_domain参数的任何修改不影响Global_name的值,如果要修改Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO <db_name.db_domain>命令进行修改,然后修改相应参数。

Service_name:该参数是oracle8i新引进的。在8i以前,我们用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即不必Service name 必须与SID一样。 

Net service name网络服务名,又可以称为数据库别名(database alias)。是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。 

 实例 就是管理相关库的内存结构的名字(由SGA、PGA、服务器进程、用户进程、后台进程等组成) 

  数据库 就是实际的磁盘上的文件(数据文件、日志文件、控制文件等),负责保存数据,但由对应的实例来操作它的数据 

  服务名 就是对外公布的名称,为网络监听服务 

  其实,在我们传统的概念里,数据库是一个统称的名字,在Oracle中,你可以把“数据库”理解成一个大概念,也要把它理解成一个小概念 
   

  1、一个Oracle数据库系统中可以同时安装几个数据库,每一个数据库对应一个唯 

  一的实例,但是OPS系统除外,可以多个实例同时对一个数据库操作,称为并行服务 

  器 

  2、只是一个名字,SID即是INSTANCE_NAME,SERVICE_NAMES主要用在监听器中, 

  为了方便吧,有些是为了传统习惯的延续,有些是为了更方便的使用 

  3、NET EASY CONFIG操纵的应该是主机字符串,是为客户端服务的 

  一个数据库可以对外公布多个服务名(SERVICE_NAMES) 

  一个客户端也可以用多个主机字符串连接到同一个数据库服务器上 

  4、一个OS上可以装多个Oracle数据库(小的概念),每个库可以对外公布多个服 务名,都通过init.ora和listener.ora来实现

 

----------------------------------------------------- 
1建立net 服务名 
linux下 进入 
cd $ORACLE_HOME/network/admin 
vi tnsnames.ora 
添加 
CCPBS_19 = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.130.38.19)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
      (SERVICE_NAME = CCPBS) 
    ) 
  ) 
保存 退出 然后测试下 
>tnsping ccpbs_19 

TNS Ping Utility for Linux: Version 9.2.0.7.0 - Production on 02-JUL-2009 15:16:52 
Copyright (c) 1997 Oracle Corporation.  All rights reserved. 
Used parameter files: 

Used TNSNAMES adapter to resolve the alias 
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.130.38.19)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = CCPBS))) 
OK (20 msec) 
测试成功 
Windows下的参见 http://article.pchome.net/content-340501.html 

2、创建数据库链接, 

/home/oracle/>sqlplus /nolog 
SQL*Plus: Release 9.2.0.7.0 - Production on Thu Jul 2 16:01:00 2009 
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved. 
SQL> conn /as sysdba 
Connected. 
进入系统管理员SQL>操作符下,运行命令: 
>create public database link ecbm_19 connect to ecbm_userName identified by ecbm_pwd using 'CCPBS_19'; 
Database link created. 
格式: 

create public database link link_name connect to user identified by password using 'SID'; 

则创建了一个连接到10.130.38.19 ccpbs上以ecbm_userName 用户的连接 

查询数据时带上@ecbm_19 就ok了 如select * from emp@ecbm_19; 

删除 DROP PUBLIC DATABASE LINK ecbm_19; 


 3、建立同义词,为了使有关分布式操作更透明,ORACLE数据库里有同义词的对象synonym 
   
  SQL>create synonym bjscottemp for emp@beijing ; 
   
  于是就可以用bjscottemp来替代带@符号的分布式链接操作emp@beijing。 
   
create public synonym poh for po_headers_all@erp_danzheng_test; 
create public synonym papf for per_all_people@erp_danzheng_test; 
create public synonym pv for po_vendors@erp_danzheng_test; 


 4、查看所有的数据库链接,进入系统管理员SQL>操作符下,运行命令: 
   
  SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';

你可能感兴趣的:(远程数据库连接 dblink)