oracle数据泵导入分区表,数据泵导入分区表统计信息报错(七)

其实问题的引出是由于出现第一篇文章中描述的问题,不过随着问题的深入研究,挖掘出了一些隐藏的很深的问题,不过问题的研究也慢慢脱离了原本的问题。

在解决了表统计信息锁定的问题后,在回过头看看导致第一篇文章中错误的具体原因。

bash-2.03$ impdp test/test directory=d_test dumpfile=zhejiang_order.dp logfile=zhejiang_order.log remap_schema=zhejiang:test include=table/statistics

Import: Release 10.2.0.3.0 - 64bit Production on星期二, 20 4月, 2010 18:42:01

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production

With the Partitioning, Real Application Clusters, OLAP and Data Mining options已成功加载/卸载了主表"TEST"."SYS_IMPORT_FULL_01"启动"TEST"."SYS_IMPORT_FULL_01":  test/******** directory=d_test dumpfile=zhejiang_order.dp logfile=zhejiang_order.log remap_schema=zhejiang:test include=table/statistics处理对象类型TABLE_EXPORT/TABLE/TABLE_DATA处理对象类型TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

ORA-39083:对象类型TABLE_STATISTICS创建失败,出现错误:

ORA-06550:第12行,第17列:

PL/SQL: ORA-00917:缺失逗号ORA-06550:第4行,第115列:

PL/SQL: SQL Statement ignored

ORA-06550:第20行,第17列:

PL/SQL: ORA-00917:缺失逗号ORA-06550:第12行,第161列:

PL/SQL: SQL Statement ignored

ORA-06550:第28行,第17列:

PL/SQL: ORA-00917:缺失逗号ORA-06550:第20行,第161列:

PL/SQL: SQL Statement ignored

ORA-06550:第36行,第17列:

PL/SQL: ORA-00917:缺失逗号ORA-06550:第28行,第1作业"TEST"."SYS_IMPORT_FULL_01"已经完成,但是有1个错误(于18:42:13完成)

显然第一篇文章出现的错误和上面几篇文章描述的错误还是有差距的,怀疑导致问题的原因出在DMP文件上。

下面通过TRACE的方式,检查导致问题产生的具体原因。

设置TRACE的方式有很多种,但是对于这种执行很快就结束的错误,最好的办法是通过登陆触发器。不过使用登陆触发器仍然有点复杂,其实了解IMPDP工作特性后,可以方便的利用DBMS_MONITOR包来设置TRACE。

在刚才执行导入的时候,在另外的会话检查数据泵后台进程对应的MODULE和SERVICE_NAME信息:

SQL> SELECT SID, MODULE, ACTION, SERVICE_NAME

2  FROM V$SESSION

3  WHERE USERNAME = 'TEST';

SID MODULE                         ACTION                         SERVICE_NAME

---------- ------------------------------ ------------------------------ --------------------

300 udi@racnode1 (TNS V1-V3)                                      SYS$USERS

SQL> SELECT SID, MODULE, ACTION, SERVICE_NAME

2  FROM V$SESSION

3  WHERE USERNAME = 'TEST';

SID MODULE                         ACTION                         SERVICE_NAME

---------- ------------------------------ ------------------------------ --------------------

292 Data Pump Master               SYS_IMPORT_FULL_01             SYS$USERS

300 udi@racnode1 (TNS V1-V3)                                      SYS$USERS

SQL> SELECT SID, MODULE, ACTION, SERVICE_NAME

2  FROM V$SESSION

3  WHERE USERNAME = 'TEST';

SID MODULE                         ACTION                         SERVICE_NAME

---------- ------------------------------ ------------------------------ --------------------

283 udi@racnode1 (TNS V1-V3)                                      SYS$USERS

292 Data Pump Master               SYS_IMPORT_FULL_01             SYS$USERS

300 udi@racnode1 (TNS V1-V3)                                      SYS$USERS

下面打开MODULE为Data Pump Master,且SERVICE为SYS$USERS的会话的TRACE:

SQL> BEGIN

2  DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE(

3  'SYS$USERS',

4  'Data Pump Worker',

5  'SYS_IMPORT_FULL_01',

6  TRUE,

7  TRUE);

8  END;

9  /

PL/SQL过程已成功完成。

再次运行导入,TRACE对应的信息很简单:

bash-2.03$ more testrac1_ora_841.trc

/data/oracle/admin/testrac/udump/testrac1_ora_841.trc

Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production

With the Partitioning, Real Application Clusters, OLAP and Data Mining options

ORACLE_HOME = /data/oracle/product/10.2/database

System name:    SunOS

Node name:      racnode1

Release:        5.8

Version:        Generic_117350-46

Machine:        sun4u

Instance name: testrac1

Redo thread mounted by this instance: 1

Oracle process number: 33

Unix process pid: 841, image: oracle@racnode1 (TNS V1-V3)

*** SERVICE NAME:(SYS$USERS) 2010-04-20 19:05:34.808

*** SESSION ID:(288.16791) 2010-04-20 19:05:34.808

kswscrs: deleted entry : svcid = 13, count=13

kswscrs: deleted entry : svcid = 14, count=14

这显然不是我们要寻找的出错的导入会话,打开MODULE为udi@racnode1 (TNS V1-V3)的会话对应的TRACE:

SQL> BEGIN

2  DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE(

3  'SYS$USERS',

4  'udi@racnode1 (TNS V1-V3)',

5  DBMS_MONITOR.ALL_ACTIONS,

6  TRUE,

7  TRUE);

8  END;

9  /

PL/SQL过程已成功完成。

运行导入,得到了TRACE信息:

kswscrs: deleted entry : svcid = 13, count=13

kswscrs: deleted entry : svcid = 14, count=14

SKGXPSEGRCV: MESSAGE TRUNCATED user data 48 bytes payload 2024 bytes

SKGXPSEGRCV: trucated message buffer data skgxpmsg meta. data header 0xffffffff7fff4108 len 48 bytes

SKGXPLOSTACK: message truncation expected

SKGXPLOSTACK: data sent to port with no buffers queued from

SKGXPGPID ffffffff7fff4028      Internet address 10.0.0.3       UDP port number 56083

SKGXPLOSTACK: sent seq 32763 expecting 32764

SKGXPLOSTACK: lost ack detected retransmit ack

显然信息仍然不够,于是直接打开所有SERVICE为SYS$USERS的会话的TRACE:

SQL> BEGIN

2  DBMS_MONITOR.SERV_MOD_ACT_TRACE_DISABLE(

3  'SYS$USERS',

4  'Data Pump Worker',

5  'SYS_IMPORT_FULL_01');

6  END;

7  /

PL/SQL过程已成功完成。

SQL> BEGIN

2  DBMS_MONITOR.SERV_MOD_ACT_TRACE_DISABLE(

3  'SYS$USERS',

4  'udi@racnode1 (TNS V1-V3)',

5  DBMS_MONITOR.ALL_ACTIONS);

6  END;

7  /

PL/SQL过程已成功完成。

SQL> BEGIN

2  DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE(

3  'SYS$USERS',

4  DBMS_MONITOR.ALL_MODULES,

5  DBMS_MONITOR.ALL_ACTIONS,

6  TRUE,

7  TRUE);

8  END;

9  /

PL/SQL过程已成功完成。

检查生成的TRACE文件:

BINDS #39:

kkscoacd

Bind#0

acdty=02 mxl=22(21) mxlc=00 mal=00 scl=00 pre=00

acflg=13 fl2=206001 frm=00 csi=00 siz=24 ff=0

kxsbbbfp=ffffffff7b337e78  bln=22  avl=02  flg=09

value=45

EXEC #39:c=0,e=450,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,tim=4903541916613

ERROR #39:err=39096 tim=502122692

WAIT #9: nam='SQL*Net message to client' ela= 3 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=4903541917005

EXEC #9:c=0,e=2679,p=0,cr=0,cu=0,mis=0,r=1,dep=0,og=1,tim=4903541917063

WAIT #9: nam='SQL*Net message from client' ela= 694 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=4903541917910

XCTEND rlbk=0, rd_only=1

在文件的最后部分,可以看到,Oracle运行CURSOR #39是出现了错误。这个错误信息是ORA-39096:

ORA-39096: invalid input value string for parameter string

Cause: A NULL or invalid value was supplied for the parameter.

Action: Correct the input value and try the call again.

配合这个错误信息和IMPDP输出参数,怀疑是Oracle在执行PL/SQL代码的时候,由于输入参数的错误,导致了问题的产生。

下面看看CURSOR #39对应的SQL:

PARSING IN CURSOR #39 len=46 dep=1 uid=0 ct=47 lid=0 tim=4903540014137 hv=2056630971 ad='ed715768'

BEGIN sys.kupc$que_int.detach_queues(:1); END;

END OF STMT

PARSE #39:c=0,e=135,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,tim=4903540014127

BINDS #39:

kkscoacd

Bind#0

acdty=02 mxl=22(21) mxlc=00 mal=00 scl=00 pre=00

acflg=13 fl2=206001 frm=00 csi=00 siz=24 ff=0

kxsbbbfp=ffffffff7b338128  bln=22  avl=02  flg=09

value=45

这个错误发生在detach_queue的过程中,这个步骤应该是impdp结束工作后进行的收尾工作,基本上可以确认impdp的错误不会引起什么严重的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

django ORM创建数据库方法

1、指定连接pymysql(python3.x) 先配置_init_.py import pymysqlpymysql.install_as_MySQLdb() 2、配置连接mysql文件信息 settings.py DATABASES {default: {ENGINE: django.db.backends.mysql, NAME: django_orm, #你的数据库名称USER: root, #你的数据库用户名PASSWOR…

common lisp 学习第二天 简单数据库操作

//简单数据操作单一记录> (defun make-cd (title artist rating ripped)(list :title title :artist artist :rating rating :ripped ripped))make-cd> (make-cd "Roses" "Kathy Mattea" 7 t)(:TITLE "Roses" :ARTIST "Kathy Mattea&…

通过配置文件登陆有密码的mysql不需要输入密码

下面方式通过配置文件登陆有密码的mysql,不需要输入密码。 (1)先配置一个.my.cnf配置文件。 [client]userxxxxpasswordxxxxxx (2)直接登陆mysql服务 [rootlocalhost scripts]# HOME/var/lib/zabbix mysql 直接登陆,这里的HOME一…

并联机械臂的pid控制Matlab,机械手PID控制(chap2_1ctrl.m)

【实例简介】【实例截图】【核心代码】function [sys,x0,str,ts] spacemodel(t,x,u,flag)switch flag,case 0,[sys,x0,str,ts]mdlInitializeSizes;case 3,sysmdlOutputs(t,x,u);case {2,4,9}sys[];otherwiseerror([Unhandled flag ,num2str(flag)]);endfunction [sys,x0,str,…

common lisp 学习第三天 函数、注释

//函数定义(defun name(parameter*函数参数)"Optional documentation string.函数描述"body-form*函数体)函数名称风格frob-widget函数描述:(documentation foo function)获取foo函数的描述函数体由任意数量的lisp表达式构成,在函数被调用时依…

【计算机视觉】基于OpenCV的人脸识别

一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库。它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包。根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从谷歌街景的图片拼接,到交互艺术展…

Mysql显示创建表的sql语句

show create table 表名 返回 create table A( ……

oracle parallel_max_servers,PARALLEL_MAX_SERVERS参数

PARALLEL_MAX_SERVERS参数用于设置系统中允许的最大并行进程数。Oracle的文档对于这个参数的描述如下:PARALLEL_MAX_SERVERS specifies the maximum number of parallelexecution processes and parallel recovery processes for aninstance. As demand increases, …

[转]python新手必碰到的问题---encode与decode,中文乱码--转载

edu.codepub.com/2009/1029/17037.php 这个问题在python3.0里已经解决了。 这有篇很好的文章,可以明白这个问题: 为什么会报错“UnicodeEncodeError: ascii codec cant encode characters in position 0-1: ordinal not in range(128)”?本文就来研究一下…

Mysql 休眠连接过多,有可能导致“Too many connections”的错误

查看所有连接 show processlist设置休眠连接超时时间60秒:my.ini中mysqld节中添加wait-timeout60可以解决Mysql.Data.dll连接释放后连接没有真正断开的问题。

检测端口是否能连通

telnet 192.168.0.111 801检测192.168.0.111的801端口是否能连通,如果提示不能连接则有可能是防火墙开启或者端口没有监听程序。window7需要安装telnet客户端才能执行该命令。

oracle 其他表空间,Oracle查询表空间使用情况以及其他查询

alter system kill session 436,35123;7.RAC环境中锁查找SELECT inst_id,DECODE(request,0,Holder: ,Waiter: )||sid sess,id1, id2, lmode, request, type,block,ctimeFROM GV$LOCKWHERE (id1, id2, type) IN(SELECT id1, id2, type FROM GV$LOCK WHERE request>0)ORDER BY…

四则运算题目生成程序(基于控制台)

基于控制台的四则运算 代码地址 a.需求分析 运算符为 , −, , 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 1/8 7/24要求能处理用户输入的真分数, 如 1/2, 5/12 等并且要求能处理用户的输入&#…

前端学习(2306):react之组件使用

Home.js import React, {Component} from react;class Home extends Component {render() {return (<div><div>你好我是组件{parseInt(Math.random()*10)}</div><div>你好我是组件2{parseInt(Math.random()*10)}</div></div>);} }export …

input的属性AutoComplete——关闭浏览器文本框自动提示

1. 有时候我们并不需要AutoComplete&#xff0c;例如需要用户自己再次输入而非自动完成。只要将所在表单元素的autocomplete属性设置为off即可。<form>请双击文本框 <input type"text" name"wd" autocomplete"off"> <input type&…

oracle过滤器基础,示例过滤器表达式 (Oracle Solaris Studio 12.2:性能分析器)

示例过滤器表达式本节介绍可通过 er_print -filters 命令以及在分析器过滤对话框中使用的过滤器表达式的示例。利用 er_print -filters 命令&#xff0c;过滤器表达式用单引号引起来&#xff0c;如下所示&#xff1a;er_print -filters FNAME("myfunc") SOME IN USTA…

前端学习(2306):react之组件使用之图片使用

Home.js import React, {Component,Fragment} from react; import ImgA from "../assset/index.jpg" class Home extends Component {render() {return (<Fragment><div>你好我是组件{parseInt(Math.random()*10)}</div><div>你好我是组件2…

CodeJock 实现MFC换肤

Skin,Skin#64位编译的dll文件没有找到&#xff0c;也没有源码可以编译&#xff0c;最后找到了Codejock换肤的库&#xff0c;源码编译生成64位dll进行MFC换肤 安装Codejock后使用安装路径下的Deploy.exe选择生成64位对应的dll和lib&#xff0c;ToolkitPro1531vc100x64D.dll自动生…

css强制自动换行

table自动换行.table_autobr{ table-layout:fixed;}.table_autobr td,.table_autobr th{word-break : break-all;word-wrap : break-word ;}div自动换行div{white-space:normal; word-break:break-all; overflow:auto;}