我用具有dba权限的用户,全部导出数据库时出现下列错误:
EXP-00008: 发生Oracle错误6550
ORA-06550: 行1、列18:
PLS-00201: 请声明SYS.DBMS_DEFER_IMPORT_INTERNAL
ORA-06550: 行1、列7:
PL/SQL: Statement ignored
ORA-06512: "SYS.DBMS_SYS_SQL", 行1204
ORA-06512: "SYS.DBMS_SQL", 行323
ORA-06512: "SYS.DBMS_EXPORT_EXTENSION", 行97
ORA-06512: "SYS.DBMS_EXPORT_EXTENSION", 行126
ORA-06512: 行1网上查找后的解决方案是:
  GRANT EXECUTE ON SYS.DBMS_DEFER_IMPORT_INTERNAL TO 用户;
   GRANT EXECUTE ON SYS.DBMS_EXPORT_EXTENSION TO 用户;问题是解决了,但是为什么具有dba权限的用户还需要上述单独赋予权限,
不明白为什么,请高手解答。参考,导出语句
exp  / @  full=Y file=F:\a.dmp log=F:b.LOG STATISTICS=NONE CONSISTENT=Y DIRECT=Y RECORDLENGTH=65535

解决方案 »

  1.   

    oracle设计的问题,在一些时候role中的系统权限无法被引用,
    只能明确的grant系统权限才可以,即便是你的role中有对应的
    系统权限,尤其是在存储过程中。
      

  2.   

    1,DROP用户。
    2,CREATE用户。
    3,GRANTE 用户权限
      

  3.   

     我想问的是不赋予用户dba角色,而只赋予导出表的权限,可以实现吗?
       还有只赋予指定表的导出权限怎么写啊?