欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > Oracle 中的各种名称(*_name)参数的含义与作用

Oracle 中的各种名称(*_name)参数的含义与作用

2025/2/24 17:20:17 来源:https://blog.csdn.net/weixin_44377973/article/details/144965340  浏览:    关键词:Oracle 中的各种名称(*_name)参数的含义与作用

Oracle 中的各种名称(*_name)参数的含义与作用

目录

  • Oracle 中的各种名称(*_name)参数的含义与作用
    • 一、数据库名:db_name
    • 二、数据库所在的域:db_domain
    • 三、全局数据库名:global_name
    • 四、服务名:service_name
    • 五、网络服务名:net service name
    • 六、实例名:instance_name
    • 七、监听文件配置

在安装 Oracle 软件、创建数据库、配置初始化参数文件、配置监听时会用到很多带 name 的参数。这些参数的详细信息如下:

SQL> show parameter nameNAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
cell_offloadgroup_name	  string
db_file_name_convert	  string
db_name 			     string	 hisdb      -- 数据库名
db_unique_name			 string	 hisdb      -- 数据库唯一名
global_names			 boolean	 FALSE  -- 数据库唯一标识
instance_name			 string	 ora        -- 实例名
lock_name_space 		 string
log_file_name_convert	 string
processor_group_name	 string
service_names			 string	 hisdb      -- 服务名

db_name,instance_name,service_name,db_unique_name,global_name参数可以在初始化参数文件(init$ORACLE_SID.ora)中设置。

instance_name不能在初始化参数文件中直接设置,通过在操作系统中配置环境变量ORACLE_SID自动设置。

配置监听时,在文件listener.ora中需要使用参数instance_nameglobal_names,在文件tnsname.ora中需要使用参数service_namesinstance_name

一、数据库名:db_name

db_name参数用于标识数据库的名称。db_name参数对于Oracle本身比较有用,对用户而言没有太多的用处,db_name记录在controlfiledatafile_headerredo中,要想修改db_name是比较麻烦的。因此在建库时指定恰当的db_name非常重要的。

db_name还有一个非常重要的作用就是动态注册监听,不管是否指定了service_namepmon都会使用db_name动态注册监听。

查看参数db_name的值:

SQL> show parameter db_nameNAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_name 			     string	 hisdb

查看监听信息:

[oracle@ora admin]$ lsnrctl statusLSNRCTL for Linux: Version 11.2.0.4.0 - Production on 05-JAN-2025 21:45:05Copyright (c) 1991, 2013, Oracle.  All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                01-JAN-2025 12:24:12
Uptime                    4 days 9 hr. 20 min. 52 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /usr/local/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File         /usr/local/oracle/diag/tnslsnr/ora/listener/alert/log.xml
Listening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora)(PORT=1521)))
Services Summary...
Service "hisdb" has 2 instance(s).    # hisdb 就是数据库名Instance "ora", status UNKNOWN, has 1 handler(s) for this service...Instance "ora", status READY, has 1 handler(s) for this service...
Service "oraXDB" has 1 instance(s).Instance "ora", status READY, has 1 handler(s) for this service...
The command completed successfully

二、数据库所在的域:db_domain

db_domain参数定义一个数据库所在的域。

随着由多个数据库构成的分布式数据库的普及,各个数据库的名字可能一样,造成管理上的混乱。为了解决这种情况,引入了db_domain参数,数据库的标识(global_name)由db_namedb_domain两个参数共同决定,避免了因为数据库重名而造成管理上的混乱。将db_namedb_domain两个参数用【.】连接起来,表示一个数据库,并将该数据库的名称称为global_name。 查看参数db_domain的值:

SQL> show parameter db_domainNAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_domain			     string

三、全局数据库名:global_name

global_name定义一个全局数据库名。缺省值为db_name.db_domain。该值是在创建数据库时决定的,以后对参数文件中Db_nameDb_domain参数的任何修改都不影响global_name的值,如果要修改global_name,只能用以下命令进行修改:

ALTER DATABASE RENAME GLOBAL_NAME TO <db_name.db_domain>;

查看参数global_name的值:

SQL> select * from global_name;GLOBAL_NAME
--------------------------------------------------------------------------------
HISDB

在配置静态监听注册时需要输入的全局数据库名(GLOBAL_DBNAME)应该是什么?配置网络服务命名(tns)时需要输入的服务名(SERVICE_NAME)又是什么?

