oracle 10.2G
建有A,B两张表,往A表插入数据会通过触发器向B也添加一个同样的数据,A表每天会清除一次数据,
一开始使用没有什么问题,当B表数据到了100W(大概一个月时间)左右.向A表插入数据时很慢,插入1000条数据差不多要20分钟,把触发器禁用了也一样慢,又在同一个用户下建了一个新表C,表结构,表空间和A表一样.加不加触发器都是和A表一样慢.
后来又一新建了一人新的用户,在用户下新建了一个表D,表结构,表空间和A表一样,也通过触发器向旧用户的表B添加一个同样的数据,这时插入表D的速度就很正常,而且表也能加到表B中.
所以问题应该是在用户上,但就是找不出原因,求高人指教.不胜感激. 
也可以在百度上回答
http://zhidao.baidu.com/question/176682436.html

解决方案 »

  1.   

    不一跟用户有关系,可能是清除数据后,高水位线(hwm)并未降低,
    并且表空间可能有碎片,这样造成在插入数据时,查找可用块的速度降低,
    你可以试试直接路径插入,看看速度
    insert /*+append*/ into ......
    如果速度正常,则使用
    alter table table_name move;
    alter table table_name shrink space;
    来重整段降低HWM和消除碎片
      

  2.   

    HWM上面有多少索引呢。都要考虑在内。
      

  3.   

    insert 慢的话,看看是否索引造成的
      

  4.   

    表空间有碎片Alter table table_name move;
    Alter index index_name rebuild;
    Alter trigger trigger_name compare;我也碰到过,这样做就绝对没问题了。
      

  5.   

    又在同一个用户下建了一个新表C,表结构,表空间和A表一样...慢
    后来又一新建了一人新的用户,在用户下新建了一个表D,表结构,表空间和A表一样...正常
    应该不是简单的高水位的问题了,楼主如果怀疑是用户的原因,可以查查是否用resource manager限制了资源使用,或者做个10046看看慢在哪里