Instrução

Criar tabelas do arquivo de log em um geodatabase enterprise como tabelas temporárias globais no Oracle

Last Published: April 27, 2021

Resumo

Nota: A partir do ArcGIS 10.7.1, os geodatabases no Oracle usam tabelas temporárias globais de propriedade do usuário que causou a criação da tabela do arquivo de log. Os usuários que não têm permissões do banco de dados para criar tabelas usarão as tabelas do arquivo de log temporário global de propriedade do usuário SDE.

O seguinte fluxo de trabalho é usado para versões anteriores do ArcGIS.

Os geodatabases enterprise usam tabelas do arquivo de log para manter listas de objetos selecionados. No Oracle, ao usar a arquitetura do arquivo de log compartilhado, duas tabelas são criadas para cada esquema de DBMS que faz as seleções. Estas tabelas são:

  • SDE_LOGFILES
  • SDE_LOGFILE_DATA

Os sde_row_ids do conjunto selecionado são gravados nessas tabelas para uso posterior pelo aplicativo. Isso permite uma análise e processamento de informações mais rápidos.

Ocasionalmente, as linhas dessas tabelas podem se tornar dexanexadas. Por exemplo, se o aplicativo cliente for encerrado de forma anormal, as linhas dessas tabelas se tornarão dexanexadas, exigindo que o administrador do banco de dados (DBA) remova manualmente os dados.

Para evitar a limpeza manual dessas tabelas, o administrador DBA ou Geodatabase Enterprise pode optar por recriar essas tabelas como tabelas temporárias globais.

Tabelas Temporárias Globais

As tabelas temporárias globais são usadas no Oracle para preservar os dados disponíveis apenas durante uma sessão ou transação. Assim que a sessão ou transação é concluída, as linhas são excluídas das tabelas temporárias com base na configuração da tabela (para preservar ou remover as linhas na confirmação).

Como as informações do arquivo de registro estão disponíveis apenas durante uma sessão, o uso de tabelas temporárias globais pode oferecer as seguintes vantagens:

  • Remoção imediata das linhas da sessão quando a sessão termina
  • Menos informações de refazer log sendo gerados

Além disso, esses segmentos e seus índices são criados no espaço de tabela temporário. Assim, não impactando o processo da cópia de segurança e recuperação.

As tabelas temporárias globais não suportam nem mantêm estatísticas da tabela do Oracle, portanto, é muito importante verificar se a capacidade do Oracle de realizar amostragem dinâmica está habilitada para a instância.

Procedimento

As instruções fornecidas descrevem como recriar tabelas do arquivo de log como tabelas temporárias globais para cada esquema do sistema de gerenciamento do banco de dados (DBMS) que atualmente tem tabelas do arquivo de log.

Nota: As etapas também são fornecidas para a criação de tabelas temporárias globais para novos usuários sem tabelas do arquivos de log SDE permanentes pré-existentes.
  1. Excluir as tabelas dos arquivos de log permanentes
    Para cada esquema DBMS com tabelas dos arquivos de log permanentes, exclua as tabelas SDE_LOGFILES e SDE_LOGFILE_DATA.
DROP TABLE sde_logfiles CASCADE CONSTRAINTS; DROP TABLE sde_logfile_data CASCADE CONSTRAINTS;

Novos usuários DBMS somente

Conceda permissão de criação de tabela e criação de sequência para cada novo usuário DBMS sem tabelas dos arquivos de log permanentes pré-existentes.

  1. Criando tabelas temporárias globais
    Para cada esquema DBMS, as tabelas SDE_LOGFILES e SDE_LOGFILE_DATA e os índices associados devem ser criados.
CREATE GLOBAL TEMPORARY TABLE sde_logfiles ( logfile_name VARCHAR2(256) NOT NULL ENABLE, logfile_id NUMBER(*,0) NOT NULL ENABLE, logfile_data_id NUMBER(*,0) NOT NULL ENABLE, registration_id NUMBER(*,0) NOT NULL ENABLE, flags NUMBER(*,0) NOT NULL ENABLE, session_tag NUMBER(*,0) NOT NULL ENABLE, logfile_data_db VARCHAR2(32), logfile_data_owner VARCHAR2(32), logfile_data_table VARCHAR2(98), column_name NVARCHAR2(32) ) ON COMMIT PRESERVE ROWS;
CREATE UNIQUE INDEX sde_logfiles_pk ON sde_logfiles (logfile_id); CREATE UNIQUE INDEX sde_logfils_uk ON sde_logfiles(logfile_name); CREATE UNIQUE INDEX sde_logfiles_uk2 ON sde_logfiles (logfile_data_id);
CREATE GLOBAL TEMPORARY TABLE sde_logfile_data ( logfile_data_id NUMBER(*,0) NOT NULL ENABLE, sde_row_id NUMBER(*,0) NOT NULL ENABLE ) ON COMMIT PRESERVE ROWS;
CREATE INDEX sde_logfile_data_idx1 ON sde_logfile_data (logfile_data_id, sde_row_id); CREATE INDEX sde_logfile_data_idx2 ON sde_logfile_data (sde_row_id);
  1. Habiitar amostragem dinâmica
    As tabelas temporárias globais não têm estatísticas calculadas. O Cost Based Optimizer (CBO) da Oracle usa estatísticas para determinar o caminho de acesso mais eficiente. Habilite a capacidade do Oracle de amostrar dinamicamente as estatísticas para garantir que o CBO esteja escolhendo o melhor caminho de execução. O valor mínimo recomendado é 2, o valor padrão 11g do Oracle.
  2. Aplica-se somente a novos usuários de DBMS que ainda não tinham arquivos de log SDE permanentes
    Crie a sequência SDE_LOGFILE_LID_GEN.
CREATE SEQUENCE SDE_LOGFILE_LID_GEN INCREMENT BY 1 START WITH 1 MAXVALUE 1.0E27 MINVALUE 1 NOCYCLE CACHE 20 NOORDER;

Revogue a sequência de criação do usuário.

Os privilégios de criação da tabela para usuários de somente leitura também podem ser revogados.

ID do Artigo:000009061

Obtenha ajuda de especialistas do ArcGIS

Entre em contato com suporte técnico

Baixe o Esri Support App

Ir para opções de download

Informações Relacionadas

Descubra mais sobre este tema