文谷首页 | 业界传真 | 网络技术 | 服务器 | 数据库 | 存储技术 | 系统安全 | 无线技术 | Cisco | .Net | Windows | Linux | Unix | Java
电子商务 | 网站工程 | 网页设计 | 平面设计 | 多媒体 | 编程语言 | Oracle | MSSQL | Photoshop | ASP | PHP | 实用技巧 | 进程查询 | 文谷论坛
 Sybase   Oracle   SQL server   Informix   MySQL   Access   VFP   DB2   PostgreSQL   其它数据库
您现在的位置: IT文谷 >> 数据库技术 >> Informix >> 文章正文
Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)2006-3-30 13:54:25Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)2006-3-30 13:54:25Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)
Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)2006-3-30 13:54:25Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)2006-3-30 13:54:25Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)
Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)

Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)2006-3-30 13:54:25Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)2006-3-30 13:54:25Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)

  Informix是一种大型的数据库管理系统,具有先进的技术、性能与可靠性,在全球范围的各种应用中使用十分广泛,
包括政府、金融保险、邮政电信、制造及零售等重要行业或领域。本文根据笔者在SCO Unix/Xenix上使用 Informix-4GL
与Informix-SQL的经验,简要介绍Informix系统维护中的几个较为特殊的问题及其处理方法。 


  表文件的修复 


  Informix的数据库是指由若干张表所构成的集合,其中每一张表对应着两个文件,即数据文件(后缀为.dat)与索引文件
(后缀为.idx)。当系统出现异常、死机、掉电或非正常关闭时,有时会使一些使用中的表文件未能正常关闭而出现毁损,
当系统再次对这些表进行相关操作时,就会报告“不能检索下一条记录”、“不能删除记录”等错误信息。 


  通常,数据文件是很少发生问题的。要判别数据文件是否正常,只需执行select * from 〈table—name〉语句或类
似的语句即可, 但不能使用where、order by等子句,以免利用到索引文件, 目的就是纯粹从数据文件中依次读取数据。
如果数据读取顺利且记录个数正确,表明该文件完好无损;反之,则有问题,通常只能用其数据备份来恢复。 


  如果数据文件正确无误,那么就该检查相应的索引文件。Informix提供有一个实用程序bcheck,专门用来检查与修复
索引文件,即依次比较数据文件与索引文件,倘若不一致,就询问是否删除和重建有问题的索引。bcheck有许多选项可供
选用,其中-n和-y用于对所有的提问都回答“no”或“yes”,让系统自动进行一系列的操作。其语法如下: 


  bcheck [选项] 〈表文件名〉 


  要检查表的索引文件,应先运行bcheck -n命令。如果一切正常, 说明索引没有问题。一旦发现有错误报告(如有多
少个错误数据记录指针、丢失了多少个数据记录指针或索引结点指针等),则再执行bcheck -y 命令即可将其修复。 


  Informix-SQL中的语句check table 〈表名〉与repair table 〈表名〉在运行时分别以选项-n与-y调用bcheck命令,
功能一样,不同的只是使用表名而不是表文件名。 


  如果索引文件没有相应的读写权限, 或者没有正确指明其路径, 在bcheck时会出现“无法打开索引文件”的信息。如
果索引文件被删除或格式被破坏了,也有同样的信息。此时可从数据备份中将对应的索引文件拷贝回来,也可暂时创建一个
字段与索引均与原表完全一致的新表并将其索引文件拷贝给原表,再运行bcheck -y命令修复。 


  表空间的回收 


  Informix对数据表的管理方式较为特殊,当数据量增加时,表所占用的磁盘空间随之增加;但数据记录被删除时,原先
所占用的空间暂不释放,依然由该表所控制,作为日后增加记录时使用。为提高系统的性能及有关各表的查询速度,应及时
回收这种“空闲”的磁盘空间。 


  使用bcheck -s命令可回收索引文件的空间,其中-s 选项的作用是重新估算索引文件的大小。要同时回收数据文件与
索引文件的空间,可让DBMS(数据库管理系统)去做表结构的修改工作,但修改前后的表结构及有关权限要保证一样。可利用
Informix-SQL达此目的,最为保险的做法是先给相应的表增加一个字段,再将该字段删除。也可利用alter table 命令
“欺骗”DBMS去修改表的结构,如alter table aa modify(bb smallint),其中aa表的字段bb的类型本来就是smallint。 


  表的迁移 


  任何一个Informix数据库都有九个系统表,用于记录数据库的有关信息,其中系统表systables(用于描述数据库中的各表)
