看到一个关于SID的定义:SID用于识别同一台计算机上的同一个ORACLE数据库的不同实例。这个不同实例是指什么?
比如SQL SERVER中,一台计算机上可以有多个数据库,一个数据库中可以有多个表,那ORACLE中的这个SID和全局数据库名都是指什么?

解决方案 »

  1.   

    oracle连接字符串,通过这个串+用户+密码连接。
      

  2.   

    数据库可以看出底片,实例看成照片纸,底片可以洗出很多照片。但照片纸只能洗一张底片的照片。一个实例是SGA系统全局区内存+后台进程。sid是为这个例程名的名字。
      

  3.   

    数据库名:就是安装在电脑的上的数据库取个名字,
    SID:是我们创建的一个数据库,可以创建多个,这就相当于类和对象的概念,数据库名是一个类,而SID则是
    实例
      

  4.   

    实例:就是Orace软件分配的一块内存区域和后台进程
    SID:就是实例的名称,比如:MyOracle
      

  5.   


    数据库中的表的数量和每个表的结构通常是不一样的,怎么能说是“数据库名是一个类,而SID则是
    实例”  ,如果照你这种说法,那各个实例的表和表的结构都是一样的了。这应该是不对吧。
      

  6.   

    数据库实例是操作数据库的实体,用户通过实例与数据库交互。
    一个数据库对应多个实例,但一个用户只能与一个实例相连。
    数据库实例名(instance_name)和ORACLE_SID功能类似,都是用于操作系统交互,
    但区别是instance_name是oracle数据库参数,而ORACLE_SID是操作系统的环境变量。
    一般,如果服务器只有一个实例,ORACLE_SID的值和实例的名称以及数据库名称相同。
      

  7.   

    http://blog.csdn.net/yuhongpingimu/archive/2010/04/09/5466765.aspx看看这个
      

  8.   

    http://www.cnocp.com/archives/65.html 
    按Tom的解释:
        数据库(database):物理操作系统文件或磁盘( disk)的集合。使用Oracle 10g 的自动存储管理(Automatic Storage Management,ASM)或RAW 分区时,数据库可能不作为操作系统中单独的文件,但定义仍然不变。
     
        实例(instance):一组Oracle 后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。这里可以维护易失的、非持久性内容(有些可以刷新输出到磁盘)。就算没有磁盘存储,数据库实例也能存在。也许实例不能算是世界上最有用的事物,不过你完全可以把它想成是最有用的事物,这有助于对实例和数据库划清界线。    这两个词有时可互换使用,不过二者的概念完全不同。实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。实际上,准确地讲,实例在其整个生存期中最多能装载和打开一个数据库!
    如果你还是不明白,用CSDN上的一个网友的话来解释相对容易理解些:
    数据库就是一个相片底片;实例就是相纸.
    一个底片可以冲多个相纸,但一张相纸最多冲一个底片。
    重申一遍:
    1)实例是一组后台进程和共享内存
    2)数据库是磁盘上存储的数据集合。
    3)实例“一生”只能装载并打开一个数据库。
    4)数据库可以由一个或多个实例(使用RAC)装载和打开。
      

  9.   

    简单的理解为Oracle实例就是一大堆在操作系统中一大块的内存区域和为这块区域服务的一组后台进程。
      

  10.   

    补充:SID是System Identifier的缩写。
      

  11.   

    SID 就是你数据库的实例名啊,比如你同一个数据库可以有多个数据库实例 
    那么你该怎么区分不同的实例呢
    你就可以用你的sid来区分
      

  12.   

    个人理解SID就是数据库的名称,一般都是这么默认的
    因为一台大型主机上可能搭载了很多的数据库。
    当我们用SecureCRT类似工具连接的时候需要设定ORACLE_SID=数据库名,再对数据库进行操作。
      

  13.   

    转别人的一片文过来帮助lz理解数据库名是一个数据库的名称标识,如MyOracle;这个数据库处于网络中时,为标识该数据库的网络位置,需要用数据库名和网络位置组成其全局数据库名,如MyOracle.domain。即MyOracle和MyOracle.domain都指同一个数据库,只是一个名字用在本机上指明,另一个名字用在网络上指明。SID是一个Oracle实例的唯一名称标识。Oracle实例(Instance)也称为Oracle服务器(Server),是用来访问数据库文件集的存储结构与后台程序的集合,用SID来标识。一个数据库是Oracle用于保存数据的一系列物理结构和逻辑结构。简单地说,一个Oracle数据库是磁盘上的一堆文件;为了启动数据库即访问这堆文件,需要在内存中创建它的一个实例,然后由实例加载并打开数据库,实例就是内存中的一堆进程。用户连接数据库时,实际上是连接到实例,然后由实例负责与数据库通信,再将处理结果返回给用户。所以,Oracle中一个数据库至少有一个实例与之对应,但一个数据库可以对应多个实例,被多个实例访问。  
      

  14.   

    一个数据库服务器不是可以有多个实例么,而里面的实例都必须不一样,而SID就是里面的实例的名字。
    这样在启动数据库时,通过SID来指定启动某个实例。也可以认为是个标志符。
      

  15.   

    sid就是实例的名称
    全局数据库名就是我们的数据库名加上我们的域名
      

  16.   

    数据库实例的问题,可以简单的理解为数据库连接串。我们在一台服务器上装了ORACLE,在Oracle上可以建多个实例,不同实例的辨别就是通过SID实现。表空间,和数据存储在数据库中是在某一个实例下建的。因为你需要到登入到某一个数据库实例下才能进行具体的操作。
      

  17.   

    If you’re unfamiliar with the term SID or ORACLE_SID, a full definition is called for. The SID is a site
    identifier. It and ORACLE_HOME (where the Oracle software is installed) are hashed together in UNIX to create
    a unique key name for attaching an SGA. If your ORACLE_SID or ORACLE_HOME is not set correctly, you’ll get
    the ORACLE NOT AVAILABLE error, since you can’t attach to a shared memory segment that is identified by
    this unique key.
    这个是tomkyte的说明:
    也就是说:SID是站点标识符,通过它和ORACLE_HOME(指oracle的家目录)在UNIX系统中hash出一个唯一的键值来指定SGA( 一大块内存),如果SID或者ORALCE_HOME目录不对的话,ORACLE无法启动,因为UNIX系统无法给他分配内存,如果同一台机器装两个实例的话,在同样的ORACLE_HOME的情况下,我们只有设置不同的SID,才可以区分不同的ORACLE实例,才可以给ORACLE分配内存。
      

  18.   

    ORACLE 的 SID 等于 SQL SERVER中的多个数据库的标识, SID设置复杂点.
      

  19.   

    我理解就是相当于SQL SERVER数据库的实例名称
      

  20.   

    数据库名是一个类
    而SID是数据库的一个实例名称
      

  21.   

    看晕了,你们全是牛人。首先:数据库是什么?与我们日常做程序开发中所用的术语“创建数据库”里的“数据库”有什么区别(因为在做开发时候可以在Oracle下创建数据库A,B等等)?回答前,请先解释下这个问题下的数据库到底是什么?!。全部在谈什么实例是数据库运行的一组内存与进程,尼玛桑不起啊,哥的心灵是脆弱的,读的心浮气躁了!然后是13楼的解释,也比较郁闷:数据库(database):物理操作系统文件或磁盘( disk)的集合。这也太笼统了吧,不是是人就有这么强的理解力的。热烈欢迎抨杀!
      

  22.   

    说的白点就是你在创建数据库中的时候写的数据库名,包括后台服务后缀全是以这个SID结尾的例如
      

  23.   

    只可意会,不可言传
    我理解成装好数据库以后就是一个学校,每个SID是一间教室
      

  24.   

    看了楼上各位的评论 也说下我自己的理解可以把一个数据库想做一个仓库 里面存放着数据,然后肯定是可以有多个仓库的,每个仓库放的东西也不一样。
    多个仓库 就对应着多个 数据库的概念。接着,就是数据库的实例了。 一个数据库的实例,就可以想象为一个仓库的管理员,他手里有仓库钥匙,你要存取东西,必须通过他才可以。然而一个仓库并不是只有一个仓库的管理员,他可能有多个管理员(比如仓库太大了,一个人操作不过来,于是乎请了多个人来管理这个仓库)。而每个管理员的名字也就是SID。
      

  25.   

    一个实例是一组 oracle 的后台进程(linux),或者一个 windows 服务(也是一个 windows 进程)。
    一台服务器可以跑多个实例,所以需要 sid 来标识。
      

  26.   

    你可以这样理解,你电脑上装的数据库软件可以新疆多个数据库,那个这多个数据库的名字是用SID来区分的,数据库软件就像一个城市,数据库就是每个人的名字
      

  27.   


    简单点,就是会话标识符哈。和$ORACLE_HOME一起唯一标识了一个SGA。顺便提一下,sid要和ORACLE_SID区别开哦。ORACLE_SID则可以认为是实例名,通过v$instance的字段instance_name查出。
    亲~给分哦。
      

  28.   

    SID: System Identifier,系统标识符,是Oracle数据库实例在指定计算机的唯一标识
      

  29.   

    The system identifier for an Oracle instance, such as orcl for a database or +ASM for an ASM instance. 
      

  30.   

    一般来说sid和全局数据名是相同的。SID打个比喻就像一个人的身份证号,在一台服务器上是唯一的。
      

  31.   

    oracle软件》实例(SID)》对象
    记住这些,oracle中一个SID可以理解成一个数据库,一个SID钟又包含了很多对象(表,索引,用户,触发器,job...)等等
      

  32.   

    SID代表实例名,一个数据库可以包含多个实例。
    SQL> show parameter name;NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ---------
    db_file_name_convert                 string
    db_name                              string      test
    db_unique_name                       string      test
    global_names                         boolean     FALSE
    instance_name                        string      test
    lock_name_space                      string
    log_file_name_convert                string
    service_names                        string      testdb_name代表数据库名,instance_name代表实例名。(我库里只有一个实例)
      

  33.   

    oracle连接字符串,通过这个串+用户+密码连接