通常mysql可以通过转储为sql的方式导出数据,且在新的数据库中在导入sql数据。但是对于oracle数据库时,对于数据量过大的情况,通过转储为sql文件的方式基本上是不支持的,一般都是需要通过oracle导出的dmp文件方式实现,但是跨库使用不同的用户名时,由于oracle库表空间的存在,也时常会造成数据导入存在部分失败的情况,以下是个人实践的几个经验。

1、通过navicate连接oracle数据库,直接复制表粘贴到目标的数据库

这种方法可以避免使用表空间造成的问题,因为会连同表空间一起复制到目标数据库中,亲测可行,但是由于navicate处理sql语言的方式比较慢,所以过程会比较耗时,建议可以通过查询表数据数据量的方式,把数据量比较小的表直接复制,数据量较大的表通过plsql导出后在导入。

oracle数据库导入数据问题

过程中可能会出现的问题:

ORA-01653: 表 无法通过 128 (在表空间 USERS 中) 扩展

解决方法:

(1)、扩展表空间

select * from dba_data_files where tablespace_name = 'USERS';

alter database datafile '/home/oracle/oradata/ORCL/users01.dbf' autoextend on next 50M maxsize unlimited;

上一句查询表空间中,把file_name值赋值到下一句中,执行下一句会自动给表空间扩展50M的存储。但是一个dbf文件会有上限,很可能造成扩展无校的情况,此时可以通过给表空间增加一个dbf文件的方式,实现数据的扩展。

ALTER TABLESPACE "USERS" ADD DATAFILE '/home/oracle/oradata/ORCL/users02.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;
以上为给表空间users新增一个存储的dbf文件。

(2)、oracle创建用户,赋权限

create user shenzhen identified by beijing;

grant connect,resource,dba to shenzhen;

(3)、使用管理员权限打开cmd,进行导入和导出oracle的dmp备份文件,需要环境变量和oracle环境

导出
exp whsffz/[email protected]:1521/orcl file=F:\11\21.dmp log=F:\11\21.log
exp whsffz/[email protected]:1521/orcl file=F:\11\20_bak.dmp log=F:\11\21_bak.log

导入dmp文件
imp whsffz_test/[email protected]:1521/orcl file=F:\11\21.dmp full=y ignore=y

相关文章: