了解Oracle12.2的体系架构:文件系统与多租户
- RVWR:Recovery Writer Process,当数据库设置了闪回区域的时候,该进程定期将内存中,具体来讲是shared pool中的flashback buffer里面的闪回数据写入flashback logs.
- Result cache –> RCBG:result cache 用于存放SQL语句或者plsql函数在执行过程中,对于原始数据进行运算所得的结果,当数据库再次对相同的对象做同样的操作,可直接获取结果,避免计算资源的浪费。
- ASH buffer–>MMNL: ASH buffer用于存放活动会话的统计信息,包括SQL的执行情况,应用连接情况,等待事件等。当ASH buffer 被写满的时候,MMNL进程负责将buffer中的数据写入到磁盘中。
- In memory undo(IMU):在共享池中开辟一块区域,存放临时undo,一个事务中若修改多条数据,不再buffer Cache中的undo数据块做修改,而是增加IMU节点进行记录。主要是为减少undo所产生的Redo。
- Private Redo log buffers:主要用于管理IMU所产生的临时Redo,将事务的Redo信息存放在共享池中,减少对Redo log buffer的消耗。
- Flash Cache:全称是Database smart flash Cache,是从11.2 开发的一项针对闪存的优化技术,旨在通过使用闪存代替传统的慢速磁盘设备来存储部分数据,已达到减少数据库整体延迟,提高数据库的IOPS,提升数据库性能的目的。
Flash Cache的工作原理如下:
Flash Cache中存放的内容通过两种方式来控制:
1、flash Cache的智能选择算法:评估数据块、索引块的访问频繁程度来决定。
2、对数据库对象的cell_flash_cache属性做修改。
Flash Cache存储内容基本标准
主要是小IO操作,以及数据块、索引块、文件头,控制文件等会被缓存;
针对RMAN备份的IO操作,数据泵IO操作ASM镜像操作以及表空间格式化等不会做缓存;
全表扫描的IO操作的缓存优先级比较低。
当数据存储在flash Cache中,主要是为了提高查询的速度,也就是说,它就相当于在内存之外又增加了一部分buffer Cache的区域,只是性能更好,速度更好。那么跟buffer Cache一样,flash Cache中的数据写满或者写到一定程度就需要把数据写入磁盘,留出空间给新的操作数据。
缓存内数据写入磁盘称为flushing。可以配置Starting and stopping cache flushing levels值,这个值表示占用整个缓存大小的百分比。当缓存内未写入磁盘的数据达到starting flushing value时,控制器开始flushing(由缓存写入磁盘)。当缓存内未写入磁盘数据量低于stop flush value时,flushing过程停止。
如果start flushing level设置较高,可以在缓存内存更多的未写入数据。这有利于提高写操作的性能,但是要牺牲数据保护。如果要得到数据保护,可以使用较低的start and stop values。经测试表明,使用接近的start and stop flushing levels时性能较好。如果stop level value远远低于start value,在flushing时会导致磁盘拥塞
Smart Flash Logging长期以来,Redo log的IO瓶颈一直是困扰OLTP系统的一大难题,因为Redo的写入延迟直接拖累了整个系统 甚至整个集群的响应速度。
在传统的数据库架构中,一些DBA会将读写延迟较低的小块存储单独划分给Redo,从11204开始,Oracle提出一种新的方案,在闪存区域中专门为Redo开辟一块区域,用于存储临时Redo。
将列存储落到Flash Cache,提高频繁操作的列存储对象的写IO
- Change Tracking File:在增量备份中检测块的 变化,并记录到文件中。 记录单位为block。
- wallet:Oracle Wallet是用来存储密钥的容器。简单点来说就是个密码箱,通过这个密码箱,可以使原来需要输入密码的场合能够实现免输密码使用,从而保护了账号口令等敏感信息,使得安全性得到了提高,而且更加方便使用。
应用容器Application Container是12.2提出来的新的组件,将同一应用下的数据库系统划分到一个子容器中,在保证多租户同一管理的情况下,实现相对的业务隔离和数据安全。
PDB拥有自己的undo表空间从12.2开始,每个PDB都拥有自己的undo表空间。消除了多个PDB间的争用,若要进行闪回或者基于时间戳的恢复,只需要在自己的undo数据中寻找,提高效率。
PDB的灵活创建方式1、从PDB$seed(或者application root)创建:通过文件复制的方式
2、现有PDB经过hot clone创建
注:在12.1中,基于一个PDB创建新的PDB的时候,需要将原库以read only的方式打开。
而在12.2中,原库可以持续进行DML操作,并不受影响。
克隆完成以后,数据会持续刷新到新库。
3、来自其他CDB中的PDB的迁移:Relocate
前端执行 create pluggable database from relocate这样一条命令,后台会自动执行远程hot clone,做远程文件复制和同步。
4、通过ASM磁盘文件的shadow copy方式生成新的PDB。
PDB的内存资源管理
在多租户环境下,多个PDB共享内存的资源,当一个PDB需要做buffer Cache的寻址时,需要从整个共享的资源中寻找,非常不方便。在12.2中,Oracle针对部分资源做了基于PDB的domain划分。
12.1的内存资源的hash链表是这样的:
12.2中是这样的:
更多PDB的新特性
1、字符集:在12.2中,若CDB的字符集为超集,也就是AL32UTF8,那么支持不同字符集的PDB。同时,通过Proxy PDB,可以实现不同字符集的PDB进行查询,Proxy将双方的字符集做识别和兼容,不会出现乱码。
多租户技术已经被广大用户广泛应用,而云和恩墨作为数据服务行业的引领者,通过zData解决方案与Oracle 多租户的结合,帮助用户实现了互联网+时代的系统云化转型。
关于多租户更多的新特性详解,请参考
YH9:Oracle Multitenant 知识库
多租户技术已经被广大用户广泛应用,而云和恩墨作为数据服务行业的引领者,通过zData解决方案与Oracle 多租户的结合,帮助用户实现了互联网+时代的系统云化转型。
文章来自微信公众号:数据和云
以上是了解Oracle12.2的体系架构:文件系统与多租户的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

