DBID,SID,DB_NAME,DB_DOMAIN,INSTANCE_NAME,DB_UNIQUE_NAME, SERVICE_NAMES 及监听参数的说明

DB 相关的: DBID, SID
PFILE 中的参数: DB_NAME, DB_DOMAIN, INSTANCE_NAME,DB_UNIQUE_NAME,SERVICE_NAMES,GLOBAL_NAME,GLOBAL_NAMES
Listener.ora 中参数:SID_NAME, GLOBAL_DBNAME
Tnsnames.ora 中参数:SERVICE_NAME, SID

1 与 DB 相关的 2 个参数

DBID(DataBase IDentifier)
Oracle 官网对 DBID 的解释如下:
An internal, uniquely generated number that differentiates databases. Oracle creates this number automatically when you create the database
DBID 可以看成是 db_name 在数据库内部的表示。 DBID 是在创建数据库时,用 db_name 结合一种算法来创建的。 具体用什么算法,不太清楚。它存在
与数据文件和控制文件,用于表示数据文件的归属。 所以这个 DBID 是唯一的。对于不同的数据库, DBID 是不同的,但是 db_name 有可能相同。

SYS@ orcl >select dbid from v$database;

      DBID
----------
1534031567

SID(system identifier)

SYS@ orcl >select instance_name from v$instance;

INSTANCE_NAME
----------------
orcl

尽管v$instance中字段 instance_name 看起来是实例名,但是实际上存储的是 sid。 在win下, 不管oracle_home是否相同sid不能重复。

2 Pfile 中的参数

SYS@ orcl >create pfile='/tmp/pfile20180509.sql' from spfile;

File created.
[oracle@DSI ~]$ cat /tmp/pfile20180509.sql
orcl.__db_cache_size=322961408
orcl.__java_pool_size=4194304
orcl.__large_pool_size=8388608
orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=318767104
orcl.__sga_target=469762048
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=121634816
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.log_archive_dest_1='location=/u01/app/oracle/arch'
*.memory_target=786432000
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'

DB_NAME
Database identifier. Must correspond to the value used in the CREATE DATABASE statement. Maximum 8 characters.
DB_NAME 是数据库名,它的长度不能超过8个字节,超过8个会被截断。
对于 RAC 环境,各个节点之间的 DB_NAME 都是相同的,INSTANCE_NAME 不同,DB_DOMAIN相同,DB_UNIQUE_NAME相同。
对于 Data Guard 环境, DB_NAME 相同, DB_UNIQUE_NAME 不同。
查看db_name

SYS@ orcl >show parameter db_name

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
db_name string orcl
SYS@ orcl > select dbid,name from v$database; DBID NAME
---------- ---------
1534031567 ORCL

DB_DOMAIN

Property   Description
Default value There is no default value.
Modifiable No
Range of values Any legal string of name components, separated by periods and up to 128 characters long (including the periods). This value cannot be NULL
Basic Yes
Oracle RAC You must set this parameter for every instance, and multiple instances must have the same value

DB_UNIQUE_NAME

Property Description
Parameter type String
Syntax DB_UNIQUE_NAME = database_unique_name
Default value Database instances: the value of DB_NAME Automatic Storage Management instances: +ASM
Modifiable No
Basic Yes
Oracle RAC Multiple instances must have the same value.

-- 对于 DB_NAME 系统的的数据库必须要有不同的 DB_UNIQUE_NAME。
DB_UNQUIE_NAME 的会影响到 Service_names,也会影响到动态监听的时候的 service_name。
如在 Data Guard 环境下,如果采用动态注册,那么注册的Service 就是 DB_UNIQUE_NAME。 但 instance 还是 instance_name,即 SID
如:
Service " orcl_st " has 1 instance(s).
Instance "orcl", status BLOCKED, has 1 handler(s) for this service...
Service " orcl_st _XPT" has 1 instance(s).
Instance "orcl", status BLOCKED, has 1 handler(s) for this service...
The command completed successfully

INSTANCE_NAME

Property Description
Parameter type String
Syntax INSTANCE_NAME = instance_id
Default value

