EXP导出aud$报错EXP-00008,ORA-00904 解决
主题:EXP导出aud$报错EXP-00008,ORA-00904 解决
环境:Oracle 11.2.0.4
问题:在自己的测试环境,导出sys用户下的aud$表报错。
1.故障现场
导出sys用户下的表,依据经验使用system用户导出:
- [Oracle如何导出sys用户下的系统表](http://www.cnblogs.com/jyzhao/p/4923953.html)
按照这个方法,exp导出时报错,具体报错信息如下:
[oracle@jyrac1 ~]$ exp system/oracle file=audit.dmp log=audit.log tables=sys.aud$
Export: Release 11.2.0.4.0 - Production on Wed Jan 17 17:16:30 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Tes
Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path ...
Current user changed to SYS
. . exporting table AUD$
EXP-00008: ORACLE error 904 encountered
ORA-00904: : invalid identifier
Export terminated successfully with warnings.
2.跟踪处理
使用oradebug跟踪对应的exp进程:
2.1 exp 交互式
[oracle@jyrac1 ~]$ exp system/oracle
Export: Release 11.2.0.4.0 - Production on Wed Jan 17 17:20:17 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Tes
Enter array fetch buffer size: 4096 >
2.2 定位exp进程的SPID:
SELECT p.spid,
p.addr,
p.pid,
s.sid,
SUBSTR(s.username, 1, 15) "USERNAME",
SUBSTR(s.program, 1, 15) "PROGRAM"
FROM v$process p, v$session s
WHERE s.paddr = p.addr
AND addr =
(SELECT paddr FROM v$session WHERE UPPER(program) LIKE 'EXP%');
结果如下:
SYS@jyzhao1 >SELECT p.spid,
2 p.addr,
3 p.pid,
4 s.sid,
5 SUBSTR(s.username, 1, 15) "USERNAME",
6 SUBSTR(s.program, 1, 15) "PROGRAM"
7 FROM v$process p, v$session s
8 WHERE s.paddr = p.addr
9 AND addr =
10 (SELECT paddr FROM v$session WHERE UPPER(program) LIKE 'EXP%');
SPID ADDR PID SID USERNAME PROGRAM
------------------------ ---------------- ---------- ---------- ------------------------------ ------------------------------
15552 000000007F4CA268 33 141 SYSTEM exp@jyrac1 (TNS
2.3 oradebug跟踪spid:
SQL> oradebug setospid 15552
SQL> oradebug unlimit
SQL> oradebug tracefile_name
SQL> oradebug Event 10046 trace name context forever, level 12
实际过程记录:
SYS@jyzhao1 >oradebug setospid 15552
Oracle pid: 33, Unix process pid: 15552, image: oracle@jyrac1 (TNS V1-V3)
SYS@jyzhao1 >oradebug unlimit
Statement processed.
SYS@jyzhao1 >oradebug tracefile_name
/opt/app/oracle/diag/rdbms/jyzhao/jyzhao1/trace/jyzhao1_ora_15552.trc
SYS@jyzhao1 >oradebug Event 10046 trace name context forever, level 12
Statement processed.
2.4 查看10046的跟踪文件:
我搜索904这个错误,可以匹配到err=904的部分
=====================
PARSE ERROR #139705015595160:len=301 dep=0 uid=5 oct=3 lid=5 tim=1516181414835913 err=904
SELECT SYNNAM, DBMS_JAVA.LONGNAME(SYNNAM), DBMS_JAVA.LONGNAME(SYNTAB), TABOWN, TABNODE, PUBLIC$, SYNOWN, SYNOWNID, TABOWNID, SYNOBJNO FROM SYS.EXU9PTS WHERE SYNOBJNO IN ( SELECT SYNOBJNO FROM SYS.EXU9TYPT WHERE TABOBJNO = :1 ) ORDER BY SYNTIME
WAIT #139705015595160: nam='SQL*Net message to client' ela= 1 driver id=1650815232 #bytes=1 p3=0 obj#=18 tim=1516181414836191
WAIT #139705015595160: nam='SQL*Net message from client' ela= 127 driver id=1650815232 #bytes=1 p3=0 obj#=18 tim=1516181414836355
WAIT #0: nam='SQL*Net message to client' ela= 1 driver id=1650815232 #bytes=1 p3=0 obj#=18 tim=1516181414836399
*** 2018-01-17 17:30:19.545
WAIT #0: nam='SQL*Net message from client' ela= 4709518 driver id=1650815232 #bytes=1 p3=0 obj#=18 tim=1516181419545928
WAIT #0: nam='SQL*Net message to client' ela= 2 driver id=1650815232 #bytes=1 p3=0 obj#=18 tim=1516181419546119
WAIT #0: nam='SQL*Net message from client' ela= 65 driver id=1650815232 #bytes=1 p3=0 obj#=18 tim=1516181419546230
PARSE #139705014733696:c=0,e=17,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,plh=3684871272,tim=1516181419547202
BINDS #139705014733696:
Bind#0
oacdty=11 mxl=16(16) mxlc=00 mal=00 scl=00 pre=00
oacflg=18 fl2=0001 frm=00 csi=00 siz=16 off=0
kxsbbbfp=7f0f9bca8510 bln=16 avl=16 flg=05
value=00002451.0000.0001
EXEC #139705014733696:c=0,e=98,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,plh=3684871272,tim=1516181419547371
FETCH #139705014733696:c=0,e=59,p=0,cr=2,cu=0,mis=0,r=1,dep=1,og=4,plh=3684871272,tim=1516181419547468
CLOSE #139705014733696:c=0,e=29,dep=1,type=3,tim=1516181419547548
PARSE #139705014733696:c=0,e=26,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,plh=3684871272,tim=1516181419548823
BINDS #139705014733696:
Bind#0
oacdty=11 mxl=16(16) mxlc=00 mal=00 scl=00 pre=00
oacflg=18 fl2=0001 frm=00 csi=00 siz=16 off=0
kxsbbbfp=7f0f9bca8510 bln=16 avl=16 flg=05
value=0000243C.0007.0001
EXEC #139705014733696:c=0,e=112,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,plh=3684871272,tim=1516181419549015
FETCH #139705014733696:c=1000,e=116,p=0,cr=2,cu=0,mis=0,r=1,dep=1,og=4,plh=3684871272,tim=1516181419549155
CLOSE #139705014733696:c=0,e=9,dep=1,type=3,tim=1516181419549188
=====================
也可以选择tkprof美化trc文件:
[root@jyrac1 ~]# tkprof /opt/app/oracle/diag/rdbms/jyzhao/jyzhao1/trace/jyzhao1_ora_15552.trc /tmp/jyzhao1_ora_15552.out waits=y sort=exeela
TKPROF: Release 11.2.0.4.0 - Development on Wed Jan 17 17:33:44 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
美化后的文档可以更清晰的看到904错误的原因:
********************************************************************************
The following statement encountered a error during parse:
SELECT SYNNAM, DBMS_JAVA.LONGNAME(SYNNAM), DBMS_JAVA.LONGNAME(SYNTAB), TABOWN, TABNODE, PUBLIC$, SYNOWN, SYNOWNID, TABOWNID, SYNOBJNO FROM SYS.EXU9PTS WHERE SYNOBJNO IN ( SELECT SYNOBJNO FROM SYS.EXU9TYPT WHERE TABOBJNO = :1 ) ORDER BY SYNTIME
Error encountered: ORA-00904
********************************************************************************
3.匹配MOS文章
根据报错和trc文件的内容,匹配到MOS文档:Errors EXP-8 ORA-904 During Export (文档 ID 1091927.1)
APPLIES TO:
Oracle Database - Enterprise Edition - Version 10.2.0.4 and later
Information in this document applies to any platform.
Checked for relevance on 16-Dec-2014
SYMPTOMS
You are attempting to perform an export as the SYSTEM user or a DBA. During export, the following errors occurred:EXP-00008: ORACLE error 904 encountered
ORA-00904: : invalid identifierWhen performing a trace on the export, we see that the ORA-904 error is caused by the following statement:
PARSE ERROR #9:len=302 dep=0 uid=5 oct=3 lid=5 tim=778463694169 err=904
SELECT SYNNAM, DBMS_JAVA.LONGNAME(SYNNAM), DBMS_JAVA.LONGNAME(SYNTAB), TABOWN, TABNODE, PUBLIC$, SYNOWN, SYNOWNID, TABOWNID, SYNOBJNO FROM SYS.EXU9PTS WHERE SYNOBJNO IN ( SELECT SYNOBJNO FROM SYS.EXU9TYPT WHERE TABOBJNO = :1 ) ORDER BY SYNTIME
CAUSE
The PUBLIC privilege has been revoked from the DBMS_JAVA package.Privileges to the DBMS_JAVA package are needed for the export to succeed. However, as there is concern about security issues due to privileges on the DBMS_JAVA many have revoked the execute privilege to this package to keep the database secure.
SOLUTION
Explicitly grant EXECUTE on the DBMS_JAVA package to the DBA role:SQL> grant execute on DBMS_JAVA to dba;
This will give members of the DBA role the rights to perform the export while keeping the DBMS_JAVA package out of the PUBLIC role.
4.使用MOS解决方案
MOS解决方案赋权DBMS_JAVA给DBA角色:
SYS@jyzhao1 >grant execute on DBMS_JAVA to dba;
Grant succeeded.
再次尝试exp导出成功。
[oracle@jyrac1 ~]$ exp system/oracle file=audit.dmp log=audit.log tables=sys.aud$
Export: Release 11.2.0.4.0 - Production on Wed Jan 17 17:39:07 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Tes
Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path ...
Current user changed to SYS
. . exporting table AUD$ 25 rows exported
Export terminated successfully without warnings.
至此,问题完美解决,该案例的定位,主要用到了oradebug的跟踪技能。
EXP导出aud$报错EXP-00008,ORA-00904 解决的更多相关文章
- java导出excel报错:getOutputStream() has already been called for this response
对于java导出excel报错的问题,查了很多都说是在使用完输出流以后调用以下两行代码即可 out.clear(); out = pageContext.pushBody(); 但这也许是页面上输出时 ...
- weblogic 12c下jxls导出excel报错Could not initialize class org.apache.poi.xssf.usermodel.XSSFVMLDrawing
周一,开发反馈weblogic 12c下jxls导出excel报错,公司环境和UAT环境均报错,看日志如下: 2016-06-08 09:16:55,825 ERROR org.jxls.util.T ...
- vs2010一运行就报错deven.exe assert failure 解决方法,卸载系统中.netFramework最新版本的(简体中文)
vs2010一运行就报错deven.exe assert failure 解决方法,卸载系统中.netFramework最新版本的(简体中文)
- electron-vue中使用iview 报错this. is readonly的解决办法
title: electron-vue中使用iview 报错this. is readonly的解决办法 toc: false date: 2019-02-12 19:33:28 categories ...
- Intellij里检出svn报错找不到svn解决办法
Intellij里检出svn报错找不到,解决办法: 1. 安装svn客户端: 2. 去掉settings->version control->subversion里的use command ...
- oracle expdp/exp ora-600/ora-39014报错处理
在一次数据迁移的时候,expdp导出报错,错误信息如下: 版本号:11.2.0.1 没有打PSU,查看报错的aler部分日志如下: 其中的某一些trc日志文件截图: Trace file d:\ora ...
- asp.net导出dbf报错“未在本地计算机上注册“VFPOLEDB”提供程序。”
导出dbf文件报错,提示“未在本地计算机上注册“VFPOLEDB”提供程序.” 可以尝试一下方法: 方法一:下载VFPOLEDBSetup.msi 安装 如果方法一不行:继续方法二:下载vfp9.0 ...
- Dynamics AX 2012 R2 RemoteApp导出项目报错
今天,Reinhard使用RemoteApp的方式登陆AX开发环境,对项目文件进行修改后,习惯性地将项目导出到Reinhard的电脑上,做个备份.但是导出时弹出错误提示框,报以下错误: ...
- 记录一次LOB损坏导致的EXPDP导出ORA-01555报错
同事导出数据,结果遇到如下报错: expdp user1/XXXXXXXX directory=szdata1 dumpfile=szhzinfo_20180319.dmp logfile=szhzi ...
随机推荐
- Asp.net mvc 知多少(二)
本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...
- MyBatis_延迟加载01
一.延迟加载 MyBatis中的延迟加载,也称为懒加载,是指在进行关联查询时, 按照设置延迟规则推迟对关联对象的select查询.延迟加载可以有效的减少数据库压力. MyBatis的延迟加载只是对关联 ...
- mybatis分页练手
最近碰到个需求,要做个透明的mybatis分页功能,描述如下:目标:搜索列表的Controller action要和原先保持一样,并且返回的json需要有分页信息,如: @ResponseBody @ ...
- 【Web性能进阶】1.无线网络基础
一.无所不在的连接 针对不通的使用场景,无线网络技术有很多种. 鉴于无线网络技术如此多样,笼统地概括所有无线网络的性能优化手段是不可能的.好在大多数无线技术的原理都是相通的,衡量性能的指标和约束条件也 ...
- Spring Boot整合 JdbcTemplate
(1) 在pom.xml加入jdbcTemplate的依赖: (2) 编写DemoDao类,声明为:@Repository,引入JdbcTemplate (3) 编写DemoService类,引入De ...
- 基于 HTML5 WebGL 的 3D 服务器与客户端的通信
这个例子的初衷是模拟服务器与客户端的通信,我把整个需求简化变成了今天的这个例子.3D 机房方面的模拟一般都是需要鹰眼来辅助的,这样找产品以及整个空间的概括会比较明确,在这个例子中我也加了,这篇文章就算 ...
- 浅析 SpringMVC 原理和配置.
一.原理 Spring MVC基于模型-视图-控制器(Model-View-Controller,MVC)模式实现,它能够帮你构建像Spring框架那样灵活和松耦合的Web应用程序,将请求处理的逻辑和 ...
- Java 哲学家进餐
某次操作系统实验存档.V 这个哲学家除了吃就知道睡.( ╯□╰ ) 哲学家.java: package operating.entity.philosophyeating; import operat ...
- ORACLE的锁机制
数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性. 加锁是实现数据 ...
- unity demo之坦克攻击
先展示一下成果吧,节后第一天上班简直困爆了,所以一定要动下脑子搞点事情. 分析: 1.涉及到的游戏对象有:坦克,摄像机,场景素材(包含灯光),子弹 2.坦克具有的功能:移动,旋转,发射子弹,记录生命值 ...