oracle 12c PDB&PCB

 

本文介绍了oracle12c的一个重要的新特性插入式数据库。oracle12c目前仍然属于一个较为新颖的软件,这个新特性会让DBA更好的管理好数据库,提高数据库的运行效率。...



1、简介

Oracle12C引入了CDB与PDB的新特性,通过该特性,可以更有效地平衡资源。可以将众多的数据库插入到单一的容器数据库(CDB)中,一个CDB也被称为多租户数据库。

在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。这样做可以使数据库工作变得简单,硬件资源使用更有效,同时DBA在同样的时间内可以管理更多的数据库。

下面是官方文档关于CDB与PDB的关系图。

从上图可以看出CDB与PDB的关系是ROOT(根)和SEED(种子)的关系,一个ROOT可以有多个SEED。每一个SEED容器都有一个独一无二的的ID和名称。

2、实例

下面介绍下如何连接CDB和PDB,CDB和PDB数据容器之间如何切换,以及如何开启和关闭数据容器。

2.1 进入操作系统

目前oracle数据库主要分windows和linux两个版本。鉴于linux系统的安全及稳定的特性因此目前oracle的主流操作系统为linux,故此笔者在讲解本实例时也采用linux系统进行讲解。

目前的linux系统的版本有很多比如redhat , centos , ubuntu。经过比较本文采用的是oracle开发的OL6.4 x86系统。系统及oracle本文不过多赘述,下图展示的是oracle用户登录操作系统的图例。
2.2 连接并查询CDB数据库

(1)连接CDB

连接到CDB数据库容器非常简单,跟11G连接数据库的方法一样,用DBA用户进行登陆,SQL语句如下:

[oracle@localhost ~]$ sqlplus / assysdba

SQL*Plus: Release 12.1.0.2.0Production on Wed May 11 10:55:11 2016

Copyright (c) 1982, 2014,Oracle.  All rights reserved.

Connected to an idle instance.

此时将会看到系统中提示数据库为idle状态,说明数据库处于闲置状态。因此首先我们需键入“startup”命令开启CDB数据库容器。

SQL> startup

ORACLE instance started.

Total System Global Area 1577058304bytes

Fixed Size                 2924832 bytes

Variable Size                  503320288 bytes

Database Buffers         1056964608bytes

Redo Buffers                    13848576 bytes

Database mounted.

Database opened.

(2)查询CDB数据库容器名称

此时系统提示CDB数据库已经启动,通过SQL语句我们可查看当前数据库容器的名称。

SQL> show con_name;

CON_NAME

------------------------------

CDB$ROOT

通过查询我们可以看到系统默认的CDB容器名称为CDB$ROOT

从结果上看到目前ROOT下存在两个SEED即PDB$SEED和PDBORCL

2.3 从PCB数据容器切换到PDB数据库容器

查询PCB下的PDB容器

在切换数据容器之前我们需首先确定PCB下的PDB容器,即ROOT下有哪些SEED,查询语句如下。

SQL> select name from v$pdbs;

NAME

------------------------------

PDB$SEED

PDBORCL

从上面的查询可知,目前ROOT下的SEED有PDB$SEED和PDBORCL两个数据容器。笔者选择PDBORCL这个数据容器进行数据库容器切换演示。数据容器切换的SQL语句如下:

SQL> alter session setcontainer=pdborcl;

Session altered.

运行此命令后数据容器便从PCB转到了PDB,可以用之前的查询语句进行验证。语句如下:

SQL> show con_name;

CON_NAME

------------------------------

PDBORCL

虽然现在目前已经切换到PDBORCL容器中,但如果此时对数据库进行增,删,改,查等一系列操作将会无法进行,因为此时仅仅是切换容器但并未将其开启数据容器仍然处于闲置状态。示例如下:(笔者使用的是查询路径名称的SQL语句进行演示)

SQL> select directory_name fromdba_directories;

select directory_name fromdba_directories;

*

ERROR at line 1:

ORA-01219: database or pluggabledatabase not open: queries allowed on fixed

tables or views only

如上文所说,目前PDB数据容器未开启,因此无法对其进行有效操作,解决方式如前文,键入startup命令开启PDB数据库。

SQL> startup

Pluggable Database opened.

此时PDB数据库已经开启,从新之前路径查询命令,结果如下

SQL> select directory_name fromdba_directories;

DIRECTORY_NAME

----------------------------------------------------------------------

XSDDIR

SS_OE_XMLDIR

SUBDIR

MEDIA_DIR

DATA_FILE_DIR

LOG_FILE_DIR

ORACLE_OCM_CONFIG_DIR

ORACLE_OCM_CONFIG_DIR2

ORACLE_HOME

ORACLE_BASE

OPATCH_LOG_DIR

DIRECTORY_NAME

----------------------------------------------------------------------

OPATCH_SCRIPT_DIR

OPATCH_INST_DIR

DATA_PUMP_DIR

14 ows selected.

如上文,PBD数据库开启之后便可以对其进行正常的操作了。

2.4 关闭PDB数据库

在DBA的日常工作中有时需要关闭PDB数据库以提高效率,故此讲解一下PDB数据库的关闭命令,命令如下

SQL> alter pluggable databasepdborcl close;

Pluggable database altered.

3、结语

以上的小文大致介绍了oracle12c的一个重要的新特性插入式数据库。这个新特性会让DBA更好的管理好数据库,提高数据库的运行效率。由于oracle12c目前仍然属于一个较为新颖的软件,加入了很多创造性的特点,笔者对这些新特性也仅仅是略知一二,会在今后的使用中更好更多的挖掘oracle12c的新特点,提高管理数据库的能力。


    关注 图秀大数据


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册