日期:2014-05-17  浏览次数:20898 次

oracle建库与建立表空间和用户
刚刚接触oracle,由于以前用sql server,总喜欢把两个进行对比,对比对比就更加糊涂了,这里特像各位高人请教几个问题。
oracle安装时有默认建库或者在安装完成之后建库,这里的建库是不是和sql server的建立的实例差不多,只是一个后台进程与内存的集合?是不是在文件夹中有明确的体现。
建库之后,我们使用sqlplus进行操作,要进行用户连接,这里是不是和sql中的sa登录一样?
登录之后,我们需要进行建立表空间,是不是感觉跟sql里面新建数据库一样?

这样之后我的理解是:oracle建库=建立实例; oracle 建立用户=sql server 建立登录用户;oracle建立表空间=sql server 建立新数据库?
望各位高人能给予指示,不正确或者完全的谬误也不用顾忌面子,谢谢了。
------解决方案--------------------
1.如create database wc一样。你说的实例有点模糊。你能理解此语句即可。
2.是与内存集合相关。
3.此处是用户登录,比sql中的更强大。因为有的数据表,只对某一个用户,故要使用之时,必先选好用户。
4.新手可暂不要建空间。
5.基本正确。
------解决方案--------------------
首先,Oracle和SQL SERVER本质是不一样的,拿来比较没啥意义,
1)oracle建库=建立实例
   oracle建库!=建立实例
   因为,从其组成看:库(磁盘上的数据文件组成)
                     实例(内存+后台进程组成)
                     一动一静
   举个例子:
            比如库是一家公司,那么实例就是它的人事部

2)oracle 建立用户=sql server 建立登录用户
   这两个一样

3)oracle建立表空间=sql server 建立新数据库
   表空间是逻辑概念
   数据库是物理概念
   数据库由表空间组成
------解决方案--------------------
从用户角度来看oracle建库=建立实例
而使用时就是使用的实例, 所以可以把建库看成实例。。。
------解决方案--------------------
1、sqlserver数据库类似与windows操作系统的服务器
   你可以建立N个用户,这N个用户可以登录“服务器”,但是他们的权限可能不同,如:admin和guest
2、oracle数据库类似与linux造作系统的服务器
   你可以建立N个用户,在不设定的情况下,每个用户只能访问自己/home/用户文件夹 下的东西

类似的mysql也跟sqlserver类似,数据库建之后,建用户,然后给用户赋权让他有权限访问哪些数据库

========
你也可以这么想: 
sqlserver:
你们公司有很多部门,部门就是不同的sqlserver数据库,你门公司老总的门禁卡,肯定能进所有房间,他就是 你们公司这个sqlserver服务器的admin,你只能进你自己的房间,你就是普通用户
当有新同事加入的时候,根据他的工作职责,分配他的门禁权限,让他访问他能访问的“数据库”

oracle:
你所在的办公室就是一个oracle数据库,你们办公室所有同事,都可以进入这个“数据库”,但是每个人只能在自己工位上处理工作,互不影响,但是你如果想到其他人那玩一玩,必须得到别人的“授权”
当有新同事加入的时候(就是新增用户),办公室分配一个工位(schema)给他就行了

------解决方案--------------------
从理论上说:
oracle数据库包含:控制文件、数据文件、参数文件、日志文件、密码文件等存储在硬盘上的文件。
oracle实例包含:内存结构、后台进程
两个加一起就是咱们常说的oracle数据库
oracle里面还有user和schema的概念,默认建一个用户,oracle就会建立一个同名的schema,并将两者绑定
如:建一个test 用户,默认会有一个test schema,当我们sqlplus test/test 登陆的时候实际上访问的是
    test schema里面的对象(当然他也可以访问其他schema下的对象,但是需要赋权

oracle新建数据库的话,是在操作系统上建一套数据库,每一套数据库上都会有上面的一系列东西。


sqlserver没有这么复杂:新建一个数据库,就是仅仅在sqlserver里面建一个数据库
建一个用户,是在sqlserver里面建一个用户,然后通过授权来控制这个用户访问的数据库有哪些。