Several concepts in oracle 10g (sid/db_name/server_name)


 

1. Database name
1. The concept of database name

     The database name (db_name) is the identification of a database, just like a person's ID number. If multiple databases are installed on a machine, each database has a database name. After the database is installed or created, the parameter DB_NAME is written into the parameter file.

The database name is in the $ORACLE_HOME/admin/db_name/pfile/init.ora file

###########################################
# Database Identification
#### #######################################
db_domain=""
db_name=orcl
    when creating the database The database name should be considered, and after the database is created, the database name should not be modified, even if it needs to be modified, it will be very troublesome. Because the database name is also written into the control file, the control file is stored in binary format, and the user cannot modify the content of the control file. Suppose the user modifies the database name in the parameter file, that is, modifies the value of DB_NAME. However, when Oracle starts, because the DB_NAME in the parameter file is inconsistent with the database name in the control file, the database fails to start, and an ORA-01103 error will be returned.

2. The role of the database name

     The database name is used when installing the database, creating a new database, creating a database control file, modifying the data structure, and backing up and restoring the database.
     There are many Oracle installation file directories related to the database name, such as:
     winnt: F:\oracle\product\10.2.0\oradata\DB_NAME\...

     Another example is the parameter file pfile:
     winnt: F:\oracle\product\10.2.0\admin\DB_NAME\pfile\init.ora.54200885729

     If the control file is damaged or lost, the database cannot be loaded. At this time, the control file must be recreated by starting the instance in nomount mode, and then creating the control file with the create controlfile command. Of course, the DB_NAME must be specified in this command.

3. Modify the database name

  Suggestion: The database name should be determined when the database is created, and the database name should not be modified, because modifying the database name is a complicated matter.
  Now to explain how to modify the database name after the data has been created. The steps are as follows:
(1) Close the database.
(2) Modify the value of the DB_NAME parameter in the database parameter file to the new database name.
(3) Start the instance in NOMOUNT mode and create a control file (for the command syntax for creating a control file, please refer to the oracle documentation)

4. Query the current database name

   Method 1:  select name from v$database;
   Method 2: show parameter db
   Method 3: View parameter file

Second, the database instance name

1.数据库实例名的概念(instance_name)
      先来解释以下,实例是什么东西。实例是访问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程和这些进程所使用的内存(SGA)所构成一个集合,它根本不需要一个与其相关联的数据库,没有任何数据文件也可以启动实例。下面是Oralce的启动过程:
   sqlplus / as sysdba
   sql>startup nomount #启动了一个实例,现在SGA分配了,进程在运行,除数据库所有的东西都启动了
   sql>alter database mount#利用控制文件(init.ora文件中指定)定位重作文件、数据文件、临时文件
   sql>alter database open#数据库可供任何人通过这个实例访问。
    所以可以这么理解:大家访问Oracle都是访问一个实例,但这个实例如果关联了数据库文件,就是可以访问的,如果没有,就会得到实例不可用的错误。
   实例名指的是用于响应某个数据库操作的数据库管理系统的名称。她同时也叫SID。实例名是由参数instance_name决定的。如果这个参数不被指定(即instance_name没有被指定为任何值),那么实例的名字由该用户的环境变量ORACLE_SID(注意这里是大写)决定。在windows平台下,则是注册表中oracle_sid值决定。

2.实例和数据库   
    实例和数据库之间的区别如下:
  (1)实例是临时的,它只在相关的进程和内存集合存在时存在;数据库是永久的,只要文件存在它就存在
  (2)一个实例在其生存期内可安装和打开单个数据库;数据库可以被很多实例安装和打开,或者一个接一个的实例安装和打开,或者由多个实例同时安装和打开(RAC)
      顺便提一下RAC,简单来说RAC就是多个实例同时打开一个数据库文件的系统,在结构上是多台机器,每天机器运行一个实例,每个实例都打开同一个数据库 (这个是用磁盘共享技术实现的),这些实例之间需要同步高速缓存,这样保证多个实例是完全一致的,不会相互冲突乃至覆盖。

     数据库实例名(instance_name)用于对外部连接。在操作系统中要取得与数据库的联系,必须使用数据库实例名。例如,要去连接一个数据库服务器,就必须知道其数据库实例名,只知道数据库名是没有用的。与数据库名不同,在数据安装或创建数据库之后,实例名可以被修改。数 据库名和实例名可以相同也可以不同。在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群) 中,数据库名和实例名是一对多的关系(一个数据库对应多个实例,同一时间内用户只一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安 全运行) 。
