[oracle维护]无法加入单据

 分公司突然打电话过来,说有一种单据无法保存.
第一想法是.前后台不一致所致.  因为系统跨越时间比较长,分公司用的数据库表结构比较早. 而后来又替换了现在的前端程序,这样导致 表结构不一致,所以数据无法保存.
我先要他们把数据库导出,并把前端程序一同压缩回来.
一查,果然有问题,只是高兴之后才发现,多出来的字段,根本是可选字段,g_card 品牌字段.是后期加的.一打听,客户端的软件,也一直没有更新过.  数据库也没有更改(从告诉我不知道如何进sql*plus,可见) , 不过还是要先分析程序才行.

之前的客户端没有源代码了,只好用现在的源码,从出错提示可以判定大概位置,是在主表插入表体时出现"第一行错误无法保存". 程序其实很简单,就是 一条sql脚本.为了安全起见,我又逐一对比了前后两表的结构, 基本一致.

因为胖子,用我的脚本去清理数据,也不知道他做了些什么. 后来我发现, 脚步写的是没有问题, 对触发器的处理上且,可能不妥,因为这种清理是很变态的清理,就是通过月份来判断,把几个月前的数据备份后删除.  正常系统应该是不可以那么乱了的.  因为这样的删除是会影响很多的,象现存量呀,单据回填呀,  所以 删除的时候,我都是强行关闭所有的触发器,独立的进行删除工作. 这样处理也是没有问题的.只是原来的数据库设计的时候有些触发器建了,可能又问题,又没有删除,只是disable了. 我关闭后,使用 enable all triggers ,把那些没用的东西,也一起打开了. 

所以,我尝试关闭触发器去找问题.  无功而返.

期间我发现一个问题,如果表体的数量不加,表可以保存,那么问题就落在 数量 上了.  为什么不加数量就可以呢, 我先加了一个表, 不加数量,提示保存成功,然后去修改这个表.  数据还是无法保存, 看了一加数量就无法保存.
根据这个线索,我回去查找程序,发现如果没有数量,是不保存表体的,但是表体且被保存下来, 可以说设计有点失败,也许是我不清楚他们设计的初衷,可是一个没有任何意义的表..........

接下来,我写了一条表体插入语句,提示 索引因为空间不够,无法建立.  好家伙.搞了老半天 原来是表空间 没有设置自动扩展,所以到了最大值了,数据就没法保存了. 索引空间的扩展值 表空间无法再提供了,所以...............

我接下就是打开控制台,进行表空间扩展,因为又上次脚本扩展的教训,这次学乖了. 进图形控制界面,storage manager
不想再加大原来的数据文件,我附加了一个数据文件到user_data空间.

做完这些,重新测试了一下, 可以顺利保存表了.

其实这种情况之所以会有,可能是 数据管理员 只负责开关机了.

零零星星整了一个上午, 特别是远程操作,诸多不便,不过感觉还好.  下次注意步骤 可能会快一些.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值