The instance's SID Note: The SID identifies the instance's shared memory on a host,
but may not uniquely distinguish this instance from other instances.

Modifiable No
Range of values Any alphanumeric characters and the underscore (_) character
Basic No

--INSTANCE_NAME 的默认值就是 SID。 一般跟数据库库名称相同,也可以不相同。

SYS@ orcl >show parameter db_name

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
db_name string orcl
SYS@ orcl > show parameter instance_name NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string orcl

--INSTANCE_NAME 会影响进程的命名:

[oracle@DSI ~]$ ps -ef|grep pmon ##单实例
oracle 17779 1 0 May08 ? 00:00:04 ora_pmon_orcl
oracle 22576 17549 0 15:19 pts/3 00:00:00 grep pmon
[oracle@rac05 ~]$ ps -ef|grep pmon ##rac
grid 4076 1 0 Apr26 ? 00:03:01 asm_pmon_+ASM1
oracle 4658 1 0 Apr26 ? 00:03:36 ora_pmon_bol1
oracle 21999 19674 0 15:20 pts/0 00:00:00 grep pmon --initSID.ora 和 orapwSID 文件要与 INSTANCE_NAME 保持一致:
[oracle@DSI ~]$ cd $ORACLE_HOME/dbs
[oracle@DSI dbs]$ ll
-rw-rw---- 1 oracle oinstall 1544 May 8 17:02 hc_orcl.dat
-rw-r--r-- 1 oracle oinstall 2851 May 15 2009 init.ora
-rw-r----- 1 oracle oinstall 24 Apr 22 10:07 lkORCL
-rw-r----- 1 oracle oinstall 1536 Apr 22 10:28 orapworcl
-rw-r----- 1 oracle oinstall 10076160 Apr 30 15:45 snapcf_orcl.f
-rw-r----- 1 oracle oinstall 2560 May 8 22:00 spfileorcl.ora

SERVICE_NAMES

Property Description
Parameter type String
Syntax SERVICE_NAMES =db_service_name [, db_service_name [ ... ] ]
Default value DB_UNIQUE_NAME.DB_DOMAIN if defined
Modifiable ALTER SYSTEM
Range of values Any ASCII string or comma-separated list of string names
Basic No
Oracle RAC

Do not set the SERVICE_NAMES parameter for Oracle RAC environments. Instead, define services using Oracle Enterprise
Manager and manage those services using Server Control (SRVCTL) utility.

--服务名是复数, service_names 可以是多个值
在 Data Guard 中, 如果采用动态注册, 建议在 primary, standby 上使用相同的 service_names,这样可能便于尽可能的实现透明切换。
如果配置了静态注册的监听在 primary, standby 上也务必保持在 listener 中要求输入的服务名相同,尽可能的实现透明切换。

SYS@ orcl >show parameter service_names 

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
service_names string orcl

GLOBAL_NAME
global_name 是由 db_name.db_domain 构成。

SYS@ orcl >select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
ORCL
Property Description
Parameter type Boolean
Default value false
Modifiable ALTER SESSION, ALTER SYSTEM
Range of values true | false
Basic No

Global_names 是一个布尔值, global_names 的作用是创建 db link 时是否强制使用远程数据库的 global_name,如果 global_names=true,则 db link name 必须要
求是 remote database 的 global_name,否则创建之后 db link 不能连同,缺省值是false。多用于分布式系统

SYS@ orcl >show parameter global_names;

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
global_names
rac:
--instance1
*.db_domain=''
*.db_name='bol'
bol2.instance_number=2
bol1.instance_number=1
--instance2
*.db_domain=''
*.db_name='bol'
bol2.instance_number=2
bol1.instance_number=1 dg:
--primary
*.db_domain=''
*.db_name='bol'
bol2.instance_number=2
bol1.instance_number=1
--standby
*.db_domain=''
*.db_name='bol'
*.service_names='orcl'
*.db_unique_name='orcl'

