0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术CE6.0内置数据库CEDB的异常检测与修复简介

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-05 11:22 次阅读

CEDB简介

CEDB是一个功能简单的WINCE系统内置数据库,WINCE系统里使用CEDB生成多个数据库来存储一些简单的系统信息。比如回收站信息,还比如“事件-应用”对应表。

“事件-应用”对应表由调用CeRunAppAtEvent函数产生,设置系统收到指定事件event后执行指定的exe进程。比如用Visual Studio调试程序时需要连接USB,USB连接时,会产生NOTIFICATION_EVENT_RS232_DETECTED事件,系统便会启动repllog.exe进行调试方面设置。

系统CEDB数据库异常现象

我们发现系统CEDB数据库中,“事件-应用”对应表在日常调试时,有极小概率出现数据库异常。当该数据库数据异常时:

1、会出现ACTIVESYNC连接故障,我们此前采用格式化nandflash来解决该故障:《WinCE下ActiveSync连接故障分析》。

2、在问题严重时,系统的启动会变得缓慢。

3、进一步,在启动时USBOTG处于连接状态,系统则会不停打印“+OEMSetAlarmTime”信息,且无法正常完成启动,系统重启。

产生原因

1、在调试时,如果USB连接不稳定,时断时连。系统可能错误的向“事件-应用”对应表添加重复的“NOTIFICATION_EVENT_RS232_DETECTED - repllog.exe”记录项。

2、重复的数据库记录项会重复启动repllog.exe进程,导致ACTIVESYNC设置失败。

3、ACTIVESYNC设置失败后,系统又会错误的继续向CEDB中添加重复的“NOTIFICATION_EVENT_RS232_DETECTED - repllog.exe”事件记录项。并且因为系统无法正确清理重复项,导致数据库不断变大。

4、最后该CEDB中存储了上千条重复项,因为系统启动时频繁检索数据库内所有项,过多的重复项导致系统在启动时非常缓慢。

5、系统启动缓慢到一定程序时,连接的USBOTG会导致数据库记录进一步出错。系统重复打印的“+OEMSetAlarmTime”即是CEDB在添加重复项时打印的信息。

解决方案

“事件-应用”对应表默认数据库文件为“\NandFlash\Documents and Settings\default.vol”,重置该文件即可解决该问题。

格式化nandflash

见《WinCE下ActiveSync连接故障分析》,格式化nandflash后default.vol被重置,问题修复。但是nandflash下文件会被清空,注册表也会被重置。

清除CEDB多余项

调试API函数逐条清空数据项。

HANDLE *hNotifications = NULL;

DWORD NumNotifications;

DWORD Count;

CeGetUserNotificationHandles( hNotifications, 0, &NumNotifications );

hNotifications = (HANDLE *)malloc( NumNotifications * sizeof( HANDLE *));

CeGetUserNotificationHandles( hNotifications, NumNotifications, &NumNotifications );

for( Count = 0; Count < NumNotifications, Count<100; Count++ )

{

bRet = CeClearUserNotification(hNotifications[Count]);

}

free( hNotifications );

因为CEDB访问速度较慢,清理起来时间很长,所以不建议采用该方法。

通过2次重启,删除default.vol文件

因为default.vol为系统文件,无法直接删除。所以可以通过以下办法单单删除default.vol文件,同时保留数据库文件及nandflash下其它文件。

1、判断CEDB里的数据是否有异常。如果异常,则执行恢复。

2、修改\NandFlash\Documents and Settings目录为\NandFlash\Documents and Settings0,并重启(重启之前无法对Documents and Settings里的文件进行操作)。

3、重启后,系统判断没有Documents and Settings目录,因此会重置生成一个新的Documents and Settings目录。至此,故障已经修复,但是注册表等其他文件也重置了,还需要以下步骤将Documents and Settings0里的注册表文件恢复回去。

4、删除default.vol文件。

修改新生成的\NandFlash\Documents and Settings目录为\NandFlash\Documents and Settings1。

修改原来的\NandFlash\Documents and Settings0目录为\NandFlash\Documents and Settings。

再次重启。

5、重启后,注册表重新恢复,Documents and Settings里其它文件保持原状态,只有default.vol文件进行了重置。

可以删除已经无用的多余的\NandFlash\Documents and Settings1目录,腾出磁盘空间。

英创提供了修复程序及源代码,有需要的客户可以联系英创工程师获得。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6089

    浏览量

    35719
