博客
关于我
Oracle12C 新特性 —— CDB & PDB
阅读量:539 次
发布时间:2019-03-09

本文共 1962 字,大约阅读时间需要 6 分钟。

Oracle CDB 与 PDB 关系介绍

Oracle 12C 引入了容器数据库(CDB,即 Container Database)和可插拔数据库(PDB,Pluggable Database)这一颖新特性。在 ORACLE 12C 的多租用户环境(Multitenant Environment)中,一个 CDB 可以承载多个 PDB,每个 PDB 都可以像传统的数据库那样运行。

CDB 和 PDB 的核心关系

在 12C 之前,数据库实例与数据库是一对一或多对一的关系(RAC)。但在 12C 中,实例与数据库的关系可以变成一对多。一种常见的安装方式是,默认安装一个 CDB 和一个 PDB,例如 pdborcl。

重点

12C 引入了跨实例的服务 thereby ,允许多个实例同时访问同一个 CDB 的 PDB。

CDB 组成

CDB 包括以下几个关键组件:

  • ROOT(CDB$ROOT)

    ROOT 是 CDB 的根容器,存储 ORACLE 提供的元数据和通用用户。例如,ORACLE 提供的 PL/SQL 包代码,及每个容器中存在的默认用户。

  • SEED(PDB$SEED)

    SEED 是 PDB 模板,你不可以在 SEED 中添加或修改对象。CDB 中只允许一个 SEED,类似于 SQL Server 的 model 数据库。

  • PDB(可插拔数据库)

    CDB 可以包含多个 PDB。每个 PDB 都是独立的容器,可以像传统数据库那样操作。

  • 关键点

    ROOT、SEED 和 PDB 都被视为容器,每个容器都有独特的 ID 和名称。

    CDB 与 PDB 的架构与操作

  • CDB 操作

    • 连接到 CDB:
      $ sqlplus / as sysdba
    • 查看数据库类型:
      SELECT name, decode(cdb, 'YES', 'Multitenant Option enabled', 'Regular 12c Database: ') "Multitenant Option", open_mode, con_id  FROM v$database;
    • 查看当前容器:
      SHOW con_name;  SELECT sys_context('userenv', 'con_name') "Container DB" FROM dual;
  • PDB 操作

    • 查看 PDB 列表:
      SHOW pdbs;  SELECT con_id, dbid, guid, name, open_mode FROM v$pdbs;
    • 切换容器:
      ALTER SESSION SET container=PDB_NAME;
    • 启动或关闭 PDB:
      ALTER PLUGGABLE DATABASE PDB_NAME open;  ALTER PLUGGABLE DATABASE PDB_NAME close;
    • 停止或启动 CDB:
      shutdown immediate;  startup;
  • 常用操作示例

  • 创建新 PDB:

    CREATE PLUGGABLE DATABASE new_pdbadmin user admin identified by oracle;ALTER PLUGGABLE DATABASE new_pdb open;
  • 克隆 PDB:

    CREATE PLUGGABLE DATABASE cloned_pdb FROM original_pdb;ALTER PLUGGABLE DATABASE cloned_pdb open;
  • 删除 PDB:

    ALTER PLUGGABLE DATABASE old_pdb close;  DROP PLUGGABLE DATABASE old_pdb including datafiles;
  • 12C+架构扩展

    在 12.2 中,进一步增强了多租户功能。CDB 根容器可以创建一个叫做 Application Root 的容器,可在其内创建多个依赖于 Application Root 的 Application PDB。架构如下:

    CDB$ROOT  ├── Application Root  │   └── PDB1 (Application PDB)  │   └── PDB2 (Application PDB)  ├── PDBA (User Database)  └── PDBB (User Database)

    总结

    通过以上内容,可以清晰地理解 Oracle 12C 中的 CDB 和 PDB 关系。CDB 作为数据库容器,管理多个可插拔的 PDB。每个 PDB 都是独立的容器,可被单独管理和运作。这种架构使数据库管理员能够充分利用资源,实现多租户支持。

    转载地址:http://fzqiz.baihongyu.com/

    你可能感兴趣的文章
    Python:矩形参数无效
    查看>>
    Python:语法进阶
    查看>>
    Python:调用复制函数时调用 Python 对象时超出了最大递归深度
    查看>>
    Python:这两个 import 语句有什么区别?
    查看>>
    Python:通过串口从 Velleman k8090 读取数据
    查看>>
    python:遍历具有列表值的字典
    查看>>
    Python:降低精度 pandas 时间戳数据帧
    查看>>
    python:非阻塞子进程,检查标准输出
    查看>>
    PythonABC多重继承
    查看>>
    Pythonargparse中的多个参数
    查看>>
    Python关于 *args 和 **kwargs 参数的详解(全)
    查看>>
    Pythonfrozenset散列算法/实现
    查看>>
    PythonGTK+3:通过单击列对树视图进行排序
    查看>>
    pythonnumpy生成二进制流_python/numpy生成的二进制文件,由C读取
    查看>>
    pythonsign函数_对python函数签名的方法详解 用python怎么写一个自签名证书
    查看>>
    PythonStudy
    查看>>
    Pythons__IMPORT__未按预期工作
    查看>>
    Pythont通过request以及BeautifulSoup爬取几千条情话
    查看>>
    pythonweb django的学习
    查看>>
    pythonweb网站开发基础django安装
    查看>>