用imp命令导入数据表时出现了
IMP-00013: 只有 DBA 才能导入由其它 DBA 导出的文件
IMP-00000: 未成功终止导入
的错误,在网上找了一些解决方案,现找到一种解决方案,分享如下:
imp时连接用户没有DBA权限或者default role不是DBA
你可以换个DBA role的用户IMP。
如果你还想用这个用户,如果这个用户没DBA权限就grant dba to 用户;
如果default role不是DBA,那就 alter user 用户 default role DBA;
grant dba to scott
续:如果创建完权限还想再移除权限,参照下面
Oracle创建用户密码/授权/移除权限
Oracle创建用户/密码并授权
(1) 创建用户
Create user 用户名 identified by 密码;(如果是数字则要加双引号”111111”,如果是字母就不用)
(2) 授权给某个用户
Grant connect,resource to 用户名;(只有用户有了connect 和 resource后才能操作其他表)
(3) 授DBA 权限
Grant dba to 用户名;
(4) 给用户创建会话的权限:
grant create session to DB_USER
(3) 授DBA 权限
Grant dba to 用户名;
(4)撤权:
revoke 权限... from 用户名;
(5)删除用户:
drop user username cascade (cascade 保证彻底删除)
当exp 导出的用户拥有dba的角色,但imp导入的用户不拥有dba的角色时,
在imp导入是会出现上面的错误。
如果exp导出的用户用到Oracle数据库的系统表空间,导入的用户没有dba的角色,也会报上面的错误。
可以在exp导出之前,回收用户dba的角色 revoke dba from user。再exp导出数据。
这样导入数据则不会报错。
或者把dba角色赋予给imp导入的用户。grant dba to user
在导入dmp文件时报以下错误:
IMP-00010: 不是有效的导出文件, 头部验证失败
IMP-00000: 未成功终止导入
在网上查两种方法,我是通过第二方法
1.imp/exp的版本不对,也就是说低版本的导出,可以用高版本的导入,但高版本导出不能用低版本的导入,这个版本不只是指imp/exp的版本,也是指数据库的版本
2.可能你在用ftp download时未设置binary的传输方式,导致文件损坏
用UltraEdit-32或notepad++打开dmp文件可看到版本信息,dmp文件的信息如下:
XPORT:V10.02.01
从中可以看出其版本是10.02.01
经由常规路径由 EXPORT:V10.02.01 创建的导出文件
IMP-00013: 只有 DBA 才能导入由其他 DBA 导出的文件
IMP-00000: 未成功终止导入
imp时连接用户没有DBA权限或者default role不是DBA
你可以换个DBA role的用户IMP。
如果你还想用这个用户,如果这个用户没DBA权限就grant dba to 用户;
如果default role不是DBA,那就 alter user 用户 default role DBA;
grant dba to scott
如果用dba权限,但不是默认也会报这个错误。
更改默认设置:
alter user BOC_RDM
default role dba;
恢复原来设置(这是我本机,参照人员请注意
alter user BOC_RDM
default role none;
------------------------以下为imp的一些选项-----------------------------------------------
imp username/passwd@dblink file=for_rwa.dmp fromuser=RRMS01 touser=boc_rdm tables=for_rwa ignore=y
-- 考imp数据
1. imp userid/userid@service_name file=d:test.dmp tables=tablename indexfile=t.idx
2. 打开t.idx将REM去掉并手工更改为目标表空间,并保存文件
3. 执行t.idx (在sqlplus下 @t.idx )
4. imp boc_rdm/boc file=rwa20120508.dmp fromuser=EXIMTRX touser=boc_rdm tables=FAEF_INV_LOAN ignore=y