有关Oracle数据库、表空间、schema概念的一些总结思考

之前学习Oracle数据库之后,对于表空间、用户、schema等概念一直有些模糊,也没有理清楚他们之间的关系,最近回过头重新看了这部分的知识后,将自己对这方面的知识点做一下小结,本篇文章并不是常规的技术文章,只作为个人的小结分享。

先说说什么是Oracle数据库

Oracle数据库是能满足我们存取数据需要的数据管理系统。完整的Oracle数据库通常由两部分组成:物理数据库和数据库实例。也就是说,Oracle数据库是物理存储和内存进程的集合。

  1. 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等);
  2. Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区。

什么是数据库实例

当我们启动数据库服务时,就会在内存中创建一个数据库实例出来,由这个Oracle数据库实例来访问和控制磁盘中的数据文件,常见的数据库实例有ORCL这个过程可以想象成是JAVA中根据classnew出了一个对象出来,我们可以根据这个对象调用具体的数据库方法。一个数据库可以有多个实例,在作数据库服务集群的时候可以用到。
正如上面介绍的一样,数据库实例是Oracle数据库的组成部分,是在内存中运行,为用户提供访问和操作数据库的后台进程。

什么是表空间(Table Space)?

Oracle数据库是通过表空间来存储物理表的,一个数据库可以划分为多个表空间,每个表空间可以存储多张表。表空间是数据库的逻辑划分,每个数据库至少有一个表空间(称作SYSTEM表空间)。把数据库当做一个大仓库,为了管理方便,我们可以人工将这一片大的空间分为A、B、C等区间,这样的A/B/C区间就相当于是表空间。(也可以理解为是去餐厅吃饭,每张桌子上面都有一个桌号,方便服务员上菜)。

关于用户

有了表空间,下一步自然是建表。但是在建表之前还有一步,就是要先创建用户,只有用户才能建表。用户是独立于表空间的存在,我们可以从上面的介绍中知道表空间其实也是数据存储的容器,但用户可以理解为是数据的归属者。还是举仓库的例子,仓库提供的只是存放物料的空间,但物料的管理人还是具体的一个个的仓管,也就是用户。当然了,仓管应该有属于自己的管辖范围和权限,所以需要为仓管定义好货物具体存放的位置。所以对于用户来说,我们也需要为其指定好对应的表空间。

什么是Schema(方案)?

方案(schema)又叫模式,是比表空间小一级的逻辑概念,它也是一个逻辑容器。Schema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字。schema里面包含了各种对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, 和 database links
我们知道一共表空间可以被多个用户共用,那如何区分开每一个用户?那么在表空间中对每个用户都有一个对应的方案,用于保存单个用户的信息。举仓库的例子来说,我们现在把仓库的A区进一步分为N个房间,每个房间是属于特定的仓管的,这一个个的能够存储货物的房间就相当于是schema,一个房间由一个仓管负责。

关于数据文件(dbf、ora):

数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真 正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。

关于表数据和用户的关系

表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。由于oracle的数据库不是普通的概念,oracle是有用户和表空间对数据进行管理和存放的。但是表不是有表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!


Oracle运作图




2023-08补充

(一)缺省用户名和缺省表空间

从上面的文字描述中我们可以知道,表空间是数据存储的逻辑单位,但实际上一张表的归属不单单看表空间,还得看是属于表空间的哪个用户的。所以我们在oracle数据库中创建表,需要注意我们创建的表有没有放在正确的位置。

我们看看下面的标准建表语句:

CREATE TABLE user_name.table_name (
    column1 datatype [constraints],
    column2 datatype [constraints],
    column3 datatype [constraints],
    ...
    table_constraints
) TABLESPACE tablespace_name;
  • 当未显式指定user_name时,此时所创建的表会默认放在当前登录的用户上面
  • 当未显式指定tablespace_name时,此时所创建的表会默认放在指定用户的默认表空间中。若建表语句中也未指定user_name,则表会默认放在当前登录用户的默认表空间中

为什么这里会特别强调表空间的归属呢?
因为实际上一个用户可以有多个表空间,而且在一些复杂的项目中用户不同的表空间存储的数据类型、磁盘大小可能都是不同的。如果在建表的时候没有注意好表存放的表空间的话,那么表就会放在用户默认的表空间里面,占用了默认表空间的存储容量。

(二)关于oracle的版本
oracle版本 时间
Oracle 1 1979年
Oracle 2 1983年
Oracle 3 1984年
Oracle 4 1985年
Oracle 5 1986年
Oracle 6 1988年
Oracle 7 1992年
Oracle 8 1997年
Oracle 8i 1999年("i"代表Internet
Oracle 9i 2001年
Oracle 10g 2003年("g"代表grid网格计算)
Oracle 11g 2007年
Oracle 12c 2013年("c"代表cloud云计算)
Oracle 18c 2018年
Oracle 19c 2019年
Oracle 21c 2020年

oracle自1979年推出以来,有三个标志性的版本,分别是8i、10g、12c,代表着不同版本中oracle的战略性目标,oracle8i,引入了一些针对互联网应用的功能和改进,包括更好的分布式数据库支持、Java集成和Web应用程序开发工具;oracle10g这个版本引入了网格计算的概念,旨在提供更高的可伸缩性、可靠性和性能。它支持在多个服务器上分布和管理数据库资源,以实现更好的负载平衡和容错能力;oracle12c强调了Oracle数据库在云计算环境中的功能和优势。它引入了一些云相关的功能,如多租户架构、自动化管理和数据库即服务(Database as a Service)等。

需要注意的是,oracle并不是在oracle10g版本后才有分布式数据库的管理能力,之前就有了。只是10g版本推出的网格计算功能增强了分布式数据库的管理能力和资源分配能力,使得数据库能够更好地适应大规模数据处理和分析的需求。

oracle在12c版本中,提出了"多租户架构",允许在单个数据库实例中创建多个独立的容器数据库(CDB)和子数据库(PDB)。这种架构可以实现更高级别的资源隔离和共享,简化管理,并提供更好的多租户支持。这种特性让我们在数据库的管理上更加的灵活,在原先我们要想实现资源隔离类似的功能应该是只能通过创建多个数据库实例来实现,而现在只需要在一个数据库实例中创建多个容器数据库,或者在一个容器数据库创建多个子数据库就可以实现资源隔离(和共享)的效果。(在容器数据库级别上创建的用户、角色、表空间等对象可以被所有子数据库共享和使用)

参考资料:
Oracle数据库、实例、用户、表空间、表之间的关系 https://blog.csdn.net/NRlovestudy/article/details/49684571
表空间与用户的关系 表空间和数据文件的关系 https://www.cnblogs.com/lion88/p/4343890.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容