Oracle导入IMP-00058错误及其他
接触到一个项目 ,需要用到oracle 于是:
一:下载,安装 ,
这里面讲的很仔细, 很清楚,跟着做就可以了。感谢作者。
http://blog.csdn.net/cxin917/article/details/50637891
因为我oracle 直接装的是32位,(听说32位比64稳定,兼容还是什么的)
就没有做上面连接教程,直接连接就可以了。
二:导入数据库 ,因为同事给的都是dmp文件,收索了一下 ,相当于sql server 的备份数据库吧。
当时oracle 是用虚拟机装的 ,总是出 1017 ,或者其他错误什么的,出错改错,网上怎么说怎么做,还是不行 ,错误一个接一个。
于是 ,放弃 虚拟机。直接装系统里面了。
此时,就是回到一,安装步骤安装了。
三:找了好久 ,说导入.dmp 文件 ,说如果是exp 形式导出的, 需要用 imp 导入。 当然 ,是cmd 窗口下运行。
列:exp test/test@test file =E:\Oracle\daochutest.dmp full = y
还说 ,导入前 需要 建立 表空间, 用户 。 要跟导出的时候 一样才行,要不然 存储过程 视图啥的 可能会丢失。
具体 步骤 如下:
create tablespace test datafile 'E:\Oracle\test.ora' size 500m;
--1.这里的test为表空间名称,路径自己来命名。然后点执行按钮。
create user test identified by test default tablespace test quota 500m on users;
-- 2.这里第一个test为用户名,第二个test为密码,第三个test为表空间名。然后执行。
--3.授权 给test 赋的权限挺高的 可以导出
grant dba , connect,resource to test
--4删除表空间格式:
DROP TABLESPACE test
INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS
/*
tablespace:指定要删除的表空间的名称
INCLUDING CONTENTS:删除表空间内的所有段
AND DATAFILES:删除关联的操作系统文件
CASCADE CONSTRAINTS:如果要删除的表空间之外的表引用了该表空间内表的主
键和唯一键,则删除这种引用完整性约束。
*/
drop user test
--5.删除用户
2 好3 之间,在test 中 建立了一个表。测试用。
2执行后,不能导 因为没有权限 。
所以3 给了权限。 dba
然后 在cmd 执行 ,我用的管理员,怕普通的不行,还没有用普通的尝试。
导出成功,得到如下.dmp 文件。
导出成功。
四:尝试 导入
1. 试图把表空间给删除掉。 想看是不是没有表空间 会错误。
然后导入,报错:
报:IPM-00058 错误 遇到 12154 。
2.重新建立 表空间 :
http://blog.csdn.net/xiaojin21cen/article/details/40077893
表空间 建好。
2.再导入:
imp test/test@orcl file =E:\Oracle\daochutest.dmp full = y
还是报一样的错误,此时 应该是没有建立用户吧 用户名 密码都不存在的。
于是 ,添加 用户,给予权限,重新导入
导入成功 。
另:用toad 工具 查看 .dmp文件 ,可以看到 具体内容
本来只想导出test 里面的东西的,结果把所有的都导出来了,看来导出的时候,参数填写的少,还需要改进。
网上搜了一下, 只需要在 导出的时候 加个参数 :onwer = test(当前用户),并将 full = y 这句话 去掉 就可以了(不去掉 会起冲突)
今天又重新实验了一下,发现 如果是用 dba 的权限导出的,必须要用dba的权限导入,如果是普通的用户 导出的,
如果用system这个账号的话,即使不建立表空间也是可以的 ,但是 一般的用户 很少有system 的权限。 最好还是要建立一个表空间。
完结撒花。