Função de tabela MIRROR_COMPARE_OBJECT

A função de tabela MIRROR_COMPARE_OBJECT devolve as diferenças entre os nós de origem e de destino para o objecto identificado por tipo-objecto, nome-biblioteca e nome-objecto. O objecto não necessita de ser um objecto replicado actualmente.

Para objectos elegíveis para replicação, podem ser executadas operações de comparação para os atributos relacionados com a definição do objecto, os dados contidos no objecto ou ambos. Apenas os objectos *FILE e *OUTQ suportam comparações de dados. Para o objecto a ser comparado, um valor de SIM (YES) tem de ser especificado para pelo menos um dos parâmetros comparar-atributos ou comparar-dados.

Ao comparar atributos:
  • Uma linha é devolvido para cada atributo que é diferente entre nós.
  • O valor contido num objecto *DTAARA é considerado um atributo.
Ao comparar dados:
  • Para um objecto *FILE, é devolvida uma fila para por cada fila de dados que é diferente entre os nós. O número de registos relativos (RRN, relative record number) é devolvido para identificar a linha.
    • Ficheiros com controlo de acesso de fila ou coluna activa, ficheiros com activadores de leitura e ficheiros em estado de verificação pendente não são elegíveis para comparação de dados. Uma linha de resultados será devolvida para indicar que a comparação de dados não foi executada.
    • Ficheiros com múltiplos membros, incluindo tabelas particionadas e ficheiros físicos de origem, e que diferenças significativas são encontradas na definição não são elegíveis para comparação de dados. Todos os nomes dos membros têm de corresponder. Uma linha de resultados será devolvida para indicar que a comparação de dados não foi executada.
  • Para um objecto *OUTQ, é devolvida uma fila por cada ficheiro em spool que é diferente entre os nós. Esta é a informação devolvida pela vista QSYS2.OUTPUT_QUEUE_ENTRIES_BASIC. O conteúdo do ficheiro em spool não é comparado.

Se não forem encontradas diferenças, não serão devolvidas filas. Se o objecto não for elegível para ser comparado, não são devolvidas filas juntamente com um aviso SQLSTATE de '01H53'. Se o objecto não existir em ambos os nós, não são devolvidas filas juntamente com um erro SQLSTATE de '42704'. Se os nós não estiverem a comunicar, não são devolvidas filas juntamente com um erro SQLSTATE de '560DE'.

Autorização: Para objectos que devolvem informações sobre conteúdo que é diferente (excepto para variáveis de ambiente, utilização da função, atributos de segurança e valores do sistema), para ver as diferenças de conteúdos detalhadas, os privilégios retidos pelo ID de autorização da instrução têm de incluir:
  • Autoridade *EXECUTE na biblioteca que contém o objecto e
  • autoridade *OBJOPR e *READ para o objecto
Para ver as diferenças de conteúdo para os valores de sistema de auditoria (QAUDCTL, QAUDENDACN, QAUDFRCLVL, QAUDLVL, QAUDLVL2 e QCRTOBJAUD, com o tipo-de-objecto *SYSVAL) ou com os valores de auditoria para um objecto ou para um perfil de utilizador, é requerida a autoridade especial *ALLOBJ ou *AUDIT.

Para especificar um valor de grau paralelo diferente de NENHUM (NONE), os privilégios mantidos pelo ID de autorização da instrução terão de incluir a autoridade especial *JOBCTL ou terão de estar autorizados a aceder à função de Administrador de SQL ou do IBM® i através da Administração da Aplicação no System i Navigator. O comando Alterar Utilização da Função (CHGFCNUSG), com um ID de função QIBM_DB_SQLADM, pode também ser utilizado para alterar a lista de utilizadores autorizados.

