Oracle 10g 导出linux系统远程库dmp文件-->导入到win7本地oracle数据库中,实现远程数据库的迁移.

大家是否有这样的烦恼,想将公司项目变成自己的项目资源库。但是项目完全复制下来到自己机器上运行,发现无法访问远程数据库的错误,为了解决这一困扰,作者尝试了将远程数据库导入到本地数据库的操作,遇到了不小的麻烦,做下记录。

导入前先需要导出linux系统远程库dmp,命令行直接敲:

exp 远程用户名/远程密码@远程地址:远程端口/远程数据库实例名 owner=远程导出的用户  file=导出文件存放路径

exp ecuser/[email protected]:1521/orc2 owner='ecuser' file=d:\ec.dmp

a.win7本地oracle环境搭建

由于linux下装的是oracle 10g,为了能顺利导入到win7本地oracle 中,win7 本地安装的oracle版本需等于或低于10g,作者win7本地用的是oracle 10g.

由于oracle 10g与win7不能很好兼容,win7 64位系统下 oracle 10g的安装需要注意

选用32位的oracle 10g安装包,暂时没找到装64位的oracle 10g的方法。

安装前,需修改oraparam.ini和refhost.xml,不然无法安装,怎么改可以直接百度,这类文章很多。

改完这两个文件,需要用windows xp sp3兼容模式和管理员身份运行oracle 10g的安装程序,接下来的安装按正常安装流程来就ok了。

b.导入前的准备工作:

--表空间
CREATE TABLESPACE EC
DATAFILE 'd:\tablespace\ec.dbf' size 10000M
         EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;     
--2.建用户
create user jelly identified by tiger 
default tablespace EC;
 
--3.赋权
grant connect,resource to jelly;
grant create any sequence to jelly;
grant create any table to jelly;
grant delete any table to jelly;
grant insert any table to jelly;
grant select any table to jelly;
grant unlimited tablespace to jelly;
grant execute any procedure to jelly;
grant update any table to jelly;
grant create any view to jelly;

 cmd中(与sqlplus区别),直接敲命令如下,开始导入

--导入方式: 
imp scott/tiger@orcl file=d:\ec.dmp fromuser='ecuser' touser='jelly' ignore=y  

 如果导入出错,用下面命令可以删除刚才创建的用户和对应的表空间。

--删除用户及用户对象
drop user jelly cascade;
--删除表空间
DROP TABLESPACE EC INCLUDING CONTENTS AND DATAFILES;

 c.常见错误及解决链接:

    1.值太大而拒绝行:

     是由于windows oracle与linux oracle所用的字符集不同导致的。

     改win7 本地oracle的字符集:http://jingyan.baidu.com/article/c1465413af2fb20bfcfc4c3e.html    

 1      conn /as sysdba;
 2 
 3      shutdown immediate; 
 4 
 5      startup mount ;
 6 
 7      ALTER SYSTEM ENABLE RESTRICTED SESSION; 
 8 
 9      ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; 
10 
11      ALTER SYSTEM SET AQ_TM_PROCESSES=0; 
12 
13      ALTER DATABASE CHARACTER SET ZHS16GBK; 
14 --提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改: 
15 
16      ALTER DATABASE character set INTERNAL_USE ZHS16GBK; 
17 
18      select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET';
19 
20      shutdown immediate; 
21 
22      startup ;
23 
24      select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET';

     查看win7 本地oracle字符集命令:select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET'

    2.表空间EC 无法创建INIT区。  

      是由于创建的表空间太小导致的,建议表空间大小为dmp文件的3倍左右.

      如果不确认自己创建的表空间是否满了,可以用下面命令查看表空间已使用大小。

--查看表空间已使用大小 select TABLESPACE_NAME,sum(bytes) from dba_segments where tablespace_name NOT IN ('EC') GROUP BY TABLESPACE_NAME

   3.IMP-00003: 遇到 ORACLE 错误 2298
       ORA-02298: 无法验证 (JELLY.DICT_ID) - 未找到父项关键字
       IMP-00017: 由于 ORACLE 错误 2298, 以下语句失败:

       这个暂时可以不用管,解决前面2个问题后,重新导入,项目直接本地数据库,不出意外项目运行起来了。

       这个错误,作者暂时也没有太好的解决办法,如果有找到解决办法的童鞋,可以告诉我下。

除博文中链接外,作者还参考了:http://blog.csdn.net/starnight_cbj/article/details/6792364     

你可能感兴趣的:(Oracle 10g 导出linux系统远程库dmp文件-->导入到win7本地oracle数据库中,实现远程数据库的迁移.)