多租用户环境(Multitenant Environment),允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。
首先,毋庸置疑的是pdb只能在cdb root下创建,每个cdb里面都有一个pdb$seed 它可以形容为一个模板pdb,以pdb$seed为模板创建pdb的时候,将从pdb$seed中拷贝如下文件。
1.tablespace 包括system,sysaux,undo表空间。
2.user 包括通用用户:sys,system 本地用户:PDBA
3.创建一个新的pdb后oracle会自动创建一个service,用于远程连接,具体可以表现为 我的tnsname中没有进行配置, 但是lsnrct status 中可以 看到pdb的service,如下图:
一,查看容器数据库中的所有pdb
show pdbs
pdb$seed始终处于 read only 状态。
pdb 在未开启的时候始终处于mounted状态,这是由于pdb与cdb共享控制文件,而一旦控制文件被打开,数据库默认处于mounted状态。
二,创建一个pdb
1.查看pdbseed路径
select name from v$datafile;
2.创建一个pdb
其中file_name_convert('pdbseed','pdb2'),前面相同的pdb路径可以省略。
3.如果想拷贝一份pdb应该输入如下语句:
create pluggable database pdb3 from pdb2create_file_dest = ('起个名字')
切换容器:pdb容器与其它pdb容器以及root容器可以手动进行切换。
查看当前所处容器:
show con_name
切换到pdb2
下面介绍几个数据字典:
cdb_pdbs:包括cdb与pdb的所有相关信息。
cdb_tablespace:包括cdb与pdb的所有表空间,pdb的表空间只有pdb打开的时候才能看见。
还有比较常用的v$datafile:数据文件相关信息。