ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 学习之应用基础(12)

学习之应用基础(12)

原创 Linux操作系统 作者:simkyo 时间:2013-07-10 11:39:47 0 删除 编辑
2. 收集表的统计信息
sql> exec dbms_stats.gather_table_stats('icd', 'unpar_table', cascade => true);
pl/sql 过程已成功完成。
3. 创建临时分区表
sql> create table  par_table (id number primary key, time date) partition by range (time)
  2  (partition p1 values less than (to_date('2004-7-1', 'yyyy-mm-dd')),
  3  partition p2 values less than (to_date('2005-1-1', 'yyyy-mm-dd')),
  4  partition p3 values less than (to_date('2005-7-1', 'yyyy-mm-dd')),
  5  partition p4 values less than (maxvalue));
表已创建。
4. 进行重定义操作
4.1 检查重定义的合理性
sql> exec dbms_redefinition.can_redef_table('icd', 'unpar_table');
pl/sql 过程已成功完成。
4.2 如果4.1 没有问题,开始重定义,这个过程可能要等一会。
这里要注意:如果分区表和原表列名相同,可以用如下方式进行:
SQL> BEGIN
DBMS_REDEFINITION.start_redef_table(
uname => 'ICD', 
orig_table => 'unpar_table',
int_table => 'par_table');
END;
/
如果分区表的列名和原表不一致,那么在开始重定义的时候,需要重新指定映射关系:
SQL> EXEC DBMS_REDEFINITION.START_REDEF_TABLE(
'ICD','unpar_table','par_table','ID ID, create_date TIME', -- 在这里指定新的映射关系
DBMS_REDEFINITION.CONS_USE_PK);
这一步操作结束后,数据就已经同步到这个临时的分区表里来了。
4.3 同步新表,这是可选的操作
SQL> BEGIN
  2  dbms_redefinition.sync_interim_table(
  3  uname => 'ICD',
  4  orig_table => 'unpar_table',
  5  int_table => 'par_table');
  6  END;
  7  /
PL/SQL 过程已成功完成。
4.4 创建索引,在线重定义只重定义数据,索引还需要单独建立。
sql> create index create_date_ind2 on par_table(time);
索引已创建。
4.5 收集新表的统计信息
sql> exec dbms_stats.gather_table_stats('icd', 'par_table', cascade => true);
pl/sql 过程已成功完成。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12961536/viewspace-765954/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-06-20

  • 博文量
    193
  • 访问量
    137030