概念理解
CDB就是一个容器(或者说实例instance),PDB就是传统的database概念,
CDB可以包含多个pdb
来自官方文档:Administrator’s Guide-->
Multitenant Administrator's Guide中
Part II
Creating and Configuring a Multitenant Environment
CDB相关概念:
4.1About 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以前的实例的概念)
........
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');