3.查询当前数据库实例名

方法一:select instance_name from v$instance;
方法二:show parameter instance

三、ORACLE_SID

    在实际中,对于数据库实例的标识有时使用实例名,有时使用ORACLE_SID,它们有什么区别呢?

(ORACLE_SID)
OS<----------------> ORACLE 数据库 <--------(instance_name(实例名))

    上图表示实例名instance_name、ORACLE_SID与数据库及操作系统之间的关系,虽然这里列出的两个参数都是数据库实例名,但 instance_name参数是ORACLE数据库的参数,此参数可以在参数文件中查询到;而ORACLE_SID参数则是操作系统环境变量,与 ORACLE_BASE、ORACLE_HOME等用法相同,用于和操作系统交互。也就是说,在操作系统中要想得到实例名,就必须使用ORACLE_SID。且ORACLE_SID必须与instance_name的值一致,否则,你将会收到一个错误,在winnt平台,是“TNS:协议适配器错误”。

四、数据库域名与全局数据库名

 1.概念与联系  

     使用数据库名(da_name)对一个数据库进行唯一标识,这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这种命令数 据库的方法给数据库的管理造成一定的负担,因为各个数据库的名字可能一样,造成管理上的混乱。为了解决这种情况,引入了db_domain参数,这样在数 据库的标识是由db_name和db_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。这类似于互连网上的机器名的管理。我们 将db_name和db_domain两个参数用‘.’连接起来,表示一个数据库,并将该数据库的名称称为global_name,即它扩展了 db_name。db_name参数只能由字母、数字、’_’、’#’、’$’组成,而且最多8个字符。

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

    全局数据库名(global_name):对一个数据库(Oracle database)的唯一标识,oracle建议用此种方法标识数据库。该值是在创建数据库时决定的,缺省值为db_name. db_domain。在以后对参数文件中db_name与db_domain参数的任何修改不影响global_name的值,如果要修改 Global_name,只能用alter database rename global_name to 命令进行修改,然后修改相应参数。

2.查询数据库域名

       方法一:select value from v$parameter where name = 'db_domain';
       方法二:show parameter domain
       方法三:在参数文件中查询

3.例子

全国交通GIS系统的分布式数据库,其中:
吉林节点: jl.jtgis
吉林长春节点: cc.jl.jtgis
河北节点: hb.jtgis
河北石家庄节点:sjz.hb.jtgis
这些就是数据库域名,数据库域名在存在于参数文件中,她的参数是db_domain.
全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:orcl.jl.jtgis

五、数据库服务名    
      该参数是oracle8i新引进的。在8i以前,我们用SID来表示数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多网络服务名,设置繁琐。为了方便并行环境中的设置,引进了service_name参数。该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。
    该参数的缺省值为db_name.db_domain,即等于global_name.如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库 服务名与数据库名相同。一个数据库可以对应多个service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即 service_name 不必与SID一样。
      从Oracle8i开始的oracle网络组件,数据库与客户端连接的主机字符串使用的是数据库服务名。之前用的是SID,即数据库实例名。

查询数据库服务名
     方法一:select value from v$parameter where name = 'service_name';
     方法二:show parameter service_name

六、网络服务名

      网络服务名(net_service_name),又可以称为数据库别名(database alias)。是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。网络服务名被记录在 tnsnames.ora文件中。

可以通过netmgr来新建网络服务名。

  网络服务名是从客户端的角度出发,当客户端连接远程数据库或其他服务时,可以指定网络服务名。因此需要使用一个或多个命名方法将此Net服务名解析为连接数据库或其他服务的连接描述符,看下面:

  [本地]——将存储在本地客户机的tnsnames.ora文件中的网络服务名解析为连接描述符。
  [Oracle Names]——由Oracle名字服务器提供为网络上的每个Oracle Net服务提供解析方法
  [主机名]——通过TCP/IP环境中的主机别名连接到Oracle数据库服务
  [Sun NIS]/[DCE CDS]——专用系统用的,在Windows 2000系统环境下不适用


Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325732698&siteId=291194637