YH9:Oracle Multitenant 知识库

Oracle 12c的多租户特性是Oracle Database历史上最重要的革新之一,在云时代这一特性展现出强大的整合威力。

基础简介

插接式数据库由一个使用 CDB(Container Database)选项创建的容器数据库和一个或多个 PDB(Pluggable Database)组成,CDB 作为容器容纳 PDB,而 PDB 彼此隔离,就像一个独立的数据库般在 CDB 中存在。

1、CDB和PDB的管理

上图中,以 USB 移动硬盘的方式表现 PDB,正是突出了 PDB 的 plug 和 unplug 特点,由图中可以直观的了解到插接式数据库的主要特性:

  1. 可以通过现有数据库快速配置和部署新的环境;
  2. 通过 unplug 和 plug 可以快速进行数据库迁移和整合;
  3. 集中的部署可以加快升级迁移的过程,缩减维护成本;
  4. 方便的整合和拆分方式便于集中部署或在压力过大时迅速拆分部署;
  5. 分离管理员的职责,强化安全管理;

如上所述,插接式数据库的一个巨大便利是,可以简化数据库的整合迁移,降低管理成本。在一个大型企业中,可能存在几百上千个数据库实例,而随着硬件性能的提升,这些数据库的资源利用率可能很低,不仅浪费硬件资源,也加重了管理负担,按照以前版本的功能进行整合或拆分,通常要进行导出导入(Expdp / Impdp 等),不仅复杂,而且涉及很多变更,通常让人望而生畏。

而如果使用插接式数据库,则可以轻松的将数据库整合,当负载过高时,又可以迁移至独立的服务器,整个过程对应用完全透明,主要通过文件复制即可完成,这对于数据库的分分合合将是一个福音。

关于CDB和PDB的环境搭建及管理请参考

Oracle 12c多租户特性详解:从Schema到PDB的变化与隔离

Oracle 12c多租户特性详解:PDB 的创建、克隆与维护

3、PDB的备份与恢复

由于 PDB 的引入,Oracle 数据库的备份和恢复也发生了很多变化,基于 PDB 级别的表空间、库备份同时被支持。具体如何实现呢?请参考

Oracle 12c多租户特性详解:PDB 的备份与恢复

4、PDB的出与入

在12c中,将一个非 CDB插入到CDB中,需要CDB处于read-only模式,新增加的包 DBMS_PDB 可以用于进行迁移。在 CDB 中执行 PLUG,就可以将这个 NON-CDB 插入到 CDB 中,指定 COPY 参数,将文件复制到 CDB 的相应目录下,如果已经复制到特定目录,则可以指定 NOCOPY 选项,就无需再复制一次。这也是对以前版本中传输表空间技术的增强。同理,unplug一个PDB,也是可以简单通过命令实现,会在后台生成对应的文件。

随着 CDB、PDB 的引入一系列的视图对应引入 ,用于数据库信息的查询和展现。如在 CDB 层面的用户信息查询,可以通过新的视图 CDB_USERS 进行,通过这个视图可以直观的看到一个用户在哪些容器中存在:

查询临时文件可以通过视图 CDB_TEMP_FILES 进行:

更多内容请参考

Oracle 12c多租户特性详解:PDB 的出与入 InAndOut

5、多租户的用户管理

无论在 CDB 和 Non-CDB 数据库中,用户都拥有一个 Schema,拥有一系列的 Schema 对象,在 CDB 中由于 PDB 的引入,用户范畴有所不同。

在 CDB 模式下,公用用户(Common User)和本地用户(Local User)两个概念被引入进来,公用用户可以在 CDB 和 PDB中同时存在,能够连接 ROOT 和 PDB 进行操作;而本地用户则只在特定的 PDB 中存在,也只能在特定的 PDB 中执行操作;在 PDB 中不能创建公用用户,而在 CDB 中(CDB$ROOT 中)同样不能创建本地用户。

全局用户和本地用户的区别如下:

