exp 错误,请大虾们救命!!!

jljlwsy 2002-06-19 06:36:10
1。在下面的导出数据时提示ORDERS表的row 207105错误,这个207105不是表中的字段的值。而是机器给出的行号。能否用SQL找到这条记录并删除。

2。医院管理系统中,出现异常现象。
在完全导出数据库时,出现以下信息。
. . exporting table ORDERS
EXP-00015: error on row 207105 of table ORDERS, column PATIENT_ID, datatype 1
EXP-00001: data field truncation - column length=10, buffer size=10 actual size=164
EXP-00034: error on rowid: file# 0 block# 0 slot# 0
. . exporting table ORDERS_COSTS
EXP-00008: ORACLE error 3113 encountered
ORA-03113: end-of-file on communication channel
EXP-00008: ORACLE error 3114 encountered
ORA-03114: not connected to ORACLE
EXP-00000: Export terminated unsuccessfully
...全文
236 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
ATCG 2002-06-21
  • 打赏
  • 举报
回复
这个问题可能引起的原因有多种,
现在你重启数据库试试,然后再建立一个表空间,在这个表空间里
建立新的回滚段试试看,尽量大一点。
jljlwsy 2002-06-21
  • 打赏
  • 举报
回复
to ATCG(ATCG):按你的办法,问题已经解决。但是,有些问题仍觉得奇怪,请帮忙:
TRUNCATE TABLE 医嘱表; 正常
但是 INSERT INTO 医嘱表 SELECT * FROM 临时表; 时提示:
ORA-01562:failed to extend rollback segment number8
ORA-01628:max # extents (121) reached for rollback segment RB7
COMMIT; 后再试。
提示:
ORA-01562:failed to extend rollback segment number10
ORA-01628:max # extents (121) reached for rollback segment RB9
最后
CREATE TABLE 医嘱表 AS SELECT * FROM 临时表;
成功。
请问:上面两条提示是什么原因?
ATCG 2002-06-20
  • 打赏
  • 举报
回复
我觉得这已经试最简单的方法了,
建一张临时表又不难的,
你可以这样建,CREATE TABLE 临时表 AS SELECT * FROM 医嘱表 
       WHERE PATIENT_ID<'141075';
然后再INSERT 其它的记录。
不要怕麻烦!,一点也不麻烦!
jljlwsy 2002-06-20
  • 打赏
  • 举报
回复
to ATCG(ATCG):首先,谢谢您的建议,但是这个表的结构太复杂,有没有简单的办法.
ATCG 2002-06-20
  • 打赏
  • 举报
回复
补充说明;

6、TRUNCATE TABLE 医嘱表;
如果TRUNCATE 不行,就试试DROP
如 DROP 要重建该表。

一个原则,你建的临时表必须保证数据INSERT 正确,
jljlwsy 2002-06-20
  • 打赏
  • 举报
回复
to 楼上:如何拷贝
ATCG 2002-06-20
  • 打赏
  • 举报
回复
你可以试试这样;

0、将医嘱表的外键断开。
1、先建立一张临时表,表的结构和医嘱表结构相同,
2、INSERT INTO 临时表 SELECT * FROM 医嘱表
WHERE PATIENT_ID<'141075';
3、INSERT INTO 临时表 SELECT * FROM 医嘱表
WHERE PATIENT_ID>141075 AND PATIENT_ID<'141225';
4、INSERT INTO 临时表 SELECT * FROM 医嘱表
WHERE PATIENT_ID>'141225';
5、COMMIT;
6、DROP TABLE 医嘱表;
7、INSERT INTO 医嘱表 SELECT * FROM 临时表;
8、COMMIT;
9、建立和医嘱表有关的外键。
jljlwsy 2002-06-20
  • 打赏
  • 举报
回复
to 楼上:如何拷贝
blue__star 2002-06-20
  • 打赏
  • 举报
回复
先将这两条记录COPY到另一个表
删除这两条记录,导入后再插入这两条记录,可以吗?
biti_rainy 2002-06-20
  • 打赏
  • 举报
回复
1:是不是该记录的磁盘有坏块
2:是不是该记录太大?什么类型?超过了exp的时候的buffer?

8i在exp的时候可以加query字句把其他的提取出来再说吧
ATCG 2002-06-20
  • 打赏
  • 举报
回复
你除了PATIENT_ID 之外,还有没有其它的列或组合列可以唯一标识这两条记录?
jljlwsy 2002-06-20
  • 打赏
  • 举报
回复
是很简单,这个临时表是否含有主键、外键和索引等。
jljlwsy 2002-06-20
  • 打赏
  • 举报
回复
to ATCG(ATCG):select 这个表得加 WHERE 除了WHERE PATIENT_ID='141075'和
WHERE PATIENT_ID='141225'都可以,一旦加了这两条,就出现ORA-03113: end-of-file on communication channel。就停止了。
另外,备用服务器是有的,请问如何重建。
说明一下:这个错误是周一发现的,试图用周日的完全备份加日志恢复,没有成功。
ATCG 2002-06-19
  • 打赏
  • 举报
回复
还有,你现在能不能SELECT这张表?
ATCG 2002-06-19
  • 打赏
  • 举报
回复
我说不操作这张表,意思是在EXP的时候不操作这张表。

不知你们单位有没有备用服务器,若有,重建数据库是可能的。
ATCG 2002-06-19
  • 打赏
  • 举报
回复
exp username/password tables=(table1,table2,...) file=test.dmp
jljlwsy 2002-06-19
  • 打赏
  • 举报
回复
to 楼上两位:我单位用的是医院管理系统,每天都有大量的数据,不可能重建数据库,ORDERS是医嘱表,是医院最重要的表之一。不操作这个表也不可能。
ATCG 2002-06-19
  • 打赏
  • 举报
回复
EXP可以导出一张表,也可以到处多张表,也可以导出一个表空间。
你在导出的时候可以选择上述方法,从而避免操作那张错误的表。
ATCG 2002-06-19
  • 打赏
  • 举报
回复
关于END OF FILE ON COMMUNICATION 的错误
我也碰到过,真是个经典错误,在有些情况下可以
通过重启数据库来解决,它主要涉及到NET8,以及
网络等,我上次是在Solaris Unix的意外自己重启后
数据库不能关闭,并出现这个错误,呜呼我只能重建数据库来解决。
jljlwsy 2002-06-19
  • 打赏
  • 举报
回复
不到200张表
加载更多回复(6)

2,598

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