今天第一次用Oracle,经理给了我一个用户名和密码,我登陆以后想建一个数据库(我以前一直用sqlserver和mysql),结果一敲sql语句,就提示:数据库已加载,我迷惑了很久,后来找了一条显示当前数据库名称的语句,还真是已经有了一个数据库。
现在我的问题是:Oracle下的数据库管理模式是怎样的?比如说:sqlserver是先建库,后建表,再添加用户。那Oracle呢?为什么要那样做呢?oracle的表空间是用来放表的我知道,一个数据库下面可以有多个表空间我也知道,oracle为什么要这么做呢?还请高手指教一二!

解决方案 »

  1.   

    Oracle下的数据库管理模式是怎样的?
    ===> ORACLE下的数据库管理模式类似于 linux上的用户模式
          一个linux服务器就相当于 oracle数据库,你可以在oracle数据库上建立 scheme(user)
          每一个user 拥有自己的数据库对象,与其他user在没有赋权的情况下互补干扰。===>oracle 为什么这么做,这个就不是问题了吧,oracle数据库就是这么设计的,需要理由么。
      

  2.   

    还是没看懂,用linux的例子不太好
      

  3.   

    那没办法了,linux的例子是最好的。 你没用过那就没办法给你解释了。
      

  4.   

    Oracle 并不需要为每个用户都建立一个数据库,只要把自己的表建到合适的表空间就行了
      

  5.   

    经理给了我一个用户名和密码,我登陆以后想建一个数据库
    ---------------------------
    你这个登陆是进入到Oracle的一个数据库里面了。需要自己的空间,就去建立表空间。
    用服务端工具比如DBCA去建库。
      

  6.   

    楼主的思维跟我N年前的一摸一样,简单的说,N年前,我只是个会使用SQL语句的人,对数据库是不了解的。自从深入学习了Oracle,彻底颠覆了我对数据库的认识。我来拿SQL server和oracle做个比较,说的不好请大家指正。
    一,所谓的SQL Server Management Studio(企业管理平台)和Oracle是两回事。这样说吧,楼主意识中的数据库就是Oracle中的一个表空间,楼主如果觉得SQL Server是数据库,那么它和Oracle中的表空间是对等的,而Oracle当它是服务器了。Oracle中建表空间就等于SQL Server中建库。SQL Server就当它是个多个数据库的集合。楼主暂时这么理解,继续看下面的第二条。
    二,SQL Server的最小存储单位我们称它为page(页)。Oracle呢,最小的是block(块)大小默认为4KB。Oracle还可以给一个字段分区partition:有范围分区,散列分区,列表分区等。在Oracle中序列是个对象,叫Sequence,很强大的sequence。这个跟SQL Server 中的序列是不同的。感觉Oracle超越了关系型数据库,似乎是个对象型数据库。
    三,SQL Server 就像是一本书,而Oracle是书店。假如说你是Oracle用户,你是可以拥有多本书的,一本书有自己的索引,就是目录,方便检索。别人没有权限是不可以看的。至于“表”这个东西,它是不存在的。就像Java中的方法,Java中的属性是占内存的,而方法你就当它是一对大括号罢了。Oracle中的表也是这样,它是不存在的,符合逻辑的在一起就是表。举个例子,楼主是表里一行数据,您所在的公司的项目组就是表,这个项目组是抽象的,不存在的,由于你们这些为了同一个目标而聚在一起的人才成就了这个“表”的存在。SQL Server 中表也是这样的。
    四,Oracle中block块在物理硬盘上是乱放的,它为什么是乱放的呢,因为计算机磁头读取是一圈一圈的读取,block里有个head,head里放地址,相同地址的block组成一个partition,相同地址的partition组成一个段,段组成表空间。表是不存在的,但是它是相同逻辑的集合,是个抽象概念。一般开发中,Oracle用户名就是一个项目的项目名。
    说不动了,楼主有疑惑请继续提问?
      

  7.   

    建议先看一下《Oracle Concepts》,网上有中英文对照的。
      

  8.   


    表空间就是数据库,个人认为这么理解好一点。
    所谓的数据库sql server  和  oracle就当是个服务器或者是 企业管理平台
      

  9.   


    一个表空间必须隶属于一个逻辑,这个逻辑就是用户,也可是项目名字。
    表空间里放所谓的表就可以。你把表空间当成sqlserver就成。呵呵  说得不好,请纠正。
      

  10.   

    看了楼上的解答,对ORACLE有更进一步的了解了
      

  11.   

    我作为一个coding,我觉得我必须得了解数据库,我们都一样。oracle是一门学不完的科学,只能这么说了。哎,不知道oracle DBA多难做!