informix双机

  • 格式:docx
  • 大小:44.20 KB
  • 文档页数:16

Informix数据库疑难问题解答目录1、数据库日志模式 (3)No Logging 没有日志 (3)Unbuffered Logging 非缓冲日志 (3)Buffered Logging 缓冲日志 (4)Unbuffered Logging, Mode ANSI ANSI模式 (4)如何改变日志模式 (4)用onmonitor改变日志模式 (4)用ontpae改变日志模式 (4)2、如何在HDR系统中修改参数配子文件(onconfig)? (5)3、在select的时候,where条件是不是有限制? (6)4、关于INFORMIX的运行负荷进行度量的问题 (6)5、informix数据库主备切换的解决方法 (7)问题描述 (7)问题分析 (7)解决方案1(首推方案) (8)解决方案2 (8)故障解决 (9)6、数据库(OnLine)的启动和关闭 (9)7、数据库(OnLine)的状态查询 (10)8、数据库(OnLine)的空间管理 (11)9、数据库(OnLine)的日志管理 (12)数据库日志方式 (12)可使用ontape命令修改数据库日志方式 (12)物理日志的管理 (12)逻辑日志的管理 (13)10、如何查看informix的错误号 (13)11、数据库系统日常监测 (14)1查看锁的信息 (14)2查看物理和逻辑日志状态 (14)3查看一些统计信息 (14)4查看数据库系统占用共享内存的情况 (14)5 查看各chunk文件的读写量和读写率 (14)6 数据库目录结构检查 (14)7 数据库索引结构检查 (14)8 数据库数据结构检查 (15)9 查看数据库锁方法 (15)10查找造成长事务的SQL (15)11检查大表和对大表的维护 (16)1、数据库日志模式问:一般informix做了双机,那么scp的数据库log用什么方式比较好啊?一种是直接用log,一种用buffer log。

答:建议用unbuffered logging的方式,(你们称之为直接用log),可以用onmonitor来确认数据库的日志模式。

事实上不论是双机还是单机,informix都推荐使用unbuffered logging,这样可以保证数据库的可用性。

其他相关知识:•-N No Logging 没有日志•-U Unbuffered Logging 非缓冲日志•-B Buffered Logging 缓冲日志•-A Unbuffered Logging, Mode ANSI ANSI模式No Logging 没有日志----“没有日志”模式只向逻辑日志写很少的信息,它只记录执行的DDL语句,这些语句影响到的行并不被写入日志中,只记录命令本身以及返回的代码。

一个不带日志的数据库环境可以具有很高的吞吐率,但在发生严重的实例失败时没有能力重建对数据库的修改。

写到磁盘上的修改才是可以得到的全部信息。

对实例中不带日志数据库的恢复只能到最后一次创建的实例备份中进行。

Unbuffered Logging 非缓冲日志----使用“非缓冲日志”模式的数据库环境只要事务提交,就会将包含该事务信息的物理日志和逻辑日志缓冲区刷新到磁盘上。

----使用非缓冲日志,即使出现严重的实例错误,数据完整性和一致性也可以在事务级得到保证。

但是因为每一次提交事务都会导致缓冲区被刷新到磁盘上,所以增加了磁盘I/O。

另外,因为刷新是按照当前事务的进度将整个缓冲区内容都写到逻辑日志中,所以逻辑日志的页面中会有很多没有用的数据。

日志填充得很快,但其中包含的“真正”数据却比缓冲日志数据库环境少得多。

Buffered Logging 缓冲日志----使用“缓冲日志”模式的数据库环境将在逻辑日志和物理日志缓冲区中保留这些事务信息,直到该缓冲区填满,或者发生检查点操作,或者是当事务还没有被写往日志之前关闭了产生该事务的用户连接。

----有这样一种情况可以强迫缓冲日志数据库写出它的事务信息:因为实例中只有一组逻辑日志缓冲区,当实例中的一个非缓冲日志数据库提交一个事务时,缓冲日志信息会随着非缓冲日志信息一起被写出到磁盘上。

----在“缓冲日志”数据库环境中,每个事务所造成的磁盘I/O大大降低,因此实例会运行得较快,但是因为事务信息存储在共享内存中,严重的实例错误就会很危险,当实例的共享内存被释放时,那些还没有写到磁盘上的事务信息就都丢失了。

*非缓冲日志模式和缓冲日志模式的操作方式完全相同,其不同点在于何时将日志记录写到磁盘上,Unbuffered Logging, Mode ANSI ANSI模式---- ANSI模式的操作与非缓冲日志一样,但它还强制与ANSI事务处理方式一致。

ANSI 一致性包括这样一些特点和规则,如对引用表的唯一属主命名,表级权限的不同缺省值,游标读和更新能力的不同,以及character和decimal数据类型对数据类型越界或定义语句如何反应的不同。

*OnLine Dymanic Server在ANSI数据库环境中并不严格强制遵从所有的ANSI标准,如果你执行一条非ANSI的SQL语句,实例会产生一条警告信息,但仍然往下处理。

除非操作环境要求使用ANSI标准,否则使用ANSI模式不会得到任何好处。

如何改变日志模式用onmonitor改变日志模式onmonitor --- Logical-Logs --- Database用ontpae改变日志模式ontape –s –L 0 –N cem2 将数据库”cem2”从-U,-B,-A其中一种模式改变到-N模式,创建0级备份ontape –s –L 0 –U cem2 将数据库”cem2”从-N改变到-U模式,创建0级备份ontape –s –L 0 –B cem2 将数据库”cem2”从-N改变到-B模式,创建0级备份ontape –s –L 0 –A cem2 将数据库”cem2”从-N改变到-A模式,创建0级备份*ontape工具在-U,-B,-A三种模式中任何一种改变到另一种不需创建系统备份;要完全从不带日志模式改成带日志模式,或者反过来,需要创建一个0级备份;用ondblog改变日志模式:ondblog工具只是设置一个标志,表示在下次0级备份之后将数据库日志模式改成什么。