db_name 还有一个非常重要的作用就是动态注册监听. 关于动态注册和静态注册,参考 Blog:
Oracle Listener 动态注册 与 静态注册
http://blog.csdn.net/tianlesoftware/archive/2010/04/30/5543166.aspx
不管是否指定了 service_name,或者说 service_name 的值是什么, pmon 都会使用 db_name 动态注册监听的。
注册到监听器中的服务值从 init.ora 文件中的参数 service_names 取得。
如果该参数没有设定值,数据库将拼接 init.ora 文件中的 db_name 和 db_domain 的值来注册自己。
如果选择提供 service_names 值,您可以使用完全限定的名称(比
如 orcl.oracle.com)或缩写的名称(比如 orcl)。如果选择缩写的名称并设置了
db_domain 参数, 注册到监听器中的服务将是 service_name 值和 db_domain 值的拼接。

3 Listener.ora 文件中的参数

==rac
[oracle@rac05 ~]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 09-MAY-2019 14:57:24 Copyright (c) 1991, 2013, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 26-APR-2019 17:27:58
Uptime 12 days 21 hr. 29 min. 25 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/11.2.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/rac05/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.15.8.15)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.15.8.17)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "bol" has 2 instance(s).
Instance "bol1", status UNKNOWN, has 1 handler(s) for this service...
Instance "bol1", status READY, has 1 handler(s) for this service...
Service "bolXDB" has 1 instance(s).
Instance "bol1", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@rac05 ~]$ cat /u01/app/11.2.0/grid/network/admin/listener.ora
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))) # line added by Agent
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))) # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = bol)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = bol1)
)
) LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = LISTENER))
) ADR_BASE_LISTENER = /u01/app/grid ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent LISTENER_SCAN1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = LISTENER_SCAN1))
) ADR_BASE_LISTENER_SCAN1 = /u01/app/grid

==单实例

[oracle@DSI ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 09-MAY-2019 14:56:11

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DSI)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 06-MAY-2019 09:45:00
Uptime 3 days 5 hr. 11 min. 11 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/DSI/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DSI)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "orcl" has 2 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@DSI ~]$ cat /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools. SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = orcl)
)
) LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DSI)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
) ADR_BASE_LISTENER = /u01/app/oracle

SID_NAME
SID_NAME 指数据库的运行的实例名,和 instance_name 保持一致
GLOBAL_DBNAME
配置静态监听注册时, 需要输入 SID 和 GLOBAL_NAME。
GLOBAL_DBNAME 是 listener 配置的对外网络连接名称, 我们可以写成任意值。
在客户端配置监听的 tnsnames.ora 文件中的 service_name 与这个GLOBAL_DBNAME 保持一致就可以了。因为客户端访问数据库是通过监听来实现的。

如果采用动态注册的话, PMON 进程会根据初始化参数 initSID.ora 中的
instance_name,service_names 两个参数将实例和服务动态注册到 listener 中, 这时
自动注册的对外网络连接名称就是 initSID.ora 文件中 service_names

因为 service_names 可以有多个值,如果有多个值,就会注册多个。 但是他
们对应都是同一个 instance_name。 这样,我们在客户端配置 tnsnames.ora 时,
在 service_name 写其中任意一个都可以正常连上数据库。

4 Tnsnames.ora 文件

[oracle@DSI ~]$ cat /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.15.7.25)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

SERVICE_NAME
如果服务器采监听采用了静态注册,那么这个参数就等于 Listener.ora 文件中的 GLOBAL_DBNAME 的值
如果是动态注册,那么这个值就是 initSID.ora 文件中 service_names 中的值。
SID
在 tnsnames.ora 文件中还可以使用 SID。 如果使用该参数,只需要把该参数指定为 instance_name 就可以了。

参考:Blog:http://blog.csdn.net/tianlesoftware/archive/2010/12/20/6086066.aspx

