一张大表200G左右,有很多分区子分区,怎么能快一些
本帖最后由 saup007 于 2014-2-24 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=''
有其他方式迁移吗?
补充:
有使用并行、此表暂时没有索引。 是否考虑 传输表空间? Maclean Liu(刘相兵 发表于 2014-2-25 13:49 static/image/common/back.gif
是否考虑 传输表空间?
表空间上,还有其他对象。
如果使用传输表空间,需要自包含,那这个用户下有二个表空间,用户名_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 分区字段 >= 时间 ,现在在测试这个需要多长时间。
新建的库,没有开归档、闪回等。 本帖最后由 saup007 于 2014-2-25 15:17 编辑
其实我这次迁移,大概6张表,总量也1个T了,但其他都导完了,包括一个dmp 500G(只有分子,没有子分钟,而且分区并不多)的都导进去了,只剩下这一个了。
而且使用表空间迁移,因为有大概的表分区、子分区的,我怀疑表结构都导不出来。(之前这个200G的表,expdp导出的时候都报错了,我只有expdp 数据,表结构用PL/SQL Develop导出来的) 这个是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: , [], [], [], [], [], [], []
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 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
@ tried:
@ .
@ 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 我乱想的,
是不是可以把某个分区导入到 新库的某个普通表中,然后再用分区交换的方式。
当然工作量可能很大 确定表结构一点没变? 比如说新库中 添加了 新的分区 。
如果结构变了,会慢很多很多 不了峰 发表于 2014-2-26 11:20 static/image/common/back.gif
我乱想的,
是不是可以把某个分区导入到 新库的某个普通表中,然后再用分区交换的方式。
是的,最后就使用类似的方法。使用create table as select 使用并行,nologging
psufnxk2000 发表于 2014-2-26 23:48 static/image/common/back.gif
确定表结构一点没变? 比如说新库中 添加了 新的分区 。
如果结构变了,会慢很多很多 ...
表结构肯定没有变的,一致的。
我还想,把目标端表结构改了,只有分区,没有子分区,我expdp一个分区,impdp试了一下,特别奇怪,这个分区有4个子分区有数据,有2个最大的子分区报错,却有2个子分区导入进去了。奇葩。
页:
[1]