玖叶教程网

前端编程开发入门

Oracle11g中使用expdp导sys用户下的表时报错ORA-39166/ORA-31655

问题背景

今天下午测试的小伙伴微信上找我说测试环境有一个表在进行导出时提示找不到表,但是可以查询表中的数据,心里想这导数据的方法早就给过他们脚本了,改下参数直接到就可以了。具体的信息如下图:


问题分析:

于是在自己的本机环境上去测试下,先创建一个测试表,建表脚本如下:

create table parttab001
(
   col001 number,
   col002 varchar2(1000)
) partition by range (col001)
(
   partition p001 values less than (1000001),
   partition p002 values less than (2000001),
   partition p003 values less than (3000001),
   partition p004 values less than (4000001),
   partition p005 values less than (5000001)
);
##构造数据
declare
  stmt varchar2(2000);
begin
  for j in 1..3000000 loop
    stmt := 'insert into parttab001 values ('||to_char (j)||', lpad (to_char ('||to_char (j)||'), 1000, '||'''0'''||'))';
    execute immediate stmt;
    -- commit after every 100000 rows
    if mod (j, 100000) = 0 then
      commit;
    end if;
  end loop;
  commit;
end;
/

使用如下的导出脚本进行导出:

expdp \"/ as sysdba\" directory=tmp dumpfile=parttab001_%u.dmp logfile=expdp_parttab001.log tables=sys.PARTTAB001 job_name=test_usr parallel=2

问题重现了,同样提示对象不存在,如下图:

但数据库中是有这个表的,能查询到数据:

这就有点奇怪了,于是到MOS上去搜了下,搜到

DataPump Export (EXPDP) Fails With Error ORA-39165: Schema SYS Was Not Found (Doc ID 553402.1)


问题修复:

1、使用exp进行导出

2、使用CTAS把表创建到其它用户下面再进行导出

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言