ondblog工具的选项如下:nolog 将数据库改为不带日志模式unbuf 非缓冲日志buf 缓冲日志ansi ANSI日志模式cancel 取消前面作出的改变日志模式的请求附加选项:1.用空格相隔的一些数据库名,这些数据库的日志模式将被改变。

2.–f选项跟一个文件名,该文件中包含要改变日志模式的数据库名,这些数据库名在文件中单独列出,一个占一行。

*如果没有–f加文件名,也没有列出用空格相隔的数据库名,ondblog工具在下一次0级备份之后将把实例中所有数据库都改成所要求的日志模式。

*不管是使用ontape工具,还是使用ondblog 和ontape的组合改变数据库的日志模式,该实例都不必处于quiescent状态,但是在试图改变日志模式的时候,不能有任何活动用户线索连接在该实例上。

否则的话,就会产生一个”-107”号错误。

*如果ontape命令已经执行来改变数据库的日志模式,而中途又将其中断,则就用户连接来说,该数据库仍然是关闭的,直到创建一个完全的实例备份为止,不管是否要改变日志模式。

2、如何在HDR系统中修改参数配子文件(onconfig)?首先把主从数据库都宕下来然后分别修改,在重新启动数据库。

注意:1)HDR中,主从数据库的参数一定要一致,否则就会出现启动或者同步等各种问题,这个问题已经在安徽工程中得到证实。

2)如果数据库已经因为修改参数出现问题,那么需要将以前的参数恢复过来,然后重新启动数据库,有时候需要重建HDR关系,根据具体情况看。

3、在select的时候,where条件是不是有限制?在select的时候,where条件是不是有限制阿,就是条件不能大于18个?我这里报了这个错误Identifier too long - maximum length is 18?答:用where条件时一般没有什么限制,您说的这个报错是指对象名字所用的字符长度超出了限制,象索引名、表名、列名和数据库名等等,它们的识别名在7.31的版本里不得超过18个字符,在9版本的数据库里面已经扩大到128字符了。

4、关于INFORMIX的运行负荷进行度量的问题问:INFORMIX中有没有一些检查数值,可以用来对INFORMIX的运行负荷进行度量,尤其是数据的吞吐量和响应时间。

答:关于性能的问题,有下面的方法可以试试看,有什么问题请反馈,希望把一些监控的信息放在反馈的附件中,便于分析问题,谢谢。

常用的监控informix 的命令有:onstat -g gloonstat -g iofonstat -g iov常用的监控操作系统的命令有:sar -dsar -usar -qonstat的数据必须取一个时段的差值才有意义。

在系统较忙时执行之。

比如取100秒进行分析,那么onstat -g glo ;sleep 100;onstat -g gloonstat -p;sleep 100;onstat -p然后将前后两组参数对应相减,得到过去100系统使用情况。

比如:usercpu参数(用户使用cpu的时间,也就是cpu在过去100秒内共为用户提供服务的时间和)假设差值为75,syscpu=20那么这意味着说明系统比较繁忙。

相反如果usercpu=20,syscpu=0.79,说明系统就相对轻松多了。

5、informix数据库主备切换的解决方法问题描述根据经验丰富的工程师多次实践,发现,在某些informix数据库版本的HDR结构中存在如下问题:在主机数据库由于某些原因(宕机、关闭等)需要切换到原有的从机数据库的时候,原从机数据库变成主机数据库(Online-PRI),同时使用onstat –l的时候可以看到当前主机数据库中的一个逻辑日志状态变为“U----------”,如下图所示:address number flags uniqid begin size used %used 2057480a0 1 U-B---- 14332 3061dd 25000 25000 100.00 2057480bc 2 U---C-L 14333 30c385 25000 16115 64.46 2057480d8 3 U-B---- 14316 31252d 25000 25000 100.00 2057480f4 4 U-B---- 14317 3186d5 25000 25000 100.00 205748110 5 U-B---- 14318 31e87d 25000 25000 100.00 20574812c 6 U-B---- 14319 324a25 25000 25000 100.00 205748148 7 U-B---- 14320 32abcd 25000 25000 100.00 205748164 8 U-B---- 14321 330d75 25000 25000 100.00 205748180 9 U-B---- 14322 336f1d 25000 25000 100.00 20574819c 10 U-B---- 14323 33d0c5 25000 25000 100.00 2057481b8 11 U-B---- 14324 34326d 25000 25000 100.00 2057481d4 12 U-B---- 14325 349415 25000 25000 100.00 2057481f0 13 U-B---- 14326 34f5bd 25000 25000 100.00 20574820c 14 U-B---- 14327 36de05 25000 25000 100.00 205748228 15 U-B---- 14328 361ab5 25000 25000 100.00 205748244 16 U-B---- 14329 300035 25000 25000 100.00 205748260 17 U------ 14330 355765 25000 1 0.00 20574827c 18 U-B---- 14331 35b90d 25000 25000 100.00问题分析该问题已经经informix售后技术支持确认并非informix的bug,而是在设计informix 数据库时将onconfig文件的Ltapedev设置的参数设置为/dev/null,即不起动备份逻辑日志的功能的问题。