我们正在从 Microsoft SQL Server 迁移到 Oracle。在SQL Server中,我们有60个数据库(如XMLDB_1,XMLDB_2,XMLDB_3,......,XMLDB_60)在同时读取60个XML文件后插入数据。SSIS 将一次读取 60 个 XML 文件并将数据插入到这 60 个数据库中。60 个数据库中的每一个都包含 10 个结构相同的表。下次,SSIS 将读取接下来的 60 个 XML 文件并将数据插入到相同的 60 个数据库中。每次在选择 XML 文件之前,每个数据库(XMLDB)内的所有表将在将数据推送到另一个数据库(例如 DocumentDB)后被截断。
我的理解是,或者我从其他人那里听到的 - 在单个 Oracle 数据库实例中拥有太多数据库服务可能会因为更多的资源利用率而产生性能问题。另一方面,在 SQL Server 中,拥有太多数据库并不是什么大问题。
我在这里寻找更好的设计方法,
- 我们是否需要继续在单个 Oracle 数据库实例中创建 60 个 XML 数据库服务(XMLDB_1、XMLDB_2、XMLDB_3、......、XMLDB_60)?或者,
- 我们是否需要在单个数据库服务中创建一次处理 60 个 XML 文件所需的那么多表?在这种情况下,我们需要在单个数据库服务中创建 600 个表(每个 XMLDB 内有 10 个表,我们有 60 个 XMLDB,因此 60x10 = 600)。
为了弄清楚术语,Oracle 对“数据库”一词的使用与 SQL Server 的使用不同。SQL Server“数据库”更多地对应于Oracle中的用户/模式。Oracle 通常将“数据库”与服务器实例相关联。您很可能希望实现具有 60 多个用户/模式的单个数据库实例(一组正在运行的进程)。根据特定 Oracle 安装的体系结构和版本,这可能意味着一个独立的数据库实例或容器数据库 (CDB) 中的一个可插拔数据库 (PDB)。
就资源消耗而言,这取决于您同时执行的工作量,但与您创建的架构或表的数量无关。例如,如果您想一次处理 60 个文件,您需要确认您的服务器有足够的 CPU 和内存资源来执行此操作 - 每个会话/用户进程通常会分配专用内存 - 但事实并非如此数据库实例支持数百个或更多并发用户的情况并不常见。