Oracle数据库模式、对象的入门概述

Oracle数据库模式、对象的入门概述

什么是模式?

模式是逻辑数据结构或模式对象的集合(逻辑容器)。(即表、索引、视图等对象的集合)

备注:基本所有数据库的模式定义都是如此(例如mysql,postgresql等)

Oracle数据库中模式的独特性?

Oracle数据库中,一个用户名创建后,自动创建与用户名同名的模式;

模式由一个数据库用户拥有,并与用户名具有相同的名称;

一个用户只能拥有一个自己同名的的模式。

每个用户拥有一个单一的模式,此模式与用户具有相同的名称。

模式包含相应用户的全部数据。

基于上述的几点,Oracle数据库中,用户和模式基本不做区分,大部分情况,用户就等同于模式,这一点与其它数据库区别很大。

例如MySQL数据库中,用户是用户,模式则等同于一个数据库(create database),因此模式下的对象权限需要单独授予用户;

postgresql数据库中,用户是用户,模式需要单独创建的,一个用户可以创建多个模式,模式下的对象权限需要单独授予用户;

达梦数据库,一个用户可以创建多个模式。

对于每种数据库,模式的表现形式,都有所区别。但是模式的定义不变:是逻辑数据结构或模式对象的集合(即表、索引、视图等对象的集合)

对象(模式对象)

模式对象是用户创建的结构。例如表、索引、视图等等都成为对象;

在一个模式里,某一特定类型(命名空间)的每个模式对象都有一个唯一的名称。例如某个模式下,不能有相同的表名,不能有相同的索引名,但是可以同时拥有T1表名和T1索引名,这不冲突;

数据库中确定一个对象的正确方法

不同的模式中,可以有同名的对象名称。那么在一个数据库中,怎么才能唯一确定一个对象呢?
模式名.对象名

Oracle数据库中,模式名.对象名 == 用户名.对象名

Mysql数据库中, 模式名.对象名 ==数据库名.对象名

postgresql数据库中,模式名.对象名 == (1)明确具体数据库;(2)模式名.对象名;

达梦数据库中,模式名.对象名(由于达梦数据库同一用户下可以有多个模式,只能通过该方式来唯一确认对象)

模式对象类型

在关系数据库中,最重要的模式对象是表。 表以行的形式存储数据。

Oracle数据库中能够创建和操作许多其他类型的模式对象,包括以下这些:

索引:索引是一种模式对象,对于每一个被索引的表行或表簇行,索引都包含一个条目 ,以提供直接、 快速的存取。(类比新华字典的目录,快速定位内容,同时需要占用纸张,另外,想想如果书内容有变动,目录也需要同步修改,即增删改需要增加额外的工作)。

分区:分区是大型表和索引的分片。 每个分区有其自己的名称,并可能有其自己(可选)的存储特征。

视图:视图是对一个或多个表、或其他视图中的数据的自定义表示。 可以把它们看作存储的查询。 视图实际上并不存储数据。

序列:序列是一个由用户创建的对象,可以被多个用户共享,用于生成整数。 通常,序列用于生成主键值。 。

维度:维度定义多个列集之间的父-子关系,列集中的所有列必须都来自同一个表。维度通常用于对客户、 产品、和时间之类的数据进行分类。

同义词:同义词是另一个模式对象的别名。 因为同义词只是一个别名,它在数据字典中除了其定义之外,没有存储。

PL/SQL 子程序和包:

PL/SQL 是 Oracle 对 SQL 的过程化扩展。 PL/SQL 子程序是命名的PL/SQL 块,可以带参数调用。

PL/SQL 包用于将逻辑上相关的PL/SQL 类型、 变量、和子程序进行分组。

备注:还有一些其他类型的对象也存储在数据库中,并以 SQL 语句来创建和操作,但不包含在模式中。 这些对象包括数据库用户、 角色、 上下文、和目录对象。

模式对象存储

一些模式对象将数据存储在称为段的逻辑存储结构中。例如,一个未分区的堆组织表或索引会创建一个段。 其他模式对象,如视图和序列,则只包含元数据。

Oracle 数据库逻辑上将模式对象存储在表空间中。

模式和表空间之间没有任何的关系: 一个表空间可以包含来自不同的模式的对象,一个模式中的对象也可以包含在不同的表空间中。 每个对象的数据在物理上包含在一个或多个数据文件中。

模式对象依赖

一些模式对象会引用其它对象,这就产生了模式对象依赖。 例如,一个视图包含一个引用表或其他视图的查询,或一个 PL/SQL 子程序调用其他子程序。 如果对象 A 的定义引用了对象 B,那么 A 相对于 B 来说是依赖对象,或 B 相对于 A 来说是被引用对象。

Oracle 数据库提供了一种自动的机制,以确保依赖对象对于相应的被引用对象来说始终是最新的。 当依赖对象产生后,数据库将跟踪依赖对象和其被引用对象之间的依赖关系。当被引用对象的更改可能会影响依赖对象时,依赖对象被标记为无效。 例如,当用户删除一个表,所有基于这个被删除表的视图都将变得不可用。

在一个无效的依赖对象重新变得可用之前,必须基于对被引用对象的新定义重新编译。 当无效依赖对象被引用时,重新编译会自动发生。

SYS 和 SYSTEM 模式

所有 Oracle 数据库都包括默认管理帐户。 管理帐户享有很高的特权,仅用于授权的数据库管理员执行诸如启停数据库、 管理内存和存储、 创建和管理数据库用户等任务。

SYS 管理帐户在创建数据库时自动创建。 此帐户可以执行所有的数据库管理功能。SYS 模式存储数据字典基表和视图。 这些基表和视图对数据库的运行至关重要。 SYS 模式中的表只由数据库操作,绝不能被任何用户修改。

在创建数据库时,也会自动创建 SYSTEM 帐户。 SYSTEM 模式存储其它一些用于显示管理信息的表和视图,以及用于各种数据库选项和工具的内部表和视图。 永远不要使用 SYSTEM 模式来存储非管理性用户的表。

本文参考官方文档:https://docs.oracle.com/cd/E28271_01/server.1111/e25789/toc.htm

相关推荐
雷工笔记4 小时前
SQL语句解析:DESC LIMIT 1
数据库·sql
城数派4 小时前
2025年全国地级市间驾车出行距离和出行时间矩阵数据
数据库·arcgis·信息可视化·数据分析
wgzrmlrm744 小时前
SQL实现按用户偏好进行分组汇总_自定义聚合规则
jvm·数据库·python
lzhdim5 小时前
SQL 入门 10:SQL 内置函数:数值、字符串与时间处理
前端·数据库·sql
QX_hao5 小时前
PGsql的常用命令(对比mysql)
数据库·mysql·pgsql
半点闲5 小时前
入门 SQLAlchemy 教程:从 0 到 1 创建数据库
数据库·python·sqlite·sqlalchemy
xcjbqd05 小时前
CSS如何给Bootstrap侧边菜单加图标_使用font-awesome结合CSS
jvm·数据库·python
KevinCh5 小时前
Vespa:面向 AI 时代的检索与排序服务平台
数据库
Rick19935 小时前
Redis查询为什么快
数据库·redis·缓存