三月 22nd, 2010bcp导数据进入死循环

最近碰到一件非常奇怪的事情,在为一个客户做数据恢复服务的时候,bcp往外导数据,居然bcp一直都停不下来,知道磁盘空间满。当然这个数据库的这个表肯定是出于不正常的状态,没有经过分析,结合页链pglinkage的分析,隐隐约约觉得其中页面如果进入一个死循环状态,可能会导致这个问题,这段时间打算研究一下这么一个问题

三月 22nd, 2010bcp导数据进入死循环

最近在学习项目管理,孙子兵法有两句话,在项目整体管理中出现,就是“日费千金,然后十万师举矣”,“故兵闻拙速,未睹巧之久也”。其原意应该就是打仗是很耗人力物力的,一个军队领导人或者国家领导人在做出决策之前一定要考虑好这些因素,后一句就是,用兵只听说过快速用兵,没有听说过长期持久的,当然老毛抗日战争是另外一回事,那时孙子还不知道。

经过几天的准备和努力,sybase ase日志翻译工具终于成形,现在将演示版本进行发布。

本演示版本功能有一定的限制,只能够对master库的日志进行操作。连上数据库之后,选择读取日志,在窗口的左边会显示master库的日志,你可以用鼠标左键选择要查看的日志,目前类型可以看MODIFY,INSERT,DELETE三种类型,对于MODIFY,系统表不显示语句。在右下窗口中,显示的SQL语句结果。在正式版本会取消限制,并提供事务级别的日志翻译。数据库开发环境为ASE12.5.4,其他版本可能会有一定问题,在未来一段时间内,会对11.9,12.0,12.5.x进行测试。

下载地址:http://www.sybedit.com/software/logtrans.rar

很多开发人员或者某些系统喜欢使用关键字作为表的列名,比如jar,key,except等等。但是在具体使用过程中却不知道如何使用。下面我讲讲如何使用。
其实也很简单,在使用的过程中,只要使用上square brackets也就是方括号[]将关键字包含起来就可以了。事例如下:
1、如何建带关键字列名的表
create table a([key] char(10))
2、插入操作
insert into a ([key]) values(’value’)
当然你也可以这样
insert into a values(’value’)

今天有个兄弟跟我求救,他错误的使用了一个老的备份load到目前数据库中,而这个数据库却没有备份,问有没有可能恢复?我交流了一下想法,首先load数据库的时候,如果dump文件中所有的页面,肯定是覆盖了原来的数据库的页,那么这些页面上的数据,已经变成了dump文件中的数据,肯定不可以恢复。但是那些dump文件中没有被覆盖的页面,应该还存在着数据,应该可以恢复,但这个是一个非常复杂的筛选过程,需要建立一个对照表来进行页面一级的恢复。

只不过恢复处理的数据,在某种程度上来说,已经是一个脏数据,没有什么意义。

七月 16th, 200915.0.2的新特性

New feature: application tracing •Set options in another session •Display executing SQL in another session •Capture output from that other session into a file set tracefile ‘/tmp/spid36.out’ for 36 go — ’set’ commands apply to session 36 from now on set showplan on set show_sqltext on go — disable tracing again set tracefile off set tracefile off for 36

有一个客户,在系统发生异常掉电之后,启动数据库,发生了以下错误,导致数据库无法正常recovery。00:00000:00018:2008/06/11 16:00:08.45 server  Error: 692, Severity: 20, State: 1
00:00000:00018:2008/06/11 16:00:08.45 server  Uninitialized logical page ‘28114′ was read while accessing object ‘3′ in database ‘18′. Please contact Sybase Technical Support.
这种故障在正常操作下,已经无法恢复数据库,里面的数据需要通过使用恢复工具进行恢复了(建议使用powersybedit)。用poweredit读取裸设备方式,对改页面进行了分析,发现该页面确实是一个空页,所有的字节全部是0000 0000。那么如何避免这个故障,并将这个页面变成一个有效的页面呢?可以做如下处理:
首先读取该对象的其他页,然后将该页的页号修改为这个空页所在的页号,如上实例为 28114,回写磁盘后,关闭改文件,重新启动数据库。但过程中有可能会多次出现这个故障,需要重复操作,较为麻烦。
经过一系列的处理,该数据库可以正常启动,某些数据就可以通过正常的bcp出来。


© 2007 sybase数据库恢复 | iKon Wordpress Theme by Windows Vista Administration | Powered by Wordpress