无法以 root 身份登录 MySQL 的原因主要在于权限问题、配置文件错误、密码不符、socket 文件问题或防火墙拦截。解决方法包括:检查配置文件中 bind-address 参数是否正确配置。查看 root 用户权限是否被修改或删除,并进行重置。验证密码是否准确无误,包括大小写和特殊字符。检查 socket 文件权限设置和路径。检查防火墙是否阻止了 MySQL 服务器的连接。

C语言条件编译是一种根据编译时条件选择性编译代码块的机制,入门方法有:使用#if和#else指令根据条件选择代码块。常用条件表达式包括STDC、_WIN32和linux。实战案例:根据操作系统打印不同消息。根据系统位数使用不同的数据类型。根据编译器支持不同的头文件。条件编译增强了代码的可移植性和灵活性,使其适应编译器、操作系统和CPU架构变化。

Linux的五个基本组件是:1.内核,管理硬件资源;2.系统库,提供函数和服务;3.Shell,用户与系统交互的接口;4.文件系统,存储和组织数据;5.应用程序,利用系统资源实现功能。

MySQL启动失败的原因有多种,可以通过检查错误日志进行诊断。常见原因包括端口冲突(检查端口占用情况并修改配置)、权限问题(检查服务运行用户权限)、配置文件错误(检查参数设置)、数据目录损坏(恢复数据或重建表空间)、InnoDB表空间问题(检查ibdata1文件)、插件加载失败(检查错误日志)。解决问题时应根据错误日志进行分析,找到问题的根源,并养成定期备份数据的习惯,以预防和解决问题。

MySQL无法直接在Android上运行,但可以通过以下方法间接实现:使用轻量级数据库SQLite,由Android系统自带,无需单独服务器,资源占用小,非常适合移动设备应用。远程连接MySQL服务器,通过网络连接到远程服务器上的MySQL数据库进行数据读写,但存在网络依赖性强、安全性问题和服务器成本等缺点。

MySQL安装报错的解决方法是:1.仔细检查系统环境,确保满足MySQL的依赖库要求,不同操作系统和版本需求不同;2.认真阅读报错信息,根据提示(例如缺少库文件或权限不足)采取对应措施,例如安装依赖或使用sudo命令;3.必要时,可尝试源码安装并仔细检查编译日志,但这需要一定的Linux知识和经验。最终解决问题的关键在于仔细检查系统环境和报错信息,并参考官方文档。

MySQL安装失败的原因主要有:1.权限问题,需以管理员身份运行或使用sudo命令;2.依赖项缺失,需安装相关开发包;3.端口冲突,需关闭占用3306端口的程序或修改配置文件;4.安装包损坏,需重新下载并验证完整性;5.环境变量配置错误,需根据操作系统正确配置环境变量。解决这些问题,仔细检查每个步骤,就能顺利安装MySQL。

MySQL安装失败通常因缺少依赖项导致。解决方法:1.使用系统包管理器(如Linux的apt、yum或dnf,Windows的VisualC Redistributable)安装缺失的依赖库,例如sudoaptinstalllibmysqlclient-dev;2.仔细检查错误信息,逐一解决复杂的依赖关系;3.确保包管理器源配置正确,能访问网络;4.对于Windows,下载安装必要的运行库。养成阅读官方文档和善用搜索引擎的习惯,能有效解决问题。
