认知Oracle各种Name

来源:互联网 发布:2016网络流行语字母 编辑:程序博客网 时间:2024/06/05 14:24

一. db_name

1. 概念

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

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

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

查看db_name:

SQL> show parameter db_name NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------db_name                              string      ORCLSQL> 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 bytesFixed Size                  2257032 bytesVariable Size             490737528 bytesDatabase Buffers          255852544 bytesRedo Buffers                2748416 bytesORA-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_nameNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------instance_name                        string      prodSQL> 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_SIDORCL

四. 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 global_name to的命令,然后修改相应的参数。

2. 查询数据库域名

SQL> show parameter db_domainNAME                                 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 serviceNAME                                 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)))


0 0
原创粉丝点击