有很多分区助手迁移系统黑屏,子分区助手迁移系统黑屏,怎么迁移能快一点

注册会员, 积分 133, 距离下一级还需 67 积分
最后登录在线时间122 小时威望133 金钱1304 注册时间阅读权限50帖子精华1积分133UID254
查看: 2033|
本帖最后由 saup007 于
21:20 编辑
一张大表200G左右,有很多分区,子分区,怎么迁移能快一点?
我使用expdp、impdp,在expdp时,由于表结构太长,报BUG了,我就只expdp数据,表结构使用PL/SQL Developer导出来。
impdp时超慢的,可能因为有分区,而且还有子分区!
分区共有1647个,每个分区下有38个子分区,这张表共有62587个对象(select count(1) from dba_objects where object_name='' and owner=''
有其他方式迁移吗?
有使用并行、此表暂时没有索引。
最后登录在线时间1670 小时威望2135 金钱49586 注册时间阅读权限200帖子精华39积分2135UID2
是否考虑 传输表空间?
注册会员, 积分 133, 距离下一级还需 67 积分
最后登录在线时间122 小时威望133 金钱1304 注册时间阅读权限50帖子精华1积分133UID254
Maclean Liu(刘相兵 发表于
是否考虑 传输表空间?
表空间上,还有其他对象。
如果使用传输表空间,需要自包含,那这个用户下有二个表空间,用户名_USER01、用户名_INDEX01 都要迁移过去。
总共大概2个多T吧。目录服务器空间是有,但为了200G,要传输2T的数据文件过去吗,之后再把多余的删除?
我尝试 按分区导出,生成1647个dmp文件,之后按脚本impdp,效果可能比单独impdp快些吧(导出与导入一个空的分区需要12分钟,导入一个5Gdmp文件,需要1小时20分钟)
再尝试创建DB_LINK CREATE TABLE TABLE_NAME_1 PARALLEL(DEGREE 4) NOLOGGING AS SELECT * FROM TABLE_NAME_SOURCE@DBLINK WHERE 分区字段& 时间 and 分区字段 &= 时间 ,现在在测试这个需要多长时间。
新建的库,没有开归档、闪回等。
注册会员, 积分 133, 距离下一级还需 67 积分
最后登录在线时间122 小时威望133 金钱1304 注册时间阅读权限50帖子精华1积分133UID254
本帖最后由 saup007 于
15:17 编辑
其实我这次迁移,大概6张表,总量也1个T了,但其他都导完了,包括一个dmp 500G(只有分子,没有子分钟,而且分区并不多)的都导进去了,只剩下这一个了。
而且使用表空间迁移,因为有大概的表分区、子分区的,我怀疑表结构都导不出来。(之前这个200G的表,expdp导出的时候都报错了,我只有expdp 数据,表结构用PL/SQL Develop导出来的)
注册会员, 积分 133, 距离下一级还需 67 积分
最后登录在线时间122 小时威望133 金钱1304 注册时间阅读权限50帖子精华1积分133UID254
这个是expdp 导出200G大小的表报的错(因为太多分区、子分区了)Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 224.8 GB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/COMMENT
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
ORA-39014: One or more workers have prematurely exited.
ORA-39029: worker 1 with process name &DW01& prematurely terminated
ORA-31671: Worker process DW01 had an unhandled exception.
ORA-00600: internal error code, arguments: [kupfiWriteLob_1], [], [], [], [], [], [], []
ORA-06512: at &SYS.KUPW$WORKER&, line 1397
ORA-06512: at line 2
Job &DBA_LIUJINLIN&.&SYS_EXPORT_TABLE_01& stopped due to fatal error at 18:28:50复制代码
最后登录在线时间1670 小时威望2135 金钱49586 注册时间阅读权限200帖子精华39积分2135UID2
I understand that expdp is failing when trying to export the statistics as
@ per the analysis done.&&Customer is not willing to exclude the statistics.
@ If its very critical for this backup to happen, below workaround can be
@ ACTION PLAN
@ =============
@ 1. Exclude the statistics during the FULL DATABASE METADATA ONLY expdp dump
@ 2. And take the statistics backup seperately by following t he below step :
@ -- Create a STATS table
@& && && && && & exec dbms_stats.create_stat_table(?SYS?,?dictstattab?);
@ -- Export all the schema statistics to this table
@& && && && && & exec
@ dbms_stats.export_schema_stats(?&Schema&?,?dictstattab?,statsown=&?SYS?);
@ -- And then take a exp/expdp backup of that stats table(here backup will
@ happen for an object ? table and not statistics)
@ In this way, as a workaround, customer will be having a backup of complete
@ metadata as well as backup of statistics for all the objects
注册会员, 积分 163, 距离下一级还需 37 积分
最后登录在线时间135 小时威望163 金钱1457 注册时间阅读权限50帖子精华1积分163UID158
我乱想的,
是不是可以把某个分区导入到 新库的某个普通表中,然后再用分区交换的方式。
当然工作量可能很大
中级会员, 积分 334, 距离下一级还需 166 积分
最后登录在线时间114 小时威望334 金钱9852 注册时间阅读权限60帖子精华0积分334UID94
确定表结构一点没变?&&比如说新库中 添加了 新的分区 。
如果结构变了,会慢很多很多
注册会员, 积分 133, 距离下一级还需 67 积分
最后登录在线时间122 小时威望133 金钱1304 注册时间阅读权限50帖子精华1积分133UID254
不了峰 发表于
我乱想的,
是不是可以把某个分区导入到 新库的某个普通表中,然后再用分区交换的方式。
是的,最后就使用类似的方法。使用create table as select 使用并行,nologging
注册会员, 积分 133, 距离下一级还需 67 积分
最后登录在线时间122 小时威望133 金钱1304 注册时间阅读权限50帖子精华1积分133UID254
psufnxk2000 发表于
确定表结构一点没变?&&比如说新库中 添加了 新的分区 。
如果结构变了,会慢很多很多 ...
表结构肯定没有变的,一致的。
我还想,把目标端表结构改了,只有分区,没有子分区,我expdp一个分区,impdp试了一下,特别奇怪,这个分区有4个子分区有数据,有2个最大的子分区报错,却有2个子分区导入进去了。奇葩。
扫码关注dbDao 微信公众号:
Powered by
TEL/電話+862584人阅读
数据库开发(21)
Oracle管理(38)
一、使用模板创建子分区
/*drop table T_LOCRECORD_HJ*/
create table T_LOCRECORD_HJ
& id&&&&&&&&&&& VARCHAR2(36) not null,
& device_id&&&& VARCHAR2(256),
& latitude&&&&& FLOAT,
& longitude&&&& FLOAT,
& jmx&&&&&&&&&& VARCHAR2(20),
& jmy&&&&&&&&&& VARCHAR2(20),
& speed&&&&&&&& FLOAT,
& direction&&&& FLOAT,
& height&&&&&&& FLOAT,
& distance&&&&& FLOAT,
& statllite_num NUMBER,
& gpstime&&&&&& DATE,
& inputdate&&&& DATE default SYSDATE not null,
& locate_type&& VARCHAR2(1),
& coord_type&&& NUMBER,
& state&&&&&&&& VARCHAR2(10),
& pos_desc&&&&& VARCHAR2(1000),
& obj_id&&&&&&& VARCHAR2(256),
& obj_type&&&&& VARCHAR2(20)
partition by range (INPUTDATE)
SUBPARTITION BY hash (device_id )
SUBPARTITION TEMPLATE
& subpartition p001& ,&
& subpartition p002& ,&
& subpartition p003& ,&
& subpartition p004& ,&
& subpartition p005& ,&
& subpartition p006& ,&
& subpartition p007& ,&
& subpartition p008& ,&
& subpartition p009& ,&
& subpartition p010&
& partition PAR_ values less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_06_1 ,
& partition PAR_ values less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_06_2,
& partition PAR_ values less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_06_3,
& partition PAR_ values less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_07_1,
& partition PAR_ values less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_07_2,
& partition PAR_ values less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_07_3
这种方法创建的分区,在下次添加分区的时候会自动按照模版创建子分区,只需要按照如下方法添加即可:
alter table&T_LOCRECORD_HJ add partition par_&&values less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))&&tablespace HIS_GPS_08_1 ;&
二、使用subpartition 的方法来创建子分区
/*drop table T_LOCRECORD_HJ*/
create table T_LOCRECORD_HJ
& id&&&&&&&&&&& VARCHAR2(36) not null,
& device_id&&&& VARCHAR2(256),
& latitude&&&&& FLOAT,
& longitude&&&& FLOAT,
& jmx&&&&&&&&&& VARCHAR2(20),
& jmy&&&&&&&&&& VARCHAR2(20),
& speed&&&&&&&& FLOAT,
& direction&&&& FLOAT,
& height&&&&&&& FLOAT,
& distance&&&&& FLOAT,
& statllite_num NUMBER,
& gpstime&&&&&& DATE,
& inputdate&&&& DATE default SYSDATE not null,
& locate_type&& VARCHAR2(1),
& coord_type&&& NUMBER,
& state&&&&&&&& VARCHAR2(10),
& pos_desc&&&&& VARCHAR2(1000),
& obj_id&&&&&&& VARCHAR2(256),
& obj_type&&&&& VARCHAR2(20)
partition by range (INPUTDATE)
SUBPARTITION BY hash (device_id )& subpartitions 100
& partition PAR_ values less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_06_1 ,
& partition PAR_ values less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_06_2,
& partition PAR_ values less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_06_3,
& partition PAR_ values less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_07_1,
& partition PAR_ values less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_07_2,
& partition PAR_ values less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_07_3
这种方法创建子分区的好处就是在初次创建分区的时候不用手动的去指点复杂的子分区规则,dbms 会根据subpartitions 后面的值创建出相应
个数的子分区。
这种方法的弊端就是在每次添加分区的时候,需要在每一个语句后面都要带上 subpatitions number &这样的参数。如:
alter table T_LOCRECORD_HJ130818 add partition& PAR_ values& less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))&&& tablespace HIS_GPS_09_1&subpartitions 100 ;&
----------------
list &子分区例子:
create table T_ORDER_COMMAND_XL
& id&&&&&&&&&&&&&&&&&& VARCHAR2(100) not null,
& command_type&&&&&&&& NUMBER(4) not null,
& create_time&&&&&&&&& TIMESTAMP(6) not null,
& order_logistics_code VARCHAR2(100),
& order_channel_code&& VARCHAR2(20),
& status&&&&&&&&&&&&&& NUMBER(4) not null,
& is_offline&&&&&&&&&& NUMBER(1),
& command_content&&&&& CLOB not null
partition by range (CREATE_TIME)
subpartition by list (COMMAND_TYPE)
SUBPARTITION TEMPLATE
&&& subpartition PAR_1001_10 values (10) tablespace TS_ORD,
&&& subpartition PAR_1001_DFT values (DEFAULT) tablespace TS_ORD
& partition PAR_ values less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace TS_ORD ,
& partition PAR_ values less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace TS_ORD
alter table T_ORD_ORDER_COMMAND_XL add partition& PAR_ values less than (TO_DATE('
00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace TS_ORD ;
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
(1)(1)(1)(2)(5)(5)(4)(1)(2)(5)(2)(1)(2)(3)(1)(2)(2)(2)(2)(1)(1)(6)(2)(1)(6)(1)(1)(2)(2)(3)(2)(2)(3)(1)(7)(5)(2)(1)

我要回帖

更多关于 ssd迁移系统 分区助手 的文章

 

随机推荐