【12c-多租户篇】Oracle 12c体系结构之多租户

一 多租户体系结构多租户是Oracle 12c的新特性,该特性能够让您在多租户容器数据库(CDB)中创建和维护多个可插拔数据库(PDB)。多租户容器数据库(CDB)被定义为可以容纳一个或多个插件数据库的数据库,容器被定义为存在于CDB中数据文件和元数据的集合,可插拔数据库是一种特殊类型的容器,它可以通过克隆其他数据库很容易的进行创建,如果需要,可插拔数据库也可以从一个CDB迁移...
摘要由CSDN通过智能技术生成

一 多租户体系结构

 

多租户是Oracle 12c的新特性,该特性能够让您在多租户容器数据库(CDB)中创建和维护多个可插拔数据库(PDB)。

 

多租户容器数据库(CDB)被定义为可以容纳一个或多个插件数据库的数据库,容器被定义为存在于CDB中数据文件和元数据的集合,可插拔数据库是一种特殊类型的容器,它可以通过克隆其他数据库很容易的进行创建,如果需要,可插拔数据库也可以从一个CDB迁移到另一个CDB中。

 

每个CDB是由一个根容器(CDB$ROOT)、一个种子容器(PDB$SEED)和0个、一个或多个可插拔数据库组成,其中,根容器包含一组主数据文件和元数据,种子容器是用于创建其它可插拔数据库,可插拔数据库包括它自己的数据文件和应用程序对象(用户、表,索引等)。12c之前的数据库都是非容器数据库(non-CDB)。

 

下图展示了可插拔数据库的体系结构:

 

二 创建容器数据库CDB

 

1 使用DBCA创建

 

参照DBCA建库。

 

2 使用Create Database语句创建

 

1)指定实例SID

 

[oracle@strong ~]$ export ORACLE_SID=db01

 

2)设置环境变量

 

[oracle@strong ~]$ echo $ORACLE_SID

db01

[oracle@strong ~]$ echo $ORACLE_HOME

/u01/app/oracle/product/12.2.0/dbhome_1

 

3)创建密码文件

 

[oracle@strong ~]$ orapwd file='/u01/app/oracle/product/12.2.0/dbhome_1/dbs/orapwdb01' format=12.2

 

Enter password for SYS:

 

4)创建文本初始化参数文件

 

[oracle@strong ~]$ vim initdb01.ora

db_name='db01'

memory_target=400M

control_files='/u01/app/oracle/oradata/db01/control01.ctl','/u01/app/oracle/oradata/db01/control02.ctl'

enable_pluggable_database=true

 

5)连接实例db01

 

[oracle@strong ~]$ sqlplus /nolog

 

SQL*Plus: Release 12.2.0.1.0 Production on Tue Aug 7 13:25:18 2018

 

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

 

SQL> conn / as sysdba

Connected to an idle instance.

 

6)创建服务器参数文件

 

SQL> create spfile from pfile='/home/oracle/initdb01.ora';

 

File created.

 

7)启动实例

 

SQL> startup nomount

ORACLE instance started.

 

Total System Global Area 419430400 bytes

Fixed Size 8621424 bytes

Variable Size 301990544 bytes

Database Buffers 104857600 bytes

Redo Buffers 3960832 bytes

 

8)创建目录

 

[oracle@strong ~]$ cd /u01/app/oracle/oradata/

[oracle@strong oradata]$ mkdir db01

[oracle@strong oradata]$ cd db01/

[oracle@strong db01]$ mkdir pdbseed

 

9)创建建库脚本

 

[oracle@strong ~]$ cat db01.sql

CREATE DATABASE db01

USER SYS IDENTIFIED BY "Foxconn168!"

USER SYSTEM IDENTIFIED BY "Foxconn168!"

LOGFILE GROUP 1 ('/u01/app/oracle/oradata/db01/redo01.log')

SIZE 100M BLOCKSIZE 512,

GROUP 2 ('/u01/app/oracle/oradata/db01/redo02.log')

SIZE 100M BLOCKSIZE 512,

GROUP 3 ('/u01/app/oracle/oradata/db01/redo03.log')

SIZE 100M BLOCKSIZE 512

MAXLOGHISTORY 1

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 1024

CHARACTER SET AL32UTF8

NATIONAL CHARACTER SET AL16UTF16

EXTENT MANAGEMENT LOCAL

DATAFILE '/u01/app/oracle/oradata/db01/system01.dbf'

SIZE 700M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED

SYSAUX DATAFILE '/u01/app/oracle/oradata/db01/sysaux01.dbf'

SIZE 550M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED

DEFAULT TABLESPACE deftbs

DATAFILE '/u01/app/oracle/oradata/db01/deftbs01.dbf'

SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED

DEFAULT TEMPORARY TABLESPACE tempts1

TEMPFILE '/u01/app/oracle/oradata/db01/temp01.dbf'

SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED

UNDO TABLESPACE undotbs1

DATAFILE '/u01/app/oracle/oradata/db01/undotbs01.dbf'

SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED

ENABLE PLUGGABLE DATABASE

SEED

FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/db01/',

'/u01/app/oracle/oradata/db01/pdbseed/')

LOCAL UNDO ON;

 

10)执行建库脚本

 

SQL> @db01.sql

 

Database created.

注:创建容器数据库初始化参数enable_pluggable_database必须设置为TRUE,除此之外,所需的目录也必须提前创建,否则执行脚本时会出错。

 

11)执行脚本

 

SQL> @?/rdbms/admin/catcdb.sql

 

出现以下提示时,在参数1处输入目录,参数2处输入文件名称:

SQL> host perl -I &&rdbms_admin &&rdbms_admin_catcdb --logDirectory &&1 --logFilename &&2

Enter value for 1: /home/oracle

Enter value for 2: create_cdb.log

 

三 管理Root容器

 

1 连接Root容器

 

以SYS用户连接到Root容器可以执行与数据库相关的所有任务,可以通过OS身份验证或网络方式进行连接。

 

1)OS认证方式

 

[oracle@strong ~]$ sqlplus / as sysdba

 

SQL*Plus: Release 12.2.0.1.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值