oracle DBID,SID,DB_NAME,DB_DOMAIN,INSTANCE_NAME,DB_UNIQUE_NAME, SERVICE_NAMES 及监听参数的说明
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, |
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 |
--服务名是复数, 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 及监听参数的说明的更多相关文章
- Oracle 11g RAC 环境下单实例非缺省监听及端口配置
如果在Oracle 11g RAC环境下使用dbca创建单实例数据库后,Oracle会自动将其注册到缺省的1521端口及监听器.大多数情况下我们使用的为非缺省监听器以及非缺省的监听端口.而且在Orac ...
- oracle相同SID对外提供多个service_names
为数据库设置多个服务名(通过SCOPE=both设置,同时修改参数文件) SQL> show parameter service_names; NAME TYPE VALUE --------- ...
- oracle 11G创建表空间、用户、配置监听和TNS
最近总在安装各种版本的oralce数据库做测试,11G,32位的,64位的,12C的,每次都折腾表空间,用户.tns啥的,这里记录下,再也不用现用现百度找了 一.创建表空间.用户 在plsql工具中 ...
- [oracle原]访问局域网内出现“ORA-12541:TNS:无监听程序”
近日在服务器局域网内27电脑上安装了oracle11g,本机上访问此数据库正常.但在局域网内其它机器上访问27上的数据库时,出现“ORA-12541:TNS:无监听程序”错误. 查27上的配置:D:\ ...
- 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 / ...
- Oracle 修改SID --不建议修改
1.登录数据库查看SID select instance_name,status from v$instance; 2.关闭数据库 shutdown immdiate; 3.修改/etc/oratab ...
- ORACLE监听配置及测试实验
实验一: 修改db_domain和service_name 我们将Db_name和Db_domain两个参数用'.'连接起来,表示一个数据库,并将该数据库的名称称为Global_name即等于serv ...
- oracle静态与动态监听
在运行lsnrctl命令的status时,常会看到如下返回值: 服务“test”包含1个例程. 例程"mydata",状态 UNKOWN,包含此服务的一个处理程序... 服务 ...
- oracle 11g 一直提示 严重: 监听程序未启动或数据库服务未注册到该监听程序
From:http://blog.sina.com.cn/s/blog_6734ea6d0102v6sn.html 增加操作系统环境变量:ORACLE_HOSTNAME=localhost 然后在cm ...
随机推荐
- ECMAScript 6 学习笔记(二)
ECMAScript 6 let和const命令 let命令 基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { let a ...
- FreeMarker三宗罪之优缺点
FreeMarker是Quake Wang推荐我使用的.刚学FreeMarker的时候,发现freemarker真的很棒!简单易用,功能强大.但是用它做了几个项目以后开始不爽了. 一宗罪:freema ...
- MATLAB的边缘检测函数中隐含的细化(非极大值抑制)算法
前段时间做了一个车牌检测识别的项目,我的任务是将MATLAB中的算法移植成C++代码.在车牌区域提取的过程中,用到了水平方向的Sobel算子检测垂直边缘,一开始我直接把MATLAB中的 bw = ed ...
- .net 正则表达式
string RegStr = @"^[0-9]*[1-9][0-9]*$"; if (Regex.IsMatch("待验证的字符串", RegStr)) { ...
- 06.Linux系统-GitLab版本控制服务安装部署
官方文档:https://about.gitlab.com/install/#centos-7 1.yum install -y curl policycoreutils-python openssh ...
- PAT Basic 1024 科学计数法 (20 分) Advanced 1073 Scientific Notation (20 分)
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...
- CQRS架构下的Saga流程重构
- 【leetcode】622. Design Circular Queue
题目如下: Design your implementation of the circular queue. The circular queue is a linear data structur ...
- 【leetcode】1104. Path In Zigzag Labelled Binary Tree
题目如下: In an infinite binary tree where every node has two children, the nodes are labelled in row or ...
- 02-webpack的作用
webpack的作用,将不同静态资源的类型打包成一个JS文件,在html页面应用该JS文件的时候,JS文件里的html就可以正常的运行,去执行操作. 也可以加载前端页面的CSS样式.Img图片