oracle 19c CDB vs pdb 创建

来源:这里教程网 时间:2026-03-03 15:50:52 作者:

    概念理解

    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:

  • With the Database Configuration Assistant (DBCA), a graphical tool.

    See  " About CDB Creation with DBCA".

  • With the  CREATE DATABASE SQL statement.

    See  " Creating a CDB".

    简单翻译过来,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以前的实例的概念)

     ........

      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 a110select con_id,file_name from cdb_data_files; COL NAME FORMAT A15SELECT 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');

  • 相关推荐