Schema是Oracle中一个重要的概念,很容易跟User概念混淆。从下面多个角度来介绍:
1、首先来看一下原始的英文定义:
A schema is a collection of database objects
(used by a user). Schema objects are the logical
structures that directly refer to the database’s data.
A
user is a name defined in the database that can connect to and
access objects.
Schemas and users help database
administrators manage database
security.
2、从定义中可知Schema为数据库对象的集合,为了区分各个集合,认为的给这个集合起个名字,也就是通常在企业管理器的方案下看到的许多类似用户名的节点,节点也就是一个Schema,其包含了各种数据对象:如tables,
views, sequences, stored procedures, synonyms, indexes, clusters, and database
links。
3、Oracle里Schema几乎和user/用户是通用的。Schema是指一组数据库Object
(比如:表,视图,包,序列,等等),而这些Object是属于用户的,
属于一个用户的所有Object就叫Schema。
4、User即Oracle中的用户,是控制权限的,和所有系统的中用户概念类似,用户所持有的是系统的权限及资源;而Schema所涵盖的是各种对象,它包含了表、函数、包等等对象的“所在地”,并不包括对他们的权限控制。
5、举例说明如下:
一个房子里面放满了家具,对这些家具有支配权的是房子的主人(User),而不是房子(Schema)。你可以也是一个房子的主人(User),拥有自己的房子(Schema)。
可以通过alter session的方式进入别人的房子。这个时候,你可以看到别人房子里的家具(desc)。如果你没有特别指定的话,你所做的操作都是针对你当前所在房子中的东西。
至于你是否有权限使用(select)、搬动(update)或者拿走(delete)这些家具就看这个房子的主人有没有给你这样的权限了,或者你是整个大厦(DB)的老大(DBA)。