oracle中几个概念

孤者浪人 提交于 2019-12-07 03:29:38

ORACLE中DB_NAME,DB_DOMAIN,GLOBAL_DBNAME,SERVICE_NAME,ORACLE_SID,INSTANCE_NAME,SCHAME概念。之前对这些概念有接触,但一直没有彻底理解,今天整理下。

DB_NAME:数据库名称,数据库的唯一标识。它出现在数据文件、控制文件、日志文件中。只能由字母、数字、’_’、’#’、’$’组成,而且最多8个字符。它对于单机数据库是足够,但在多个数据库构成的分布式数据库中,数据库名称可能一样,为了避免造成管理上的混乱,所以引入了DB_DOMAIN的概念。

DB_DOMAIN:定义一个数据库所在的域,该域的命名同互联网的’域’没有任何关系,只是数据库管理员为了更好的管理分布式数据库而根据实际情况决定的。当然为了管理方便,可以将其等于互联网的域。 

GLOBAL_DBNAME:全局数据库名,缺省值为DB_NAME.DB_DOMAIN。出现在Listener.ora文件中,是服务器提供的服务名,可以通过show paramerer service_names查看,并可以通过alter system set service_name='servicename' scope=both来修改。

SERVICE_NAME:用ORACLE_SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了SERVICE_NAME参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为DB_NAME.DB_DOMAIN,即等于GLOBAL_DBNAME。一个数据库可以对应多个SERVICE_NAME,以便实现更灵活的配置。该参数与ORACLE_SID没有直接关系,即不必SERVICE_NAME 必须与ORACLE_SID一样。在有数据库域名时,是GLOBAL_DBNAME,没有数据库域名时是DB_NAME。

ORACLE_SID:数据库操作系统标识(oracle system identifier),由SGA(内存缓冲)和后台进程构成。在分布式数据库系统里,全局数据库名是db_name.db_domain;如果是单数据库我们常常就是只有db_name,这时oracle_sid=db_name。

INSTANCE_NAME:oracle实例名称,用来区分不同的实例。在Oracle9i之前,该名字存储在两个地方:参数文件和数据库的内部试图(V$INSTANCE)。而在Oracle10g之后的版本中,该名字不再出现在参数文件中,而是动态从系统中获得,默认是取自ORACLE_SID。

SCHAME:命名空间,数据库对象的集合,如table、index、view等,一个schema中的对象名称必须唯一。schema是基于用户的,创建了一个用户就创建了一个同名的schema。

TABLESPACE:表空间是实际存储数据的地方。通过使用表空间,管理员可以控制磁盘的布局,表空间的最常用的作用是优化性能。例如:一个最常用的索引可以建立在非常快的硬盘上而不太常用的表可以建立在便宜的硬盘上,比如用来存储用于进行归档文件的表,所以table和index一般需要建立在不同的表空间上。一个tablespace可以有多个schema。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!