ORACLE9i数据库名、实例名、服务名之间的关系
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ORACLE9i数据库名、实例名、服务名之间的关系
Yuechaotian 2007-08-31 Oracle中存在着这些容易混淆的名称:
数据库名
实例名
ORACLE_SID
服务名
域名
全局数据库名
在oracle7/8/9i/10g中都有数据库名和实例名,在9i和10g中又引进了三个新的数据库标识类参数:数据库域名(db_domain)、全局数据库名(global_dbname)和数据库服务名(service_names)。下面介绍一下这些名称的关系:
1.数据库名
用于区分一个数据库的内部标识,在安装数据库、创建新数据库、创建控制文件、修改数据库结构、利用RMAN备份时都需要使用数据库名。
存在于(但不仅限于)以下地方:
(1)以二进制方式存储在控制文件中。
(2)Pfile/spfile中:db_name
(3)数据库物理结构文件目录中
D:\oracle\oradata\db_name\*.*
D:\oracle\admin\db_name\*.*
查询方法:select name from v$database;
2.实例名
用于和操作系统进行联系。在操作系统中要取得与数据库之间的交互必须使用实例名。例如,要和某一个数据库服务器连接,则必须知道其数据库实例名,知道数据库名是没用的。在安装/创建数据库后,实例名允许修改的。
存在于(但不仅限于)以下地方:
(1)Windows nt/2000注册表中(oracle_sid)
(2)pfile/spfile中:instance_name
(3)数据库参数文件名中:init
查询方法:select instance_name from v$instance;
与数据库名的关系:一般是一一对应的,RAC中除外。
3.ORACLE_SID
细心的朋友可以发现,2.3中有个问题:2中讲的是instance_name,但
2.3存储的却是oracle_sid。
因为从名称上来说,instance_name=oracle_sid。对于数据库实例名的描述,有时使用instance_name,有时使用oracle_sid,这两个都是数据库实例名。但instance_name是oracle数据库参数,而oracle_sid是操作系统环境变量。
Oracle_sid用于和操作系统交互。也就是说,在操作系统中要想得到实例名,必须使用oracle_sid。例如同一服务器上创建了多个数据库,则就有多个对应的实例,可以通过在操作系统中设置oracle_sid指定要登录的数据库:$oracle_sid=orcl
$export oracle_sid
C:\>set oracle_sid=orcl
存在于(但不仅限于)以下地方:
(1)Windows nt/2000注册表中(oracle_sid)
(2)数据库参数文件名中:init
实例名除用于和操作系统联系外,还用于网络连接,即与客户端或其他服务器之间的连接。配置网络连接,就是配置网络连接串。
例如登录某远程数据库:
C:\>sqlplus xtjb/xtjb@s101
这里的s101就是一个网络连接串。
在oracle的不同版本中,网络连接串的内容是不同的。在网络驱动版本为sql*net或net8时,网络连接串使用数据库实例名构造;网络驱动版本为net8i或net services时,网络连接串使用数据库服务名构造(服务名见后面介绍)。见图3中的填写说明。
4.域名
9i/10g中新引进参数。在数据库名称后面增加域名构成,类似网络中的域名,使数据库的取名在整个网络环境中唯一。
域名主要用于分布式数据库中数据库之间的连接。例如,在一个网络中有两个数据库,数据库名都是orcl,若这连个数据库之间要建立连接,则必须使用不同的域名加以区分。
5.全局数据库名
9i/10g中新引进参数。全局数据库名=数据库名+域名。
6.服务名
9i/10g中新引进参数。服务名=全局数据库名。
当使用网络驱动net8i, net services与oracle9i/10g服务器连接时,不再使用实例名,而使用数据库服务名。
7.补充
当同一网络中两个数据库的global_dbname相同时,可以通过修改域名和服务名的方式进行调整(当然也可以修改数据库名,不过太繁琐)。
修改完毕后,需修改监听中的全局数据库名,并重启监听(见8中例子)。
8.举例
(1)创建一个数据库,全局数据库名为ora.world,SID(实例名)为orasid。
见图1。
(2)创建完毕后,使用服务名(全局数据库名)建立网络连接。见图2、图3。
(3)查询各个名称
SQL> show parameter db_name
NAME TYPE V ALUE
------------------------------------ ----------- ------------------------------
db_name string ora
SQL> show parameter db_domain
NAME TYPE V ALUE
------------------------------------ ----------- ------------------------------
db_domain string world
SQL> show parameter instance_name
NAME TYPE V ALUE
------------------------------------ ----------- ------------------------------
instance_name string orasid
SQL> show parameter service_names
NAME TYPE V ALUE
------------------------------------ ----------- ------------------------------
service_names string ora.world
SQL> show parameter global_
NAME TYPE V ALUE
------------------------------------ ----------- ------------------------------
global_context_pool_size string
global_names boolean FALSE
数据库链与全局数据库名的关系参考《小结:数据库链接db link》:
/showthread.php?s=b81b1c59ccbdb3d677068659ac3a3a1d&postid =8411363#post8411363
(4)修改全局数据库名(修改域名和服务名)
SQL> alter system set db_domain='' scope=spfile;
系统已更改。
SQL> alter system set service_names='ora' scope=spfile;
系统已更改。
SQL> startup force
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
V ariable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。