[oracle@ora admin]$ vi listener.ora# listener.ora Network Configuration File: /usr/local/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))(ADDRESS = (PROTOCOL = TCP)(HOST = ora)(PORT = 1521))))SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = hisdb)(ORACLE_HOME = /usr/local/oracle/product/11.2.0/db_1)(SID_NAME = ora))ADR_BASE_LISTENER = /usr/local/oracle[oracle@ora admin]$ vi tnsnames.ora # tnsnames.ora Network Configuration File: /usr/local/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.HISDB =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = ora)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = hisdb)))

答案:

只要保证listerner.ora中的GLOBAL_DBNAMEtnsnames.ora中的SERVICE_NAME保持一致就可以,可以是任意内容。

在配置listenertnsnames时提供的GLOBAL_DBNAMESERVICE_NAME参数值与系统中的global_nameservice_name没有任何关系。

四、服务名:service_name

服务名是复数,意味着service_names可以是多个值,服务名在动态注册监听时被使用。

Oracle dataguard建议在主库与备库上使用相同的service_names,便于尽可能的实现透明切换。如果配置了静态注册的监听,在主库与备库也务必保持在listener中输入的服务名相同。

初始化参数service_name默认为db_name.db_dimain,后台进程PMON自动在服务器监听器中注册该参数。

查看参数service_name的值:

SQL> show parameter service_nameNAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
service_names			     string	 hisdbSQL> show parameter instance_nameNAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
instance_name			     string	 ora

同实例之外,在监听器动态注册时,还会用于向监听器注册。查看Oracle的监听信息:

[oracle@ora admin]$ lsnrctl statusLSNRCTL for Linux: Version 11.2.0.4.0 - Production on 05-JAN-2025 21:45:05Copyright (c) 1991, 2013, Oracle.  All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                01-JAN-2025 12:24:12
Uptime                    4 days 9 hr. 20 min. 52 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /usr/local/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File         /usr/local/oracle/diag/tnslsnr/ora/listener/alert/log.xml
Listening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora)(PORT=1521)))
Services Summary...
Service "hisdb" has 2 instance(s).Instance "ora", status UNKNOWN, has 1 handler(s) for this service...Instance "ora", status READY, has 1 handler(s) for this service...
Service "oraXDB" has 1 instance(s).Instance "ora", status READY, has 1 handler(s) for this service...
The command completed successfully

修改参数 SERVICE_NAMES的值:

SQL> alter system set service_names='hisdb123' scope=both;System altered.SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.Total System Global Area 1068937216 bytes
Fixed Size		    2260088 bytes
Variable Size		  331350920 bytes
Database Buffers	  729808896 bytes
Redo Buffers		    5517312 bytes
Database mounted.
Database opened.SQL> show parameter service_namesNAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
service_names			 string	 hisdb123

查看监听信息:

[oracle@ora admin]$ lsnrctl statusLSNRCTL for Linux: Version 11.2.0.4.0 - Production on 05-JAN-2025 22:30:30Copyright (c) 1991, 2013, Oracle.  All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                01-JAN-2025 12:24:12
Uptime                    4 days 10 hr. 6 min. 17 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /usr/local/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File         /usr/local/oracle/diag/tnslsnr/ora/listener/alert/log.xml
Listening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora)(PORT=1521)))
Services Summary...
#  虽然service_name没有设置hisdb,PMON 仍然把db_name设置的数据库名hisdb注册到监听器上
Service "hisdb" has 2 instance(s).Instance "ora", status UNKNOWN, has 1 handler(s) for this service...Instance "ora", status READY, has 1 handler(s) for this service...
#  下面显示的 hisdb123 就是初始化参数中 SERVICE_NAMES 设置的参数值,由 PMON 自动注册到监听器上
Service "hisdb123" has 1 instance(s).Instance "ora", status READY, has 1 handler(s) for this service...
Service "oraXDB" has 1 instance(s).Instance "ora", status READY, has 1 handler(s) for this service...
The command completed successfully

五、网络服务名:net service name

网络服务名又称为数据库别名(database alias)。

网络服务名是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。网络服务名在tnsname.ora文件中配置,相当于某个数据库实例的别名,方便记忆和访问。

例如:在tnsnames.ora中配置网络服务名HISDB

