impdp错误:SYS.DBMS_INTERNAL_LOGSTDBY包异常
(2012-06-08 15:00:18)
标签:
杂谈 |
分类: oracle |
错误一:ORA-39087: directory name MY_DUMP1 is invalid
V1
VARCHAR2(32767);
F1
UTL_FILE.FILE_TYPE;
F1 :=
UTL_FILE.FOPEN('MYDIR','xx.log','R',256);
--需要改变目录名和文件名
UTL_FILE.GET_LINE(F1,V1,32767);
UTL_FILE.FCLOSE(F1);
LINE
POSITION TYPE
TEXT
3580
50 PACKAGE BODY
PL/SQL:
ORA-00942: table or vi
ew does not exist
3580
5 PACKAGE BODY
PL/SQL:
SQL Statement ignored
5626
3 PACKAGE BODY
PL/SQL:
SQL Statement ignored
发现如果ORACLE_SID环境变量配置不正确会报这错误,之前没遇到过标记一下。
错误二:
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 488
ORA-29283: invalid file operation
文件操作失败,不能写日志文件。这个一般需要检查directory名称、direcotry权限(对非sys用户都需要赋权)、文件系统权限等是否正确。
发现通过impdp来测试问题是否解决比较麻烦,用下面的程序执行则比较简单,直接对相关目录进行文件操作,如果成功则说明目录没问题是其他地方出了错误。
DECLARE
BEGIN
END;
/
错误三:
ORA-31626: job does not exist
ORA-04063: package body
"SYS.DBMS_INTERNAL_LOGSTDBY" has errors
ORA-06508: PL/SQL: could not find program unit being called:
"SYS.DBMS_INTERNAL_LOGSTDBY"
ORA-06512: at "SYS.KUPV$FT", line 834
ORA-04063: package body "SYS.DBMS_LOGREP_UTIL" has
errors
ORA-06508: PL/SQL: could not find program unit being called:
"SYS.DBMS_LOGREP_UTIL"
包SYS.DBMS_INTERNAL_LOGSTDBY错误,尝试重新编译:
SQL> alter package DBMS_INTERNAL_LOGSTDBY
compile;
Warning: Package altered with compilation errors.
编译有错,查看错误原因:
SQL> select
line,position,type,text from dba_errors where name =
'DBMS_INTERNAL_LOGSTDBY' order by line;
---------- ---------- ------------------------
------------------------------
这个库的数据字典存在某些异常,重建数据字典和存储过程即可(这个请在确认数据库空闲无人使用时执行)。
以SYSDBA身份执行catalog.sql和catproc.sql
sql>@?/rdbms/admin/catalog.sql
sql>@?/rdbms/admin/catproc.sql
#catalog.sql重建字典视图,catproc.sql重建系统存储过程,这两个脚本一般在安装和升级时执行,平时执行虽然不会影响系统完整性,但是在生产系统执行可能会造成系统HANG,应该在维护时间段内执行。参见[1]
#重建字典视图并不会影响之前数据库内的字典数据,因为它只是建立视图,并未修改基表。
#数据字典的损坏可用脚本hcheck检查,参见[3][4]。这个脚本检查的不仅仅是数据字典视图对象、而且会检查字典数据本身的一致性错误。
#执行这俩脚本应该收集并检查日志,以防万一执行过程中出现错误。
注意上面红色字体的错误,错误不同则可能有不同的原因与解决办法,metalink上列举的例子为下面错误:
PL/SQL: ORA-06552: PL/SQL: Compilation unit analysis
terminated
ORA-06553: PLS-320: the declaration of the type of this
expression is incomplete or
malformed
这就是一个BUG,具体处理方法参见[2]
[1].AskTom,catalog and catproc scripts
[2].Metalink[ID
799625.1],ORA-31626 ORA-4063 Package Body
DBMS_INTERNAL_LOGSTDBY Has Errors During DataPump Export
[4].[ID
456468.1]

加载中…