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

操作方法:在 Oracle 企业级地理数据库中创建日志文件表作为全局临时表

摘要

注: 自 ArcGIS 10.7.1 起,Oracle 中的地理数据库开始使用作为日志文件表创建诱因的用户所拥有的全局临时表。 无创建表所需数据库权限的用户将使用 SDE 用户所拥有的全局临时日志文件表。

对于较早版本的 ArcGIS,将使用以下工作流:

企业级地理数据库使用日志文件表来维护所选对象的列表。 在 Oracle 中,如果使用共享日志文件体系结构,则将为每个 DBMS 方案创建两个表以供选择。 这两个表为:

  • SDE_LOGFILES
  • SDE_LOGFILE_DATA

所选集合的 sde_row_ids 将写入这些表中,以供应用程序稍后使用。 支持信息的更快速分析和处理。

有时,这些表中的行会成为分离行。 例如,如果客户端应用程序异常关闭,则这些表中的行将变为分离行,由此需要数据库管理员 (DBA) 手动移除该数据。

要避免手动清理这些表,DBA 或企业级地理数据库管理员可以选择重新创建这些表作为全局临时表。

全局临时表

将在 Oracle 中使用全局临时表以保留仅在会话或事务期间可用的数据。 会话或事务完成后,将根据表的配置(在提交时保留或移除行)从临时表中删除行。

由于日志文件信息仅在会话期间可用,因此使用全局临时表可以提供以下优势:

  • 会话终止时,立即移除会话的行
  • 生成的重做日志信息较少

此外,将在临时表空间中创建这些部分及其索引。 因此,不会影响备份和恢复过程。

全局临时表不支持或维护 Oracle 表统计数据;因此,验证 Oracle 是否针对实例启用了动态采样的功能将非常重要。

过程

提供的说明将介绍如何为目前拥有日志文件表的每个数据库管理系统 (DBMS) 方案重新创建日志文件表作为全局临时表。

注: 还提供了相应步骤,以便为没有预先存在的永久 SDE 日志文件表的新用户创建全局临时表。
  1. 删除永久日志文件表。
    对于具有永久日志文件表的每个 DBMS 方案,删除 SDE_LOGFILES 和 SDE_LOGFILE_DATA 表。
DROP TABLE sde_logfiles CASCADE CONSTRAINTS; DROP TABLE sde_logfile_data CASCADE CONSTRAINTS;

仅限新 DBMS 用户

为每位没有预先存在的永久日志文件表的新 DBMS 用户授予创建表和创建序列权限。

  1. 创建全局临时表
    对于每个 DBMS 方案,必须创建 SDE_LOGFILES 和 SDE_LOGFILE_DATA 表以及关联的索引。
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. 启用动态采样
    全局临时表未计算统计数据。 Oracle 基于成本的优化程序 (CBO) 将使用统计数据来确定最有效的访问路径。 启用 Oracle 动态采样统计数据的功能,以确保 CBO 选择最佳执行路径。 最小建议值为 Oracle 11g 的默认值 2。
  2. 仅适用于尚未拥有永久 SDE 日志文件的新 DBMS 用户
    创建 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;

从用户撤消创建序列。

还会撤消只读用户的创建表权限。

相关信息

上次修改时间: 4/27/2021

文章 ID: 000009061

软件: ArcSDE 9.3.1, 9.3, 9.2, 9.1, 9.0, 8.3