[oracle@ora admin]$ vi tnsnames.ora# tnsnames.ora Network Configuration File: /usr/local/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.HISDB =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = ora)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = hisdb)))

则可以使用如下命令登录数据库:

[oracle@ora admin]$ sqlplus sys/oracle@hisdb as sysdba;SQL*Plus: Release 11.2.0.4.0 Production on Sun Jan 5 22:01:27 2025Copyright (c) 1982, 2013, Oracle.  All rights reserved.Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> 

六、实例名:instance_name

实例(INSTANCE)就是管理数据库的内存结构的名称(由SGAPGA、服务器进程、用户进程、后台进程等组成)。

数据库(Database)就是磁盘上的文件(数据文件、日志文件、控制文件等),负责保存数据,由对应的实例来操作它的数据。

服务名(service_name)就是对外公布的名称,为网络监听服务。

实例名在动态注册监听时需要使用。

查看参数instance_name的值:

SQL> show parameter instance_name;NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
instance_name			     string	 ora

实例名在 Oracle用户的环境变量中通过设置ORACLE_SID参数进行配置:

[root@ora ~]# su - oracle
上一次登录:日 15 17:27:32 CST 2025pts/0 上
[oracle@ora ~]$ cat .bash_profile 
# .bash_profile# Get the aliases and functions
if [ -f ~/.bashrc ]; then. ~/.bashrc
fi# User specific environment and startup programsPATH=$PATH:$HOME/.local/bin:$HOME/binexport PATHexport ORACLE_BASE=/usr/local/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=ora    # 实例名
export ORACLE_OWNER=oracle
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/binalias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

七、监听文件配置

listener.ora文件中需要配置SID_NAMEGLOBAL_DBNAME两个参数。

tnsnames.ora文件中需要配置SERVICE_NAME参数。

SID_NAME就是实例名。

在配置监听的静态注册时,配置listenertnsnames时提供的GLOBAL_DBNAMESERVICE_NAME参数值与系统中的global_nameservice_name没有任何关系,可以是任意名称,但要保证listerner.ora中的GLOBAL_DBNAMEtnsnames.ora中的SERVICE_NAME保持一致。

如果是动态注册,则动态注册的对外网络连接名称就会用到init.ora文件中的service_names

监听文件listener.ora的配置:

[oracle@ora dbs]$ cd $ORACLE_HOME/network/admin
[oracle@ora admin]$ ll
总用量 16
-rw-r--r-- 1 oracle oinstall 676 11 12:16 listener.ora
drwxr-xr-x 2 oracle oinstall  64 1230 21:15 samples
-rw-r--r-- 1 oracle oinstall 381 1217 2012 shrept.lst
-rw-r--r-- 1 oracle oinstall 223 1230 21:28 sqlnet.ora
-rw-r----- 1 oracle oinstall 500 11 11:55 tnsnames.ora[oracle@ora admin]$ vi listener.ora# listener.ora Network Configuration File: /usr/local/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))(ADDRESS = (PROTOCOL = TCP)(HOST = ora)(PORT = 1521))))SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = hisdb)(ORACLE_HOME = /usr/local/oracle/product/11.2.0/db_1)(SID_NAME = ora)))ADR_BASE_LISTENER = /usr/local/oracle

监听文件tnsname.ora的配置:

[oracle@ora admin]$ vi tnsnames.ora# tnsnames.ora Network Configuration File: /usr/local/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.HISDB =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = ora)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = hisdb)))

Oracle实例的启动过程:

第一阶段:实例创建

系统接收到startup命令,立刻采取行动,取得环境变量ORACLE_SID的值。系统根据找到的参数文件启动ORACLE数据库实例,实例启动后,一切由实例接管:注册instance_nameinstance_name来自ORACLE_SID),接着向监听器动态注册实例自己,并将instance_name写入系统数据字典表。

第二阶段:挂载数据库

接下来,实例取参数文件,取得DB_NAME、控制文件、检查点等信息,进入第二阶段:挂载数据库。实例从控制文件取得DB_NAME,并取得数据文件、日志文件等信息,进行DB_NAME的一致性检验、文件的存在性判断等工作之后,实例将挂载数据库,挂载的数据库就是DB_NAME指定的数据库。

第三阶段:启动数据库

最后,实例进入第三阶段:启动数据库。这一阶段,实例进行了两项检查:检查点和更改点检查,之后启动数据库。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词