Oracle在12c提出了多租户架构
多租户架构的优点如下:
-
节省成本:多租户架构可以通过共享资源和基础设施来降低成本,不同租户共享同一套系统和硬件设备,减少了资源浪费和维护成本。
-
灵活性和扩展性:多租户架构可以根据需求灵活扩展,支持快速增加新的租户或扩展现有租户的规模,同时保持系统的稳定性和性能。
-
安全性:多租户架构可以实现数据隔离和权限控制,确保不同租户的数据和配置相互独立,提高系统的安全性和隐私保护。
-
维护简单:多租户架构可以集中管理和维护系统,减少了重复劳动和管理成本,简化了系统维护的复杂性。
-
管理和监控方便:多租户架构可以通过统一的管理界面和监控工具来管理和监控各个租户的资源利用情况和性能表现,方便管理员进行整体的监控和调整。
既然优点这么明显那一定会有着较广泛的应用。
在正常的运维工作过程中对权限的要求很严格,因此就会有多个用户来管理日常工作。
那么如何在PDB中创建用户并给予合适权限呢?
create user c##USER identified by "xxxxxxx" container=all;
grant create session,SELECT ANY DICTIONARY,SELECT ANY TABLE to c##USER container=all;
用户想在PDB中创建newuser用户,却未设置会话container到PDB,而在CDB中创建公有用户因无法通过名称或角色验证出错。
解决方法:创建用户的时候用户名以c##或者C##开头即可。
这里还提供第二种办法
查看容器
SQL>select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
切换容器到pdb
SQL> alter session set container=PDBORCL;
查看当前使用容器
SQL>select sys_context ('USERENV', 'CON_NAME') from dual;
这样就可以到对应的PDB下进行操作了