首页 > 技术文章 > 数据库服务名、数据库实例名、网络服务名

dingding0505 2014-05-20 12:08 原文

 
 

oracle8i以后,数据库实例要建立两个名字:数据库服务名、数据库实例名。(oracle8i以前只有数据库实例名)

在新建一个数据库时,数据库服务名可以相同,数据库实例名必须唯一,所以会出现一个数据库服务名下可以有多个数据库实例的情况。

数据库网络服务名是提供给网络上的其他机器分布式调用的。
比如用plsql连接数据库时,选择的数据库就是数据库网络服务名。它是在oracle的tnsnames.ora中配置。

一旦配置好了外部网络就可连接使用这个数据库了。如下有几种配法,其中MYORCL就是对外提供的网络服务名:
1.  MYORCL =
       (DESCRIPTION =
       (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
       (CONNECT_DATA =
         (SERVER = DEDICATED)
         (SERVICE_NAME = orcl) //数据库服务名
         (SID = orcl) //如果就一个实例,这行可以不写(默认就这个)。如果多个实例请指定具体的数据库实例名。
       )
     )
  这种方法用于oracle8i以上版本。因为这里用到了数据库服务名SERVICE_NAME = orcl。
  而oracle8i以下版本是没有数据库服务名SERVICE_NAME的。

2.  MYORCL =
       (DESCRIPTION =
       (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
       (CONNECT_DATA =
         (SID = orcl)
       )
     )
   这种方法用于oracle8i以下版本。同时oracle8i以上版本也兼容这种配置方法。


所以只要有一个oracle的客户端,在客户端的tnsnames.ora文件中配置好要操作的数据库,就可以在本地对远程数据库进行数据导入、导出等任何操作了。

比如:
导入远程一个oracle数据库的dmp数据文件:
IMP username/password@myorcl FILE=jjjg.DMP IGNORE=Y FULL=Y
其中的@之后的myorcl应是网络服务名。即自己本地机器oracle客户端的tnsnames.ora文件中配置的网络服务名。

推荐阅读