
1.3 多租户存储的物理结构
1.3.1 数据文件的存放位置
因为后面章节的内容涉及多租户存储的物理结构,所以这里提前说明。在多租户架构中,与数据库相关的各个文件的存放位置和Oracle 11g中相关文件的存放位置有明显区别,主要体现在PDB的数据文件上,而其他的文件,如控制文件、Redo日志文件、密码文件、参数文件都没有变化。
如果PDB的数据文件使用Oracle自动管理(OMF),那么文件存放在$ORACLE_BASE/oradata/SID/DATAFILE/PDB_GUID/目录中。通过手动方式管理PDB的数据文件,理论上数据文件的存放位置是没有限制的,但是为了方便管理,建议参考标准去存放,将PDB相关的数据文件存放在单独的目录中。
CDB和Non-CDB有着相似的结构,除了每个PDB都有自己的表空间,如SYSTEM表空间、SYSAUX表空间、TEMP表空间和UNDO表空间(只有本地UNDO模式才有,如果是共享UNDO模式,则所有CDB Root和PDB共享一个UNDO表空间)。
注意:默认情况下,通过DBCA创建的CDB都会启动本地UNDO模式。
下面分别说明本地UNDO模式和共享UNDO模式下的CDB结构。
○ 本地UNDO模式:实际上除在线Redo日志文件外,其他表空间的每个PDB中都有。所有PDB会共享CDB的在线Redo日志文件,如图1-2所示。

图1-2 本地UNDO模式
共享UNDO模式:和本地UNDO模式唯一的区别就是,所有PDB共享一个UNDO表空间,如图1-3所示。

图1-3 共享UNDO模式
1.3.2 查看CDB数据文件目录
查看CDB数据文件的存放位置,需要切换到相应的容器下。例如,查看某个PDB数据文件的存放目录,可以通过alter session set container=pdbname命令切换到相应的PDB下,然后执行命令查看;或者直接通过CONTAINER子句来查询,如“select file_name from containers(dba_data_files) where con_id=3;”,这里的容器ID(con_id)可通过v$pdbs视图或show pdbs命令进行查看。
单实例文件系统。
由于没有启动OMF,所以所有的数据文件命名及存放目录都由DBA手动指定。

● CDB root

● PDB
切换到相应的PDB下进行查询即可。

可以看到,CDB root数据文件所在的目录中创建了一个子目录,该子目录用于存放相应PDB的数据文件。

RAC环境下的ASM存储。
为了进行对比,在RAC环境中启用了OMF。

● CDB root

● PDB
可以看到,Oracle使用PDB的GUID来区分不同PDB数据文件存放的目录。

