赞
踩
数据库名(DB_NAME)、数据库实例名(Instance_name、ORACLE_SID) 、数据库域名、全局数据库名、数据库服务名
在ORACLE7、8数据库中只有数据库名(db_name)和数据库实例名(instance_name)。
在ORACLE8i、9i中出现了新的参数,即数据库域名(db_domain)、服务名(service_name)、以及操作系统环境变量(ORACLE_SID)。
一、什么是数据库名(db_name)?
数据库名是用于区分数据的内部标识,是以二进制方式存储于数据库控制文件中的参数,在数据安装或创建之后将不得修改。
数据库安装完成后,该参数被写入数据库参数文件pfile中,格式如下:
[code:1:1aaf156970]
.........
db_name="orcl" #(不允许修改)
db_domain=dbcenter.toys.com
instance_name=orcl
service_names=orcl.dbcenter.toys.com
control_file=(...............
.........
[/code:1:1aaf156970]
在每一个运行的ORACLE8i数据库中都有一个数据库名(db_name),如果一个服务器程序中创建了两个数据库,则有两个数据库名。
其控制参数据分属在不同的pfile中控制着相关的数据库。
查询当前数据库名
方法一: select name from v$database;
SQL> select name from v$database;
NAME
---------
ORCL
方法二:show parameter db
SQL> --db_name数据库名,db_domain数据库域名
SQL> show parameter db
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_16k_cache_size big integer 0
db_2k_cache_size big integer 0
db_32k_cache_size big integer 0
db_4k_cache_size big integer 0
db_8k_cache_size big integer 0
db_block_buffers integer 0
db_block_checking string FALSE
db_block_checksum string TRUE
db_block_size integer 8192
db_cache_advice string ON
db_cache_size big integer 0
db_create_file_dest string
db_create_online_log_dest_1 string
db_create_online_log_dest_2 string
db_create_online_log_dest_3 string
db_create_online_log_dest_4 string
db_create_online_log_dest_5 string
db_domain string
db_file_multiblock_read_count integer 16
db_file_name_convert string
db_files integer 200
db_flashback_retention_target integer 1440
db_keep_cache_size big integer 0
db_name string orcl
db_recovery_file_dest string c:/oracle/product/10.2.0/flash_recovery_area
db_recovery_file_dest_size big integer 2G
db_recycle_cache_size big integer 0
db_unique_name string orcl
db_writer_processes integer 1
dbwr_io_slaves integer 0
rdbms_server_dn string
standby_archive_dest string %ORACLE_HOME%/RDBMS
standby_file_management string MANUAL
SQL> select value from v$parameter where name='db_name';
VALUE
--------------------------------------------------------
orcl
方法三:查看参数文件。
二、什么是数据库实例名(instance_name,ORACLE_SID)
对于数据库实例名的描述有时使用实例名(instance_name)参数,有时使用ORACLE_SID参数。这两个都是数据库实例名,区别如下图:
[code:1:1aaf156970]
(ORACLE_SID)
OS<----------------> ORACLE 数据库 <--------(Instance_name(实例名))
[/code:1:1aaf156970]
上图表示实例名instance_name、ORACLE_SID与数据库及操作系统之间的关系,
instance_name参数是ORACLE数据库的参数,此参数可以在参数文件中查询到,用于对外部连接时使用。
例如,要和某一个数据库server连接,就必须知道其instance_name,只知道数据库名是没有用的,与数据库名不同,在数据安装或创建数据库之后,
实例名可以被修改。数据库安装完成后,该实例名被写入数据库参数文件pfile中,格式如下:
[code:1:1aaf156970]
db_name="orcl" #(不允许修改)
db_domain=dbcenter.toys.com
instance_name=orcl #(可以修改,可以与db_name相同也可不同)
service_names=orcl.dbcenter.toys.com
control_file=(...............
.........
[/code:1:1aaf156970]
查询当前数据库实例名
方法一:select instance_name from v$instance;
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
orcl
方法二:show parameter instance
SQL> show parameter instance;
NAME TYPE VALUE
------------------------------------ ----------- ---------
active_instance_count integer
cluster_database_instances integer 1
instance_groups string
instance_name string orcl
instance_number integer 0
instance_type string RDBMS
open_links_per_instance integer 4
parallel_instance_group string
parallel_server_instances integer 1
SQL> select value from v$parameter where name='instance_name';
VALUE
--------------------------------------------------------------
orcl
方法三:在参数文件中查询。
而ORACLE_SID参数则是操作系统环境变量,用于和操作系统交互。即,在操作系统中要想得到实例名,就必须使用ORACLE_SID。此参数与ORACLE_BASE、ORACLE_HOME等用法相同。
在数据库安装之后,ORACLE_SID被用于定义数据库参数文件的名称。如:
$ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora。
定义方法:
[code:1:1aaf156970]
export ORACLE_SID=orcl
[/code:1:1aaf156970]
如果在同一服务器中创建了多个数据库,则必然同时存在多个数据库实例,这时可以重复上述定义过程,以选择不同实例。
还可以用
[code:1:1aaf156970]
[oracle@Datacent]$ . oraenv
[/code:1:1aaf156970]
来切换不同的ORACLE_SID来通过操作系统来启动不同的实例(instance)
ORACLE_SID与网络连接
ORACLE_SID还用于网络连接的oracle服务器标识。当配置oracle主机连接串的时候,就需要指定ORACLE_SID。
当然8i以后版本的网络组件要求使用的是服务名SERVICE_NAMES。这个概念接下来说明。
三、数据库名与实例名之间的关系。
数据库名与实例名之间的关系一般是一一对应关系,有一个数据库名就有一个实例名,
如果在一个服务器中创建两个数据库,则有两个数据库名,两个数据库实例名,用两个标识确定一个数据库,用户和实例相连接。
但在8i、9i的并行服务器结构(即oracle实时应用集群)中,数据库与实例之间是一对多关系,(一个数据库对应多个实例,同一时间内用户只一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行。)
四、什么是数据库域名?
在分布工数据库系统中,不同版本的数据库服务器之间,不论运行的操作系统是unix或是windows,各服务器之间都可以通过数据库链路进行远程复制,
数据库域名主要用于oracle分布式环境中的复制。举例说明如:
全国交通运政系统的分布式数据库,其中:
福建节点: fj.jtyz
福建厦门节点: xm.fj.jtyz
江西: jx.jtyz
江西上饶:sr.jx.jtyz
这就是数据库域名。
数据库域名在存在于参数文件中,他的参数是db_domain.
查询数据库域名
方法一:select value from v$parameter where name = 'db_domain';
SQL> select value from v$parameter where name='db_domain';
VALUE
-----------------------------------------------------------
方法二:show parameter domain
SQL> show parameter domain
NAME TYPE VALUE
------------------------------------ ----------- ------------------
db_domain string
方法三:在参数文件中查询。
五、全局数据库名
全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:oradb.fj.jtyz
六、什么是数据库服务名?
从oracle9i版本开始,引入了一个新的参数,即数据库服务名。参数名是SERVICE_NAMES。
如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。
查询数据库服务名
方法一:select value from v$parameter where name = 'service_names';
SQL> select value from v$parameter where name='service_names';
VALUE
--------------------------------------------------------------
orcl
方法二:show parameter service_name
SQL> show parameter service_name;
NAME TYPE VALUE
------------------------------------ ----------- ---------
service_names string orcl
方法三:在参数文件中查询。
数据库服务名与网络连接
从oracle8i开始的oracle网络组件,数据库与客户端的连接主机串使用数据库服务名。之前用的是ORACLE_SID,即数据库实例名
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。