最近学习Oracle,在网上找一些资料,对于客户端与服务器端的连接有一些疑问,相信不少人也遇到这些问题了;
1、安装服务器端后,可以建立多个数据库,每个数据库有一个属于自己的数据库名字,是不是每一个数据库有多个实例呢?
2、创建多个用户后,每个用户是不是可以访问服务器端的所有数据库呢?我怀疑是不是用户权限不同就会有访问限制呢?用户登录后怎么知道是访问的哪个数据库呢?
3、客户端连接服务器用服务名还是SID呢?Oracle数据库实例连接

解决方案 »

  1.   

    1、安装服务器端数据库后,可以建立多个实例,每个实例有一个属于自己的sid
    2、每个用户只能访问自己所在实例的数据,如果要访问其他实例的数据,需要用dblink
    3、一般情况下服务名就是sid,但是在linux下,可能服务名=sid+域名客户端连接服务端,用tns 文件里面配置的别名即可,比如使用下面的test,而不是orcl:
    test=
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )
      

  2.   

    用户怎么知道自己和哪个实例关联的呢?比如我在服务器端创建多个用户:a,b,c;它们分别和一个数据库实例关联吗?
    在安装服务器端时,
    会有一个启动数据库,我还可以用Database Configuration Assistance 来创建新的数据库,也就是说我可以创建多个数据库,
    从图中我怎么感觉是一个数据库可以有多个实例呢?数据库和实例的关系是不是类和对象的关系呢?
      

  3.   

    用户怎么知道自己和哪个实例关联的呢?比如我在服务器端创建多个用户:a,b,c;它们分别和一个数据库实例关联吗?
    在安装服务器端时,
    会有一个启动数据库,我还可以用Database Configuration Assistance 来创建新的数据库,也就是说我可以创建多个数据库,
    从图中我怎么感觉是一个数据库可以有多个实例呢?数据库和实例的关系是不是类和对象的关系呢?
    你这是创建的实例,不是数据库。
      

  4.   

    那我这里要填写的全局数据库名称是什么呢?安装时设置的启动数据库Orcl码?
    我想建立 新的数据库而不是 实例要怎么做呢?
      

  5.   

    一般的理解,实例其实就是数据库了。默认情况下,全局数据库名 和sid 填写一样的,
    如果不一样,比如全局数据库名为orcl.XX,sid为orcl,后面建的dblink等 名称后面可能会带个后缀.XX。想建新数据库,那再装个oracle呗。。还有你上面说的什么用户怎么知道自己和哪个实例关联的呢??
    我感觉你自己都没实际操作过吧,都是凭空想象而已,如果要建用户,你首先得登陆到某个实例才行,哎~~