INFORMIX日常维护操作规程.docx
《INFORMIX日常维护操作规程.docx》由会员分享,可在线阅读,更多相关《INFORMIX日常维护操作规程.docx(16页珍藏版)》请在冰豆网上搜索。
![INFORMIX日常维护操作规程.docx](https://file1.bdocx.com/fileroot1/2023-1/24/82b5a876-d372-467d-ab4a-8c0b9d4b2a82/82b5a876-d372-467d-ab4a-8c0b9d4b2a821.gif)
INFORMIX日常维护操作规程
日常维护操作规程
一保存好INFORMIX的系统信息
请保存好INFORMIX如下五类信息:
1.ONCONFIG文件;
2.INFORMIX用户的.profile文件
3.INFORMIX逻辑日志信息(可用onstat–l获得)
4.所有Dbspace以及每个Dbspace的所有Chunk的信息:
1).所有Dbspace的名字;
2).每个Dbspace的所有Chunk的path,offset,size.
INFORMIX极力推荐Chunk的Path使用Link,这使得真正存放数据的设备或文件具有重新定位的可能性。
在使用Link情况下,请保存每个Link所指向的设备或文件的信息。
可用:
ls–l列出各个Link所指向的设备或文件。
用”onstat–d>file“可在file中保存所有Dbspace以及每个Dbspace的所有Chunk的信息(size是以page为单位,而建立Chunk时是以K为单位),但请注意,在使用Link情况下,onstat–d不含有每个Link所指向的设备或文件的信息。
5.所有Database以及所含的Table的信息。
可使用dbschema获得该信息:
例:
dbschema-dstores7–ss
其中的–ss指定把lockmodes,andextentsizes信息也包含进来;
如上信息为INFORMIX系统的恢复提供了条件。
下面例举三种典型情况:
典型情况1:
存放某个dbspace的设备或文件坏掉了。
这时候只要将该dbspace的Path重新Link到好的设备或文件上,然后用ontape把数据及逻辑日志备份恢复上去就可以了。
如果Chunk的Path用的是设备或文件处理起来就复杂的多。
典型情况2:
INFORMIX的运行代码坏掉了但数据完好无损。
这时的处理步骤为:
1).从新安装INFORMIXIDS;
2).把保存的INFORMIX用户的.profile文件copy到informixuserhome下,
把保存的ONCONFIG文件copy到$INFORMIXDIR/etc下,并把环境变量
ONCONFIG指向该ONCONFIG文件;
3).重新启动IDS即可(注意:
在启动IDS时,如果使用oninit千万不能加
-iy参数,这样一来反而会破坏原来完好的数据)。
典型情况3:
INFORMIX的运行代码和数据都坏掉了。
这时的处理步骤为:
1).从新安装INFORMIXIDS;
2).把保存的INFORMIX用户的.profile文件copy到informixuserhome下,
把保存的ONCONFIG文件copy到$INFORMIXDIR/etc下,并把环境变量
ONCONFIG指向该ONCONFIG文件;
这里要注意LOGFILES,LOGSIZE这俩个参数,要改小到rootdbs能放下
所有指定的逻辑日志;
3).根据保存的所有Dbspace以及每个Dbspace的所有Chunk的信息重建
除rootdbs以外的所有Dbspace(rootdbs的信息含在ONCONFIG文件中).
这里要注意在重建Dbspace时,每一个Dbspace和每一个Chunk要严格按
照原来onstat–d的信息标出的顺序来建(onstat–d信息中的Dbspace的
“number“与Chunk的“chk/dbs”):
4).根据保存的INFORMIX逻辑日志信息重建逻辑日志;
5).用ontape把数据及逻辑日志备份恢复上去。
二监控数据空间以及逻辑日志空间的使用情况
用”onstat–d”来监控数据空间的使用情况。
主要是查看有没有足够的空间以适于数据
插入的需求,如下图所示:
如果空间不足,则需要加Chunk(加Chunk的命令在下面叙述)。
用onstat–l来监控逻辑日志的使用情况。
如下图所示:
当标有“U”(但后不跟“B”)和标有“C”的log的个数多于50%时,请备份逻辑日
志。
三数据的备份
请经常备份数据。
建议每天做一次零级备份。
在每次系统做过调整后尤其是做过重大调整
后,做一次零级备份。
监控逻辑日志的使用情况,根据其使用情况,及时做备份。
数据的备份可用两种方法:
1.ontape
2.dbexport
这两种方法的区别是
1).ontape产生的是二进制流的数据,只能用于本系统的恢复或是二进制兼容的系统上的恢复;dbexport产生的是ASCII数据,可以用于非二进制兼容的系统上的恢复;
2).ontape含有IDS的系统信息,而dbexport不含有IDS的系统信息,只含有数据库,表及数据信息;
3).在数据量较大的情况下,ontape比dbimport恢复较快;
4).dbexport出来的文件的大小受到OS文件的大小的限制。
32位的情况下,不能大于2G。
1ontape-s:
对数据的备份
按提示输入本次备份的级数(0级,1级,2级)
0级备份是整个ONLINE的备份
1级备份是在0级基础上所有修改部分的内容的备份
2级备份是在0级或1级的基础上所有修改部分的内容的备份
2ontape-a:
对逻辑日志的备份(自动方式)
ontape-c:
对逻辑日志的备份((连续方式)
3ontape-r:
对备份的恢复
按提示依次恢复数据备份(0级,1级,2级)和逻辑日志备份
四数据的卸出与装载
1卸出
dbexport用于将整个数据库卸出至一个ascii文件
dbexport-tdevice-bblocksize-stapesizedatabase
-odirectory
onunload用于将数据库以二进制格式卸出至磁带
onunload-tdevice-bblocksize-stapesizedatabase
2装载
dbimport用于将一ascii文件装入一个数据库
dbimport-tdevice-bblocksize-stapesizedatabase
-idirectory
dbload用于将一个或多个ascii文件装入一个或多个已存在的表
dbload-ddatabase-ccommandfile
onload用于装载以onunload命令卸出的数据
onloaddatabase-tdevice-bblocksize-stapesize
*dbexport的一个常见错误的处理方法:
如果表中的数据含有非法字符,当dbexport在卸出该表时会往往断掉或挂起,可用如下方法处理:
1)用“dbschema-d数据库名-t表名”卸出该表的定义;
2)用上面卸出该表的定义创建一个新表;
3)确认该新表与原表完全一致(包括index,trigger,lockmode等等)
4)用
“INSERTINTO新表名SELECT*FROM原表名“
把数据倒到新表中;
5)确认该新表数据的与原表的数据完全一致;
6)DROP原表;
7)RENAMETABLE新表名TO原表名;
8)再启动dbexport。
五INFORMIX性能的调整
INFORMIX的性能基本取决于应用程序的结构(作用70%)以及INFORMIXIDS的参数设置
(作用30%)。
在日常维护中请注意一下三点:
1.经常UpdatingStatistics:
UPDATESTATISTICS[LOW|MEDIUM|HIGH]
建议使用参数“hinh”,这会使查询效率大大提高。
上面的语句是针对整个
Database的,在数据量大时,做的时间较长。
另外的一个选择是针对重点的Table做UPDATESTATISTICS:
UPDATESTATISTICS[LOW|MEDIUM|HIGH]
FORTABLE[tabname];
2.在INFORMIXIDSonline一段时间后,请offline然后再online一次。
这样一来可回收吊死的死进程所占用的内存,使得IDS的性能提高。
3.对于经常做为查询条件的列,如果其上没有Index,请为其建Index。
六对用户的监控
1.使用onstat–u来查看用户线程的大致情况,其中包括系统设定的用户数,当前的
用户数和本次IDSonline以来曾经达到的最多的用户数。
2.使用onstat–gses查看用户线程的情况,如下图所示:
sessionidThesessionidofthesession.Thisidisusedinother
onstatoptions.
loginTheloginnameoftheclientapplicationprocess.
ttyThettyoftheclientapplicationprocess.
pidTheprocessidoftheclientapplicationprocess.
hostnameThehostnameofthemachinerunningtheclient
applicationprocess.
#RSAMthreadsThenumberofthreadsassociatedwiththesession.
Normally,onlyonethreadisallocatedpersession,unless
asortorindexbuildisoccurring.
totalmemoryMemoryallocatedwithinserversharedmemoryforthe
session.
usedmemoryMemoryusedwithinserversharedmemoryforthe
session.
3.使用onstat–gsessession_id查看某个用户线程的情况,如下图所示:
tidThethreadid
nameThethreadname
rstcbTheaddressofthersamtaskcontrolblockforthethread.
FlagsStatusinformationforthethread.
Position1
SWaitingonamutex
YWaitingonacondition
LWaitingonalock
BWaitingonabuffer
CWaitingonacheckpoint
XLongtransactioncleanup
GWaitingonthelogbufferwrite
TWaitingonatransaction
Position2
*TransactionactivewhileI/Ofailureoccurred(relatedto
archiveactivities)
Position3
AArchiving
BBeginworkhasbeenlogged
PCoordinatororSubordinateprepared(distributed
transactions)
XXAprepared
CCommitting
RRollingbackorrolledback
HHeuristicallyaborting
Position4
PPrimarythreadforasession
Position5
RInreadrsamcall
XProcessincriticalsection
Position7
MSpecialmonitor
DSpecialdaemonthread
CCleanupthread
FSpecialbufferflusherthread(pagecleaner)
BSpecialbtreecleanerthread
curstkSizeofthestackforthisthread.
statusCurrentstatusofthisthread.
Name,Free,UsedTheinformationinthesecolumnsareabreakdownofthe
exactusageofthepoolslistedforthesession.
SessionIdThesessionidoftheuserexecutingtheSQLstatement.
Youcanfindtheusernamebyexecutingtheonstat-gses
commandandfindingthecorrespondingsessionid.
StmttypeThestatementtypesuchasSELECT,UPDATE,
DELETE,INSERT.
CurrentDatabaseThenameofthecurrentdatabaseforthesession.
IsolationlevelThecurrentisolationlevel(CR=committedread,
RR=repeatableread,CS=cursorstability,
DR=dirtyread,NL=nologging).
LockmodeThecurrentlockmode(EitherNotWaitorWaitx,where
x=numberofsecondstowait).
SQLERRThelastSQLerror.
ISAMERRThelastISAMerror.
F.E.VersTheInformixversionoftheclientapplicationprocess.
4.可用onmode-zsess-id来杀掉某个用户线程。
七对IFNORMIXIDS内存的监控
INFORMIXIDS的内存分成下图的三部分:
1.使用onstat–gseg来查看这三大部分的状态:
onstat-gseg
SegmentSummary:
(residentsegmentsarenotlocked)
idkeyaddrsizeovhdclassblkusedblkfree
321381451777800000987136372R1174
3313814517788f10004096000252V333167
341381451779cd90001048576204M10622
其中的MessagePortion是用于Client进程与Server的连接选用ShareMemory
方式时的通讯区,系统自己控制。
ResidentPortion是Server用于存放数据和锁的区域。
它的大小取决于BUFFERS和LOCKS这俩个参数大小的设置,在物理内存的60–70%的上限之下原则上越大越好。
这里重点要监控是VirtualPortion,既上面的V段。
V段是Client线程所占用的
的内存,它的大小完全取决于当前连接上来的应用的个数和类型。
由于受到OS参数的限制,V段的个数不能过多,V当段的个数过多时,请调大SHMVIRTSIZE和SHMADD这两个参数。
2.用onstat–gmem来查看各个线程,进程的内存使用情况:
请重点注意那些“name”为数字且“totalsize”很大的用户线程,用
onstat–gsessession号
(这里session号既是onstat–gmem中的“name”)
来查看该线程正在做什么。
3.用onmode–F回收不用的内存。
八对IFNORMIXIDS锁的监控
可用onstat–k来监控锁的使用状态。
INFORMIXIDS的LOCK是根据用户的线程的需要自动加载和解除的。
在日常的维护中对LOCK
产生关注往往是由于某个表被某个用户的线程锁住而别用户的线程不能存取该表。
这时可用
onstat–u与onstat–k来查出谁锁住了该表。
例:
这个例子是说用户joeg的程序由于在等待(wait)要存取的表老是被锁在那走不下去了,那么是谁锁了这个表呢?
通过上面按箭头的查找发现是lizg的程序锁了该表,也许是lizg
做Update做了一半既没有commit也没有rollback就去喝茶啦。
这时可用
onstat–gses23来看看lizg到底在干什么,通知lizg下来就行了。
九用于查询机数据同步的备份操作规程
备份要求:
每日
备份方法:
dbshema+shell(unload)
dbschema-d数据库名>db.sql---------把数据库中的所有表的定义放到db.sql文件中;
unloadto文件名select*from表名----把表中的数据倒到文件中;
(unload的shell范例请见后面的附件)
查询机上的数据恢复要求:
每日
查询机上的数据恢复方法:
dbshema+shell(load)
dbaccess数据库名db.sql------在数据库中生成在上步中所倒出的所有表的定义;
loadfrom文件名insertinto表名-----把文件中的数据倒到表中
(load的shell范例请见后面的附件)
十系统的监控方法的汇总
1.总体(GENERAL)性能监测
命令:
onstat–p
说明:
输出中的两个%cache,第一个是读的命中率,第二个是写的命中率,这两个值应分别在90%,80%以上,ovlock、ovuserthread、ovbuff这三项一定要是0,否则相关的资源不够。
*注:
如果数据库都是UNBUFFER的,则上述的两个%cache的值低不一定是性能低。
2.onstat–m
此命令报告数据库执行中的日志情况,要经常使用此命令观测数据库有无出错信息,并注意检查点的执行时间,如果执行时间持续在10秒以上,则需要进行相应的调整以减少检查点持续的时间。
3.onstat–D
观测数据库各dbspace的读写情况,对于使用磁盘阵列(采用RAID1+0或RAID5)的用户,此命令没有什么影响,但对于使用多个硬盘来配置数据库的用户来说,此项非常重要,根据此项的输出,调整各dbspace在硬盘上的分布,以求各硬盘的I/O大致相等,从而使的系统的I/O性能最优化。
4.检查数据的完整性
Checkreservepages-------------oncheck-cr
Checkextents-------------------oncheck-ce
Checksystemcatalogtables-----oncheck-ccdatabase_name
Checkdata----------------------oncheck-cDdatabase_name
Checkindexes-------------------oncheck-cIdatabase_name
5.查看系统状态
onstat-查看当前ONLINE状态
-l查看日志状态
-u查看用户线索
-m查看messagelog
-p查看profile
-z清空profile
-d查看DBspaces和Chunk
-F查看磁盘的读写方式
-rn每隔n秒重复一次查看操作
-gath查看所有的线索
-gglo查看多线索的全局信息
-gseg查看内存segment状态
-gmgm查看内存管理信息
-gioq查看磁盘I/O队列
-gses查看session信息
-gsql查看sql信息
6.修改系统参数
onmonitor-->Parameters
请注意使用初始化选项initialize!
7日志管理
日志管理中应常用onmonitor-->Status或onstat-l查看逻辑日志状态及时做逻
辑日志备份
$onparams-a-dDBspace增加一个逻辑日志
-d-lLogid删除一个逻辑日志
-p-ssize-dDBspace修改物理日志的大小和位置
8改变当前的ONLINE
$onmode-ky:
on-line-->off-line
$oninit:
off-line-->on-line
$oninit-s:
off-line-->quiescent
$onmode-m:
quiescent-->on-line
$onmode-u:
on-line-->quiescent,immediatelyshutdown
-s:
on-line-->quiescent,gracefulshutdown
$onmode-k:
on-line-->quiescent
9增加dbspace和chunk:
以informix用户注册,执行onmonitor
-->Dbspace-->Create(增加dbspace)
-->Dbspace-->Add_chunk(增加chunk)
10设置磁带机设备
onmonitor-->