在拥有了 CREATE SESSION 权限后,公用用户能够登陆包括 Root 在内的任何 Container。公用用户一般在每个 PDB 中都存在对应的用户信息,在 PDB 中不能存在与公用用户重名的用户,如初始的 SYS 和 SYSTEM 用户都属于公用用户。也只有公用用户能够授权或被授权相应的公用角色和权限。

公用权限

公用权限是指对所有 Container 都有效的系统或者对象权限,例如一个公用用户被授予了公用权限 CREATE ANY TABLEWITH ADMIN OPTION 可以将这个权限转授给其他公用用户。公用用户之外的权限被称为本地权限(Local Privilege).

公用角色

公用角色是指在所有 Container 中都可见的角色,这些角色可能包含全局和本地权限。本地角色只能包含本地权限。授予公用角色的公用权限,对于具有该角色的用户在任何可以连接的 Container 中都将具有该权限。

在多租户环境下,用户管理至关重要。只有明确地掌握不同用户的权限及操作范围,才能合理控制操作,防范数据库内部隐患。

关于多租户环境的用户管理请参考

Oracle 12c多租户特性详解:全局用户与本地用户的原理与维护

多租户环境的新特性

随着12.2的发布,多租户环境的管理和维护也更加完善和成熟。

1、权限管理

在Oracle Database 12.2 中引入了lockdown profile的新特性,可以用于限制PDB中的某些操作,增强某些操作的安全性。

LOCKDOWN PROFILE除了常规的限定,还可以实现如下的细粒度的权限限制:

除了特定的权限,还可以对某些数据库功能特点进行限制,比如调用和执行UTL_HTTP 和 UTL_TCP 包可能是高风险的,那么以下的PROFILE设置可以禁用这些特性:

安全第一,防范内部隐患,从合理授权开始。更多关于12.2中多租户的权限控制请参考:【动手实践】:Lockdown Profile 的多租户权限控制

2、数据文件管理

假设一个场景,在数据库中意外丢失了一个数据文件,你知道在10g和11g中,Oracle分别会做怎么样的默认处理吗?这样处理会带来哪些问题呢?

在多租户环境中,还能做同样的处理吗?

接下来这篇文章将为你一一解答!

回答了这四个问题,少踩12c 多租户的好多坑

3、安全管理

用Oracle多租户选件时,由于Container容器和PDB融合共存,则权限控制必将更加重要,Oracle 12.2 的 lockdown profile就是为了实现PDB中更为全面的权限控制。如果权限控制不当,就可能遭遇到的数据库安全风险。前段时间披露的风险,通过SQL注入可能影响数据库的安全,有些问题影响到多租户的12.1.0.2.0最新版本。

作为资深的DBA来说,我们应当知道EXECUTE_CATALOG_ROLE这一角色权限是非常危险的,要严格控制这一权限的授予。这一注入,实际上是利用了 CDBView 包的校验漏洞,进行了注入提权。

