2008年(239)
分类: DB2/Informix
2008-06-17 22:13:07
1. 系统的启动和关闭
(1)启动实例
$ oninit -v
(2)关闭实例
$ onmode –ky
2. 系统运行日志文件的检查
INFORMIX系统的运行日志文件,确省为online.log,存放在$INFORMIXDIR目录下。可以通过配置参数MSGPATH,设定它的具体名字和存放位置。这个运行日志文件,需要每天检查、定期备份并手工清除其内容。另外,事务或者系统故障,会生成af.xxx文件,存放在配置参数DUMDIR指定目录下。可以通过查看此文件,获取故障发生的原因。
配置参数DUMDIR的缺省值为:/tmp。在此目录下,除af.xxx文件之外,还会有以下类型文件:core、gcore、shmem.xxx、VP.servername.nnC、buildsmi.xxx、.inf.servername、oncatlgr.out.pidnum。这些文件,有的是系统运行过程中产生的临时文件,有的是事务或者系统故障发生时内存映像的导出文件,需要定期备份并手工清除。
3. 系统运行状况检查
管理员要随时关注数据库系统的运行。对INFORMIX系统,管理员可以从实例和数据库状态、用户连接、磁盘空间使用等多个方面,检查系统的运行状况。
显示当前系统的版本号和补丁号:
$ onstat -
显示当前操作的实例名称:
$ env | grep INFORMIXSERVER
显示当前实例运行状态:
$ onstat –
$ ps -ef | grep {user_name}
$ ipcs -a | grep {user_name}
显示表空间、大块的定义和空间使用:
$ onstat –d
显示逻辑日志的定义、空间使用、状态:
$ onstat –l
显示系统中的当前用户连接:
$ onstat –u
显示系统中锁的使用:
$ onstat –k
显示系统配置:
$ onstat –c
显示网络配置:
$ vi sqlhosts
显示操作系统环境设置:
$ env或者vi .profile
查看系统内存使用:
$ onstat -
查看系统总体性能状况:
$ onstat -p
4. 系统性能状况分析
管理员可以根据需要,从CPU、内存、I/O等方面,收集INFORMIX数据库系统的运行数据,以确定系统性能瓶颈。
(1)CPU性能监测
$ onstat -g ath
$ onstat -g glo
$ onstat -g ioq
$ onstat -g rea
(2)内存性能监测
$ onstat -g seg
$ onstat -p
$ onstat -B
(3)I/O性能监测
$ onstat -F
$ onstat -g ioq
$ onstat -p
$ onstat -D
$ onstat -t
5. 系统配置的改变
INFORMIX的系统配置和网络配置,均存放在$INFORMIXDIR/etc目录下,环境变量ONCONFIG、SQLHOSTS分别设定了这两个配置文件的名字。如果没有设定SQLHOSTS环境变量,则网络配置文件缺省为:sqlhosts。
要改变系统和网络配置,可以直接使用操作系统的编辑命令进行修改。
6. 数据库日志维护
INFORMIX系统只使用归档日志模式,有两种日志文件:逻辑日志和物理日志。物理日志不需要归档保存。
所有的逻辑日志文件再次被使用前,必须被归档,可以采用两种归档方式:
(1)连续归档
$ ontape –c
(2)自动归档
$ ontape –a
在实际操作时,可以根据需要,设置逻辑日志备份设备参数:LTAPEDEV = /dev/null,系统会将写满的逻辑日志文件标记为已归档,尽管实际的归档操作并没有被执行。
7. 备份和恢复处理
管理员按照规划、定期地备份数据库。备份信息越完整,在系统故障时就越容易恢复。对INFORMIX系统,除数据库备份之外,其备份还可以包括:运行环境备份、数据库对象的SQL语句定义备份。
(1)实例运行环境备份
对实例的运行环境,需要备份:系统配置、网络配置、磁盘空间的使用和操作系统环境设置。
$ cp $INFORMIXDIR/etc/$ONCONFIG > {output_file}
$ cp $INFORMIXDIR/etc/$SQLHOSTS > {output_file}
$ onstat – d > {output_file}
$ cp .profile > {output_file}
(2)用户创建数据库对象的SQL语句定义备份
在INFORMIX系统中,使用dbschema工具,可以基于整个数据库、也可以基于某个数据库对象,将有关的数据字典信息存放在文本文件中。
$ dbschema –d {database_name}
$ dbschema –d {database_name} –t {table_name} > {output_file}
(3)数据库备份
数据库备份需要在实例启动后进行。可以在备份前,检查数据库结构的完整性。
① 在备份前,检查数据库结构是否正确。
$ oncheck -cr
$ oncheck -ce
$ oncheck -cc {database_name}
$ oncheck -cD {database_name}
$ oncheck -cI {database_name}
$ oncheck -cs {database_name}
$ oncheck -cS {database_name}
② 根据需要,选用不同的备份方式。
数据库系统的脱机备份:
$ onmode –s
$ ontape –s
数据库系统的联机备份:
$ ontape -s
(4)数据库恢复
管理员在恢复系统前,可以检查可用的系统备份,然后结合系统故障,决定系统恢复方式。
① 显示可用的备份
$ oncheck -pr
② 管理员根据需要,选用适当的恢复方式。
整个数据库系统的恢复:
$ ontape -r
单个或者多个表空间的恢复:
$ ontape –r –D {tablespace_name}
8. 数据库对象统计信息维护
确定何时、对那些表和索引执行何种程度的统计信息收集,是管理员的工作职责。在INFORMIX系统中,如果重新生成了统计信息,就需要手工、重新生成存储过程、函数的执行计划。所有这些操作,需要在在dbaccess工具中执行。
(1)管理员根据需要,对表、索引进行不同程度的统计信息收集。
对表、表上索引、表的子表以及它们中的所有字段,进行信息统计:
update statistics for table {table_name}
对表以及表中的所有字段,进行信息统计:
update statistics for table only {table_name}
对表以及指定字段,进行信息统计:
update statistics for table {table_name} ({clumne_name},...)
对表的指定字段进行数值分布统计:
update statistics for table {table_name} ({clumne_name},...) drop distributions
(2)在统计信息收集完成后,重新生成数据字典中存储过程、函数的执行计划。
update statistics for routine
9. 数据磁盘存放的整理
在对数据的磁盘空间进行整理之前,最好能够确定那些表、索引需要这些操作。这样可以做到有的放矢,避免浪费系统资源。在INFORMIX系统中可以查询数据字典表,也可以使用下列命令,检查表、索引的空间使用。
显示大块、扩充的空间使用信息:
oncheck -pe
显示表、索引的空间使用:
oncheck -pT {database_name}:{table_name}
对需要重建的表和索引,INFORMIX系统没有提供专门的工具,我们可以按照第9.3.11一节所讨论方法执行。
10. 数据的导入和导出
除SQL语句之外,INFORMIX系统提供dbexport和dbimport、load和unload、onload和onunload工具,进行数据的导入和导出。
(1)dbexport工具可以将整个数据库的结构和数据导出到指定目录下的文本文件中,可以使用dbimport创建数据库并导入数据。
将整个数据库的结构和数据导出:
$ dbexport -o {output_path} {database_name}
创建数据库并导入数据:
$ dbimport -i {input_path} {database_name}
(2)load和unload命令需要在dbaccess工具中使用。通过SQL语句将要导出数据存放在文本文件中。
将要导出数据存放到文本文件中:
unload to '{output_file}' {select查询语句}
将数据装入指定的表中:
load from '{input_file}' insert into {table_name}
(3)onload和onunload工具使用二进制格式,其功能类似dbexport和dbimport工具。onunload工具可以将整个数据库或者单个表的结构和数据导出到指定二进制文件中,可以使用onload创建整个数据库或者单个表,然后装入数据。导出数据时,要事先手工创建0字节的输出文件。
将整个数据库的结构和数据导出:
$ onunload -t {output_file} {database_name}
将指定表的结构和数据导出:
$ onunload -t {output_file} {database_name}:{table_name}
创建数据库并导入数据:
$ dbimport -t {input_file} {database_name}
创建表并导入数据:
$ dbimport -t {input_file} {database_name}:{table_name}