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 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

混合云文件服务如何解决企业的文件问题

文件是现代组织的主要资产。混合云文件服务通过结合云计算和内部部署的文件系统的优势,将在全球范围内越来越多地用于管理和共享文件。

650
来自专栏架构师之路

feed留,单聊群聊,系统通知,状态同步,到底是推还是拉?

可以理解为一个发布订阅业务,典型业务是微博(朋友圈)。你关注了姚晨的微博,姚晨发布了消息,你的主页能看到她最新发布的消息,这个场景是推送,还是拉取呢?

1053
来自专栏携程技术中心

微分享回放 | Openstack虚拟云桌面在携程的应用

【携程技术微分享】是携程技术中心推出的线上公开分享课程,每月1-2期,采用目前最火热的直播形式,邀请携程技术人,面向广大程序猿和技术爱好者,一起探讨最新的技术热...

37012
来自专栏IT笔记

学习OpenResty的正确姿势

前段时间老罗退出得到专栏事情闹得沸沸扬扬,另一位老罗也给出了合理的会员退费,感觉得到还是蛮贴心的。想想也是,毕竟精力有限,如今老罗也有了十亿的投资,集中精力做好...

3357
来自专栏IMWeb前端团队

基于MQTT的实时日志系统

MQTT是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT是专门针对物联网...

26510
来自专栏云计算-私有云

Windows Server 2019前瞻

十一假期马上就过完了,不知道各位小伙伴玩的怎么样啊,是否有遇到“人在囧途”或者是否看到了处处大海。微软于2018年9月24日-28日在美国召开了Ignite 2...

7770
来自专栏FreeBuf

监控网络流量?支付宝安全控件“附赠”的可疑进程

阿里巴巴支付宝的一个进程Alipaybsm.exe被怀疑监控网络流量,它会复制发送的数据到接收缓冲中。 在接下来的篇幅中,我要讲一个目前还没结束的故事。故事可...

17910
来自专栏编程坑太多

『高级篇』docker之APIGateway(17)

PS:就像跟陌生人交朋友,不可能上来直接详细的自我介绍,一般都是先聊点其他的,或者从大家都感兴趣的一个话题作为切入点,一点点增加彼此的了解,其实学习也是一样的,...

1176
来自专栏蓝天

测试 Linux 的可靠性

IBM Linux Technology Center (LTC) 成立于 1999 年 8 月,想让 Linux 成功的共同梦想使其与 Linux 开发团体直...

1033
来自专栏杨建荣的学习笔记

Oracle,MySQL迁移整合的问题总结(r10笔记第99天)

最近负责了一起数据迁移的项目,因为机器硬件过保,因为资源存在冗余,因为。。。总之话还没说完,就得到了项目组的支持,所以迁移的需求是明确的。 那么涉及的服务器数量...

3449

扫码关注云+社区