Tenho mais experiência com SQL Server e Sybase do que com Oracle e entendo bem esses produtos. Pediram-me para procurar maneiras de reduzir a propriedade do servidor executando o Oracle. Entendo que uma instância no Oracle é mapeada para um banco de dados que hospeda muitos tablespaces. Eu tenho uma boa compreensão dos fundamentos, no entanto, se eu quisesse consolidar o SERVER1,..,SERVER4 executando o banco de dados Oracle em um servidor, qual seria a melhor maneira de fazer isso fisicamente? Estou considerando o Virtual também usando um modelo DBaaS (Database as a Service), mas estou curioso para saber se isso pode/deve ser feito fisicamente.
É possível ter quatro instâncias separadas apontando para quatro bancos de dados separados em uma máquina? Ou eu teria que mesclar os quatro bancos de dados em um banco de dados no servidor consolidado e gerenciar os esquemas para garantir que não houvesse conflitos de nome? Se eu fizesse isso, teria uma instância ou quatro?
Eu li a documentação, mas ainda não tenho 100% de certeza sobre esta área.
É bastante fácil consolidar vários bancos de dados em um banco de dados real. No Oracle, um banco de dados é a coleção de arquivos. Os usuários se conectam ao banco de dados conectando-se a uma instância. Um banco de dados pode ser atendido por várias instâncias; nesse caso, você está executando o RAC.
Portanto, para simplesmente consolidar o banco de dados em um único banco de dados, você não precisa do RAC, mas pode, se quiser/precisar fazer isso.
Se você estiver consolidando em um banco de dados, há algumas coisas a serem consideradas:
Quando você tem conflitos de nomenclatura, há um problema, a combinação não é possível. Você pode querer tirar algum tempo de inatividade para manutenção/atualizações. Se você não consegue obter um tempo de inatividade de todos os aplicativos ao mesmo tempo, você tem um problema. Usando o Resource Manager, você pode dar uma certa garantia de desempenho para os serviços específicos. Os serviços são uma coisa inteligente de usar, é a coisa mais fácil de ver como os recursos são usados, em comparação com um e outro.
O mais fácil é executar várias instâncias em um único servidor, cada uma servindo seu próprio banco de dados. Esta é a coisa mais fácil, mas não a mais inteligente a fazer. O mais inteligente é ter uma única instância em um único servidor. Isso ocorre porque cada instância se considera o mestre do servidor. Você não pode isolar facilmente o uso de recursos, como pode fazer em uma única instância. Se você quiser dar alguma garantia de desempenho em um servidor de várias instâncias, a configuração aumentará em complexidade porque, em muitos casos, você precisará iniciar vários projetos e usuários para executar seus bancos de dados.
Um único banco de dados pode suportar facilmente algumas centenas de aplicativos, muito mais barato do que usar algumas centenas de bancos de dados. Isso rapidamente economiza MUITO dinheiro anualmente, fazendo bom uso dos recursos da Oracle.
Você tem duas opções:
Como você está familiarizado com o SQL Server/Sybase, explicarei a diferença entre eles e o Oracle no que diz respeito a bancos de dados e usuários.
Executar 4 instâncias em uma máquina é trivial, então não vou explicar mais.
A consolidação em um único banco de dados também é fácil se os bancos de dados separados não tiverem nomes de esquema conflitantes. Se o fizerem, pode não ser um problema, desde que os aplicativos/interfaces/pacotes não tenham nomes de esquema codificados - é fácil exportar dados de um esquema em um banco de dados e importá-los para um esquema diferente em outro banco de dados .