收藏 人收藏

    相关推荐

    数据库是哪种数据库类型?

    数据库是一种部署在虚拟计算环境中的数据库,它融合了云计算的弹性和可扩展性,为用户提供高效、灵活的数据库服务。云数据库主要分为两大类:关系型数据库
    的头像 发表于 01-07 10:22 176次阅读

    数据库数据恢复—Mysql数据库表记录丢失的数据恢复流程

    Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分
    的头像 发表于 12-16 11:05 268次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—Mysql<b class='flag-5'>数据库</b>表记录丢失的<b class='flag-5'>数据</b>恢复流程

    数据库数据恢复—MYSQL数据库ibdata1文件损坏的数据恢复案例

    mysql数据库故障: mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库
    的头像 发表于 12-09 11:05 259次阅读

    Sybase数据恢复—Sybase数据库无法启动怎么恢复数据

    数据库数据恢复工程师经过检测,发现Sybase数据库出现故障的原因是:异常断电造成Sybase数据库
    的头像 发表于 11-30 16:45 198次阅读
    Sybase<b class='flag-5'>数据</b>恢复—Sybase<b class='flag-5'>数据库</b>无法启动怎么恢复<b class='flag-5'>数据</b>?

    数据库数据恢复—通过拼接数据库碎片恢复SQLserver数据库

    试图恢复数据库,发现有数个ndf文件大小变为0KB。 虽然NDF文件大小变为0KB,但是NDF文件在磁盘上还可能存在。可以尝试通过扫描&拼接数据库碎片来恢复NDF文件,然后修复数据库
    的头像 发表于 10-31 13:21 370次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—通过拼接<b class='flag-5'>数据库</b>碎片恢复SQLserver<b class='flag-5'>数据库</b>

    oracle数据恢复—Oracle数据库打开报错的数据恢复案例

    数据文件与控制文件的SCN不一致等。数据恢复工程师对数据库文件做进一步检测分析后发现sysaux01.dbf文件有坏块。修复sysaux0
    的头像 发表于 10-17 13:20 287次阅读
    oracle<b class='flag-5'>数据</b>恢复—Oracle<b class='flag-5'>数据库</b>打开报错的<b class='flag-5'>数据</b>恢复案例

    Oracle数据恢复—异常断电后Oracle数据库报错的数据恢复案例

    Oracle数据库的在线文件,需要恢复zxfg用户的数据。 Oracle数据库恢复方案: 检测数据库故障;尝试挂起并
    的头像 发表于 09-30 13:31 423次阅读
    Oracle<b class='flag-5'>数据</b>恢复—<b class='flag-5'>异常</b>断电后Oracle<b class='flag-5'>数据库</b>启<b class='flag-5'>库</b>报错的<b class='flag-5'>数据</b>恢复案例

    数据库数据恢复—SQL Server数据库出现823错误的数据恢复案例

    SQL Server数据库故障: SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库
    的头像 发表于 09-20 11:46 433次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—SQL Server<b class='flag-5'>数据库</b>出现823错误的<b class='flag-5'>数据</b>恢复案例

    加速鲲鹏落地!拓维信息迁移工具荣获鲲鹏原生开发技术认证

    认证。图/拓维·数据库适配中间件取得鲲鹏原生开发N认证在数字化时代的大潮中,信战略作为国家推动信息技术应用创新、保障信息安全与自主可控的关键举措,其重要性日益凸显
    的头像 发表于 09-10 08:03 545次阅读
    加速鲲鹏落地!拓维<b class='flag-5'>信息</b>信<b class='flag-5'>创</b>迁移工具荣获鲲鹏原生开发<b class='flag-5'>技术</b>认证

    基于WDS证券行业建设金融信云承载数据库类关键应用

    基于WDS证券行业建设金融信云承载数据库类关键应用
    的头像 发表于 09-03 10:07 317次阅读
    基于WDS证券行业建设金融信<b class='flag-5'>创</b>云承载<b class='flag-5'>数据库</b>类关键应用

    自研创新 数智未来 2024中国数据库技术大会盛大召开

    浪潮汹涌澎湃,数据库作为信息技术的核心基础设施,正以前所未用的速度推动各行各业的智能化升级。大会以“自研创新 数智未来”为主题,设置2大主会场,20+技术专场,重点围绕向量数据库与向量
    的头像 发表于 08-27 18:07 695次阅读
    自研创新 数智未来 2024中国<b class='flag-5'>数据库</b><b class='flag-5'>技术</b>大会盛大召开

    基于分布式存储WDS的金融信云承载数据库类关键应用

    基于分布式存储WDS的金融信云承载数据库类关键应用
    的头像 发表于 08-16 09:42 356次阅读
    基于分布式存储WDS的金融信<b class='flag-5'>创</b>云承载<b class='flag-5'>数据库</b>类关键应用

    数据库数据恢复—SqlServer数据库底层File Record被截断为0的数据恢复案例

    SQL Server数据库数据无法被读取。 经过数据库数据恢复工程师的初步检测,发现SQL Server
    的头像 发表于 07-26 11:27 476次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—SqlServer<b class='flag-5'>数据库</b>底层File Record被截断为0的<b class='flag-5'>数据</b>恢复案例

    数据仓库与数据库的主要区别

    数据仓库与数据库是两个在信息技术领域中常见的概念,它们在数据管理和分析方面发挥着重要作用。尽管它们在某些方面有相似之处,但它们在设计、目的和功能上存在显著差异。本文将介绍
    的头像 发表于 07-05 14:57 622次阅读

    数据库数据恢复—raid5阵列上层Sql Server数据库数据恢复案例

    数据库数据恢复环境: 5块硬盘组建一组RAID5阵列,划分LUN供windows系统服务器使用。windows系统服务器内运行了Sql Server数据库,存储空间在操作系统层面划分了三个逻辑分区
    的头像 发表于 05-08 11:43 602次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—raid5阵列上层Sql Server<b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复案例