Oracle12c基于容器的数据库整合(1)

ByteRiderMaster
• 阅读 690

数据库整合

   在一体机技术出现之前,通常情况下,一台服务器部署一套数据库,这种数据库部署方式实际上成本高昂,在一体机出现后,因其高性能/高可用以及良好的扩展性,将同一个机房中的多个服务器中的数据库安装部署在一台一体中的情况也较常见,这也是一种数据库整合方案,该方案虽然可以降低成本,但同时存在一些负面问题。

维护管理更加复杂

  当我们将20套数据库部署到一台一体机中时,在20套数据库中辨识不同的数据库也会变的很头痛,显然会让维护变得更加困难,维护每套管理每套数据库任然有很大的挑战性。

资源隔离较困难

  该整合方式中,如果其中某套数据库在某个时间点负载急剧增加,占用了绝大部分一体机资源,那势必会对其他数据库性能造成一定影响。内存资源我们可以通过数据库内部的SGA进行配置,CPU资源可以通过CPU_COUNT进行控制,但I/O资源又要如何进行管理呢?这种整合方式下我们很难做到对资源的细粒度的管理分配。

资源任然存在浪费情况

  虽然在一定程度上做到了数据库的整合,但假如每个数据库后台启动20个进程,当我们同时部署20套数据库时,后台会同时启动400个相关进程,同样的进程Oracle为每套数据库分别启动一个,显然冗余,在资源上也造成一定的浪费。

基于12c中容器的数据库整合

在12C中,Oracle推出了容器数据库,通过容器的方式对数据库进行整合后,可以对上面的问题进行完美的解决。

Oracle12c基于容器的数据库整合(1)

 

资源被合理利用

在Oracle 12c中当,我们把20套数据库以PDB的方式插入到CDB中,因其PDB共享CDB的后台进程,后台只会启动20个进程,并不会因为我数据库的增加,后台进程也随之增加。

在资源方面我们可以节省更多的资源,更加有效的对资源进行利用,同样配置的一体机中,当使用容器的方式进行整合后,可以部署更多的数据库。

资源管理更加灵活

  当数据库以PDB的方式插入到CDB中时,资源管理变得更加灵活,可以更加细粒度的根据每个PDB的需求情况为每个PDB数据库配置不同的资源,以及限制PDB对资源的过多使用,可以达到避免因为某个数据库使用过多的资源而影响其他数据库。

  • I/O资源隔离

    • MAX_IOPS/MAX_MBPS
  • 内存资源隔离

    • SGA_TARGET/SGA_MIN_SIZE
  •  CPU资源隔离

    • CDB resource plans
  • 存储资源隔离

    • flex diskgroup

当某个PDB随着时间的推移它的业务量也不断的增加,需要更多资源的时候,我可以非常灵活的修个相关参数动态的为他分配更多的资源。

降低维护成本

整合后,在维护上我们也可以降低维护成本,之前我需要分别去维护20个不同的数据库,那整合后我们只需要将20个库作为一个CDB数据库进行统一管理。

备份:在不做整合时,20套数据库需要我们维护20个不同的备份任务,现在我们只需要在CDB级别进行统一备份就可以完成对20个PDB数据库的备份。

DG:整合后只需要搭建一套DG环境就可以,不需要为单独为每个数据库都去搭建一个备库。

升级维护:在升级方面,整合后我们只需要对一个CDB进行升级,就可以完成CDB中所有PDB数据库的升级,如果想对其中一个PDB进行升级,我们也可以通过克隆或者移动的方式,将他移动到更高版本的CDB中,这样就可以做到对某一个PDB进行升级。

更好的一个升级方式。我可以在一体机中在安装配置一个更高版本的CDB,然后直接把低版本CDB中的PDB拔出,插入到高版本的CDB中,同样也可以完成升级工作。可能之前一套数据库升级要花费2个小时的时间,那现在我们可能10分钟就升级完成20套数据库。

整合时需要思考的问题

任何事情都是两面性的,虽然整合可以为我们带来很多的好处,但同时也会带来一些其他问题。

1.当一体机出现问题时,一起一体机中部署了更多的数据库,那我们所有的PDB都会受到牵连。这个问题我们要如何去避免呢?

另外,CDB层面出现了不可以修复的问题,我们又该如何去解决呢?

