Oracle 12c 多租户是一种新型数据库管理模式,它可以通过一个容器数据库来容纳多个租户,让每个租户享有自己独立的数据库资源,以及独立的数据库管理权限与用户管理权限。如此一来,企业可以避免不同用户之间的冲突,提高数据库的可扩展性和易管理性。
在 Oracle 12c 中,一个容器数据库可以容纳多个租户数据库。每个租户数据库都能够存储专属于该租户的数据,并且各个租户之间的数据是相互独立的。这种机制可以使得多个应用程序共享一套数据库资源,这样就能节省硬件与软件的成本,同时提高系统的整体性能。下面我们看一下如何创建多个租户数据库。
CREATE PLUGGABLE DATABASE pdb_hr ADMIN USER hr_admin IDENTIFIED BY hr_admin_123 FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/CDB1/pdbseed/', '/u02/app/oracle/oradata/CDB1/pdb_hr/') STORAGE (MAXSIZE 5G);
在上面的例子中,我们首先在容器数据库中创建了 pdb_hr 租户数据库。其中 ADMIN USER 是容器数据库管理员,hr_admin 是租户数据库管理员,IDENTIFIED BY hr_admin_123 是租户数据库管理员的密码,FILE_NAME_CONVERT 选项指定了数据库文件的路径,而 STORAGE 选项则指定了数据库的最大容量。
多租户数据库中的应用程序可以跨越租户边界进行访问,从而让数据访问更加灵活。比如,一个健康管理公司可以通过多租户数据库,让它的医疗机构客户、就业健康管理客户和医疗保险客户分属于不同的租户数据库,以保证他们的数据彼此独立。但同时它的 BI 应用程序可以访问这三个租户数据库,以获取全局数据洞察力。
SELECT * FROM cdb_users WHERE con_id IN (3, 4, 5);
上面的代码片段将在容器数据库中查询出 con_id 为 3、4、5 的租户数据库信息。通过这种方式,容器数据库管理员可以管理该容器中所有租户数据库的资源与权限,而租户管理员则只能管理自己数据库内的资源与用户。
多租户数据库使得应用程序可以更加灵活地访问资源与数据,同时也提供了更加安全的数据访问。值得注意的是,多租户数据库模式并不适合所有的企业,需要针对企业的业务和 IT 需求进行评估后再进行决策。