Español
Continue in the app
Be The First To Get Support Updates
Want to know about the latest technical content and software updates?

Cómo: Crear tablas de archivos de registro en una geodatabase corporativa como tablas temporales globales en Oracle

Resumen

Nota: A partir de ArcGIS 10.7.1, las geodatabases de Oracle usan tablas temporales globales que pertenecen al usuario que provocó la creación de la tabla de archivo de registro. Los usuarios sin permisos de base de datos para crear tablas usarán las tablas de archivo de registro temporales globales que pertenecen al usuario sde.

El siguiente flujo de trabajo se utiliza para versiones anteriores de ArcGIS.

Las geodatabases corporativas utilizan tablas de archivo de registro para mantener listas de objetos seleccionados. En Oracle, cuando se utiliza la arquitectura de archivos de registro compartidos, se crean dos tablas para cada esquema DBMS realizando selecciones. Estas tablas son:

  • SDE_LOGFILES
  • SDE_LOGFILE_DATA

Los sde_row_ids del conjunto seleccionado se escriben en estas tablas para su uso posterior en la aplicación. Esto permite analizar y procesar la información con más rapidez.

Ocasionalmente, las filas de estas tablas pueden quedarse desasociadas. Por ejemplo, si la aplicación cliente se apaga anormalmente, las filas de estas tablas se quedarán desasociadas, lo que requerirá que el administrador de base de datos (DBA) elimine los datos manualmente.

Para evitar el borrado manual de estas tablas, el DBA o el administrador de la geodatabase corporativa puede volver a crear estas tablas como tablas temporales globales.

Tablas temporales globales

Las tablas temporales globales se utilizan en Oracle para preservar los datos que solo están disponibles durante una sesión o una transacción. Tan pronto como finaliza la sesión o la transacción, las filas se eliminan de las tablas temporales basándose en la configuración de la tabla (para mantener o quitar filas al confirmar).

Dado que la información del archivo de registro solo está disponible durante una sesión, utilizar tablas temporales globales puede ofrecer las siguientes ventajas:

  • Eliminación inmediata de las filas de la sesión cuando finaliza la sesión
  • Generación de menos información de registro de rehacer

Además, estos segmentos y sus índices se crean en el espacio de tabla temporal. Por lo tanto, no afecta al proceso de copia de seguridad y recuperación.

Las tablas temporales globales no admiten ni mantienen estadísticas de tablas de Oracle; por lo tanto, es muy importante verificar que la capacidad de Oracle para realizar un muestreo dinámico esté habilitada para la instancia.

Procedimiento

Las instrucciones proporcionadas describen cómo volver a crear tablas de archivos de registro como tablas temporales globales para cada esquema del sistema de administración de bases de datos (DBMS) que actualmente posee tablas de archivos de registro.

Nota: También se proporcionan pasos para crear tablas temporales globales para nuevos usuarios sin tablas de archivos de registro SDE permanentes preexistentes.
  1. Eliminar las tablas de archivos de registro permanentes
    Para cada esquema de DBMS con tablas de archivos de registro permanentes, elimine las tablas SDE_LOGFILES y SDE_LOGFILE_DATA.
DROP TABLE sde_logfiles CASCADE CONSTRAINTS; DROP TABLE sde_logfile_data CASCADE CONSTRAINTS;

Solo nuevos usuarios de DBMS

Otorgue los permisos de creación de tablas y creación de secuencias a cada nuevo usuario de DBMS sin tablas de archivos de registro permanentes preexistentes.

  1. Crear tablas temporales globales
    Para cada esquema de DBMS, se deben crear las tablas SDE_LOGFILES y SDE_LOGFILE_DATA y los índices asociados.
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. Habilitar el muestreo dinámico
    Las tablas temporales globales no tienen calculadas estadísticas. El optimizador basado en costes (CBO) de Oracle utiliza estadísticas para determinar la ruta de acceso más eficiente. Habilite la capacidad de Oracle para obtener una muestra dinámica de las estadísticas y asegurarse de que el CBO elige la mejor ruta de ejecución. El valor mínimo recomendado es 2, el valor predeterminado 11g de Oracle.
  2. Solo se aplica a nuevos usuarios de DBMS que aún no tienen archivos de registro SDE permanentes
    Cree la secuencia 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;

Revoque Crear secuencia al usuario.

También pueden revocarse los privilegios Crear tabla para usuarios de solo lectura.

Información relacionada

Última modificación: 4/27/2021

Id. de artículo: 000009061

Software: ArcSDE 9.3.1, 9.3, 9.2, 9.1, 9.0, 8.3