Oracle schema可视为同一个使用者所拥有的所有数据库对象(schemaobjects)之集合。举例来说,使用者scott所建立的EMPtable其完整名称为SCOTT.EMP,而SCOTT就是EMP的schema名称。所以schemaname其实就是一个Oracle数据库之使用者帐号,Oracle的schemaobjects只存在于tablespace中。

首先,可以先看一下schema和user的定义:
A schema is a collection of database objects (used by auser).
Schema objects are the logical structures that directly refer tothe database’s data.
A user is a name defined in the database that can connect to andaccess objects.
Schemas and users help database administrators manage databasesecurity.

从中我们可以看出,schema为数据库对象的集合,为了区分各个集合,需要给这个集合起个名字,这些名字就是在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema。
schema里面包含了各种对象如tables, views, sequences, stored procedures,synonyms, indexes, clusters, and database links。

一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。这也就是在企业管理器的方案下看到schema名都为数据库用户名的原因。
Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决(Oracle中虽然有createschema语句,但是它并不是用来创建一个schema的)。在创建一个用户的同时,为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。

一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过select* from emp; 其实,这sql语句的完整写法为select * fromscott.emp。在数据库中一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,需要在创建对象时指定该对象的表空间。

有人举了个很生动的例子,来说明Database、User、Schema、Tables、Col、Row等之间的关系

“可以把Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个Schema中的床,Table(床)就被放入每个房间中,不能放置在房间之外,那岂不是晚上睡觉无家可归了。

然后床上可以放置很多物品,就好比Table上可以放置很多列和行一样,数据库中存储数据的基本单元是Table,现实中每个仓库放置物品的基本单位就是床,User就是每个Schema的主人(所以Schema包含的是Object,而不是User)。

其实User是对应与数据库的(即User是每个对应数据库的主人),既然有操作数据库(仓库)的权利,就肯定有操作数据库中每个Schema(房间)的权利,就是说每个数据库映射的User有每个Schema(房间)的钥匙,换句话说,如果他是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是他的(包括房间),他有完全的操作权,可以扔掉不用的东西从每个房间,也可以放置一些有用的东西到某一个房间。还可以给User分配具体的权限,也就是他到某一个房间能做些什么,是只能看(Read-Only),还是可以像主人一样有所有的控制权(R/W),这个就要看这个User所对应的角色Role了”。

------------------------------------------------------------------------------------------------------
Oracle数据库中Schema和User的关系是一一对应的,也就是说一个Schema只对应一个User,一个User对应一个Schema。当某个User下面有table,view,Index......等SchemaObject时,这个User就成了一个Schema,也就是在EnterpriseManager中出现的那个,如果某个User下面没有table,view,Index......等SchemaObject时,这个User不会在Enterprise Manager中Schema对象出现。
------------------------------------------------------------------------------------------------------oracle概念之-user和schem区别:
在介绍user和schema之前.大家先看看下面这个语句.
grant select  onx.tba  to y;
看看x是user还是schema? y是user还是schema?

正确答案: x是schema. y是user.

我们从oracle设计上面来解释一下这两个概念.
oracle的user.或者任何系统的user.只有两个功能,先是认证,然后是授权.
认证是乘认这个user是合法的.
授权是这个user在这个系统能够做些什么.比如你可以create table.等等.

schema这个概念有些稍微复杂.
比如我们做了一套进销存系统.
这个系统总共有3个模块.一个是销售模块,一个是库存模块,一个是财务模块.
schema就是表示模块的意思.schema 完全是设计系统的时候模块化需要.他的定义也很说明了这一点,是对象的集合.
整个系统是按照schema来划分的.schema让系统更加清晰化,模块化.如果用过oracleERP的用户就更加清晰.ERP里面都是按照模块来划分的.有销售,市场,财务,人事等等.
再看看
grant select  onx.tba  to y; 这句话.
x是表示某个模块的. x.tba 是表示某个模块底下的某个对象.
把这个模块底下的对象付了一个select 权限给用户y.
想想看.我们在建立用户的时候是怎么样的.
当我们建立好用户以后,用户是不能做任何事情的,只有我们付给他们登陆权限,他们才能登陆.付给他们create table.他们才能create table. 就是表示的这样一层意思.

