oracle将普通表变分区表
2016-01-26 00:00
441 查看
摘要: 数据库表迁移
exec dbms_redefinition.start_redef_table('tms','T_TMS_VEHICLE_DRIVER_REC','A_T_NEW');
exec dbms_redefinition.sync_interim_table('tms','T_TMS_VEHICLE_DRIVER_REC','A_T_NEW');
exec dbms_redefinition.finish_redef_table('tms','T_TMS_VEHICLE_DRIVER_REC','A_T_NEW');
数据是否同步仍未考证,但方法比较简单,可以用于参考:
思路:
1、创建中间表
2、验证原表是否可以在线迁移
3、在新开会话进行迁移,这里我没有新开会话,而是直接进行了迁移。
提交,会发现原有的表'T_TMS_VEHICLE_DRIVER_REC' 已添加分区完毕。但这时,原有PK,注释等并没有加入到新表。
4、更改主键(删除表,删除原有pk,如果不用同名约束,可以直接alter table)
5、加注释(请预先保留SQL)
exec dbms_redefinition.start_redef_table('tms','T_TMS_VEHICLE_DRIVER_REC','A_T_NEW');
exec dbms_redefinition.sync_interim_table('tms','T_TMS_VEHICLE_DRIVER_REC','A_T_NEW');
exec dbms_redefinition.finish_redef_table('tms','T_TMS_VEHICLE_DRIVER_REC','A_T_NEW');
数据是否同步仍未考证,但方法比较简单,可以用于参考:
思路:
1、创建中间表
CREATE TABLE A_T_NEW ("ID" VARCHAR2(32 BYTE) NOT NULL ENABLE, "DRIVERCODE" VARCHAR2(64 BYTE), "DRIVERTIME" TIMESTAMP (6), "LNG" VARCHAR2(32 BYTE), "LAT" VARCHAR2(32 BYTE), "IS_DELETED" VARCHAR2(20 BYTE) DEFAULT '0') PARTITION BY RANGE (DRIVERTIME)( PARTITION P1 VALUES LESS THAN (TO_TIMESTAMP('2016-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')), PARTITION P2 VALUES LESS THAN (TO_TIMESTAMP('2016-04-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')), PARTITION P3 VALUES LESS THAN (TO_TIMESTAMP('2016-07-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')), PARTITION P4 VALUES LESS THAN (TO_TIMESTAMP('2016-10-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')), PARTITION P5 VALUES LESS THAN (TO_TIMESTAMP('2017-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')), PARTITION P6 VALUES LESS THAN (TO_TIMESTAMP('2017-04-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')), PARTITION P7 VALUES LESS THAN (TO_TIMESTAMP('2017-07-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')), PARTITION P8 VALUES LESS THAN (TO_TIMESTAMP('2017-10-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')), PARTITION P9 VALUES LESS THAN (TO_TIMESTAMP('2018-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')), PARTITION P10 VALUES LESS THAN (TO_TIMESTAMP('2018-04-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')), PARTITION P11 VALUES LESS THAN (TO_TIMESTAMP('2018-07-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')), PARTITION P12 VALUES LESS THAN (TO_TIMESTAMP('2018-10-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')), PARTITION P13 VALUES LESS THAN (MAXVALUE)); commit;
2、验证原表是否可以在线迁移
--验证原表是否可以在线迁移 exec dbms_redefinition.can_redef_table('tms','T_TMS_VEHICLE_DRIVER_REC');
3、在新开会话进行迁移,这里我没有新开会话,而是直接进行了迁移。
exec dbms_redefinition.start_redef_table('tms','T_TMS_VEHICLE_DRIVER_REC','A_T_NEW'); exec dbms_redefinition.sync_interim_table('tms','T_TMS_VEHICLE_DRIVER_REC','A_T_NEW'); exec dbms_redefinition.finish_redef_table('tms','T_TMS_VEHICLE_DRIVER_REC','A_T_NEW');
提交,会发现原有的表'T_TMS_VEHICLE_DRIVER_REC' 已添加分区完毕。但这时,原有PK,注释等并没有加入到新表。
4、更改主键(删除表,删除原有pk,如果不用同名约束,可以直接alter table)
drop table A_T_NEW pu 7fe8 rge ; alter table T_TMS_VEHICLE_DRIVER_REC add constraint T_TMS_VEHICLE_DRIVER_REC_PK primary key (id);
5、加注释(请预先保留SQL)
COMMENT ON COLUMN "TMS"."T_TMS_BILL"."ID" IS 'ID'; COMMENT ON COLUMN "TMS"."T_TMS_BILL"."BILL_CODE" IS '运单号'; .....
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle数据库执行脚本常用命令小结
- Oracle 数据库 临时数据的处理方法
- 数据库分页查询语句数据库查询
- 最近比较流行的数据库挂马
- Oracle 手动创建数据库步骤详解