oracle 19c CDB vs pdb 创建

  1. 概念理解

    CDB就是一个容器(或者说实例instance),PDB就是传统的database概念CDB可以包含多个pdb

    来自官方文档:Administrator’s Guide-->  Multitenant Administrator's Guide中

         Part II  Creating and Configuring a Multitenant Environment  

      CDB相关概念:

4.1 About Creating a CDB

The procedure for creating a multitenant container database (CDB) is similar to the procedure for creating a non-CDB.

The specific methods for creating a CDB are:

简单翻译过来,cdb建立两种方式,第一种 DBCA方式,第二种, CREATE DATABASE SQL方式(这其实就是11.2.0.4以前的手工建库) 具体语句参照官文以下内容(手工的有点难度呃,需要很好的架构理解,参数准备,光有下面语句不够的,第一次还是dbca的简单方式,不过在使用这种简单的dbca方式都还有莫名的报错)

 4.3.4.1脚本内容:

CREATE DATABASE newcdb
  USER SYS IDENTIFIED BY sys_password
  USER SYSTEM IDENTIFIED BY system_password
  LOGFILE GROUP 1 ('/u01/logs/my/redo01a.log','/u02/logs/my/redo01b.log') 
             SIZE 100M BLOCKSIZE 512,
          GROUP 2 ('/u01/logs/my/redo02a.log','/u02/logs/my/redo02b.log') 
             SIZE 100M BLOCKSIZE 512,
          GROUP 3 ('/u01/logs/my/redo03a.log','/u02/logs/my/redo03b.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/newcdb/system01.dbf'
    SIZE 700M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
  SYSAUX DATAFILE '/u01/app/oracle/oradata/newcdb/sysaux01.dbf'
    SIZE 550M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
  DEFAULT TABLESPACE deftbs
     DATAFILE '/u01/app/oracle/oradata/newcdb/deftbs01.dbf'
     SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
  DEFAULT TEMPORARY TABLESPACE tempts1
     TEMPFILE '/u01/app/oracle/oradata/newcdb/temp01.dbf'
     SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
  UNDO TABLESPACE undotbs1
     DATAFILE '/u01/app/oracle/oradata/newcdb/undotbs01.dbf'
     SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED  ENABLE PLUGGABLE DATABASE
    SEED
    FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/newcdb/', 
                         '/u01/app/oracle/oradata/pdbseed/')
    SYSTEM DATAFILES SIZE 125M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
    SYSAUX DATAFILES SIZE 100M
  USER_DATA TABLESPACE usertbs
    DATAFILE '/u01/app/oracle/oradata/pdbseed/usertbs01.dbf'
    SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
  LOCAL UNDO ON;

   使用脚本建立cdb,额外需要准备以下技能,具体参照官方文档

   4.2.1.2  Plan the Physical Layout 计划物理布局

   4.2.1.3  Learn How to Manage Initialization Parameters

            A CDB uses a single SPFILE or a single text initialization parameter file (PFILE).

           CDB使用单独的spfile或者pfile文件(这也就是CDB等同于11.2.0.4以前的实例的概念)

 ........


  1. DBCA建立CDB过程

    第一次建立,执行dbca,选择create db之后运行不久报错

 百度,mos都没有找到对应的解决方法,上班前去得早,查了一个多小时无果(真要纠缠下去,难度要开SR不成),后来想想,估计当时的环境是已经运行了一个CDB实例,然后再去dbca创建,是不是和这个有关,决定下次,不启动已有的htdb实例,然后dbca试试,果然到了今天顺利了,执行过程部分截图如下

终于顺利了

再看看创建的文件物理布局

dbs目录下产生4个文件(红线以下)


对应相关视图查看

select name from v$datafile;

--以下是db文件对应的归属

pdb test0606包含4个db文件

alter session set container=test0606;

alter session set container=PDB$SEED;

还有这4个(后面竖线标红)应该是系统CDB$ROOT的

cdb_data_file视图也可以查看(不全,不包含PDB$SEED,只有新建的TEST0606,和系统 CDB$ROOT的 )

alter session set container=CDB$ROOT;

col file_name for a110

select con_id,file_name from cdb_data_files;

COL NAME FORMAT A15

SELECT NAME, CON_ID, DBID, CON_UID, GUID 

FROM   V$CONTAINERS ORDER BY CON_ID


pdb 创建


create pluggable database testpdb2 admin user salesadm identified by oracle file_name_convert=('/u01/app/oracle/oradata/TEST06/datafile/','/u01/app/oracle/oradata/TEST06/testpdb2');

请使用浏览器的分享功能分享到微信等