解决方案 »

  1.   

    执行动态语句时需要把用到的数据库对象全部显式的授权,否则即使你是dba用户也不行
    这个问题也困扰我好久了
      

  2.   

    是的,权限都已经单独grant了,但是对索引的处理还是报错
      

  3.   

    不太明白,这是要降低高水位,还是要将生产库数据移到测试库如果是后者,impdp以后直接会降低高水位,不用去shrink
    如果要更改表结构,例如将表进行分区,那么可以分两次导入,第一次只导表结构,修改完以后,进行第二次导入,这次只导数据
      

  4.   

    是从生产库上直接EXP出来的表结构DMP包,是分两次导入的,DMP包里的建表语句包含了storage信息,如下:
    partition P_0 values (0)
        tablespace TS_SETTLE_FL
        pctfree 10
        initrans 1
        maxtrans 255
        storage
        (
          initial 4096M
          next 1M
          minextents 1
          maxextents unlimited
        )
    导表结构的时候,这些都直接带过来了,不管是EXP还是EXPDP,表建立的时候默认占用的空间就很大了
      

  5.   

    exp的时候,指定compress=N可以消除这种情况
    其实数据量这么大,建议用expdp/impdp会快得多,并且要更加稳定
    expdp/impdp不会有initial暴涨这种问题
      

  6.   

    COMMPRESS适用于表内没数据或数据少于存储空间的情况下,在表内有数据的情况下,貌似storage还是不会变化
    而且,我刚才也试了下EXPDP,结果一样。
      

  7.   

    查看了下ORACLE官方信息,DDL触发器内不能对INDEX的CREATE操作进行执行,只适用于TABLE的CREATE和其他一些操作
    现在就采用折中的方式,对表的DDL语句进行替换,INDEX的DDL语句弹出至纪录表内,之后再通过存储过程进行执行,即可。
    主键索引创建时出现ORA-00600估计也属于BUG类,在不支持的情况下就忽略吧- -