ALTER EXTRACT
Use ALTER EXTRACT para os seguintes fins:
-
Para alterar os atributos de um grupo de Extract criado com o comando
ADD EXTRACT. -
Para incrementar uma trilha para o próximo arquivo na sequência.
-
Para fazer upgrade para uma configuração de captura integrada.
-
Para fazer downpgrade de uma configuração de captura integrada.
-
Para posicionar qualquer diário em questão do Db2 for i em um determinado número de sequência de diário.
Antes de usar esse comando, interrompa o processo de Extract com o comando STOP EXTRACT group_name
Sintaxe
ALTER EXTRACT group-name
[, BEGIN {NOW | yyyy-mm-dd[ hh:mi:[ss[.cccccc]]]} |
| [, EXTRBA archive-offset-number]
| [, ADD_EXTRACT_attribute | SCN value]
| [, LSN
| [, EOL
| [, DESC
| [ CRITICAL [ YES | NO ] ]
| [ ENCRYPTIONPROFILE encryption-profile-name]
| [ PROFILE
| [ AUTOSTART [ YES | NO ]
| [ DELAY delay-number ] ]
| [ AUTORESTART [ YES | NO ]
| [ RETRIES retries-number ]
| [ WAITSECONDS wait-number ]
| [ RESETSECONDS reset-number ]
| [ DISABLEONFAILURE [ YES | NO ] ] ] ]
| [ LOGNUM lognum]
| [ LOGPOS logpos
As seguintes opções ALTER EXTRACT são suportadas para Db2 para i para posicionar Extract para um determinado lançamento:
ALTER EXTRACT {BEGIN {NOW | yyyy-mm-ddT[ hh:mi:[ss[.cccccc]]Z]}
[JOURNAL journal_library/journal_name [JRNRCV receiver_library/
receiver_name]] |
, EOL [JOURNAL journal_library/journal_name
[JRNRCV receiver_library/receiver_name]] |
, SEQNO sequence_number [JOURNAL journal_library/journal_name
[JRNRCV receiver_library/receiver_name]]}
BEGIN {NOW | yyyy-mm-ddT[ hh:mi:[ss[.cccccc]]]Z} [JOURNAL journal_library/journal_name [JRNRCV receiver_library/ receiver_name]] | , EOL [JOURNAL journal_library/journal_name [JRNRCV receiver_library/receiver_name]] | , SEQNO sequence_number [JOURNAL journal_library/journal_name [JRNRCV receiver_library/receiver_name]]
Essas opções IBM for i permitem posicionamento de Extração específico de lançamento após o ponto inicial global ser emitido com ADD EXTRACT. Uma posição de lançamento específica definida com ALTER EXTRACT não afeta nenhuma posição global que foi definida anteriormente com ADD EXTRACT ou ALTER EXTRACT; no entanto, uma posição global definida com ALTER EXTRACT substitui quaisquer posições de lançamento específicas que foram definidas anteriormente na mesma configuração de Extração.
Observação: SEQNO, quando usado com um diário em `ALTER
EXTRACT`, is the journal sequence number that is relative to that specific journal, not the system sequence number that is global across journals.
{: .infoboxnote}
group-name
O nome do grupo Extract que deve ser alterado.
{BEGIN {NOW |
Tyyyy-mm-dd[ hh:mi:[ss[.cccccc]]]Z} |
NOW
Para todos os bancos de dados com exceção de Db2 LUW, NOW especifica o horário em que o comando ALTER EXTRACT é emitido.
NOW especifica o horário em que o comando ALTER EXTRACT é emitido.
No Db2 LUW, apenas os registros de transação de commit e encerramento contêm timestamps. Portanto, a posição inicial do Extract só pode ser calculada em relação a esses timestamps. Essa é uma limitação da API que é usada pelo Oracle GoldenGate. Deve ser observado que o posicionamento por timestamps não é preciso e também pode levar bastante tempo. Recomenda-se o uso de opções LRI ou EOL sempre que possível.
YYYY-MM-DDThh:mm:ssZ
Uma data e hora (timestamp) no formato em questão. Por exemplo, 2017-07-14T14:54:45Z.
yyyy-mm-dd[ hh:mi:[ss[.cccccc]]]
Uma data e hora (timestamp) no formato em questão. Para uma função Oracle Extract no modo integrado, o valor do timestamp deve ser maior que o timestamp no qual o Extract foi registrado no banco de dados.
O posicionamento por timestamp em um log de transações do SQL Server é afetado pelas seguintes características do SQL Server:
-
Os timestamps registrados no log de transações do SQL Server usam uma granularidade de 3.3333 microssegundos (ms). Esse nível de granularidade poderá não permitir o posicionamento por tempo entre duas transações, se as transações começarem no mesmo intervalo de 3.3333 ms.
-
Os timestamps não são gravados em cada registro de log do SQL Server, mas apenas nos registros que iniciam e confirmam a transação, bem como em alguns outros que não contêm dados.
-
Os timestamps do SQL Server não são do relógio do sistema, mas de um relógio interno específico dos processadores individuais em uso. Esse relógio é atualizado diversas vezes por segundo, mas entre as atualizações, ele poderá ficar fora de sincronismo com o relógio do sistema. Isso reduz ainda mais a precisão do posicionamento por tempo.
-
Os timestamps registrados nos arquivos de log de backup podem não corresponder com precisão aos tempos registrados no backup (no entanto, essa imprecisão é de menos de um segundo).
O posicionamento para um LSN é preciso.
O posicionamento por timestamp no PostgreSQL inclui os seguintes cenários:
-
Cenário 1
Se
track_commit_timestampforoff, a seguinte saída será exibida quando o processo de Extração for iniciado, independentemente do método de posicionamento usado:2020-04-29 02:15:54 INFO OGG-01517 Position of first record processed LSN: 0/2222C20, Jan 1, 1970 12:00:00 PM. -
Cenário 2
Se o
track_commit_timestampfor ativado antes de o Extract ser registrado, o timestamp correto será exibido assim que os registros forem enviados no banco de dados de origem, conforme mencionado no seguinte exemplo:2020-04-29 02:19:07 INFO OGG-01515 Positioning to begin time Apr 29,2020 2:18:38 AM. -
Cenário 3
Se o
track_commit_timestampestiver ativado depois que o Extract for registrado, talvez haja chances de que os registros mais antigos estejam disponíveis no log para o qual o timestamp de commit não foi criado com otransaction IDassociado. Nesse caso, se o Extract não obtiver o timestamp, ele fará fallback usando o timestamp padrão mencionado no cenário 1. A saída será semelhante à seguinte:020-04-29 01:55:07 INFO OGG-01517 Position of first record processed LSN: 0/221D028, Jan 1, 1970 12:00:00 PM. -
O timestamp anterior não poderá ser especificado se o slot de replicação tiver sido movido.
START
Válido para PostgreSQL.
Adiciona um Extrato sem mencionar BEGIN NOW ou LSN. O Extract iniciará automaticamente da posição de reinício do slot de replicação.
ADD_EXTRACT_attribute
Você pode alterar qualquer um dos atributos especificados com o comando ALTER EXTRACT, exceto o seguinte:
-
Alterando uma Extração especificada com a opção
EXTTRAILSOURCE. -
Alterando o número de threads RAC especificados com a opção
THREADS.
Para essas exceções, exclua o grupo Extract e depois inclua-o novamente.
Se você estiver usando a opção BEGIN, não combine outras opções na instrução. Emita instruções distintas, por exemplo:
ALTER EXTRACT exte, BEGIN 2019-01-01
ALTER EXTRACT exte, ETROLLOVER
ALTER EXTRACT exte, SCN 789000
Se você estiver usando a opção SCN ou BEGIN para o Extract Integrado, ela exigirá um DBLOGIN, e o valor do SCN ou timestamp especificado não pode estar abaixo do primeiro SCN ou timestamp da saída do servidor. Para encontrar o primeiro SCN do servidor de saída, emita o seguinte comando:
INFO EXTRACT group_name, SHOWCH DETAIL
O primeiro valor de SCN é listado conforme mostra o seguinte exemplo:
Integrated Extract outbound server first scn: 0.665884 (665884)
EXTRBA offset_number
Válido para Db2 z/OS.
Especifica o endereço de byte relativo em um log de transação no qual começar a capturar dados.
O formato obrigatório é 0Xnnn, em que nnn é um número hexadecimal de 1 a 20 dígitos (o primeiro caractere é o dígito zero e o segundo pode ser a letra maiúscula ou minúscula x).
EOL
Válido para Db2 for i, Db2 LUW, MySQL, PostgreSQL e SQL Server.
Configura o processamento para começar no final dos arquivos de log (ou diários) nos quais o próximo registro será gravado. As transações ativas não serão capturadas.
Para Db2 LUW, ele configura processamento para começar com o valor LRI ativo nos arquivos de log. O LRI ativo é a posição no final dos arquivos do log nos quais o próximo registro será gravado. As transações ativas não serão capturadas.
Para PostgreSQL, DBLOGIN é obrigatório para a posição por EOL.
No MySQL, ele encontra a posição correspondente ao final do arquivo e inicia a leitura das transações a partir daí. A posição do EOL não será exata se os dados forem gravados continuamente no log binário.
TRANLOG LRI LRI_number
(Db2 LUW) Você pode usar essa opção nos sistemas Db2 LUW para especificar o valor do registro LRI para o log de transações de checkpoint.
Para PostgreSQL, DBLOGIN é obrigatório para a posição por EOL.
REPORT file_name
Especifica o nome completo do caminho de um arquivo do relatório Extract em um local diferente do padrão de dirrpt no diretório do Oracle GoldenGate.
SCN value
Válido para Oracle.
Inicia o Extract na transação, no redo log que tem o número de alteração do sistema (SCN) Oracle especificado. Para o Extract, o valor do SCN deve ser maior que o SCN no qual o Extract foi registrado no banco de dados. Para SCN ou a opção BEGIN, DBLOGIN é obrigatório, e o SCN ou o valor de timestamp especificado não pode estar abaixo do primeiro SCN ou timestamp de saída do servidor.
LSN value
Válido para Db2 z/OS, PostgreSQL e SQL Server.
Especifica a transação LSN na qual os dados de captura devem ser iniciados. Um alias para essa opção é EXTLSN.
Para Db2 z/OS, o valor do LSN pode ser uma série de dígitos hexadecimais ou uma série de dígitos decimais. Se estiver em formato hexadecimal, ele deverá ser prefixado com 0X ou 0x seguido por 1 a 20 dígitos hexadecimais: 0-9, a-g ou A-G. Se for no formato decimal, não haverá prefixo e haverá de 1 a 25 dígitos decimais de 0 a 9.
Para PostgreSQL, o valor LSN pode ser hi ou lo. Defina o valor como hi para o ponto de entrada do arquivo da log. Lo é o deslocamento no arquivo de log. A posição do LSN deve ficar entre a posição da reinicialização do slot de replicação e a localização atual do log de gravação antecipada. Se existir uma posição especificada por si só entre a faixa mencionada, o Extract vai gerar um erro.
Para o SQL Server, LSN especifica a transação LSN na qual os dados devem ser capturados. Um alias para essa opção é EXTLSN.
O LSN especificado deve existir como um tran_begin_lsn válido encontrado na tabela do sistema cdc.lsn_time_mapping; caso contrário, o Extract tentará posicioná-lo após o valor de LSN fornecido.
As especificações válidas do LSN para o SQL Server consistem no seguinte:
-
String hexadecimal separada por dois-pontos (8:8:4) preenchida com zeros à esquerda e o prefixo 0X, como em 0X00000d7e:0000036b:0001
-
String hexadecimal separada por dois-pontos com o prefixo 0X e sem zeros à esquerda, como em 0Xd7e:36b:1
Você pode encontrar o LSN mínimo disponível consultando o seguinte:
SELECT min([tran_begin_lsn]) FROM [cdc].[lsn_time_mapping] with (nolock) where tran_id <> 0x00
Os exemplos a seguir mostram o uso do valor do LSN para Db2 z/OS:
Exemplo 1:
ALTER EXTRACT extn TRANLOG, LSN 0xDEE40E4F27A3245400
Exemplo 2:
ALTER EXTRACT extn TRANLOG, LSN 22216433159121980904448
O seguinte exemplo mostra o valor do LSN para for SQL Server:
ALTER EXTRACT extn TRANLOG, LSN 0X00000d7e:0000036b:0001
LOGNUM
Válido para MySQL.
Este é o número do arquivo de log. Por exemplo, se o nome de arquivo de log necessário for test.000034, o valor LOGNUM será 34. O Extract procurará esse arquivo de log. Observação: Na Arquitetura de Microsserviços, ALTER EXTRACT falhará se o valor LOGNUM contiver zeros anteriores ao valor. Por exemplo, o ALTER EXTRACT ext1, TRANLOG, LOGNUM 000001, LOGPOS 0 falhará. Em vez disso, defina LOGNUM como 1 para este exemplo a ser bem-sucedido.
LOGPOS
Válido para MySQL.
Este é um valor de referência de evento no arquivo de log que identifica um registro de transação específico. Os valores de referência de evento são armazenados na seção de cabeçalho de um registro de log. Para posicionar no início de um arquivo binlog, defina a LOGPOS como 0.
ETROLLOVER
Use nas situações de recuperação manual que exijam reposicionar e gerar novamente os arquivos de trilha de um Extract principal e ao fazer upgrade do Oracle GoldenGate de uma versão anterior.
Faz com que o Extract crie uma nova encarnação do arquivo de trilha e incremente para o próximo arquivo na sequência da trilha ao reiniciar, exigindo que leitores, como pump ou Replicat, sejam manualmente reposicionados para o novo número de sequência da trilha.
Com ETROLLOVER, o Extract captura todos os registros após o SCN especificado, com os quais o Extract está iniciando, independentemente de já ter sido capturado e gravado na trilha ou não. Sem ETROLLOVER, o Extract ignorará a captura de todos os registros que já foram capturados e gravados na trilha.
A partir da versão 19c, durante o processamento do Distribution Service:
-
Se o Extract principal na implantação de origem for atualizado com a trilha do arquivo
ETROLLOVER, o Serviço theDistribution detectará automaticamente a trilha do arquivoETROLLOVERe começará a ler a partir do próximo arquivo da trilha. Este é o mesmo comando do data pumpALTER EXTRACT groupname EXTSEQNO seqno+1 EXTRBA 0. -
Após fazer upgrade do Serviço de Distribuição, ele executa automaticamente o
ETROLLOVERdo arquivo da trilha de saída ao reiniciar e grava o próximo arquivo da trilha corretamente. É o mesmo que o data pumpALTER EXTRACT groupname ETROLLOVER.
DESC ‘description’
Especifica uma descrição do grupo, como 'Extracts account_tab on Serv1'. Coloque a descrição entre aspas simples. Você pode usar a palavra-chave DESC abreviada ou a palavra completa DESCRIPTION.
ENCRYPTIONPROFILE
Especifica o nome do perfil de criptografia para o Extract. Esse nome faz distinção entre maiúsculas e minúsculas; portanto, use o nome exato informado com ADD EXTRACT.
GTIDSET gtidset
Válido para MySQL.
Especifica o posicionamento inicial do Extract usando o tipo de posição positiob na opção de conjunto GTID para captura baseada em GTID no MySQL. As origens MySQL com suporte para conjunto GTID são MySQL Server 8.0, MySQL Server 5.7, e MDS (MySQL Database Service). O tamanho máximo de conjunto GTID com suporte é de 64 KB.
Sintaxe:
ALTER EXTRACT extract_name, TRANLOG, GTIDSET gtidset
Os exemplos a seguir incluem todas as combinações de formatos válidos de conjunto GTID.
Exemplo 1:
ALTER EXTRACT exte, TRANLOG, GTIDSET "E11FA47-71CA-11E1-9E33-C80AA9429562:4"
Exemplo 2:
ALTER EXTRACT exts, TRANLOG, GTIDSET "3E11FA47-71CA-11E1-9E33-C80AA9429562:1-10"
Exemplo 3:
ALTER EXTRACT extn, TRANLOG, GTIDSET "3E11FA47-71CA-11E1-9E33-C80AA9429562:1-3:11:47-49"
Exemplo 4:
ALTER EXTRACT extw, TRANLOG, GTIDSET "2174B383-5441-11E8-B90A-C80AA9429562:1-3,24DA167-0C0C-11E8-8442-00059A3C7B00:1-19"
Observação: conforme mostrado no exemplo 4, quando o GTID definido contém vários uuids, para formar uma solicitação de API REST, esse GTID definido é dividido em vários GTIDs usando separador de vírgulas.
CRITICAL
Indica se o processo é crítico para a implantação
PROFILE
Nome do perfil de início automático. Esse nome faz distinção entre maiúsculas e minúsculas; portanto, use o nome exato informado com ALTER EXTRACT.
AUTOSTART
Especifica se o processo gerenciado deverá ser iniciado automaticamente quando o Administration Service for iniciado. O valor padrão é YES.
RETRIES
O número máximo de tentativas de reiniciar a tarefa antes de cancelar os esforços de repetição. Essa definição é opcional.
WAITSECONDS
A duração (em segundos) na qual as novas tentativas são contadas.
RESETSECONDS
Redefine a duração na qual as novas tentativas são contadas.
DISABLEONFAILURE
Se for definido como TRUE, a tarefa será desativada quando o número de novas tentativas for esgotado.
INFO EXTRACT group-name, SHOWCH DETAIL
O primeiro valor de SCN é listado conforme mostra o seguinte exemplo:
Integrated Extract outbound server first scn: 0.665884 (665884)
Exemplos
O exemplo a seguir altera o Extract para iniciar o processamento de dados a partir de 1 de janeiro de 2019.
ALTER EXTRACT exte, BEGIN 2019-01-01
O exemplo a seguir altera o Extract para iniciar o processamento em um local específico na trilha.
ALTER EXTRACT exte, EXTSEQNO 26, EXTRBA 338
O exemplo a seguir altera o Extract em um ambiente SQL Server para ser iniciado em um LSN específico.
ALTER EXTRACT exte, LSN 0Xd7e:36b:1
O exemplo a seguir altera o Extract para ser incrementado para o próximo arquivo na sequência da trilha.
ALTER EXTRACT exte, ETROLLOVER
O exemplo a seguir altera o Extract para fazer upgrade para captura integrada.
ALTER EXTRACT exte, UPGRADE INTEGRATED TRANLOG
O comando que se segue usa ETROLLOVER para impedir filtragem de registros duplicados com SCN 778899 retroativo.
ALTER EXTRACT exte, SCN 778899
ALTER EXTRACT exte ETROLLOVER
START EXTRACT exte
Se você não usar ETROLLOVER, se você alterar o Extract para o valor SCN anterior, ele não processará registros duplicados. O comando para alterar o Extract para filtrar registros duplicados é como se segue:
ALTER EXTRACT exte, SCN 778899
START EXTRACT exte
A seguir, mostra ALTER EXTRACT para um IBM para ponto inicial de lançamento i.
ALTER EXTRACT exte, SEQNO 1234 JOURNAL accts/acctsjrn
A seguir, mostra ALTER EXTRACT para um IBM para ponto inicial de lançamento e recebedor i.
ALTER EXTRACT exte, SEQNO 1234 JOURNAL accts/acctsjrn JRNRCV accts/jrnrcv0005
O exemplo a seguir altera um Extract em um sistema Db2 LUW.
ALTER EXTRACT exte, TRANLOG LRI 8066.322711
O exemplo abaixo mostra as opções ALTER EXTRACT usadas com PostgreSQL:
ALTER EXTRACT exte, EOL
ALTER EXTRACT POSTEXT, LSN 0/156784
ALTER EXTRACT POSTEXT, BEGIN 2022-02-18T14:50:43.4230Z