配置 Oracle 数据库以支持 ArcSDE XML 列

ArcSDE XML 列使用 Oracle Text 组件,默认情况下这些组件随 Oracle 一起安装。要使用它们,必须给用户授予使用这些组件的权限。授予权限后,必须正确地配置并维护数据库和 ArcSDE 以优化搜索结果和性能,尤其在使用存储英语以外的其他语言的 XML 文档时搜索以英语以外的其他语言编写的 XML 列。

此外,正确地管理文本索引对于维持良好的性能也十分重要。ArcSDE for Oracle 包含两个脚本,可用于配置数据库以存储 XML 数据。有关这些脚本的信息,请参阅用于调整 Oracle 实例以实现 ArcSDE XML 存储的脚本

如果要使用 XML 列的内容查询表,则检查以下有关数据库的信息:

如果当前的默认设置对于 XML 文档的语言不正确且现有自定义文本首选项不可用,则必须创建自定义文本首选项以正确索引化和搜索 XML 文档,然后在创建 XML 列之前使用 ArcSDE DBTUNE 参数 XML_IDX_INDEX_TEXT 引用这些首选项。

还可以自定义用于索引化 XML 文档的设置。这需要在 Oracle 中创建合适的首选项并使用 ArcSDE DBTUNE 参数 XML_IDX_INDEX_TEXT 引用这些参数。然后,在创建 XML 列时使用包含自定义 XML_IDX_INDEX_TEXT 参数的 DBTUNE 关键字。对于 ArcIMS 元数据服务,您可以在其 ArcXML 配置文件中引用 DBTUNE 参数。

警告警告:

更改标点的索引化方式时要小心谨慎。当索引化 XML 文档中的所有文本时,使用相同的首选项。一个 XML 元素中各个值使用的标点可能与其他元素中使用的标点不同。

步骤:
  1. 以 ctxsys 用户身份登录到 SQL*Plus,通过发出以下命令给将拥有 XML 列的用户授予权限:
    GRANT EXECUTE ON ctx_ddl TO <mdUsername>;

    <mdUsername> 是将拥有 XML 列的用户。对于 ArcIMS 元数据服务,<mdUsername> 是在服务的 ArcXML 配置文件中指定的用户。

  2. 查询 CTX_PARAMETERS 视图可确定 Oracle 安装的当前默认设置。
    SELECT * FROM ctx_parameters;
  3. 查询 CTX_PREFERENCES 视图可了解可用的首选项。例如,通过这种方式可了解 CTXSYS.DEFAULT_LEXER 首选项正在使用的词法分析器。还介绍了其他用户创建的所有自定义首选项。
    SELECT * FROM ctx_preferences;
  4. 查询 CTX_PREFERENCE_VALUES 视图可确保为 XML 文档的语言正确地设置系统定义的首选项。
    SELECT * FROM ctx_preference_values;
  5. 将上述查询的结果与您的数据库版本对应的《Oracle Text 参考指南》中记录的词法分析器、相关词表和其他文本对象允许的设置进行比较。
  6. 如果当前默认设置对于 XML 文档的语言不正确且现有自定义文本首选项不可用,则创建自定义文本首选项以正确索引化和搜索 XML 文档。
  7. 在创建 XML 列之前,将自定义文本首选项添加到 DBTUNE 参数 XML_IDX_INDEX_TEXT。
  8. 在创建自定义首选项之前,查看系统提供的文本对象,以确保要使用的词法分析器随 Oracle 安装一并提供。
    SELECT * FROM ctx_objects;
  9. 可以创建自定义文本首选项,用以引用上一步骤返回的词法分析器。

    例如,如果 ctx_object 列表中返回了 WORLD_LEXER,则可如下所示创建引用此词法分析器的自定义文本首选项:

    EXEC ctx_ddl.create_preference('WORLDLEXER', 'WORLD_LEXER');

  10. 设置 XML_IDX_INDEX_TEXT DBTUNE 参数以使用首选项。如果尚未创建地理数据库,则可更改 dbtune.sde 文件以包含所需的设置。有关详细信息,请参阅在创建地理数据库之前更改 dbtune 文件。如果地理数据库已经存在,则可通过 sdedbtune 命令更改 DEFAULTS 关键字下方的 XML_IDX_INDEX_TEXT 参数的值。有关详细信息,请参阅创建 DBTUNE 表后更改其内容

    始终将创建首选项的用户名放在首选项名称的前面。例如,如果地理数据库管理员以用户 sde 身份登录,那么在创建首选项时,XML_IDX_INDEX_TEXT 参数将如下所示设置首选项:

    LEXER sde.WORLDLEXER

  11. 确保为您的语言正确设置相关词表和非索引字表首选项。如果未正确进行设置,请执行以下操作之一:
    • 使用《Oracle Text 参考指南》中针对您的语言定义的那些设置值之一。
    • 如果《Oracle Text 参考指南》中没有定义所需的设置,则创建自定义首选项并将其添加到 DBTUNE 表的 XML_IDX_INDEX_TEXT 参数的值中。

如果当前的默认设置对于 XML 文档的语言不正确且现有自定义文本首选项不可用,则必须创建自定义文本首选项以正确索引化和搜索 XML 文档,然后在创建 XML 列之前使用 ArcSDE DBTUNE 参数 XML_IDX_INDEX_TEXT 引用这些首选项。


7/10/2012