Informi培训教材之系统维护技巧谈.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Informix 培训教材整理之系统维护技巧谈 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,基于成本的优化器),依据当时系统所记载的有关各表的相关信息,按照一定的判断法则进行分析并选

文档评论(0)

mph + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体上海谭台科技有限公司
IP属地湖北
统一社会信用代码/组织机构代码
91310115MA7CY11Y3K

1亿VIP精品文档

相关文档