oracle的schema的基本概念及与User的区别相关推荐

  1. URL概念及与URL的区别

    URL全称是Uniform Resource Location,统一资源定位符 URL就是URI的子集,它除了标识资源,还提供找到资源的路径:在Java类库中,URI类不包含任何访问资源的方法,它唯一 ...

  2. 【IC凉菜01】ASIC概念及与FPGA的区别

    FPGA(Field Programmable Gate Array)是一种可编程器件,是一种半定制电路.相当于是一片通用的逻辑芯片,片上集成了非常多的逻辑资源,有的还有各种各样的硬核.用户可以根据自 ...

  3. 磁盘IOPS概念及IOPS的计算与测试

    磁盘IOPS概念及IOPS的计算与测试 http://ce.sysu.edu.cn/hope/Item.aspx?id=12630 echo "The SYSTEM Metric of th ...

  4. 转 RabbitMQ 基础概念及 Spring 的配置和使用 推荐好文 举例讲解

    从不知道到了解-RabbitMQ 基础概念及 Spring 的配置和使用 转: sumile.cn  »  从不知道到了解-RabbitMQ 基础概念及 Spring 的配置和使用 序言 你在系统中是 ...

  5. 马哥教育第二十四ftp协议、vsftpd的高级应用、rpc概念及nfs的基本应用、samba及其基本应用...

    1.ftp协议及vsftpd的基本应用          文件共享服务:                  工作在应用层:ftp(file transfer protocol)             ...

  6. 2-RabbitMQ核心概念及AMQP协议

    RabbitMQ核心概念及AMQP协议 [root@Centos ~]# rabbitmq-plugins list Configured: E = explicitly enabled; e = i ...

  7. AUTOSAR从入门到精通100讲(四十九)-AUTOSAR 通信服务Dcm篇-Dcm概念及DSL详解与实战案例

    Dcm概念及DSL详解 正文 1. Introduction and functional overview 诊断通信管理(Diagnostic Communication Manager, DCM) ...

  8. Postman接口测试工具学习笔记(一)接口测试概念及Postman入门

    (下文照搬@Storm啊老师博文,留下记录为了方便学习和理解.大家可以去看看原文地址:https://blog.csdn.net/duzilonglove/article/details/786454 ...

  9. (HarmonyOS)JS FA调用Java PA(一)Ability概念及Ability与Internal Ability调用方式

    JS FA调用Java PA(一)Ability概念及Ability与Internal Ability调用方式 引言 Ability FA-Page Ability PA-Service Abilit ...

最新文章

  1. IOS类似9.png
  2. 当对象或对象属性为空时,如何安全给对象或对象属性添加默认值
  3. jQuery ajax 传递JSON数组到Spring Controller
  4. 服务器系统选择什么,服务器选择什么系统
  5. OpenGL Vertex Array
  6. Opencv Kmeans聚类算法
  7. jQuery中eq和get的区别
  8. Vue2.x通用条件搜索组件的封装及应用
  9. hbase异步客户端连接-非阻塞并发模式实验记录(还没弄完)
  10. Java 强引用、弱引用、软引用、虚引用
  11. i12蓝牙耳机使用说明书图片_飞利浦SHB4385 BASS+无线蓝牙耳机晒单 使用体验
  12. 包邮送几本Python和R语言的数据分析挖掘书籍
  13. 浅谈-国标GB28181协议上下级对接国标编码要求(四)
  14. 用Python写了一个带界面的聊天室
  15. 解决华为手机Android系统10.0不能隐藏桌面图标问题,全网唯一
  16. c语言考场排座系统,具才考场座次编排系统
  17. 企业推进数字化转型零信任是必须?
  18. 利用requests库批量下载PDF文件
  19. 米思齐呼吸灯与可调节灯实验
  20. 微信域名防封技术,微信域名总是被封如何解决

热门文章

  1. python 装饰器 参数-python装饰器的详细解析
  2. python3.6安装opencv-python3.6.5安装opencv3
  3. python在什么系统写代码合适-python用什么软件写代码
  4. 以下用于数据存储领域的python第三方库是-Python 二级选择题
  5. 如何系统的自学python 知乎-应该怎样系统的学习Python标准库?
  6. 查看python版本号-怎么查看python版本号
  7. python基础知识面试题-干货满满--亲身经历的 Python 面试题
  8. python类中方法的执行顺序-Python中实例化class的执行顺序示例详解
  9. usaco The Castle(flood fill)
  10. select、poll、epoll之间的区别总结[整理]