`

oracle 10g中的几个概念(sid/db_name/server_name)

 
阅读更多

一、数据库

1.数据库名的概念

     数据库名(db_name)就是一个数据库的标识,就像人的身份证号一样。如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。

数据库名在$ORACLE_HOME/admin/db_name/pfile/init.ora文件中

###########################################
# Database Identification
###########################################
db_domain=""
db_name=orcl
    在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。因为,数据库名还被写入控制文件中,控制文件是以 二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。但是在Oracle启动时,由于参数文 件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。

2.数据库名的作用

     数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的。
     有很多Oracle安装文件目录是与数据库名相关的,如:
     winnt: F:\oracle\product\10.2.0\oradata\DB_NAME\...

     又如参数文件pfile:
     winnt: F:\oracle\product\10.2.0\admin\DB_NAME\pfile\init.ora.54200885729

     如果控制文件损坏或丢失,数据库将不能加载,这时要重新创建控制文件,方法是以nomount方式启动实例,然后以create controlfile命令创建控制文件,当然这个命令中也要指明DB_NAME。

3.修改数据库名

  建议:应在创建数据库时就确定好数据库名,数据库名不应作修改,因为修改数据库名是一件比较复杂的事情。
  现在就来说明一下,如何在已创建数据之后,修改数据库名。步骤如下:
(1)关闭数据库。
(2)修改数据库参数文件中的DB_NAME参数的值为新的数据库名。
(3)以NOMOUNT方式启动实例,修建控制文件(有关创建控制文件的命令语法,请参考oracle文档)

4.查询当前数据库名

   方法一: select name from v$database;
   方法二:show parameter db
   方法三:查看参数文件

 

二、数据库实例名

1.数据库实例名的概念(instance_name)
      先来解释以下,实例是什么东西。实例是访问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程和这些进程所使用的内存(SGA)所构成一个集合,它根本不需要一个与其相关联的数据库,没有任何数据文件也可以启动实例。下面是Oralce的启动过程:
   sqlplus / as sysdba
   sql>startup nomount #启动了一个实例,现在SGA分配了,进程在运行,除数据库所有的东西都启动了。-----解释:系统全局区又称SGA (System Global Area)是Oracle Instance的 基本组成部分
   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 <db_name.db_domain style="word-wrap: break-word;">命令进行修改,然后修改相应参数。

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系统环境下不适用

分享到:
评论

相关推荐

    修改oracle_sid和db_name名字

    在 Oracle 数据库中,sid 和 db_name 是两个非常重要的参数,分别表示数据库实例名和数据库名字。修改这两个参数需要谨慎,因为它们对数据库的运行和性能有着直接的影响。在本文中,我们将详细介绍如何修改 Oracle_...

    oracle_DB_NAME,INSATNCE_NAME,ORACLE_SID区别

    Oracle 中有三个重要的概念:DB_NAME、INSTANCE_NAME 和 ORACLE_SID,它们都是 Oracle 数据库的重要组成部分,了解它们的区别和作用非常重要。 DB_NAME DB_NAME 是数据库的名称,也就是数据库的名字标识。在 ...

    windowsServer2008_64位安装oracle10G全过程

    ### Windows Server 2008 64位安装Oracle 10G全过程详解 #### 一、概述 本文档详细介绍了在Windows Server 2008 64位系统上安装Oracle 10G数据库的全过程。对于初次接触此过程的技术人员来说,这将是一个非常有价值...

    [整理]修改oracle实例名&#40;sid&#41;和数据库名&#40;db_name&#41;.doc

    在Oracle数据库环境中,有时因为各种原因,我们可能需要更改数据库的实例名(SID)和数据库名(db_name)。这通常是由于系统迁移、合并或者规范命名等原因导致的。Oracle提供了多种方法来实现这一变更,其中既包括...

    Oracle9个_name介绍

    - **限制**:在创建数据库时,`db_name`的长度被限制为最多8个字符,尽管在Oracle 10g中创建时不会出现错误提示,但实际存储的字符长度仍然会被截断。 - **用途**:`db_name`对于动态注册监听器至关重要,无论`...

    oracle 使用命令创建oracle数据库

    1 、确定数据库的sid 和db_name  \u3000sid='hsj'  db_name='hsj'  2、设置环境变量env ORACLE_BASE=/u01/app ORACLE_HOME=$ORACLE_BASE/oracle ORACLE_SID=hsj PATH=$ORACLE_HOEM/bin:$PATH; LD_...

    Linux下备份oracle数据库到本地

    在Linux环境下,对Oracle数据库进行备份是数据库管理中的重要任务,确保数据安全和灾难恢复的能力。本文主要讨论如何在Linux系统下使用Oracle的exp工具来备份数据库到本地,并结合使用shell脚本和crontab实现自动化...

    Docker中安装oracle 11.2.0.4.docx

    在 Oracle 安装过程中,需要准备一个应答文件 db_install.rsp,其中包含了安装 Oracle 所需的信息: ``` oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 oracle....

    Oracle 10g客户端的安装配置操作详解.doc

    (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /oracle/app/product/10.1.0/db_1) (PROGRAM = extproc)) (SID_DESC = (GLOBAL_DBNAME = demo1) (ORACLE_HOME = /oracle/app/product/10.1.0/db_1) (SID_NAME =...

    oracle 10g 冷拷贝 移植

    ### Oracle 10g 冷拷贝移植在 Linux 下的操作步骤及注意事项 #### 一、概述 Oracle数据库的冷拷贝是一种将整个数据库或者部分数据文件进行物理复制的方法,适用于数据库关闭状态下的完整数据备份与恢复操作。这种...

    CentOS下无界面静默安装oracle 11g

    对于系统管理员来说,能够在没有图形用户界面(GUI)的环境中静默安装Oracle 11g是一项重要的技能,尤其是在服务器环境中,如CentOS。以下我们将详细探讨如何在CentOS上进行无界面的Oracle 11g安装。 首先,静默...

    linux下的Oracle数据库安装,卸载和静默安装

    db_name=orcl sga_target=500M sga_max_size=500M job_queue_processes=10 undo_management=auto undo_tablespace=undotbs audit_file_dest=$ORACLE_BASE/admin/orcl/adump background_dump_dest=$ORACLE_BASE/admin...

    最简单的oracle10g手工建库步骤

    ### 最简单的Oracle 10g手工建库步骤详解 #### 平台信息 - **操作系统**: Linux AS release 4 - **Oracle版本**: Oracle 10.2.0.4 - **数据库名称**: ypythb #### 步骤一:设置环境变量 在开始创建数据库之前,...

    linux oracle10g 安装教程

    Linux Oracle 10g 安装教程 本文将指导您详细安装 Oracle 10g 在 Linux 操作系统上。我们将从头开始,逐步介绍安装过程,包括环境建立、组和用户创建、软件安装位置、数据文件存放位置、权限分配、环境变量设置、...

    ORACLE 中的几个重点概念

    在Oracle数据库的管理和使用过程中,有几个重要的概念常常被提及,但有时也容易被混淆,这些概念包括:数据库名(DB_NAME)、数据库实例名(INSTANCE_NAME)、操作系统环境变量ORACLE_SID、数据库服务名(SERVICE_...

    ORACLE网络的几个重点概念.doc

    Oracle网络涉及一系列重要的概念,这些概念对于理解和管理Oracle数据库至关重要。首先,我们来看数据库名(DB_NAME)和实例名(INSTANCE_NAME)。 1. 数据库名(DB_NAME) 数据库名是Oracle数据库内部用来唯一标识...

    各种数据库的连接方式(mysql,oracle,access)

    其连接过程主要包括以下几个步骤: 1. **加载驱动**:首先需要加载MySQL JDBC驱动类。 ```java String driver = "com.mysql.jdbc.Driver"; Class.forName(driver).newInstance(); ``` 2. **设置连接参数**: -...

Global site tag (gtag.js) - Google Analytics