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. ECMAScrip5 二

    一.ES5的严格模式 在严格模式下,声明变量必须使用 var 在严格模式下,不能使用八进制 在严格模式下,不能使用arguments.callee 在严格模式下,不能使用eval()    //eva ...

  2. PyMySQL和MySQLdb的区别

      网上很多关于Scrapy存入MySQL的教程,都会发现又这么一个包的引入: import MySQLdb import MySQLdb.cursors 聪明的你或许已经算到,需要安装MySQLdb ...

  3. Zabbix--03 邮件报警、微信报警

    目录 一. 邮件报警 1.定义发件人 2.定义收件人 3.优化告警信息 二. 微信报警 1.查看配置文件里的脚本目录路径 2.将weixin.py放在zabbix特定目录 3.配置发信人 4.配置收信 ...

  4. Composer\Downloader\TransportException ... Failed to enable crypto,failed to open stream: operation failed

    failed to open stream: operation failed 错误详细信息: [Composer\Downloader\TransportException] The "h ...

  5. jupyter安装

    1. 安装ipython, jupyter pip install ipython pip install jupyter 2.查看是否有配置文件 jupyter notebook --generat ...

  6. IDEA设置类和方法的注释

    类注释 #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #pa ...

  7. windows javaee 安装

    一. 下载jdk 并安装 二. 配置环境变量 JAVA_HOME:D:\Java\jdk1..0_25 CLASSPATH :.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt. ...

  8. Markdown的使用和计算机基础

    TOC] 一级标题 这不是开玩笑 你问我为什么? 粗的才好(滑稽) 什么!明明有人推我 ==一闪一闪亮晶晶== 我上面有人^人在这^ water?H~2~O(下标) hello world! hell ...

  9. linux运维、架构之路-MySQL(二)

    一.SQL语句实战 1.DDL语句——库管理 ①查看数据库 show databases; show databases like 'word%';#模糊查询数据库 ②创建数据库 create dat ...

  10. Math.min() Math.max() Math.min().apply() Math.max() .apply()该如何使用???

    Math.min()和 Math.max()  语法: Math.min(x,y) Math.max(x,y) 虽然能取到最小值和最大值,但是不支持数组. 那么如何计算数组中的大小值呢???????? ...