Estamos em processo de migração do Microsoft SQL Server para Oracle. No SQL Server temos 60 bancos de dados (como XMLDB_1, XMLDB_2, XMLDB_3, ......, XMLDB_60) para inserir dados após ler 60 arquivos XML ao mesmo tempo. O SSIS lerá 60 arquivos XML por vez e inserirá dados nesses 60 bancos de dados. Cada um dos 60 bancos de dados contém 10 tabelas com a mesma estrutura. Da próxima vez, o SSIS lerá os próximos 60 arquivos XML e inserirá dados nos mesmos 60 bancos de dados. Cada vez antes de escolher os arquivos XML, todas as tabelas dentro de cada banco de dados (XMLDB) serão truncadas após enviar os dados para outro banco de dados (por exemplo, DocumentDB).
O que eu entendo é isso ou o que ouvi de outras pessoas - ter muitos serviços de banco de dados dentro de uma única instância de banco de dados Oracle pode criar problemas de desempenho devido à maior utilização de recursos. Por outro lado, no SQL Server, ter muitos bancos de dados não é grande coisa.
Estou procurando uma abordagem de design melhor aqui,
- Precisamos prosseguir criando 60 serviços de banco de dados XML (XMLDB_1,XMLDB_2,XMLDB_3,......,XMLDB_60) em uma única instância de banco de dados Oracle? Ou,
- Precisamos criar quantas tabelas forem necessárias para processar 60 arquivos XML por vez, mas em um único serviço de banco de dados. Neste caso precisaríamos criar 600 tabelas (10 tabelas dentro de cada XMLDB e temos 60 XMLDBs, portanto 60x10 = 600) em um único serviço de banco de dados.
Apenas para esclarecer a terminologia, o uso da palavra "banco de dados" pela Oracle é diferente do uso do SQL Server. Um "banco de dados" SQL Server corresponde mais a um usuário/esquema no Oracle. A Oracle normalmente associa “banco de dados” à instância do servidor. Você provavelmente deveria implementar uma única instância de banco de dados (conjunto de processos em execução) com mais de 60 usuários/esquemas. Dependendo da arquitetura e da versão da instalação específica do Oracle, isso pode significar uma instância de banco de dados independente ou um Pluggable Database (PDB) dentro de um Container Database (CDB).
No que diz respeito ao consumo de recursos, isso dependerá de quanto trabalho você está realizando simultaneamente, mas não será função de quantos esquemas ou tabelas você cria. Por exemplo, se você deseja processar 60 arquivos por vez, você precisará confirmar se seu servidor possui recursos de CPU e memória suficientes para fazer isso - cada processo de sessão/usuário geralmente receberá memória dedicada - mas não é incomum que instâncias de banco de dados suportem centenas de usuários simultâneos ou mais.