今天实践了一下oracle的导入和导出
将一个oracle9i中的数据导到另一个服务器中
需要导出数据的服务器称为服务器A
需要导入数据的服务器称为服务器B
1.在服务器A上进行数据的导出
在DOS窗口中执行:exp 用户名/密码@服务名(rz_dlcs/hbsdlcs@orcl)file=文件所在文位
exp rz_dlcs2008/hebsdlcs@orcl file=d:\dlcs.dmp
2.在服务器A上设置连接服务器B
在orcale net manager中,根据向导增加一个新的服务,增加的服务名为orcl_20_dlcs
3.在服务器B上进行数据的导入
在dos窗口中执行:imp 用户名/密码@服务名 file=文件所在位置 full=y log=log文件所在位置 ignore=y
4.导入过程中遇到的问题
在导入的过程中,出现下面的错误
IMP-00058: 遇到 ORACLE 错误 1653
ORA-01653: 表RZ_DLCS2009.DYCS_SBTZ_DLYX2007无法通过8(在表空间HEBSDLCS中)扩展
IMP-00028: 上一个表的部分导入已回退: 回退 498 行
IMP-00017: 由于 ORACLE 的 1658 错误,以下的语句失败
经查,发现是由于表空间大小给得过小造成的。
在通常的导入过程中,一般是由于大字段的问题造成的。
解决办法:
(1)将日志文件中的错误提示信息以及导入信息全部清除掉,只保留greate table语句的信息;
(2)将10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1) TABLESPACE "HEBSDLCS" LOGGING NOCOMPRESS;信息注释掉(使用--注释),并在末尾处加上分号;
(3)将已导入的数据表全部删除,在sqlplus中拷入修改后的语句并执行;
(4)在dos窗口中执行导入语句,即可。在导入的过程中,忽略所有错误。
导出数据或者导入数据时,系统提示IMP-00003: ORACLE error 20001 encountered,此时在语句中增加 statistics=none,可解决此问题statistics:表示不导出分析数据
删除表空间中所有表的方法
1.在sqlplus中执行 select table_name from tabes;
2.将查询出的表名拷贝到文本文件中,在所有的表名前加上 drop table ,在表名后加上;的信息;
3.再将修改完成的语句拷贝到sqlplus中执行。