配置 Oracle 数据库以支持 ArcSDE XML 列
ArcSDE XML 列使用 Oracle Text 组件,默认情况下这些组件随 Oracle 一起安装。要使用它们,必须给用户授予使用这些组件的权限。授予权限后,必须正确地配置并维护数据库和 ArcSDE 以优化搜索结果和性能,特别是如果您使用的 XML 文档存储的是英语以外的其他语言,而且是对以非英语语言编写的 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 关键字。
更改标点的索引化方式时务必小心谨慎。当索引化 XML 文档中的所有文本时,使用相同的首选项。一个 XML 元素中各个值使用的标点可能与其他元素中使用的标点不同。
-
以 ctxsys 用户身份登录到 SQL*Plus,通过发出以下命令为将拥有 XML 列的用户授予权限:
GRANT EXECUTE ON ctx_ddl TO <mdUsername>;
<mdUsername> 是将拥有 XML 列的用户。
-
查询 ctx_parameters 视图以确定 Oracle 安装的当前默认设置。
SELECT * FROM ctx_parameters;
-
查询 CTX_PREFERENCES 视图以了解可用的首选项。例如,通过这种方式可了解 CTXSYS.DEFAULT_LEXER 首选项正在使用的词法分析器。还介绍了其他用户创建的所有自定义首选项。
SELECT * FROM ctx_preferences;
-
查询 ctx_preferences_values 视图可确保为 XML 文档的语言正确地设置系统定义的首选项。
SELECT * FROM ctx_preference_values;
- 将上述查询结果与您的数据库版本所对应的《Oracle Text 参考指南》中记录的词法分析器、相关词表和其他文本对象允许的设置进行比较。
- 如果当前默认设置相对于 XML 文档的语言不正确且现有自定义文本首选项不可用,则创建自定义文本首选项以正确索引化和搜索 XML 文档。
- 在创建 XML 列之前,将自定义文本首选项添加到 DBTUNE 参数 XML_IDX_INDEX_TEXT。
-
在创建自定义首选项之前,查看系统提供的文本对象,以确保要使用的词法分析器随 Oracle 安装一并提供。
SELECT * FROM ctx_objects;
-
可以创建自定义文本首选项,用以引用上一步骤返回的词法分析器。
例如,如果 ctx_objects 列表中返回了 WORLD_LEXER,则可如下所示创建引用此词法分析器的自定义文本首选项:
EXEC ctx_ddl.create_preference('WORLDLEXER', 'WORLD_LEXER');
-
设置 XML_IDX_INDEX_TEXT DBTUNE 参数以使用首选项。使用 sdedbtune 命令修改 DEFAULTS 关键字中 XML_IDX_INDEX_TEXT 的参数值。有关详细信息,请参阅修改 DBTUNE 表的内容。
始终将创建首选项的用户名放在首选项名称的前面。例如,如果地理数据库管理员以 sde 用户身份登录,那么在创建首选项时,XML_IDX_INDEX_TEXT 参数将如下所示设置首选项:
LEXER sde.WORLDLEXER
-
确保为您的语言正确设置词表和非索引字表首选项。如果未正确进行设置,请执行以下操作之一:
- 使用《Oracle Text 参考指南》中针对您的语言所定义的某一设置值。
- 如果《Oracle Text 参考指南》中没有定义所需的设置,则创建自定义首选项并将其添加到 DBTUNE 表的 XML_IDX_INDEX_TEXT 参数的值中。
如果当前的默认设置相对于 XML 文档的语言不正确且现有自定义文本首选项不可用,则必须创建自定义文本首选项以正确索引化和搜索 XML 文档,然后在创建 XML 列之前使用 ArcSDE DBTUNE 参数 XML_IDX_INDEX_TEXT 引用这些首选项。