Oracle schema可视为同一个使用者所拥有的所有数据库对象(schema objects)之集合。举例来说,使用者scott所建立的EMP table其完整名称为SCOTT.EMP,而SCOTT就是EMP的schema名称。所以schema name其实就是一个Oracle数据库之使用者帐号,Oracle的schema objects只存在于tablespace中。
首先,可以先看一下schema和user的定义:
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.
从中我们可以看出,schema为数据库对象的集合,为了区分各个集合,需要给这个集合起个名字,这些名字就是在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema。
schema里面包含了各种对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。
一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。这也就是在企业管理器的方案下看到schema名都为数据库用户名的原因。
Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决(Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的)。在创建一个用户的同时,为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。
一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过select * from emp; 其实,这sql语句的完整写法为select * from scott.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基本概念详解 #### 一、数据库(Database) Oracle数据库是一种关系型数据库管理系统,它能够高效地处理大量的数据。在物理层面上,Oracle数据库由多种文件构成,主要包括数据文件(Data Files)、控制文件...
"Oracle数据库用户和Schema概念详解" Oracle数据库中,用户(User)和模式(Schema)是两个紧密相关却又鲜明不同的概念。用户是指拥有数据库权限和资源的实体,而模式则是指一组数据库对象的集合,包括表、视图、...
Oracle数据库是一种广泛使用的大型关系型数据库管理系统,其基本概念涵盖了实例、数据库的体系结构、存储结构、安全性以及用户管理等多个方面。以下是对这些概念的详细解释: **实例与数据库的关系** Oracle实例是...
在Oracle数据库中,用户和模式(Schema)的概念紧密相连。一个模式是一个用户的数据库对象集合,包括表、视图、索引、存储过程等。用户是在数据库中定义的可以连接并访问对象的名称,通常每个用户都有一个与其同名的...
在Oracle数据库中,"方案"(Schema)是一个非常关键的概念,它相当于数据库中的一个用户空间,包含了该用户的所有对象,如表、视图、索引、存储过程等。在本压缩包"sample_schema_scripts"中,包含了一系列用于创建...
以上就是SpringBoot整合Oracle数据库实现双数据源的基本步骤。在实际应用中,你可能还需要考虑数据源切换策略、读写分离、分布式事务等问题,以满足更复杂的需求。提供的源码包(如`synchro`)可能包含了这些高级...
在理解Schema_Workbench之前,我们需要先了解商业智能(BI)和数据仓库(Data Warehouse)的基本概念。BI是一系列技术和应用,用于分析和呈现组织内部的数据,帮助决策者做出基于数据的明智决策。数据仓库则是BI的...
综上所述,《Oracle 10g概念手册》详细介绍了Oracle数据库的基本概念、体系结构以及高级特性,为数据库管理员和开发者提供了全面的理论基础和技术指导。通过对这些知识点的学习,可以帮助读者更好地理解和掌握Oracle...
Oracle 12c Database Concepts 是 Oracle 官方发布的一份关于 Oracle 12c 数据库概念的详细解析文档,该文档涵盖了 Oracle 12c 数据库的基本概念、架构、管理、安全、性能优化、 Troubleshooting 等方面的知识点。...
学生需要了解数据库设计的基本概念、数据模型、数据 normalization、数据库schema设计等。 知识点四:SQL语言 SQL语言是 Oracle数据库的标准语言,用于管理和操作数据库。学生需要了解SQL语言的基本语法、数据类型...
这个文件将介绍Oracle的基本概念,包括它是什么,它的历史,以及为什么它是如此重要。Oracle不仅仅是一个数据库系统,它还是一个完整的数据管理解决方案,包括数据库服务器、应用开发工具、中间件、云计算服务等。...
- **时间评估的概念**:首先,本章节将介绍时间评估的基本概念,包括什么是时间评估、其在人力资源管理中的作用等。 - **Clock Times 的运用**:接着,教材将重点讲解 Clock Times 在时间评估中的应用。Clock Times ...
Oracle 从入门到精通是指通过学习和实践,掌握Oracle数据库管理系统的全部知识和技能,从基本概念到高级应用。 一、SQL基本概念 SQL(Structured Query Language)是一种用于管理关系数据库的标准语言。它用于存取...
通过阅读《STAR SCHEMA完全参考手册:数据仓库维度设计权威指南》,读者不仅可以掌握STAR SCHEMA的基本概念和设计原则,还能深入了解数据仓库建设的全貌,提升在大数据分析时代的竞争力。对于从事数据仓库设计、开发...
在第六章“Oracle数据库基本操作之二”中,我们主要关注的是Oracle数据库的一些核心操作,包括数据类型、SQL/Plus环境以及对数据库对象如表、索引和视图的创建、删除和修改。 首先,Oracle数据库的数据类型是定义...
该指南涵盖了 Oracle 9i XML 数据库的所有方面,从基本概念到高级主题。 XML 数据库概念 在 Oracle 9i XML 数据库中,XML(Extensible Markup Language)是一种用于描述结构化数据的标记语言。XML 数据库是指使用 ...