`

oracle创建database link

阅读更多

注:转自http://www.cnblogs.com/xd502djj/archive/2009/07/02/1515509.html,并对其中部分内容进行了修改及测试!

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 '

(DESCRIPTION  =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.130.38.19)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = CCPBS)
    )
';

 

Database link created.

格式:

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

注:此处如只写sid,则查询时会报“未找到远程数据库的连接说明”错误!,因此此处因填写完整的数据库地址!

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

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

删除 DROP PUBLIC DATABASE LINK ecbm_19;

global_name 设置为true,要求dblink_name 与远端数据库(目标数据库)的全局名一致, global_name=false 时,不要求相同 .
在设置高级复制 (Advanced Replication) 的时候特别要注意。

>alter system set global_names=false scope=both;

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics