select * from tb_cablecheck_equipment_bak e
第一步:验证表是否能被在线重定义
验证是否能按主键重定义(默认,最后一次参数可以不加)
1
2
3
4
|
begin
--dbms_redefinition.can_redef_table('scott','tb_cablecheck_equipment_bak');
dbms_redefinition.can_redef_table(
'scott'
,
'tb_cablecheck_equipment_bak'
,dbms_redefinition.cons_use_pk);
end
;
|
验证是否能按rowid重定义:
1
2
3
4
|
begin
--dbms_redefinition.can_redef_table('scott','tb_cablecheck_equipment_bak',2);
dbms_redefinition.can_redef_table(
'scott'
,
'tb_cablecheck_equipment_bak'
,dbms_redefinition.cons_use_rowid);
end
;
|
第二步:创建中间表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
create
table
scott.tb_cablecheck_equipment_bak2(
equipment_id NUMBER,
equipment_code VARCHAR2(100),
equipment_name VARCHAR2(500),
area_id NUMBER,
address VARCHAR2(500),
res_type_id VARCHAR2(10),
res_type VARCHAR2(20),
manage_area_id VARCHAR2(100),
manage_area VARCHAR2(100),
management_mode
CHAR
(10),
isrelated
CHAR
(1),
staff_id VARCHAR2(20),
create_date
DATE
,
ischecked
CHAR
(20),
check_date
DATE
,
operate_staff NUMBER,
parent_area_id NUMBER,
grid_id NUMBER(20),
install_sbid NUMBER,
install_sbbm VARCHAR2(100),
install_dzbm VARCHAR2(100),
longitude VARCHAR2(50),
latitude VARCHAR2(50),
station_id VARCHAR2(50),
update_time
DATE
,
check_complete_time
DATE
)
partition
by
range(create_date)(
PARTITION tb_cablecheck_equipment_p1
VALUES
LESS THAN (TO_DATE(
'2013-08-01'
,
'YYYY-MM-DD'
)),
PARTITION tb_cablecheck_equipment_p2
VALUES
LESS THAN(TO_DATE(
'2016-04-05'
,
'YYYY-MM-DD'
)),
PARTITION tb_cablecheck_equipment_p3
VALUES
LESS THAN(TO_DATE(
'2016-12-13'
,
'YYYY-MM-DD'
)),
PARTITION tb_cablecheck_equipment_p4
VALUES
LESS THAN(MAXVALUE)
);
|
第三步:开始进行重定义
1
2
3
|
begin
dbms_redefinition.start_redef_table(
'scott'
,
'tb_cablecheck_equipment_bak'
,
'tb_cablecheck_equipment_bak2'
,
null
,2);
end
;
|
复制依赖对象
1
2
3
4
5
6
|
DECLARE
num_errors PLS_INTEGER;
BEGIN
DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(
'SCOTT'
,
'tb_cablecheck_equipment_bak'
,
'tb_cablecheck_equipment_bak2'
,
DBMS_REDEFINITION.CONS_ORIG_PARAMS,
TRUE
,
TRUE
,
TRUE
,
TRUE
, num_errors);
END
;
|
第四步:同步中间表,保证数据的一致性
1
2
3
|
begin
dbms_redefinition.sync_interim_table(
'scott'
,
'tb_cablecheck_equipment_bak'
,
'tb_cablecheck_equipment_bak2'
);
end
;
|
第六步:完成重定义
1
2
3
|
begin
dbms_redefinition.finish_redef_table(
'scott'
,
'tb_cablecheck_equipment_bak'
,
'tb_cablecheck_equipment_bak2'
);
end
;
|
查看是否已被定义为分区表:
1
|
select
*
from
tb_cablecheck_equipment_bak partition(tb_cablecheck_equipment_p1);
|
第七步:
1
|
drop
table
scott.tb_cablecheck_equipment_bak2;
|