(7)Oracle数据库中的文件和内存管理

在进入正题之前,我们先搞清楚一个问题,什么是数据库,什么是数据库实例。

数据库——物理操作系统文件的集合;

实  例——数据库进程+SGA(Shared Global Area)。

它们的关系是,一个数据库可以被多个实例安装(mount)和打开(open)。由于大多数情况下,一个数据库上只有一个在其上运行的实例,因此实例和数据库经常被混为一谈。我们可以看一张图来加深理解。

数据库与实例

Oracle实例在启动时,即申请了一大块的内存,称为SGA 。一个实例中的所有进程运行所需的内存,都将从SGA中分配。对比PostgreSQL9.6.3(在PG中,通过memory来管理内存,所有需要用到的内存会在需要用的时候才分配,然后挂到memory中,在调用的地方使用完再释放)这种方式有很大的好处:

1.内存大小在使用过程中是可控的。在Oracle中,在任意时刻使用的内存大小都会在SGA的大小范围之内。而在PG9.6.3中,内存的使用是不可控的,根据运行不同的场景,可能导致内存急速膨胀。

2.使用时的速度更快。在实例启动时即一次性申请内存,使用的时候就不需要malloc(这也降低了对操作系统接口的依赖)。而PG9.6.3在用的时候才去调用malloc(PG中malloc无处不在),这个过程的耗时相对来说还是挺多的。

PG的内存不好控制,这也是其无法作为OLTP数据库商用的很大一个原因。

文件

组成Oracle数据库和实例的文件主要有5种:

参数文件——告诉我们在哪里寻找控制文件;

数据文件——用户数据库存储数据;

redo日志文件——记录事务日志;

控制文件——告诉我们数据文件在什么地方及其状态信息;

临时文件——用于磁盘上的分类和临时的存储。

其中前2中类型的文件最重要,因为它们包含了我们工作中所积累的数据。如果丢失了redo日志文件,可能会开始丢失一些数据。但是如果丢失了数据文件及其备份,则永远丢失掉那些数据。

这边我们主要看下开发过程中主要关注的redo日志文件。Oracle有两种redo日志文件,及联机重做日志和归档重做日志。对于数据库来说,这些是事务日志,只是用来恢复;如果实例或者介质出现故障时才会用到这些日志。如果运行数据库的计算机停电导致实例失败,那么为了把系统恢复到停电时的状态,需要使用联机重做日志。如果硬盘出现故障,为了及时地把备份恢复到正确的状态,需要使用到归档重做日志和联机重做日志。

每个Oracle数据库至少有2个联机重做日志文件,这些文件在系统运行过程中被重复使用。比如,刚开始往文件1中写日志,当写满时,转到文件2开始写。当写满文件2,又转回文件1开始写(如果有文件3则写到文件3中)。归档重做日志只是复制旧的、写满了的联机重做日志文件。当系统写满日志文件时,ARCH进程会把联机重做日志文件复制到另一个位置备份起来。当硬盘出现故障或其他一些物理故障,这些归档日志用来实现介质恢复。归档日志其实就是数据库事务的历史记录。

redo日志是数据库的主要特性,是数据库区别于文件系统的一个主要组成部分。

内存管理

数据库中的内存管理采用的是段页式管理方式。

段(segment)就是数据库对象(如表、索引、回滚段等),它消耗存储空间。当创建表时,将创建一个表段,当创建分区表时,则为每个分区创建一个段,创建索引则将创建一个索引段。

段本身是由一个或多个盘区(extent)组成。盘区是文件中一个连续分配的空间。每个段至少有一个盘区。

每个盘区由块(block)(或页(page))组成。块是空间分配的最小单元。通常一个盘区由8个连续分配的块组成,每个块的大小通常是8KB。块上保留的信息有:块类型(表或索引等),磁盘上块的位置,事务信息(itl),行目录(row dir),行记录(row)等。

下面我们看下什么是表空间(tablespace)。表空间是一个逻辑存储容器。表空间的存在应该是为了更方便管理和数据的移动。我们会在表空间中创建段。

现在,内存中存储的管理层次结构就很清楚了:

1.数据库由一个或多个表空间构成。

2.表空间由一个或多个数据库文件组成。一个表空间包含段。

3.段有一个或多个盘区组成。

4.盘区是在磁盘上连续分配的块的组合。

5.块是数据库中最小的分配单元。

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

推荐阅读更多精彩内容