您的位置:首页 > 数据库 > Oracle

认知Oracle各种Name

2016-11-29 16:26 162 查看

一. db_name

1. 概念

db_name是一个数据库的唯一标识,最大长度为8位。如果一台机器上安装了多台数据库,那么每一个数据库都有一个数据库名。数据库在安装或者创建完成后,参数DB_NAME写入参数文件中。

[oracle@centos6 dbs]$ cd $ORACLE_HOME/dbs
[oracle@centos6 dbs]$ cat init.ora
db_name='ORCL'
memory_target=1G


对于rac和standby,db_name是一致的。

查看db_name:

SQL> show parameter db_name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_name                              string      ORCL
SQL> select name from v$database;

NAME
---------
ORCL


2. 作用

a. the name specified in the CREATE DATABASE statement

b. 控制文件。oracle启动的时候,如果参数文件中的db_name和控制文件中记录的db_name不一致,则无法启动。 ora-01103。所以修改db_name的时候,应同时修改控制文件中的db_name

dump控制文件:

DUMP OF CONTROL FILES, Seq # 5276 = 0x149c
V10 STYLE FILE HEADER:
Compatibility Vsn = 186646528=0xb200000
Db ID=1449842719=0x566ad81f, Db Name='ORCL'
Activation ID=0=0x0
Control Seq=5276=0x149c, File size=600=0x258
File Number=0, Blksiz=16384, File Type=1 CONTROL

改变参数文件(将ORCL改为orcl1),验证:

注:将ORCL改为小写的orcl时,启动并不会报错,可能oracle这里不校验大小写。

SQL> startup pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initORCL.ora';
ORACLE instance started.

Total System Global Area  751595520 bytes
Fixed Size                  2257032 bytes
Variable Size             490737528 bytes
Database Buffers          255852544 bytes
Redo Buffers                2748416 bytes
ORA-01103: database name 'ORCL' in control file is not 'ORCL1'

同样的,如果控制文件损坏或丢失的时候,会使用CREATE CONTROLFILE的命令来重建控制文件,这时候也需要用到DB_NAME。

c. 数据库安装文件目录

[oracle@centos6 dbs]$ cd /u01/app/oracle/oradata/db_name #数据文件、控制文件、日志文件的路径
对于单实例数据库,默认DB_NAME是与SID和Instance_name一致的,当然也可以不一致,路径通常在创建数据库DBCA的时候确定,以后也基本不会再修改。

二. instance_name

实例名指的是相应某个数据库操作的数据库管理系统的名称,同时也叫SID。实例名是由instance_name决定的,如果这个参数不被指定,那么实例名由用户的环境变量ORACLE_SID决定,

数据库实例名用于与外部连接。在操作系统中要取得与数据库的联系,必须使用数据库实例名。例如,要去连接一个数据库服务器,必须知道其数据库实例名,只知道数据库名是没用的。与数据库名不同,实例名在数据库创建之后是可以被修改的。数据库名与实例名可以相同也可以不用。一般数据库名与实例名是一对一的,但rac是例外,属于一个数据库名对应多个实例名。

查看instance_name:

SQL> show parameter instance_name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_name                        string      prod
SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
ORCL

三. ORACLE_SID

instance_name是oracle数据库的参数,可以在参数文件中查到,而ORACLE_SID是操作系统的环境变量,与ORACLE_BASE,ORACLE_HOME用法相同。在操作系统中想要得到实例名,就必须要使用ORACLE_SID,且ORACLE_SID的值必须与instance_name的值一致。

[oracle@centos6 ~]$ echo $ORACLE_SID
ORCL

四. global_name与db_domain

1. 概念和联系

使用数据库名(db_name)对数据库进行唯一标识,这种表示对单个数据库是足够的,但是在分布式系统中,这种命名方式可能会给数据库的管理造成一定的负担。因为各个数据库的名字可能一样。为了解决这种情况,引入了db_domain的概念,这样数据库标识就由db_domain和db_name共同决定,从而避免数据库重名的情况。db_name+db_domain即是global_name。

db_domain(数据库域名):定义一个数据库所在的域,该'域'名的定义与互联网中的域没有任何关系,只是数据库管理员为了更好地管理分布式 数据库而根据实际情况决定的。也可以将其等同于互联网的域。

global_name(全局数据库域名):对一个数据库(oracle database)的唯一标识,oracle建议用此种方法来标识数据库。该值是在创建数据库时决定的,缺省值为db_name.db_domain,以后对这两个值的修改不影响global_name的值,如果要修改global_name的值,只能使用alter database rename g
cc52
lobal_name to的命令,然后修改相应的参数。

2. 查询数据库域名

SQL> show parameter db_domain

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_domain                            string      us.oracle.com
也可以从参数文件中查看

3. 查询global_name

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
ORCL.US.ORACLE.COM

4. 用户

db_link:当global_names参数设置为true时,使用DATABASE LINK时,db_link的名称必须与被连接数据库的global_name一致。

五. service name(数据库服务名)

在oracle8i之前,用SID来表示数据库的一个实例,但是在oracle的并行环境中,一个数据库对应多个实例,这样就需要多网络服务名,设置繁琐,为了便于并行环境中的设置,引入了service name的概念。该参数对应一个数据库,而不是一个实例。

service name缺省值为db_name.db_domain,即等于global_name,当db_domain为空时,数据库服务名与数据名一样。一个数据库可以对应多个service name,以便实现更灵活的配置,与SID没有直接关系,即serviced_name与SID不必一致。

从oracle8i开始的网络组建,数据库与客户端连接的主机字符串使用的是数据库服务名,之前使用的是SID

查询数据库服务名:

SQL> show parameter service

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
service_names                        string      ORCL.us.oracle.com

用处:

LISTENER=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=sale-server)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=sales.us.example.com)
(ORACLE_HOME=/oracle11g)
(SID_NAME=sales))
(SID_DESC=
(SID_NAME=plsextproc)
(ORACLE_HOME=/oracle11g)
(PROGRAM=extproc)))
监听中的global_dbname必须与service name一致。否则就算启动了静态监听,也注册不了服务、

六. net_service_name(网络服务名)

又可以称为数据库别名(database alias)。是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库位置透明的特性。网络服务名被记录在tnsnames.ora中。

net_service_name=
(DESCRIPTION=
(ADDRESS=...)
(CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: