oracle 19c CDB vs pdb 建立

long_small發表於2020-06-06
  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:

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

    See  " ".

  • With the  CREATE DATABASE SQL statement.

    See  " ".

簡單翻譯過來,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');

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25846553/viewspace-2696667/,如需轉載,請註明出處,否則將追究法律責任。

相關文章