关于数据库中的一些name

简介: 如果接触数据库有些时间了,可能会碰到很多关于数据库相关的名字,比如ORACLE_SID,db_name,instance_name,db_unique_name等等。

如果接触数据库有些时间了,可能会碰到很多关于数据库相关的名字,比如ORACLE_SID,db_name,instance_name,db_unique_name等等。可能一下子都有些糊涂了,就一股脑儿认为都应该是一致的,其实不然。如果你接触的环境比较单一,可能会有这种错觉。
我们来简单对比一下单实例和多实例下的数据库中的这些名词。
首先来看看单实例的。
[ora11g@rac1 ~]$ echo $ORACLE_SID 
TEST01
[ora11g@rac1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Mon Nov 24 03:40:26 2014
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> show parameter name  --查看数据库中涉及到name的参数

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string
db_name                              string      TEST01
db_unique_name                       string      TEST01
global_names                         boolean     FALSE
instance_name                        string      TEST01
lock_name_space                      string
log_file_name_convert                string
processor_group_name                 string
service_names                        string      TEST01

这么看好像都是一致的,没有任何区别。
来看看多实例的环境。

-bash-4.1$ echo $ORACLE_SID
RACDB1
-bash-4.1$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Mon Nov 24 03:42:52 2014
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Oracle Label Security, OLAP,
Data Mining and Real Application Testing options
SQL> show parameter name   --查看数据库中涉及到name的参数
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string
db_name                              string      RACDB
db_unique_name                       string      RACDB
global_names                         boolean     FALSE
instance_name                        string      RACDB1
lock_name_space                      string
log_file_name_convert                string
processor_group_name                 string
service_names                        string      RACDB
SQL>

从这个例子就能很明显的看出来instance_name和db_name的不同。db_name代表数据库名,这个是唯一的。长度最长为8位,根据oracle的体系结构,一个数据库可以对应多个实例,那么对应的多个实例名称就不可能都相同,在rac环境中,instance_name就可以对应多个不同的实例名,单实例环境中instance_name和db_name事一致的。
对于ORACLE_SID,这个是基于操作系统级的变量,而且是大小写敏感的。它的名字和instance_name是对应的。
既然db_name是数据库名,那么要修改就是很困难而且有一定得风险的。不能直接通过参数文件直接去修改的。需要重建控制文件。

SQL> show parameter db_name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_name                              string      TEST01
SQL> alter system set db_name=test01 scope=spfile;
alter system set db_name=test01 scope=spfile
*
ERROR at line 1:
ORA-32017: failure in updating SPFILE
ORA-32016: parameter "db_name" cannot be updated in SPFILE

继续来看看service_name相关的一些东西。
查看监听的情况,可以看到rac有连个监听,其中一个是通过IP漂移来动态控制的。LISTENER_SCAN1,但是不管监听的名称如何,对应的service_name都和db_name是一致的。

-bash-4.1$ ps -ef|grep tns
root        13     2  0 Nov19 ?        00:00:00 [netns]
ora11g    2333     1  0 Nov19 ?        00:00:03 /u03/ora11g/product/11.2.0/dbhome_1/bin/tnslsnr list -inherit
grid     22803     1  0 03:34 ?        00:00:00 /u04/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
grid     22807     1  0 03:34 ?        00:00:00 /u04/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
grid     23134 21458  0 03:46 pts/0    00:00:00 grep tns

-bash-4.1$ tnsping racdb
TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 24-NOV-2014 03:47:18
Copyright (c) 1997, 2011, Oracle.  All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RACDB)))
OK (10 msec)

-bash-4.1$ lsnrctl status racdb
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 24-NOV-2014 03:45:28
Copyright (c) 1991, 2011, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rac-scan)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RACDB)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER_SCAN1
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                24-NOV-2014 03:34:31
Uptime                    0 days 0 hr. 10 min. 57 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u04/app/11.2.0/grid/network/admin/listener.ora
Listener Log File         /u04/app/11.2.0/grid/log/diag/tnslsnr/rac1/listener_scan1/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.3.100)(PORT=1521)))
Services Summary...
Service "RACDB" has 1 instance(s).
  Instance "RACDB1", status READY, has 1 handler(s) for this service...
Service "RACDBXDB" has 1 instance(s).
  Instance "RACDB1", status READY, has 1 handler(s) for this service...
The command completed successfully

对于db_unique_name,这个是在dataguard中需要设置的一个参数,在10g开始启用,关于为什么有这么一个参数,其实可以这么理解,如果某个主库有一个备库,采用dataguard来实现,并且在同一台机器上,那么就可以使用db_unique_name来在dg环境中为db设置一个唯一的值。

目录
相关文章
|
数据库 Python
执行superset db upgrade初始化Supetset数据库时报错ImportError: cannot import name ‘soft_unicode’ from ‘markupsaf
执行superset db upgrade初始化Supetset数据库时报错ImportError: cannot import name ‘soft_unicode’ from ‘markupsaf
494 0
|
7月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
498 158
|
7月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
7月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1254 152
|
7月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
929 156
|
7月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
524 156
|
7月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(上)
最终建议:当前系统是完美的读密集型负载模型,优化重点应放在减少行读取量和提高数据定位效率。通过索引优化、分区策略和内存缓存,预期可降低30%的CPU负载,同时保持100%的缓冲池命中率。建议每百万次查询后刷新统计信息以持续优化
630 161
|
8月前
|
存储 运维 关系型数据库
从MySQL到云数据库,数据库迁移真的有必要吗?
本文探讨了企业在业务增长背景下,是否应从 MySQL 迁移至云数据库的决策问题。分析了 MySQL 的优势与瓶颈,对比了云数据库在存储计算分离、自动化运维、多负载支持等方面的优势,并提出判断迁移必要性的五个关键问题及实施路径,帮助企业理性决策并落地迁移方案。
|
7月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
7月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。