Ler diagrama de sintaxeIgnorar diagrama de sintaxe visual MIRROR_COMPARE_OBJECT ( OBJECT_TYPE =>  tipo-objecto ,LIBRARY_NAME => nome-biblioteca,OBJECT_NAME => nome-objecto,COMPARE_ATTRIBUTES => comparar-atributos,COMPARE_DATA => comparar-dados,PARALLEL_DEGREE => grau-paralelo )
O esquema é QSYS2.
tipo-objecto
Uma expressão de caracteres ou cadeia gráfica que identifica o tipo de objecto.
Qualquer tipo de objecto de sistema pode ser especificado. No entanto, apenas os seguintes tipos de objecto são instrumentados para operações de comparação. Todos os outros não vão devolver filas e um aviso SQLSTATE de '01H53'.
*AUTL
Lista de autorizações. O nome-biblioteca tem de ser QSYS ou tem de ser omitido.
*DTAARA
Área de dados, incluindo atributos de sequência de SQL
*DTAQ
Fila de dados
*ENVVAR
Variável do ambiente ao nível do sistema. O nome-biblioteca tem de ser QSYS ou tem de ser omitido.
*FCNUSG
Utilização da função. O nome-biblioteca tem de ser QSYS ou tem de ser omitido.
*FILE
Ficheiro de base de dados
*JOBD
Descrição do trabalho
*JOBQ
Fila de trabalhos
*JRN
Diário
*LIB
Biblioteca
*OUTQ
Fila de saída
*PGM
Programa, incluindo atributos de rotina de SQL
*SECATR
Atributo de segurança. O nome-biblioteca tem de ser QSYS ou tem de ser omitido. O nome-objecto tem de ser nulo ou tem de ser omitido.
*SQLPKG
Pacote de SQL
*SQLUDT
Tipo de SQL definido pelo utilizador
*SQLXSR
Repositório de esquema SQL XML
*SRVPGM
Programa de serviço, incluindo atributos de rotina de SQL
*SYSVAL
Valor do sistema. O nome-biblioteca tem de ser QSYS ou tem de ser omitido.
*USRPRF
Perfil de utilizador. O nome-biblioteca tem de ser QSYS ou tem de ser omitido.
nome-biblioteca
Uma expressão de caracteres ou cadeia gráfica que identifica o nome da biblioteca para o objecto. Se este parâmetro for omitido, QSYS é o predefinido.
nome-objecto
Uma expressão de caracteres ou cadeia gráfica que identifica o nome do sistema do objecto a comparar. Para *FCNUSG, o nome é o ID da função. Um nome-objecto é requerido para todos os tipos de objecto excepto *SECATR; nome-objecto é ignorado para o tipo de objecto *SECATR. Se este parâmetro for omitido, nulo é o predefinido.
comparar-atributos
Uma expressão de caracteres ou cadeia gráfica que indica se os atributos elegíveis para replicação são comparados para o objecto.
NÃO (NO)
Os atributos não são comparados para o objecto.
SIM (YES)
Os atributos são comparados para o objecto. Tipos de objecto que não *FILE ou *OUTQ têm de especificar YES (SIM). Esta é a predefinição.
comparar-dados
Uma expressão de caracteres ou cadeia gráfica que indica se os dados dão comparados para um objecto *FILE ou *OUTQ. O comparar-dados é ignorado quando tipo-objecto não é *FILE ou *OUTQ.
NÃO (NO)
Os dados não são comparados para o objecto.
SIM (YES)
Os dados são comparados para um objecto *FILE ou *OUTQ. Esta é a predefinição.
grau-paralelo
Uma cadeia gráfica ou de caracteres que especifica um grau máximo de paralelismo para utilizar a comparação do objecto.

Se a funcionalidade Db2 Symmetric Multiprocessing (SMP) não for instalada, é emitido um erro se o valor não for NENHUM (NONE).

2 a 256
O máximo grau de paralelismo a ser utilizado.
NENHUM (NONE)
Não será utilizado paralelismo. Esta é a predefinição.

O resultado da função é uma tabela que contém linhas com o formato apresentado na seguinte tabela. Todas as colunas são anuláveis.

Tabela 1. Função de tabela MIRROR_COMPARE_OBJECT
Nome da Coluna Tipo de Dados Descrição
ATTRIBUTE_NAME VARGRAPHIC(512)
CCSID 1200
O nome do atributo do objecto ou o número de registo relativo (Relative Record Number, RRN) que não é idêntico.
VALUE_ON_PRIMARY VARGRAPHIC(2048)
CCSID 1200
O valor do nó principal.
VALUE_ON_SECONDARY VARGRAPHIC(2048)
CCSID 1200
O valor do nó secundário.

Exemplos

  • Lista todos os atributos elegíveis para replicação que são diferentes entre os dois nós para a fila de saída MYOUTQ na biblioteca APPLIB1. O conteúdo dos ficheiros em spool na fila de saída não serão comparados.
    SELECT * FROM TABLE(QSYS2.MIRROR_COMPARE_OBJECT(
                                           OBJECT_TYPE  => '*OUTQ',
                                           LIBRARY_NAME => 'APPLIB1',
                                           OBJECT_NAME  => 'MYOUTQ', 
                                           COMPARE_ATTRIBUTES => 'YES',
                                           COMPARE_DATA => 'NO'))
    ORDER BY ATTRIBUTE_NAME;
  • Para o ficheiro TEST_TABLE na biblioteca TESTLIB, encontre todas as linhas de dados que são diferentes entre os dois nós. Os atributos de ficheiro não serão comparados.
    SELECT * FROM TABLE(QSYS2.MIRROR_COMPARE_OBJECT(
                                           LIBRARY_NAME => 'TESTLIB',
                                           OBJECT_NAME  => 'TEST_TABLE',
                                           OBJECT_TYPE  => '*FILE',
                                           COMPARE_DATA => 'YES',
                                           COMPARE_ATTRIBUTES => 'NO'));