把64位的unix系统数据库迁移到32位的windows系统数据库中
需求描述:从一个64为AIX5.3系统的Oracle数据库把某一个用户的数据导到32位的Windows系统Oracle数据库中,数据量大概3G左右。操作
把64位的unix系统数据库迁移到32位的windows系统数据库中 需求描述:从一个64为AIX5.3系统的Oracle数据库把某一个用户的数据导到32位的Windows系统Oracle数据库中,数据量大概3G左右。操作系统不一样,但Oracle的版本用的都是10.2.0.1的版本unix数据库,确定用exp\imp的方式进行迁移数据。 一、在64位的AIX5.3系统上导出某一用户的所有数据(下面在AIX5.3系统操作) 1、查看磁盘空间情况: 在64位的AIX5.3系统上执行导出数据 先查看导出的磁盘空间是否足够存放导出的数据(需要大于3G的空间): AIX5.3系统命令: df -m 2、查看数据库的监听器,以便知道数据库的监听名称。 位于$ORACLE_HOME/network/admin/tnsnames.ora 如: DQOMS = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 1568)) ) (CONNECT_DATA = (SERVICE_NAME = DQOMS) ) ) 监听名称为dqoms 3、执行导出命令,让其命令在后台运行(可能要2、3个小时导出数据) 数据量比较大,以防网络不稳定,该导出进程在后台运行命令: nohup exp wner=dqomswas file=20081008exp log=20081008exp.log & 查看后台运行的进程: $ ps -ef|grep exp 二、在Windows中导入在AIX系统导出的数据 1、用ftp等工具把在AIX系统导出的数据传到Windows系统中 2、在windows系统中安装Oracle 10.2.0.1版本的数据库(略) 3、在导入数据库之前需要创建AIX系统数据库中的表空间和用户 3.1 在AIX系统数据库中查询总共有多少表空间,创建相应的表空间。 SQL> select a.ts#,a.name "tablespace",b.name 2 from v$tablespace a,v$datafile b 3 where a.ts#=b.ts# order by a.ts#; 3.2 在Windows系统的数据库中创建相应的表空间 比如建立一个RMAN_SPACE的表空间: SQL> create tablespace RMAN_SPACE 2 datafile 'F:\oracle\product\10.2.0\oradata\xboms\RMAN_SPACE.dbf' 3 size 20M autoextend on; 表空间已创建。 创建完表空间!接着创建用户 3.3创建用户: SQL> create user xbomswas 2 identified by xbomswas; 用户已创建。 3.4 给用户授权 SQL> grant dba to xbomswas; 3.5 先查看AIX系统数据库dqomswas用户的默认表空间 SQL> conn dqomswas/dqomswas 已连接。 SQL> select username,default_tablespace,temporary_tablespace from user_users; 3.6查看windows系统数据库上xbomswas用户的默认表空间 SQL> conn xbomswas/xbomswas 已连接。 SQL> select username,default_tablespace,temporary_tablespace from user_users; 两个用户的默认表空间一直就可以了(如果不一致,更改xbomswas用户的默认表空间: alter user xbomswas default tablespace users; 3.7在windows系统中查看数据库的监听器名称.位于$ORACLE_HOME/network/admin/tnsnames.ora 如果没有,需要添加上: 如: XBOMS = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = XBOMS) ) ) 监听名称为XBOMS 如果在cmd运行 sqlplus 能登陆数据库则可以导入数据了。 4 在windows系统中导入数据,因为建立了相应的表空间了,但没有建立相应的用户,有很多表可能授权给其他用户,但数据库中缺少某用户,则会报错(由于 ORACLE 的 1917 错误)。所以在导入时加上grants=no ,也就是不导入权限,这样就不用报错了。 imp file=f:\20081008exp.dmp fromuser=dqomswas touser=xbomswas grants=no log=f:\20081008imp.log 来自 “ ITPUB博客 ” ,链接:,如需转载,请注明出处,否则将追究法律责任。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |