转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> SyBase >> 正文
dbunload问题的修复         ★★★★

dbunload问题的修复

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1409 更新时间:2009/4/22 23:09:14

One type of database corruption that is reported to Technical Support is typically associated with Assertion Error 50213, "Page number on page does not match page requested". When running on an ASA 6 or 7, the assertion will likely be 200601, "Page for requested record not a table page or record not present on page." Most frequently, however, said database was created on version 5.x and became corrupted before upgrading the software. Occasionally other assertions are reported, depending on the operation that first fails.

Our Product Quality department has stated that they would prefer to receive all databases in-house that become corrupted on version of the software that is currently being developed (as of this writing, SSA 5.5.05, ASA 6.0.4, ASA 7.0.1) in order to investigate the causes and frequency of database corruption. In some cases, however, the procedure described below can be more expedient. Furthermore, if the you are running on software that is no longer being updated (typically the maintenance level currently being sold plus one level earlier), the usefulness of such information is limited.

In all cases of database corruption, the preferred resolution is to find a valid backup, and apply all of the log files since the time of the backup.

This type of corruption is particularly bothersome, however, because it only manifests itself when a particular database page is accessed. If the data on that page is rarely used, the corruption may well exist on many or all of the backups the customer has on hand.

It may be possible to recover the database with the following procedure, although it is likely that some data will be lost. It is up to the customer to determine the validity and completeness of the data in the recovered database.

You will want to use the dbunload command; therefore it is prudent to note the following dbunload switches:

(at the command prompt type: dbunload /? )

Usage: dbunload [switches] <directory> [table-name-list]

Switches (use specified lower-case letter, as shown):

       -c "keyword=value; ..."
      supply database connection parameters
      -d unload data only
      -e no data output for listed tables
      -g <user> specify user name as replacement for dbo
      -ii internal unload, internal reload (default)
      -ix internal unload, external reload
      -j <count> iteration count for view creation statements
      -n no data - schema definition only
      -o <file> log output messages to file
      -p <char> escape character (default "\")
      -q quiet: do not print messages or show windows
      -r <file> specify name of generated reload ISQL
      command file (default "reload.sql")
      -u unordered data
      -v verbose messages
      -xi external unload, internal reload
      -xx external unload, external reload
      -y overwrite command file without confirmation

      NOTE: <directory> must be specified as a path meaningful to
      the engine (or server) unless an external unload is used.

Adaptive Server Anywhere 6 and 7 include additional switches, notably -an and -ac, which can be used to roll the entire recovery process into a single command line. However, when using these switches, if the reload fails, the whole recovery process needs to be started from scratch. For this reason, we will use a manual, three-step process that leaves data and command files even in the event of a partial failure.

Create a working directory (eg c:\working) and an unload directory (eg c:\unload). Placing these directories off the root will save wear and tear on the fingers. Copy the database and log files to the working directory. Open a command prompt in the working directory. Run the following command line. (In this example we are using the asademo.db which comes with ASA6)

      dbunload -c "uid=dba;pwd=sql;dbf=c:\working\asademo.db" -u c:\unload


The output will resemble:

      Unloading "DBA"."sales_order" into c:\unload\192.dat (relative to server)
      Unloading "DBA"."sales_order_items" into c:\unload\193.dat (relative to server)
      Unloading "DBA"."contact" into c:\unload\194.dat (relative to server)
      Unloading "DBA"."customer" into c:\unload\195.dat (relative to server)
      Unloading "DBA"."fin_code" into c:\unload\196.dat (relative to server)
      Unloading "DBA"."fin_data" into c:\unload\197.dat (relative to server)
      Unloading "DBA"."product" into c:\unload\198.dat (relative to server)
      Unloading "DBA"."department" into c:\unload\199.dat (relative to server)
      Unloading "DBA"."employee" into c:\unload\200.dat (relative to server)


In a technical support case, we would see an assertion error message in the above example at this point. Assume table "customer" gave an Assertion Error.

Type the following:

      dbunload -c "uid=dba;pwd=sql;dbf=c:\working\asademo.db" -u c:\unload -e dba.customer


The output will resemble:

      Unloading "DBA"."sales_order" into c:\unload\192.dat (relative to server)
      Unloading "DBA"."sales_order_items" into c:\unload\193.dat (relative to server)
      Unloading "DBA"."contact" into c:\unload\194.dat (relative to server)
      Unloading "DBA"."fin_code" into c:\unload\196.dat (relative to server)
      Unloading "DBA"."fin_data" into c:\unload\197.dat (relative to server)
      Unloading "DBA"."product" into c:\unload\198.dat (relative to server)
      Unloading "DBA"."department" into c:\unload\199.dat (relative to server)
      Unloading "DBA"."employee" into c:\unload\200.dat (relative to server)


This will either complete successfully or yield another corrupt table. Rerun the process with a comma-separated list of tables to exclude until the unload completes successfully.

We will now have a series of *.DAT files with the data we need, and a file called reload.sql with the schema for the database, except for the corrupt tables. We need a complete schema for the database. Type the following in order to create RELOAD1.SQL:

      dbunload" -c "uid=dba;pwd=sql;dbf=c:\working\as

      [1] [2]  下一页


      没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台