中的字段dirpath指明各表文件的绝对路径或相对路径。 


  Informix数据库的搜索路径一般由环境变量DBPATH来设定,系统根据DBPATH的正确设定即可找到相应的数据库及其各表。
迁移Informix数据库表时(比如从Unix/Xenix的根文件系统迁移到分离的文件系统/u),只要重新设定DBPATH,通常系统即
可正常运行。如果报告某些表找不到了(实际上这些表文件还在,且有关权限也对),问题就在于systables 表中的dirpath
字段值采用了绝对路径, 此时要用update命令修正其值,最好改用相对路径,即直接改为表文件名。 


  系统查询的优化 


  Informix在执行查询(特别是多表查询)指令前,会利用其所提供的优化器(cost-based optimizer,基于成本的优化器),
依据当时系统所记载的有关各表的相关信息,按照一定的判断法则进行分析并选择出一条最有效率的途径来执行。系统必须掌
握各表的正确数据,才不至于做出错误的选择。但出于系统效率上的考虑,不可能随时修改记录各表最新状况的相关文件,
否则会增加许多额外的输入/输出负担。因此, 应定期执行这种信息的更新操作。 


  在Informix数据库的系统表systables中有一字段nrows,专门用来记录各表的记录个数。优化器在运行法则判断时,
各表的nrows 值具有很高的参考价值。nrows的更新可通过如下命令来完成,即: 


  update statistics [for table 〈table—name〉] 


  其中,方括号[]中的子句是可选的,用于指定表名,以对该表进行更新;否则,将对数据库中的各表进行全部更新。 



 
Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)2006-3-30 13:54:25Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)2006-3-30 13:54:25Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)
  • 上一篇文章:

  • 下一篇文章:
  • 进入论坛讨论

    相关文章
    _disable_logging对于性能的影响
    针对Oracle数据库的优化器详细介绍
    索引与Null值对于Hints及执行计划的影响
    了解 Oracle ADF:入门示例
    DataGuard数据库服务器硬盘故障处理
    用sql比较两个数据库是否一致
    用触发器生成数据库表的数据操作日志
    查询Oracle各组件的版本信息
    Oracle入门基础:绑定变量测试
    Oracle的db_name和instance_name
    一个容易忽视的Oracle数据安全问题
    Oracle时间信息特性
    热门文章最新推荐

    版权与免责声明:
    ① 本网转载其他媒体稿件是为传播更多的信息,此类稿件不代表本网观点,版权归原作者所有,本网不承担此类稿件侵权行为的连带责任。
    ② 在本网BBS上发表言论者,文责自负。
    ③ 如您因版权等问题需要与本网联络,请在30日内联系 。
    Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)2006-3-30 13:54:25Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)2006-3-30 13:54:25Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)
    Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)2006-3-30 13:54:25Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)2006-3-30 13:54:25Informix系统维护技巧谈 (表的修复,空间回收,迁移,查询的优化)

    数据库专题
    人气排行
    普通文章SQL Server数据库的备份与恢
    普通文章从MDF文件恢复Sql Server200
    普通文章SQL中,单引号与&等特殊符号
    普通文章SQL Server定期自动备份
    普通文章通过ODBC连接的SQL SERVER实
    普通文章SQL入门:删除数据
    普通文章sqlldr的用法总结
    普通文章XP下access数据不能更新,数据
    普通文章在SQL Server的存储过程中调
    普通文章SQL Server的有效安装
    最近更新
    推荐文章如何恢复/修复MS SQL数据库的
    普通文章Mysql和phpMyAdmin的设置
    普通文章phpmyadmin设置和常见问题
    普通文章PhpMyAdmin配置示例
    普通文章php+mysql中文乱码的解决
    普通文章phpmyadmin配置
    推荐文章Oracle函数列表速查
    普通文章_disable_logging对于性能的
    普通文章针对Oracle数据库的优化器详
    普通文章索引与Null值对于Hints及执行
    全站热点       
    最新推荐
    关于文谷 | 联系文谷 | 免责声明 | 文谷论坛
    Tel: 0577-65690019      E-mail: ichenjian@gmail.com    MSN:ichenjian@hotmail.com    QQ:2911194
    Copyright © 2004-2008 wengu.com 文谷 All Rights Reserved
    浙ICP备05000327号