É possível detectar que uma conexão de banco de dados é para uma cópia em vez de para o banco de dados original? [fechadas]

1

Eu tenho um aplicativo que precisa saber se ele está conectado ao banco de dados original com o qual ele foi instalado ou se a conexão é para uma cópia desse banco de dados. Existe algum método conhecido para saber se o banco de dados foi clonado e o aplicativo não está mais conectado ao original? Estou interessado especificamente no MS SQL Server e Oracle.

Eu estava chutando ideias por um procedimento armazenado, mas que provavelmente não tem acesso ao hardware para confirmar informações de hardware exclusivas que garantam que o banco de dados é aquele ao qual ele estava originalmente conectado durante a instalação.

Estou tentando evitar / detectar clonagem de um banco de dados para que haja apenas 1 "true location of truth".

    
por millebi 11.12.2012 / 23:07

3 respostas

1

A minha opinião é a seguinte: se for feito de bits, pode ser clonado de uma forma que você nunca será capaz de dizer a diferença entre o original e o clone. Sua única chance seria se houvesse algum tipo de valor calculado que cada instância do banco de dados retorna, então -

  1. Cada instância do banco de dados retorna um valor diferente.
  2. O valor retornado por cada instância do banco de dados é consistente em invocações .

Número de condição (2) é o seu vilão aqui. Se o valor retornado por cada instância for consistente em invocações, o valor deverá depender de algum tipo de valor armazenado, em algum lugar. Esse valor armazenado também pode ser clonado ...

Q.E.D

    
por 12.12.2012 / 06:16
3

Eu clonei bancos de dados Oracle para duas finalidades. Tanto quanto é do meu conhecimento, apenas um deles atenderá às suas necessidades.

  • Eu tenho o banco de dados clonado para fornecer uma instância adicional (às vezes somente leitura) para outro ambiente ou uso. Nesse caso, altero o nome do banco de dados. Esses clones podem ser detectados, verificando o nome do banco de dados.
  • Eu clonei o banco de dados para fins de recuperação ou reversão. Geralmente, eles substituem o banco de dados original. Não conheço nenhuma maneira de identificar isso como um banco de dados clonado.

Existem dados que podem indicar que o banco de dados foi clonado ou movido. Coisas como nomes de arquivos para tablespaces podem mudar quando um banco de dados é clonado, mas podem mudar mesmo que o banco de dados não seja clonado. Eu acredito que você pode recuperar o nome do host ou endereço IP em que o banco de dados está sendo executado. Novamente, isso pode ser indicativo de que o banco de dados é clonado, mas não pode ser usado para verificar se é um clone.

Embora seja possível acabar conectado ao clone errado, geralmente é um pouco difícil entrar nessa situação. Passe algum tempo entendendo como suas conexões com o banco de dados são roteadas.

    
por 12.12.2012 / 01:28
0

'mostrar status de escravo;' você sabe a qual servidor está conectado ... o status show slave lhe dirá qual servidor é o mestre ... se eles estão em servidores diferentes. Você pode usar a variável global server_id para descobrir a diferença no mesmo servidor ... Eu não joguei com ele.

    
por 12.12.2012 / 02:31