zoukankan      html  css  js  c++  java
  • 使用全文检索的intermedia索引时遇到ORA03212问题的解决

    Bug系统中按反馈描述或处理情况的关键字查询,有时会找不到,但明明有这样的记录.
    后来,查到是因为该搜索使用了Oracle的intermedia索引,该索引需要定期重建和收集,但自动任务失效了.

    查到那个执行失败的过程,手工执行时出现了如下错误:
    ORA-03212 : Temporary Segment Cannot Be Created In Locally-Managed Tablespace
    进一步查到是ctx_ddl.sync_index同步索引时出错,
    估计是上次转换表空间为本地管理表空间后引起的问题,因为同步全文索引要使用临时段,可能当前用户的临时表空间是本地管理的.
    于是上matalink查到Doc ID:  Note:131716.1
    Create temporary segment(s) in a permanent locally managed tablespace is not allowed.

    也就是说,不能在本地管理的永久性表空间上创建临时段.

    找到intermedia的用户CTXSYS,查到它的表空间
    Select Temporary_Tablespace From Dba_Users Where Username = 'CTXSYS'
    再查他的表空间类型:
    Select Extent_Management From Dba_Tablespaces Where Tablespace_Name = 'DRSYS'

    果然是这样,那么,指定CTXSYS的临时表空间为其它的临时表空间可以吗,例如:Temp
    ALTER USER CTXSYS TEMPORARY Tablespace TEMP;

    然后,重新登录再运行,果然就正常了.(不重新登录的话,运行会出错)

    最后,经过近10分钟的intermedia索引收集与同步,Bug系统中的搜索功能就能准确的搜到目标了,
    不过,这个自动任务是每天执行一次,当天的需要次日才生效.

  • 相关阅读:
    微人事项目-mybatis-持久层
    通过外键连接多个表
    springioc
    Redis 消息中间件 ServiceStack.Redis 轻量级
    深度数据对接 链接服务器 数据传输
    sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取
    sqlserver 索引优化 CPU占用过高 执行分析 服务器检查
    sql server 远程备份 bak 删除
    冒泡排序
    多线程 异步 beginInvoke EndInvoke 使用
  • 原文地址:https://www.cnblogs.com/zyk/p/419918.html
Copyright © 2011-2022 走看看