2.因每个PDB均是来自不同的业务,当我们在做相关维护时,比如一体机的维护或者是CDB级别的维护,我们把所有PDB的维护窗口协调在同一个时间段,其实该问题同样较困难。

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
springmvc+Mybatis整合中sqlSession的创建问题
spring/springmvcmybatis在整合时,可以在applicationContent.xml文件中进行spring,springmvc,事务管理,数据库连接池等以及与Mybatis整合的配置,当然也可以分开配置各自的xml文件。在mybatisconfig.xml中主要进行一些别名,查询的分页方式的配置。例如:applicationCo
ERROR 1366 (HY000): Incorrect string value: ‘\xAE\xE8\xB4\xA4\xE4\xB8…
在Linux端部署皕杰报表,安装好mysql库后。在本地dbeaver中运行一个sql文件将数据插入服务器mysql的一个数据库中时出现报错ERROR1366(HY000):Incorrectstringvalue:‘\xAE\xE8\
xxkfz xxkfz
4年前
SpringBoot整合Mybatis连接Oracle数据库
学习目标:<fontcolorredface"宋体"size3通过本篇文章掌握如何使用SpringBoot整合Mybatis来连接Oracle数据库进行基本的数据库操作。在之前的项目中,大多使用的是Mysql数据库,但在企业中使用的是Oracle数据库,下面就来简单的介绍下如何使用SpringBoot整合Mybatis的方式操作Oracle数据库。<
Peter20 Peter20
4年前
Redis ==> 集群的三种模式
一、主从同步/复制  通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,因为持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据。但是由于数据是存储在一台服务器上的,如果这台服务器出现硬盘故障等问题,也会导致数据丢失。  为了避免单点故障,通常的做法是将数据库复制多个副本以部署在不同的服务器上,这样即使有一台服务器出
Peter20 Peter20
4年前
Redis集群的三种模式
一、主从模式通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据,因为持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据。但是由于数据是存储在一台服务器上的,如果这台服务器出现硬盘故障等问题,也会导致数据丢失。为了避免单点故障,通常的做法是将数据库复制多个副本以部署在不同的服务器上,这样即使有一台服务器出现故障,其他
游戏部署安全几点策略方案
1.数据库部署当我们的主机实例和数据库实例分别部署在同城的两个可用区时候,虽然两个可用区之间的延迟相对比较小,但它仍然存在一定的影响。2.数据库链接如果刚好游戏业务的数据库操作大部分是使用单线程链接的情况(通常是出于保障事务一致性的考虑),那么各个数据库事物操作都只能顺序发生。3.网络延迟如果每个的操作都出现了一点点网络延时,那么就会出现了瓶颈。
Stella981 Stella981
3年前
PinPoint安装部署
1.前期准备1.1准备三台服务器,分别用来安装pinpoint和pinpointagent和hbase、zookeeper我安装它用到的3台服务器,一台主要部署pinpoint的主程序,一台主要部署pinpointagent1.jdk8Java运行环境2.hbase1.2数据库,用来存储监控信息
Stella981 Stella981
3年前
Spring Boot2.X+mybatis+Druid+PageHelper实现多数据源并分页,支持多个字段动态排序,结构层级分明,代码耦合,框架入门
一、SpringBoot整合Mybatis、Druid和PageHelper并实现多数据源和分页,支持多个字段动态排序,其中对分页插件进行了封装,满足于任何场景的开发Druid是一个数据库连接池。Druid可以说是目前最好的数据库连接池!因其优秀的功能、性能和扩展性方面,深受开发人员的青睐。Druid已经在阿里巴巴部署了超过600个应用,经过一年多
Wesley13 Wesley13
3年前
MySQL高可用之MHA
背景介绍高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用。本文是对MySQL数据库的高可用方案中,基于主从复制的MHA软件理论部分进行梳理和小结。MHA软件介绍1.MHA软件是由MHAManager(管理节点)和MHANode(数据节点)组成2.MHAManager可以单独部署
Stella981 Stella981
3年前
Apache ShardingSphere整合Atomikos源码解析
Shardingsphere整合Atomikos对XA分布式事务的支持ApacheShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由JDBC、Proxy和Sidecar(规划中)这3款相互独立,却又能够混合部署配合使用的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如
Wesley13 Wesley13
3年前
Oracle可视化工具连接
Oracle可是化工具有很多,以下只列举sqldeveloper和sqlplus这两款连接方式sqldeveloper:SQLDevelope启动后,需要创建一个数据库连接,只有创建了数据库连接,才能在该数据库的方案中创建、更改对象或编辑表中的数据。创建数据库连接的步骤如下。(1)在主界面左边窗口的“连接”选项卡中右键单击“连接”节点