今天第一次用Oracle,经理给了我一个用户名和密码,我登陆以后想建一个数据库(我以前一直用sqlserver和mysql),结果一敲sql语句,就提示:数据库已加载,我迷惑了很久,后来找了一条显示当前数据库名称的语句,还真是已经有了一个数据库。
现在我的问题是:Oracle下的数据库管理模式是怎样的?比如说:sqlserver是先建库,后建表,再添加用户。那Oracle呢?为什么要那样做呢?oracle的表空间是用来放表的我知道,一个数据库下面可以有多个表空间我也知道,oracle为什么要这么做呢?还请高手指教一二!
现在我的问题是:Oracle下的数据库管理模式是怎样的?比如说:sqlserver是先建库,后建表,再添加用户。那Oracle呢?为什么要那样做呢?oracle的表空间是用来放表的我知道,一个数据库下面可以有多个表空间我也知道,oracle为什么要这么做呢?还请高手指教一二!
===> ORACLE下的数据库管理模式类似于 linux上的用户模式
一个linux服务器就相当于 oracle数据库,你可以在oracle数据库上建立 scheme(user)
每一个user 拥有自己的数据库对象,与其他user在没有赋权的情况下互补干扰。===>oracle 为什么这么做,这个就不是问题了吧,oracle数据库就是这么设计的,需要理由么。
---------------------------
你这个登陆是进入到Oracle的一个数据库里面了。需要自己的空间,就去建立表空间。
用服务端工具比如DBCA去建库。
一,所谓的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用户名就是一个项目的项目名。
说不动了,楼主有疑惑请继续提问?
表空间就是数据库,个人认为这么理解好一点。
所谓的数据库sql server 和 oracle就当是个服务器或者是 企业管理平台
一个表空间必须隶属于一个逻辑,这个逻辑就是用户,也可是项目名字。
表空间里放所谓的表就可以。你把表空间当成sqlserver就成。呵呵 说得不好,请纠正。