oracle DBID,SID,DB_NAME,DB_DOMAIN,INSTANCE_NAME,DB_UNIQUE_NAME, SERVICE_NAMES 及监听参数的说明的更多相关文章

  1. Oracle 11g RAC 环境下单实例非缺省监听及端口配置

    如果在Oracle 11g RAC环境下使用dbca创建单实例数据库后,Oracle会自动将其注册到缺省的1521端口及监听器.大多数情况下我们使用的为非缺省监听器以及非缺省的监听端口.而且在Orac ...

  2. oracle相同SID对外提供多个service_names

    为数据库设置多个服务名(通过SCOPE=both设置,同时修改参数文件) SQL> show parameter service_names; NAME TYPE VALUE --------- ...

  3. oracle 11G创建表空间、用户、配置监听和TNS

    最近总在安装各种版本的oralce数据库做测试,11G,32位的,64位的,12C的,每次都折腾表空间,用户.tns啥的,这里记录下,再也不用现用现百度找了 一.创建表空间.用户  在plsql工具中 ...

  4. [oracle原]访问局域网内出现“ORA-12541:TNS:无监听程序”

    近日在服务器局域网内27电脑上安装了oracle11g,本机上访问此数据库正常.但在局域网内其它机器上访问27上的数据库时,出现“ORA-12541:TNS:无监听程序”错误. 查27上的配置:D:\ ...

  5. Oracle Names - Oracle_SID /db_name instance_name service_names / service_name / sid / sid_name

    很多人还是困惑,下面再次尝试从几个不同角度区分一下: Oracle_SID / db_name, instance_name, service_names  / service_name, sid / ...

  6. Oracle 修改SID --不建议修改

    1.登录数据库查看SID select instance_name,status from v$instance; 2.关闭数据库 shutdown immdiate; 3.修改/etc/oratab ...

  7. ORACLE监听配置及测试实验

    实验一: 修改db_domain和service_name 我们将Db_name和Db_domain两个参数用'.'连接起来,表示一个数据库,并将该数据库的名称称为Global_name即等于serv ...

  8. oracle静态与动态监听

    在运行lsnrctl命令的status时,常会看到如下返回值: 服务“test”包含1个例程.    例程"mydata",状态 UNKOWN,包含此服务的一个处理程序... 服务 ...

  9. oracle 11g 一直提示 严重: 监听程序未启动或数据库服务未注册到该监听程序

    From:http://blog.sina.com.cn/s/blog_6734ea6d0102v6sn.html 增加操作系统环境变量:ORACLE_HOSTNAME=localhost 然后在cm ...

随机推荐

  1. Spring基础14——Bean的生命周期

    1.IOC容器中的Bean的生命周期方法 SpringIOC容器可以管理Bean的生命周期,Spring允许在Bean生命周期的特定点执行定制的任务.SpringIOC容器对Bean的生命周期进行管理 ...

  2. PAT Advanced 1019 General Palindromic Number (20 分)

    A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...

  3. Cron表达式 详解

    Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: (1) 7个域: Seconds Minutes Hours DayofMon ...

  4. java Character类源码分析

    一.使用 构建Character对象: public class CharTest { public static void main(String[] args) { Character c1 = ...

  5. MySQL数据库1初识MySQL

    目录 Mysql 一.数据库是什么? 二.为啥使用数据库?(*****) 三.数据库的分类(*****) 1.关系型数据库 2.非关系型数据库 3.关系型与非关系型区别: 四.数据库MySQL的架构 ...

  6. hihocode 1584 : Bounce (找规律)(2017 北京网络赛G)

    题目链接 比赛时随便找了个规律,然后队友过了.不过那个规律具体细节还挺烦的.刚刚偶然看到Q巨在群里提到的他的一个思路,妙啊,很好理解,而且公式写起来也容易.OrzQ巨 #include<bits ...

  7. 【leetcode】Decode Ways

    题目如下: 解题思路:这个题目的本质是一个爬楼梯问题,在爬楼梯问题中,每次可以选择走一步或者两步.而本题也是一样的,解码的时候选择解码一个字符或者两个字符,但是加大了一点点难度,要考虑这些情况.1,Z ...

  8. LeetCode--079--单词搜索(python)

    给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格.同一个单元格内的字母不允许被重复使用. ...

  9. ES6数据结构Set、Map

    一.Set数据结构 Set是无序的不可重复的多个value的集合体,Set结构是类似于数组结构,但是Set中的值都不能重复 常用的属性和方法 size:返回set实例的成员总数 add():添加某个值 ...

  10. Android 如何生成jks签名文件