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文件中配置的网络服务名。