在云和恩墨的Bethune自动化巡检平台上,我们已经向着用户发出这一警示,强烈推荐大家通过Bethune ( https://bethune.enmotech.com )平台检测数据库的安全风险及性能状况,目前该平台完全免费

【安全警告】Oracle 12c 多租户的SQL注入高危风险防范

4、用户权限管理

在多租户环境中,权限可以全局授予整个CDB,一个应用容器数据库(application container),或者单个的PDB。在多租户环境下,往往牵一发而动全身,因此合理授权就显得格外重要。在多租户环境下,common user和local user之间可以互相授权。他们本身的权限既不属于公共权限也不属于本地权限。那么他们的权限如何起作用,这取决于权限是被全局授予还是本地授予的。在12.2中,关于权限,又有哪些新的变化呢?

一起来学习Oracle12.2 多租户环境下的授权管理

行业最佳实践

多租户技术已经被广大用户广泛应用,而云和恩墨作为数据服务行业的引领者,通过zData解决方案与Oracle 多租户的结合,帮助用户实现了互联网+时代的系统云化转型。

典型案例:

青海移动业务发展迅速,尤其是近几年的电渠业务,目前有包括网上营业厅、手机营业厅等在内的多类电渠业务,这些业务最初是独立运营的,但数据量的剧增和用户需求的提高使得独立运营面临很多问题,复杂的系统和传统的SAN架构缺乏对性能及大数据数据处理的灵活性,同时运维和部署的成本非常高。因此青海移动领导人希望采用资源池和云化部署,将这些电渠业务融合到统一的电子渠道支撑平台,实现统一的认证登录、统一业务管理、统一地分析接口和运营支撑。

在云和恩墨的帮助下,青海移动逐步将运行于小型机和集中式存储的Oracle数据库迁移到基于x86服务器和分布式存储zData上,并通过Oracle 12c多租户实现了数据库整合,成功地迈出了云化的第一步。

zData 方案与12c多租户的完美结合

  • zData以其高计算能力、高 I/O 能力、高可用能力、高可伸缩能力且极具稳健性的分布式存储架构,是具有高并发高IO需求的系统的最佳选择。
  • Oracle 12c多租户的特性,能够有效简化并增强数据库整合,既可保障各租户之间所需的独立性与安全性,又能实现对多个数据库的合一管理,从而提高服务器的资源利用率,在减少成本的同时,降低管理的复杂度。

12c+zData架构在青海移动的云化转型中表现出了绝对的优势,而该架构具有很高的可推广性,适用于分散的中小系统数据库整合、对I/O要求很高的分析统计类数据库、峰谷时段不同,资源可共享的库整合、快速建设,适时回收的临时性数据库等。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-05-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据和云计算技术

大数据和云计算技术周报(第38期):NoSQL特辑

本期有 HBase入门教程、Spark On HBASE、HBase二级索引、SQL 与 NoSQL、高并发&高可用、MySQL索引、Redis。 希望大家会喜...

921
来自专栏编程一生

美团点评智能支付核心交易系统的可用性实践

1311
来自专栏大内老A

MVC、MVP以及Model2[上篇]

对于大部分面向最终用户的应用来说,它们都需要具有一个可视化的UI与用户进行交互,我们将这个UI称为视图(View)。在早期,我们倾向于将所有与视图相关的逻辑糅合...

17610
来自专栏FreeBuf

苹果的代码签名漏洞将允许恶意软件绕过多款Mac安全产品

近期,来自安全公司Okta Rex的研究专家Josh Pitts在macOS的代码签名机制中发现了一个可以利用的安全漏洞。这个漏洞潜伏了一年之久,它允许攻击者将...

860
来自专栏施炯的IoT开发专栏

Microsoft IoT Starter Kit 开发初体验

1. 引子     今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter Kit ,并且免费...

25310
来自专栏微信公众号:Java团长

干货!一次kafka卡顿事故排查过程

由于一次功能上线后,导致某数据量急剧下滑,给我们紧张的呢!排查过程也是个学习过程!抛开结果,方法论可供参考~

852
来自专栏Netkiller

协议测试

协议测试 May 9, 2016 协议测试 What 什么是协议测试 什么事协议? 协议是计算机进程或网络中进行数据交换而建立的规则、标准或约定的集合。 什么是...

4135
来自专栏BIT泽清

史上最详细 – ipv6被拒绝,后台定位等审核问题的终极解决方案及详细过程汇总

a collection to solve app store review problem (ipv6,ipv6被拒绝,后台定位等审核问题的终极解决方案汇总)

5894
来自专栏云计算D1net

Docker中运行的Java 9将能调整内存限制

OpenJDK 9中首次新增了一项实验性功能,JVM可借助该功能检测到自己运行在容器中,进而酌情调整内存限制。尽管过去几年来容器技术日渐流行,但包括JVM在内的...

3437
来自专栏腾讯Bugly的专栏

腾讯祭出大招VasSonic,让你的H5页面首屏秒开!

作者简介: 陈志兴,腾讯SNG增值产品部高级工程师,主要负责手Q个性化业务、手Q WebView等项目。喜欢阅读优秀的开源项目,听听音乐,偶尔也会打打竞技类游戏...

3736

扫码关注云+社区