Oracle 数据库、实例、表空间、用户

官方解释:

https://docs.oracle.com/en/database/oracle/oracle-database/23/cncpt/introduction-to-oracle-database.html#GUID-35C20601-E266-486E-987B-7F355DB10DD4

在 Oracle 数据库中,数据库模式是逻辑数据结构或模式对象的集合。数据库用户拥有一个数据库模式,其名称与用户名相同。

模式对象是用户创建的结构,直接引用数据库中的数据。数据库支持多种类型的模式对象,其中最重要的是表和索引。

架构对象是数据库对象的一种类型。某些数据库对象(例如配置文件和角色)不位于架构中。

其实就是,我们在创建用户的时候,Oracle 会自动创建一个与用户名相同的数据库模式,然后,该用户下所有的对象(也称为模式对象,如表、序列、视图、同义词、存储过程等等等等),都是归属到这个数据库模式,相当于一个对象的集合。

所以,数据库模式是用来管理对象的。对象就是表呀、视图呀这些,也被称为数据库的逻辑数据结构。

如下面的 SQL,就是通过指定 模式名.表名,就能查询到 abc 模式下的 emps 表。这个主要用于跨用户的查询。日常开发中用户和模式的概念并不会分得很清楚,口头上也就是说,查一下 abc 用户下的 emps 表,其实就是 abc 用户对应的 abc 模式里面的 emps 表。

1
select * from abc.emps;

还有一点,就是模式下面的对象所存储的表空间,通常是由创建用户的时候的 default tablespace 参数决定。当然,创建表的时候你也可以单独制定这个表存在哪个表空间下面。

SYS 和 SYSTEM 模式

当我们安装 Oracle 的时候,系统自动帮我们创建了 SYS 和 SYSTEM 用户,也就是创建了 SYS 和 SYSTEM 模式,它们拥有最高权限,用来管理数据库,SYSTEM 比 SYS 提供了更多的表。

新建模式

Oracle 不能新创建一个 schema,要想创建一个 schema,只能通过创建一个用户的方法解决(Oracle 中虽然有 create schema 语句,但是它并不是用来创建一个 schema 的),在创建一个用户的同时为这个用户创建一个与用户名同名的 schema 并作为该用户的缺省 schema。即 schema 的个数同 user 的个数相同,而且 schema 名字同 user 名字一一对应并且相同。


Oracle 数据库、实例、表空间、用户
https://flepeng.github.io/042-Oracle-31-核心概念-Oracle-模式/
作者
Lepeng
发布于
2025年4月1日
许可协议