如题,帮忙解答下面的语句是什么意思:
alter table scott.t1 enable row movement;

解决方案 »

  1.   

    允许行移动,偶中文翻译的不好
    使用Flashback table 的时候必须先enable row movement
      

  2.   

    SQL> select * from t;   ACCOUNT STAT
    ---------- ----
             3 欠费
             4 欠费SQL> select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual;TO_CHAR(SYSDATE,'YY
    -------------------
    2009-01-04 22:21:11
    SQL> insert into t values(12, 'test');已创建 1 行。SQL> commit;提交完成。SQL> select * from t;   ACCOUNT STAT
    ---------- ----
            12 test
             3 欠费
             4 欠费
    SQL> flashback table  t to timestamp '2009-1-4 22:21:11';
    flashback table  t to timestamp '2009-1-4 22:21:11'
                     *
    第 1 行出现错误:
    ORA-08189: 因为未启用行移动功能, 不能闪回表
    SQL> alter table t enable row movement;表已更改。
    SQL> flashback table  t to timestamp to_timestamp('2009-1-4 22:21:11', 'yyyy-mm-
    dd hh24:mi:ss');闪回完成。SQL> select * from t;   ACCOUNT STAT
    ---------- ----
             3 欠费
             4 欠费SQL>
      

  3.   

    enable row movement是指可以从回滚段中写数据,这个只是和flashback table 有关,还有另外两种方式是flashback drop,flashback database 没有什么关系
      

  4.   

    行迁移,意思就是,一个现存的行允许改变其rowid(物理存储地址),通常情况下,数据行在分配了空间之后,行的rowid就固定了,即使以后行长度超出预留的空间,也不会将其移动,在长数据行的情况下,表会产生行链接,对于io来说,行链接是不利的,为了性能,就需要将行调整为在单个物理存储地址下能保存行的所有信息,这需要行迁移.另外在flashback的时候,由于原始版本的行占据了相应的物理地址,所以,也需要行迁移.
    其它的,比如说在收缩段空间的情况下,由于要把所有段数据向段前挤压,大部分行都需要改变其物理地址.也需要行迁移