认知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 statementb. 控制文件。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)))
相关文章推荐
- oracle的各种name(总结自warehouse)
- oracle中各种“name”
- Oracle中各种“name”
- oracle的各种name(总结自warehouse)
- Oracle中各种name
- oracle各种名词再理解
- oracle 各种问题排查
- ORACLE_SID和instance_name的含义
- java连接各种数据库(oracle mysql sql server)
- Oracle如何插入在特殊字符: & 和 ' (各种解决方案)
- Oracle基础 各种语句的定义格式
- Oracle中打开10046 Trace的各种方法
- c#下各种数据库操作的封装!(支持ACCESS,SQLSERVER,DB2,ORACLE,MYSQL)(三)
- Oracle 客户端连接服务器常见问题之--------ORA-12154: TNS: could not resolve service name .
- 安装oracle之后各种问题总结
- 修改oracle实例名(sid)和数据库名(db_name)
- 关于数据库名(db_name)、实例名(instance_name)、ORACLE_SID 【转】
- oracle各种字符集修改
- ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAME
- Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name