可以跨所有PDB访问在Oracle CDB中创建的公用表空间吗?

时间:2019-04-09 17:52:05

标签: database oracle oracle12c multi-tenant tablespace

我要FLASHBACK ARCHIVE在不同PDB中的表。我想为闪回归档创建一个单独的表空间。我正在阅读有关CDB(容器数据库)和PDB(可插拔数据库)的Oracle文档。我发现可以创建一个可以从所有PDB和CDB访问的普通用户。我想知道是否可以在Oracle CDB中创建一个通用表空间,该通用用户可以在所有PDB上访问该通用表空间吗?对于每个使用CDB中创建的公共表空间的PDB,FLASHBACK ARCHIVE都具有一个TABLESPACE,这样公共用户归档到其PDB中的相应闪回归档中,而每个闪回归档对于其他PDB中的用户都是不可见的。

或者,要在每个PDB中为FLASHBACK ARCHIVE创建单独的表空间吗?

示例:假设在2个不同的PDB PDB1和PDB2中有一个EMPLOYEES表。在不让其他PDB用户知道并且花费较少精力的情况下,不时归档EMPLOYEES表的最佳方法是什么?

存在一个公共用户HR。我希望PDB1和PDB2中的HR将各个PDB的EMPLOYEES表归档到公用的int[][] arr1 = { { 1, 2, 3}, { 4, 5, 6}, {7, 8, 9} }; FLASH_TABLSPACE中(如果可能)。 (或其他更好的选择)

1 个答案:

答案 0 :(得分:0)

multi-tenant architecture(具有多个PDB的CDB)开始,可以分离关注点(SoC)。每个PDB都独立存在,并且不依赖任何其他PDB来运行。这样可以确保一个PDB无法看到另一个PDB中发生的事情。 ROOT容器(CDB)在较高级别(内存,插件,插件等)管理PDB。

根据您的要求,可以在每个PDB中创建闪回数据存档。我们不需要在CDB(ROOT)中创建表空间,这不是设想多租户的方式。每个PDB是一个功能齐全的数据库,因此我们可以在PDB本身中创建Flashback Data Archive所需的表空间。可以使用系统提供的普通用户(SYS,SYSTEM)或dba提供的普通用户(C ## ...)在PDB中创建闪回数据存档。