oracle DB_NAME、INSTANCE_NAME、ORACLE_SID

oracle DB_NAME、INSTANCE_NAME、ORACLE_SID
oracle DB_NAME、INSTANCE_NAME、ORACLE_SID

概述

DB_NAME与INSTANCE_NAME

DB_NAME 数据库名称,也就是数据库的名字标示。这里,数据库里可能有多个实例,比如RAC里的多节点,这多个节点是不同的实例,但是却有相同的名字,他们的DB_NAME 是相同的,但是Instance_name是不同的。DB_NAME会保持在数据文件头里,所以更改DB_NAME不能仅仅修改parameter,还需要用nid来进行更改,并且更改后还需要手工做些工作,使其生效,一般情况下不建议修改。

DB_NAME与DB_UNIQUE_NAME

DB_UNIQUE_NAME这在另一个HA的应用,Dataguard会经常提及的,和DB_NAME不一样的作用,在DG里,要求物理DG,主从库都有一样的DB_NAME,虽然他们和RAC 不一样,并不是同一个库。这里是数据库的唯一名字。但是他们的DB_UNIQUE_NAME是不一样的,用以进行不同的标示。DB_UNQUIE_NAME的会影响到Service_names,也会影响到动态监听的时候的service_name。

DB_NAME

db_name是数据库的名字,oracle本身可能是比较有用的,对我们而言没有什么太多的用处,db_name记录在controlfile,datafile_header,redo中。在建库时,db_name被限制为最长8个字符。db_name还有一个非常重要的作用就是动态注册监听,不管是否指定了service_name,或者说service_name的值是什么,pmon都会使用db_name动态注册监听的。

ORACLE_SID

sid为在host上用sid来标示实例的共享内存的,尽管v$instance中字段instance_name看起来是实例名,但是实际上存储的是sid,在win下sid不能重复,在unix/linux下只要不同版本的oracle安装在不同的oracle_home下就可以创建相同sid的实例,但是win下不可以,主要是受到windows服务的限制,在服务中不能存在服务名相同的oracle服务(OracleServiceSID)。dataguard中建议大家在primary,standby上使用相同的service_names,这样可能便于尽可能的实现透明切换。

DB_DOMAIN与GLOBAL_NAME

db_domain的作用主要是用在分布式数据库中,分布式事务的各个数据库应该有db_domain global_name是由db_name.db_domain构成的,global_name的作用主要也是用在Distributed Database中。配置静态监听注册时,需要输入的全局数据库名(GLOBAL_DBNAME )输入什

么都可以,只要保证listerner.ora中的GLOBAL_DBNAME和tnsnames.ora中的SERVICE_NAME保持一致就可以。

DB_UNIQUE_NAME

DB_UNIQUE_NAME是10g的参数,在配置dataguard环境时必须为处于dg环境中每个db 设置一个唯一值,在没有DB_UNIQUE_NAME参数之前,在同一台机器上搭建dg时必须使用参数LOCK_NAME_SPACE在standby参数文件中,10g有了参数db_unique_name,LOCK_NAME_SPACE已经被废弃。

在配置文件中的情况:

在init.ora中有db_name,instance_name,service_name

db_name是数据库的名称,在db安装时就已经设置了,它决定了数据库安装文件的位置。instance_name是实例名,是数据库运行中名称,默认和db_name是一样的

service_name应该是指数据库网络连接时的名称,在listener配置中会有所考虑的。这个值也是可以随意改动的,并且还可以有多个值。

在listener.ora中有SID_NAME,GLOBAL_DBNAME

这里SID_NAME指数据库的运行的实例名,应该是和instance_name一致

而对于GLOBAL_DBNAME是listener配置的对外网络连接名称,我们在配置tnsname.ora 时会考虑这个参数。这个参数可以任意的设置。

在tnsname.ora中有SERVICE_NAME,SID

对于这里的配置主要要给出要连接的数据库的IP及其连接的实例或服务

在监听配置中我们提到了对外网络连接名称,在这里如果用SERVICE_NAME的话,就需要SERVICE_NAME=(GLOBAL_DBNAME或者service_name这里要求oracle已经注册到了监听器中),对于SID=(instance_name)

最后一个是ORACLE_SID参数,这个参数是操作系统中用到的,它是描述我们要默认连接的数据库实例,对于一个机器上有多个实例的情况下,要修改后才能通过conn / as sysdba 连接,因为这里用到了默认的实例名。

相关主题
相关文档
最新文档