Chinaunix首页 | 论坛 | 博客
  • 博客访问: 412331
  • 博文数量: 88
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 1054
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-07 12:23
文章分类
文章存档

2014年(88)

我的朋友

分类: Oracle

2014-06-17 14:31:10

今天有个同事想把一个一部分数据导入到测试库上做测试,我给他提供了几个dump文件,但是在导入的时候,碰到了一些问题,总结如下。

scenario 1:一部分表在schema下已经存在

导入数据貌似还算正常,但是在导入后报出了一系列错误,如下

IMP-00017: following statement failed with ORACLE error 20000:
 "DECLARE  SREC DBMS_STATS.STATREC; BEGIN SREC.MINVAL := 'C20444'; SREC.MAXVA"
 "L := 'C3394C2D'; SREC.EAVS := 0; SREC.CHVALS := NULL; SREC.NOVALS := DBMS_S"
 "TATS.NUMARRAY(367,567544); SREC.BKVALS := DBMS_STATS.NUMARRAY(0,1); SREC.EP"
 "C := 2; DBMS_STATS.SET_COLUMN_STATS(NULL,'"AGREEMENT_PARAM"','"OFFER_IN"
 "STANCE_ID"','"AMAXVALUE"',NULL,NULL,30643,.0000326338804947296,386120,srec,"
 "3,6); END;"
IMP-00003: ORACLE error 20000 encountered
ORA-20000: AMAXVALUE invalid partition name
ORA-06512: at "SYS.DBMS_STATS", line 1790
ORA-06512: at "SYS.DBMS_STATS", line 5427
ORA-06512: at line 1
Import terminated successfully with warnings.

根据提示,好像是partition的命名规则不同,查询了一下,也确实,源库上有10多个partition,但这个测试库只有1个max partition,而且命名也不一样。和同事商量了下,先把max partition的名字改一下,导入之后再改回来,重新尝试,还是报如上的错误。

仔细看了看报错,发现时在调dbms_stats, 才明白是去取statistic的信息,然后我在imp的时候多加了一个参数 statistics=none,问题解决。

. importing PRDAPPO's objects into JEANRON
. importing PRDAPPO's objects into JEANRON
. . importing partition     "AGREEMENT_PARAM":"A0"          0 rows imported
. . importing partition     "AGREEMENT_PARAM":"A1"       6493 rows imported
. . importing partition     "AGREEMENT_PARAM":"A2"       6355 rows imported
. . importing partition     "AGREEMENT_PARAM":"A3"       6663 rows imported
. . importing partition     "AGREEMENT_PARAM":"A4"       6695 rows imported
. . importing partition     "AGREEMENT_PARAM":"A5"       6658 rows imported
. . importing partition     "AGREEMENT_PARAM":"A6"       6869 rows imported
. . importing partition     "AGREEMENT_PARAM":"A7"       6782 rows imported
. . importing partition     "AGREEMENT_PARAM":"A8"       6811 rows imported
. . importing partition     "AGREEMENT_PARAM":"A9"       6817 rows imported
. . importing partition "AGREEMENT_PARAM":"AMAXVALUE"     597659 rows imported
Import terminated successfully without warnings.

scenario2: 一部分表在该schema上不存在

由于两个库的表空间不同,在导入的时候报出了tablespace 的问题,

由于数据库是远程服务,没有直接的权限去操作远程的库,而且随意建表空间也会被监控,于是使用dbms_metadata从源库上生成了ddl语句,

脚本如下:

SET SERVEROUTPUT ON;
SET LINESIZE 500;
SET FEEDBACK OFF;
SET LONG 99999999     ;  
SET PAGESIZE 1000 ; 
set head off;
EXEC DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);
EXEC DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'PRETTY',true);
EXEC DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR',true);
EXEC DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'TABLESPACE',true);
EXEC DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SEGMENT_ATTRIBUTES',false);
EXEC DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'REF_CONSTRAINTS',false); select DBMS_METADATA.GET_DDL('TABLE','AGREEMENT_PARAM','PRDAPPO')from dual;

导出后,把tablespace改一下,运行就可以了,然后直接导入。

 

 

 

阅读(1228) | 评论(0) | 转发(0) |
0

上一篇:vpd碰到的问题解决

下一篇:oracle自测总结1

给主人留下些什么吧!~~