-nd
I
n
f
p>
o
r
m
i
x
数
据
库
手
册
上海欣方智能系统有限公司
[ Informix
数据库手册
]
版权声明
本书版权属欣方智能系统有限公司。任何单位或个人未经本公
司
书面许可,不得将本书的部分或全部内容进行任何形式的节
录、增删、印刷、复制、翻译
,或以任何形式进行传播。
版权所有,侵权必究。
The copyright of this book belongs to
CINtel Intelligent Network Co.,Ltd. No part of
this
book may be extracted, added,
deleted, pressed, copied, translated or transmited
in any form or
by any means, without
express written permission from CINtel Intelligent
Network System .
Copyright?
by CINtel Intelligent Network System
Co.,Ltd.
共
74
页
第
1
页
[ Informix
数据库手册
]
目
录
1
.
基础知识和概念
.
< br>............................................... .................................................. .............................4
1.1
I
NFORMIX
动态服务器的基本术语
.................
..................................................
...................................4
1.1.1 chunk
.
....
..................................................
..................................................
....................................4
1.1.2
dbspace
数据库空间
.
..........................................
..................................................
........................4
1.1.3 page
数据页
p>
.
.............................
..................................................
..................................................
4
1.1.4 tblspace ...........
..................................................
..................................................
..........................4
1.1.5 extent
.
...
..................................................
..................................................
.....................................4
1.1.6
物理日志
.......
..................................................
..................................................
............................5
1.1.7
逻辑日志
.......
..................................................
..................................................
............................5
1.2
常用的数据库概念基础
...
..................................................
..................................................
..............5
1.2.1
数据库
(Database)
.
p>
.........................................
..................................................
.............................5
1.2.2
数据表
(Table)
.
...........................
..................................................
.................................................5
1.2.3
索引
(Index)
.......
..................................................
..................................................
........................5
1.2.4
视图
(View) ...
..................................................
..................................................
.............................6
1.2.5
查询
(Query) ..
..................................................
..................................................
............................6
1.2.6
存储过程
(Procedure) .....
..................................................
..................................................
..........6
1.2.7
触发器
(Tigger)
..................................................
..................................................
.........................7
1.2.8
事务
Transaction ..............
..................................................
..................................................
........7
1.2.9
数据的完整性控制
.
..............................
..................................................
......................................7
1.2.10
并发控制
.
.................................
..................................................
.................................................8
2
.
数据库的安装与配置
.
.............................................
..................................................
.......................9
2.1
单机数据库的安装
.....
..................................................
..................................................
....................9
2.1.1
简介
.........................
..................................................
..................................................
.................9
2.1.2
准备
Informix
所需的硬盘空间
.........................................
..................................................
........9
2.1.3
创建
informix
组和用户
(
开始
)
.................
..................................................
................................
1
0
2.1.4
安装
informix<
/p>
产品
..........................
..................................................
.........................................
1
1
2.1.5
修改内核参数
(
一定要小心
) .........................
..................................................
...........................
1
2
2.1.6
修改
chunk
的属性
............................
..................................................
.......................................
1
3
2.1.7
修改
sqlhosts<
/p>
文件
...............
..................................................
..................................................
...
1
4
2.1.8
修改
onconfig<
/p>
文件
.
...
..................................................
..................................................
.............
1
5
2.1.9
初始化
OnLine
p>
(基本成功)
.
..................................................
.................................................
2
1
2.1.10
创建其他
dbspace
.
...........................................
..................................................
.......................
2
1
2.1.11
将逻辑日志移到
log
dbs
(别忘了做)
..................
..................................................
...............
2
2
2.1.12
检查
ESQL/C
p>
是否安装成功
.
..................................................
.................................................
2
3
2.1.13
修改
Client
p>
的
login
script(
成功
) .................
..................................................
..........................
2
3
2.2
在二台机器上搭建
INFORMIX
HDR
环境
(
无
CLUSTER
软件
)
............................................
.................
2
4
2.2.1
配置需求说明
.
................................
..................................................
..........................................
2
4
2.2.2
修改两个
onconfi
g
文件
.
.
..................................................
..................................................
.......
2
5
2.2.3 Sqlhosts
文件示例:
................................................ .................................................. .................
2
5
2.2.4 /etc/services: .................
..................................................
..................................................
.........
2
5
2.2.5
做主从机
.......
..................................................
..................................................
..........................
2
5
共
74
页
第
1
页
[ Informix
数据库手册
]
2.2.6
验证双机
............................................ .................................................. .......................................
2
7
2.2.7
主从不一致的恢复
p>
.
.............................
..................................................
.....................................
2
7
2.3
.有
CLUSTER
软件数据库的安装
方案
.
.............
..................................................
................................
2
7
2.3.1
文件举例:
.
.................................
..................................................
.............................................
2
7
3
.
数据库的启动和关闭
.
.............................................
..................................................
.....................
3
3
3.1
数据库的启动:
......
..................................................
..................................................
.....................
3
3
3.2
数据库的关闭
:
.........
..................................................
..................................................
....................
3
3
3.3
双机的关闭的原则
:
.......
..................................................
..................................................
..............
3
3
4
.
备份与恢复
.
.................................................
..................................................
.................................
3
5
4.1
概述
...........
..................................................
..................................................
.....................................
3
5
4.2
当数据量较大时:
.
................................
..................................................
..........................................
3
8
4.3
当数据量较小时
.
.................................
..................................................
.............................................
3
8
4.4
备份顺序
(
以第一种方案为例
) ......
..................................................
.................................................
3
9
4.5
数据库恢复方法
.
.................................
..................................................
.............................................
3
9
5
.
操作和维护命令
.
< br>............................................... .................................................. ...........................
4
1
5.1
简介
.
...........................
..................................................
..................................................
...................
4
1
5.2
权限
.
...........................
..................................................
..................................................
...................
4
1
5.3
ONMONITOR
...
..................................................
..................................................
.....................................
4
1
5.4
DBACCESS
.
...............................
..................................................
..................................................
..........
4
2
5.5
O
N
L
INE
的启动和关闭
.
......................
..................................................
...............................................
4
3
5.6
O
N
L
INE
的状态查询
< br>
.
.......................
..................................................
..................................................
4
4
5.7
给
D
BSPACE
增加新的
CHUNK
<
/p>
.
............................
..................................................
..................................
4
5
5.8
数据移动
.
..................................................
..................................................
......................................
4
6
6
.
常见问题和经验
.
< br>............................................... .................................................. ...........................
4
7
6.1
查看锁的信息
.
................................................ .................................................. ................................
4
7
6.2
查看物理和逻辑日志状态
.
...........................................
..................................................
.................
4
7
6.3
查看一些统计信息
.
..............................................
..................................................
..........................
4
7
6.4
查看数据库系统占用共享内存的情况
...........
..................................................
..............................
4
7
6.5
查看各
CHUNK
文件的读写量和读写率
...........
..................................................
................................
4
7
6.6
数据库目录结构检查
.
.............................................
..................................................
.......................
4
7
6.7
数据库索引结构检查
.
.............................................
..................................................
.......................
4
7
6.8
数据库数据结构检查
.
.............................................
..................................................
.......................
4
7
6.9
查看数据库锁方法
.
..............................................
..................................................
..........................
4
7
6.10
索引说明
.
..................................................
..................................................
....................................
4
8
6.11
ONLINE
.
LOG
文件
.
...........................................
..................................................
..................................
4
8
6.12
FINDERR
命令
.
.............................................
..................................................
.....................................
4
8
6.13
数据库系统恢复
.
< br>............................................... .................................................. ...........................
4
8
6.14
如何使用
UPDATE
STATISTICS
命令优化数据库?
.
...............................
......................................
4
9
6.1
5
当出现系统性能问题时要从哪些方面考虑?
.
..................................
...........................................
4
9
6.16
数据库中有些数据可以看得到但无法删除,怎么办?
....
..................................................
.......
4
9
6.17
产品安装时出现
32776
错,怎么办?
..........
..................................................
.............................
4
9
6.18
安装产品时
ROOTDBS
上的逻辑日志无法删除,怎么办?
.
..................................................
.........
4
9
6.19
如何解决长事物问题?
.
............................................ .................................................. ..................
5
0
6.20
数据库提示
-271
错误如何处理?
.
..................................................
.............................................
5
0
6.21
如何改变物理日志的大小及位置?
............
..................................................
...............................
5
0
6.23
如何作
INFORMIX
数据分片?
.
..................................................
..................................................
..
5
1
共
74
页
第
2
页
[ Informix
数据库手册
]
6.24
一般系统中包含哪几类错误号?
..
..................................................
.............................................
5
1
6.25
如何得到错误号
?
如何查询错误号
?
.
..................................................
..........................................
5
1
6.26
观察共享内存的
BUFFER
参数
..
..................................................
..................................................
.
5
3
6.27
批处理时系统
C
HECK
-P
OINT<
/p>
时间很长,怎么办?
.
..............................................
..........................
5
4
6.28
观察共享内存的使用情况
.
...........................................
..................................................
...............
5
4
6.29
检查数据库运行状态是否正常
...
..................................................
................................................
5
4
6.30
检查
DBSPACE
的使用情况
.
p>
.........................................
..................................................
.................
5
5
6.31
监测数据库日志文件
.
.............................................
..................................................
.....................
5
6
6.32
I
NDEX
维护
......................
..................................................
..................................................
..............
5
6
6.33
如何找对应应用占用内存较
多的进程和长时间执行的
SQL
语句
.
...........................
...................
5
6
6.34
双机由于网络中断导致都变为主机状态如何处理?
.....
..................................................
..........
5
7
6.35
检查大表和对大表的维护
.
...........................................
..................................................
...............
5
8
6.36
双主机故障的解决建议
..
..................................................
..................................................
...........
5
8
6.37
应用切换脚本参考
....
..................................................
..................................................
.................
5
8
7
.
性能调整
.
..................................................
..................................................
....................................
5
9
7.1
影响
CPU
的性能
............................................... .................................................. ..............................
5
9
7.1
.1
影响
CPU
使用率的配置参数和环
境变量
...................................
............................................
5
9
7.1
.2
监控系统
CPU
的使用状况
.........................................
..................................................
............
6
1
7.2
影响内存的性能
......
..................................................
..................................................
.....................
6
2
7.2
.1
影响内存使用效率的
Online
配置参数
..................................
..................................................
6
2
7.2.2
如何监控内存使用情况
<
/p>
.
............................
..................................................
..............................
6
3
7.3
影响
I/O
的性能
............................................... .................................................. ..............................
6
3
7.3
.1
影响
I/O
的配置参数
.
....................
..................................................
...........................................
6
3
7.3
.2
监控系统的
I/O
情况
.
....................
..................................................
...........................................
6
4
8
.
其他
.
..
..................................................
..................................................
..........................................
6
6
8.1
安装过程中常用的
UNIX
命令
..........................................
..................................................
..............
6
6
8.2
缩写词表
.........
..................................................
..................................................
..............................
6
7
8.3
I
NFORMIX
CLI
的配置图例
...................
..................................................
.............................................
6
7
8.4
章节问题练习
.......
..................................................
..................................................
........................
7
0
共
74
页
第
3
页
[ Informix
数据库手册
]
1
.
基
础知识和概念
1.1 Informix
动态服务器的基本术语
1.1.1
chunk
在
online
系统中并
不使用
UNIX
的文件系统管理磁盘空间,而是有它自己的一套
机制,称
之为
“原始顺序访问方法”(
RSAM
)
。对数据库管理而言,
RA
SM
比
UNIX
文件系统效果更
好。在这套机制中,用以指定给
online
系统的有效物理磁盘空间单元被称做
chunk
。一个
chunk
是一片连续的空间单元,
onlin
e
数据最终存放于此,
因此
chunk
是
online
的物理存储实
体,
online
系统所做的空间管理工作都是
在
chunk
中进行的。
一个典型的<
/p>
chunk
可能是
UNIX
的一个原始设备
(raw device)
,也可能
是一个
UNIX
文件。
1.1.2
dbspace
数据库空间
dbsp
ace
是一个逻辑上的概念,一个
dbspace
是若干
chunk
的集合,每个
bspace
至少有
一个
chun
k
,最先指定给他的
chunk
称为基
本
chunk
。若有必要可以给一个
d
bspace
指定多
个
chunk
p>
。若某一个
dbspace
的空间耗尽了(
即所有指定给他的
chunk
都满了),您可另外
再指定
chunk
给他。数据库和表可以建立在特定
的
dbspace
上,这也就决定了数据库和表最
大只能增长到他所在的
dbspace
空间那么大。
你不能决定你所建的库和表究竟处于该
dbspace
上的哪个
chunk
上,但你可以把库和表创建在一个指定的物理设备上
(先把位于某个
设备上的
chunk
指
定给一个
dbspace
,然后再把库和表建立在该
dbspace
上)。每个
online
系统至少有一个
dbspace
(根
dbspace
,
root
dbspace
),所有控制
online
系统的系统信息都
被置于其上。
1.1.3 page
数据页
p>
当指定给
online
系统一个
chunk
后,该
chunk
就会被划分为一些更小的称为页(
page
)
的单位。页是
online
系统的基本
I/O
单位,所有存储在
online
系统中的数据实际都存储在页
上。例如,如果你想为一个数据库表存储一行,
该行的内容就会存储在一个页中;如果您想从
数据库中读取一行,存储该行内容的整个页
都会被读取到共享内存的缓冲区中。当某个特定的
机器
/
操作系统确定后,
online
系统的页大小
也就确定了。最常用的页大小为
2K
,也有的系统
使用
4K
的页。
Onlin
e
系统中页的大小是不可改变的。
1.1.4 tblspace
一个
tblspace
是只分配给一个特定表的所有页的集合(一个
tblspace
是一个数据库表的
所有数据页的集合,因此一
个
tblspace=
一张表)。一个
tblspace
必须处在唯一的
dbspace
上。
1.1.5 extent
为表分配磁盘空间是以
extent
为单元进行的。<
/p>
一个
extent
就是在创建表时确定好
的连续
的磁盘空间大小(固定的几个属性所占据的空间的大小)。每个表都涉及两个
p>
extent
大小:
extent
size
为表初次分配的
extent
大小,在创建表后就分配了;
next
ex
tent
依次追加到该表
上的
exte
nt
大小。
注:一个
dbspace
可看作物理
chunk
的一个逻辑组,这些
chunk
可能分布在不同的磁盘
共
74
页
第
4
页
[ Informix
数据库手册
]
上,尽管他们都来自同一个
dbspace
;一个
tblspace
可看作
extent
的一个逻辑组,来自同一
个
tblspace<
/p>
的
extent
可能分布在不同的
chunk
上。
1.1.6
物理日志
物理日志保存数据被修改前的映象。主要用于
fast rec
overy
和
backup
。
1.1.7
逻辑日志
逻辑日志保存数据在修改后
的映象,保存数据库从上一次备份后的操作记录。比较有用。
1.2
常用的数据库概念基础
1.2.1
数据库
(Database)
Create Database DatabaseName [In
Dbspace] [With {[Bufferd]Log|Log Mod Ansi}]
当不
指定数据空间时,数据字典系统表建立在
Roo
t
数据空间
(Root
DBSpac
e)
上,并且在这个库上
建其它表时,数据字典所在的表空间为
缺省表空间,而建立临时表时,缺省数据空间为环境变
量
DBS
PACETEMP
,但使用
Fragment
< br>语句可以使表空间分布在多个数据空间上。我们可以
使用
Ontape
–
s [-B|-A|-U|-N] Data
baseList
改变数据库的日志状态。
Oninit
p>
–
p
初始化时将不操
作临时表空间。
*
注意
在<
/p>
HDR
系统里改变数据库的日志状态后,需要从新做主从机。
p>
1.2.2
数据表
(Table)
Create
{Table TableName(ColumnDefinition
[ConstraintDefinition])|
tmpT
ableClause}
[WithRowIds][StorageOption][LockOption]
使用适时变量行锁可以提高事务的并行性,甚至可以申请多于设置的最大锁数,但锁的开
销将很大。对于需要成块操作的聚族索引表,设置成行锁是一个极好的方案。它不仅可以减少
< br>锁的开销,而且大大提高数据的访问速度。
1.2.3
索引
(Index)
Create
[Unique|Distinct][Cluster] Index IndexName On
{TableName|Synonym}
(ColumnNameListWithAscOrDesc)
FillFactor percent [In DBSpace|FragmentClause]
当
在
一
个
表
上
某
列
已
建
立
UniqueCons
traint
时
,
便
< br>已
在
该
表
上
建
立
对
应
该
列
的
Uni
queAscIndex
,所以再次在该列上建立
Asc
索引将失败。我们可以在一个表上建立对应某
些列的多个索引,单要求
某列的索引顺序只有一种。
Cluster
指定索引的聚族属性
,具有聚族
索引属性表的物理存储顺序将重新安排与其索引一致。它将加速表的查询与修
改,但对表的插
入和删除将需要更大的开销。并且索引的聚族属性对应单位为
DBSpace
,而非整个表。一个
表最多只能有
一个聚族索引,但
Alter Index IndexName To [Not]
Cluster
语句可以将聚族属性
移到另外一个索引上。
p>
FillFactor
的缺省值为
90
,它确定了索引数据结构(
B+
树,
Hash
桶)的紧凑程度,低紧
凑度的索引将使数据的插入操作变的非常的快。而高紧凑度的索引将使数据的查询性能大大提
高。但需要注意的是,装填因子只有在表的记录数超过
5,000
p>
条并且占用空间超过
100
页时才
发生效用,再分段表上建立索引或建立分段索引时,
FillFacto
r
的缺省值也可以设置在
Onconfig
配置文件的
FILLFACTOR
上。当不指定
DBSpace
时,其存储位置与表的数据空间
共
74
页
第
5
页
[ Informix
数据库手册
]
安排方案一致,
Fragment
也可以重新安排表的存储数据空间。
1.2.4
视图
(View)
Create ViewName(ColumnName)As
SelectClause [WithCheckOption]
在查询子句中,<
/p>
OrderBy,IntoTemp,Union
操作是不容许的
,并且不能使用列显示标志,它
们为相应表的列名。
WithC
heckOption
子句是我们不能通过视图对相应表不可视的记录进行访
问,也不能插入不符合视图定义的记录。
建立视图主要基于以下三个原因:
1.
防止机密数据泄密保护数据安全。
2.
建立有效的查询
,
简化数据查询方式。
3.
名
称变化而需保证程序不会随着数据的位置变化
,
保持数据的独立
性。
1.2.5
查询
(Query)
Select [All|Unique|Distinct]
{Expression As ShowLabel|ColumnName,…}
FromClause[WhereClause][HavingClause][G
roupByClause][OrderByClause]
[IntoTemp
TableName[With No Log]] [Union[All] SelectClause]
Union
操作要求每个查询中的查询项目数相同,并且对应项
目的数据类型相兼容。如果没
有
All
属性,相同的记录将合并为一个。
外
(Outer)
查询保证即使第二个表或视图中没有符合条件的记录,它也能以空值与第
一个表
中相应的记录结合生成一条查询结果。
在
WhereClause
中,数据库系统先扫描前面
的表,再扫描后面的表,所以一般将数据量
较少的表或视图放在前面,因为这样设计可以
减少时间和内存开销
(SetExplainOn
跟踪报告
p>
)
。
1.2.6
存储过程
(Procedure)
Create [dba] Procedure
ProcedureName(ParameterList) [ReturningClause]
[OnExceptionProcess][MainStatementBlock]En
dProcedure;
带有
dba
属性时,存储过程对象便具有
dba(DatabaseAmphitryon)(db
a_privilege)
属性,
否则,它为主人特权
(owner_privilege)
属性。
O
nExceptionProcess
处理意外事件。
Retu
rn
VariableList[With
Resume]
将结果返回,
WithResume
标
识使存储过程返回后再次跳到返回点
执行后面的语句,所以
In
formix
存储过程有返回多行结果的特性,它可以作为数据窗口的数据
源,在各种数据库开发工具中,我们可以使用游标来取得它的多行返回结果。
Informix
的存储过程中在定义变量时没有进行初始化工
作,后面的语句如果访问未初始化
的变量会发生例外错,如不对它进行处理,执行便会终
止返回。变量的类型会最可能地根据使
用的方式不同而自动转换,转换失败同样回触发意
外错。
Set
Debuge
File
To
pathname<
/p>
可以
设置存储过程执行中的踪迹文件,利用它可调试存储过程,但
已调试好的存储过程应将跟踪语
句去掉,因为它会大大增加执行时的开销,
Trace On
打开跟踪,
Trace
off
关闭跟踪。
存储过程定义举例
1
:
create dba Procedure sel_stu()
Returning Varchar(20);
Define tmp_name Varchar(20);
共
74
页
第
6
页
[ Informix
数据库手册
]
Set Debug File To
Trace On;
Let tmp_name=
Foreach sel_stu
For select name Into tmp_name
From
student
Return tmp_name With Resume;
End Foreach;
Return
Return
Trace off;
End Procedure
1.2.7
触发器
(Tigger)
CreateTrigger
TriggerName
p>
[Operation]On[TableName]{ActionClause|[Re
ferencingClau
se][ActionClauseReferencing]}
ActionClause
触
发
器<
/p>
可
用
于
保
证
数
据
的
逻
辑
一
致
性
,
使
程
序
员
在
每
一
次
对
数
据<
/p>
进
行
修
改
操
作
(Update,Insert,Del
ete)
时,能截取相应的操作参数,并可执行相应的处理,大大简化数据库程
序设计的难度。值得注意的是,再对触发器的处理中,不应再执行触发触发器自身的操作,这
p>
用会造成死循环,其次触发器中要特别谨慎执行引起事务提交的动作,这样易造成事务的不完
整性。在触发器或触发的存储过程中,我们可以访问这次会话所定义的全局变量,这样一
次会
话中各执行单元的联系变得非常容易。
1.2.8
事务
Transaction
这种
约束条件就是一致性约束。数据库中存在的信息是对客观世界的反映,这就要求数据
库系
统中所用的运算都应保持数据的逻辑完整性,既要求数据库的任何状态变化都要能反映客
观世界的某种真实存在的合理状态。客观世界要保持合理状态的存在,总是有一定规则的,这
种客观的规则反映到数据库中就是数据库中的数据要满足一定的约束条件。我们不要求在每一
个简单的修改后就去验证一致性约束,这就是事务。因此说它将数据库从一致性状态转化成新
的一每个事务结束时系统都要检查一致性。例如银行中,有笔钱款要从甲账号转到乙账号下那
么发生的动作就是这一加一减操作是密不可分的。同时事务具有以下特点:
原子性:
一个事物或者成功的结束或者对数据库不产生任何影响。
一致性:
满足一切完整性约束,一个
成功的事物保持数据库的数据完整性。
隔离性:
事物内部的操作及使用的数
据对并发的其他事务是隔离的,其他事务访问到的数据还是该
事务发生前的状态。单个事
物未完成之前,永久性随后的任何故障及错误操作都不会改变其结
果。
< br>
1.2.9
数据的完整性控制
数据的完整性是指数据的正确性有效性与相容性保证数据库中的数据在输入修改过程中始
终符合原来的定义。
例如:职工性别
是男或女,职工年龄是大于
0
小于
70
的职工,所在的部门号必须是在的
共
7
4
页
第
7
页
[ Informix
数据库手册
]
有效的部门号等。
1.2.10
并发控制
修改数据库时可能会发生互相干扰,而使得当多个用户的并发进程同时存取数据库,并使
数据库的完整性遭到破坏,因此必须对多用户的并发性,导致错误的结果协调加以控制。
共
74
页
第
8
页
[ Informix
数据库手册
]
2
.
数
据库的安装与配置
2.1
单机数据库的安装
2.1.1
简介
< br>INFORMIX
的数据库服务器
(Database
Server)
产品目前分为三个系列,从产品的版本号
上可以把他们区分开来。版本
7.x
是传统的
单机数据库系列,称为动态服务器
IDS(Informix-
OnLine
Dynamic
Server)
,它采用了
INFORMIX
独有的动态可伸缩体系
结构
DSA
(
Dynamic
Scalable
Architecture
),适用于单机系统,包括
SMP
结构的机器。版本<
/p>
8.x
是并行数据库系
列,称为扩展并行
服务器
XPS(Extended
Parallel
Server)
,适用于
Cluster
p>
和
MPP
体系结构
的机群系统。版本
9.x
是对象关系数据库
(ORDBMS)
系列,称为通用服务器(
Informi
x
Universal
Server
),主要用于比较新的数据库应用领域,如
web
应用以及一
些数据类型及其
操作都比较复杂的应用。
我们的智能网产品中使用了
7.x
版的
INFORMIX-OnLine
Database
S
erver
(以下简称
OnLine
)
和
INFORMIX EMBEDDED SQL for C
(以下简称
ESQL/C
)两种产品。
Informix
的
每个产品都有详尽的针对具体机型的安装手
册,为了保证安装过程的顺利进行,同时还要求安
装人员有一定的
UNIX
系统管理经验。这些都要花费比较长的时间才能掌握。为了使一般的工
程技术人员也可以进行
INFORMIX
产品
的安装,下面对
INFORMIX
的基本安装和配置过程进
p>
行了简单介绍。因为
UNIX
系统的复杂性
和不同机型之间的差异,如果遇到不能解决的特殊情
况,请及时与
INFORMIX
和
UNIX
的技术
人员联系。
2.1.2
准备
Informix
所需的硬盘空间
在正式开始安装之前,首先要对
Informix
所需的硬盘空间的大小和位置进行规划。
Informix
所
需的硬盘空间包括两部分:软件所需的空间和数据所需的空间。
7.2x
版的
OnLine
和
ESQL
/C
软件安装后大约占
50MB
左右的
硬盘空间。数据所需的空间的大小和位置是由用
户应用需求和硬件配置来决定的,下面主
要讨论怎样规划初始的数据空间。
在一些简单的
DB
Server
p>
产品(包括
Informix
SE
)中,往往借助于操作系统中的树型文
件系统来管理数据库的存储空间
。具体做法是,为每个
database
在文件系统中创建一个
目
录,该
database
中的每个<
/p>
table
作为该目录下的一个文件,
S
erver
只负责
table
文件内部
的管
理,
table
文件和该文件系统
下的其它文件共享存储空间。这样只要在创建
database
时指定了
它的目录名,以后存储空间的管理都由文件系统来完成。这种做法实现起来比较
简单,但是效
率比较低,灵活性和可靠性也差。
OnLine
不借助文件系统,而是自己来管理
da
tabase
内部的存储结构。
OnLine
< br>的数据存
储空间的组织采用两级结构。首先整个数据存储空间分成多个
dbspace
。然后,每个
dbspace
p>
又由多个
chunk
组成。每个
chunk
是一个
UNIX
的普通文件或块设备,其大小在创建时就确定
了,以后不能改变。每个
dbspace
创建时至少要包含一个
chunk
p>
,以后可以根据需要随时增加
chunk
,
但是不能删除已有的非空
chunk
。每个
OnLine
实例(
Instance
)至少要有一个
root
dbspace
。数据库管理员
(DBA)
和数据库(
database
)和表(
table
)的创建者可以指定自己的
数据存放在那个
dbspa
ce
上,但是不能控制具体是存放在该
dbspace
的那个
chunk
上,这是
由
OnLine
来决定的。
Dbs
pace
和
chunk
之间的关系类似
于大多数
UNIX
系统中的逻辑卷
(V
olume)
和物理分区
(Sub-disk)
之间的关系,往
dbspace
上增加
chunk
类似于卷的动态扩容。
数据空间的规划包括两部分工作:
共
74
页
第
9
页
[ Informix
数据库手册
]
1
.确定需要创建几个
dbspace
以及每个
dbspace
的用途。
2
.确定每
个
dbspace
的初始空间大小和位置,据此创建
chunk
。
这两部分工作是相互关联的。
数据空间的规划主要有以下作用:
1
.提高关键数据的可靠性。
root
dbspace
、日志文件和其他关键数据所在的
chunk
可以
建在采用
R
AID
技术进行容错的磁盘阵列上或进行软件镜像。
2
.提高
I/O
性能。
在有多个硬盘和控制器的情况下,尽量将
I/O
操作均衡地分布
到各个硬
盘上。在多个硬盘的性能有差异的情况下,将最频繁存取的数据放在性能最高的
硬盘和分区
上。
3
< br>.方便备份和恢复工作。因为备份和恢复都是以
dbspace
< br>为最小单位的。因此将不同用
途的数据放到不同的
dbs
pace
上可以减轻备份和恢复的工作量。
< br>一般说来,至少要创建
4
个
db
space
,分工如下:
rootd
bs
:存放系统数据和物理日志。
(
在
oninit
–
i
< br>时逻辑日志和物理日志都是放在
rootdbs
中的,一
定要把逻辑日志放在
logdbs
上
)
tempdbs
:存放临时表。
logdbs
:存放逻辑日志。
userdbs
:存放用户数据。
<
/p>
每个
dbspace
的初始
chunk
的大小没有必要开得很大,非要把所有的硬盘空间都用完,
只要够用就可以了。因为
chunk
增加容易
删除难,把暂时不用的硬盘空间预留起来更加灵活。
chun
k
有两种类型,一种是采用块设备作为
chunk
,称为
raw
disk
方
式;另一种是采用普
通文件作为
chunk
,称为
cooked
file
方式。不难理解,
raw
disk
方式要比
cooked
p>
file
方式效
率高。为了提高性能,应该
尽可能采用
raw disk
方式的
c
hunk
。
创建
raw disk
方式的
chunk
时要注意以下几点:
目前的
OnLine
版本,每个
chunk
最大只能到
2GB
,因
此创建
raw
disk
时大小不要超
过
2GB
,否则超过
2GB
的部分就浪费了。如果
dbspace
需要
2GB
以上的空间,必须创建多个
chunk
。
一些版本的
UNIX
,都把
volume
的最后
几
K
空间作为保留区。因此,如果你想创建一个
1000MB
的
chunk
,
在创建
volume
时,最好建
100
1MB
,以免
nformix
初始化时
失败。
如果要创建
cooked <
/p>
file
方式的
chunk
,只要在相应文件系统中你想要放置
chunk
的位
置
创建一个空文件。命令为:
$$cat /dev/null
<
想创建的空文件名
>
在
OnLine
初始化时,会将该文件增大到你设定的
chunk
大小。注意要保证该文件系统中
有足够的空间创建
chunk
。
2.1.3
创建
informix
组
和用户
(
开始
)
1.
为
informix
选择一个
home
目录,要保证该目录所在的文件系统有足够的空间安装
Informix
软件。查看文件系统的剩余空间用
df
命令。假设选定的
informix
的
home
目录名为
/
home/informix
。
共
74
页
第
10
页
[ Informix
数据库手册
]
2.
用图形界面的管理工具或以下命令创建
informi
x
组和用户。
# groupadd
informix
# useradd
–
g informix
–
m
–
d
/usr/informix
–
s/usr/bin/ksh
informix
举例:
useradd
–
g
informix
–
m
–
d/usr/lscp
–
s/usr/bin/ksh lscp
useradd
–
g
informix
–
m
–
d/usr/smp
–
s/usr/bin/csh smp
useradd
–
g
informix
–
m
–
d/usr/ss7
–
s/usr/bin/ksh ss7
修改
informix
的口令
# passwd informix
修改
< br>/home/informix/.profile,
增加以下几行:
INFORMIXDIR=/usr/informix
INFORMIXSERVER=fepdb1
ONCONFIG=onconfig
CLIENT_LOCALE=zh_
DB_LOCALE=zh_
PS1=[`whoami`@`hostname`:`tty`]' $$PWD
$$'
export PS1
PATH=$$PATH:$$INFORMIXDIR/bin
LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:$$INFORMIXDIR/lib:
$$INFORMIXDIR/lib/esql
export
INFORMIXDIR INFORMIXSERVER ONCONFIG PATH
解释:
fepdb1
为数据库
se
rver
名称
onconfig
为
informix
online
运行的配置方案。
LD
_LIBRARY_PATH
为
informix
所需要的环境变量
.
CLIENT_LOCALE=zh_
DB_LOCALE=zh_
export
CLIENT_LOCALE DB_LOCALE
2.1.4
安装
informix
产品
p>
1.
将要安装的
INFORMIX
产品
(OnLine
和
ESQL/C)
从安装介质(磁带或光盘)展开到
inform
ix
用
户
的
H
OME
目
录
下
。
假
设
安
装<
/p>
介
质
为
光
盘
,
如
果
光
驱
的
设
备
名
为
/dev/disk/
cdrom0a
,则过程可能为:
如
果需要开发环境需要装
esql
。需要把
clinet sdk
那张光盘先行展开并安装。
# mkdir /mnt
# mount
–
r /dev/disk/cdrom0a /mnt /*
先插入
IDS
的安装光盘
*/
# cd /usr/informix
#
cpio
–
idv
# cpio
–
idv
# umount /mnt /*
然后取出
IDS
的安装光盘
< br>*/
解释:不同的系统设备文件名称不同。
2.
设置环境变量
# INFORMIXDIR=/usr/informix
# export INFORMIXDIR
执行安装命令
#cd
/usr/informix /*
注意先装
ESQL/C<
/p>
,再装
OnLine*/
#./installconn
/*
需要输入产品的序列号和密码
ACP#J267193
PDEFJO*/
Your existing INFORMIX shared
libraries, if any, will be replaced and upgraded.
共
74
页
第
11
页
[ Informix
数据库手册
]
Are you sure? [yes/no]yes
Is I-Connect being installed along with
Informix database server
version 9.x
(required to be run as user
(yes or no)
回车
Enter your serial number (for example,
INF#X999999) >
WARNING!
This software, and its authorized use and number
of users, are
subject to the applicable
license agreement with Informix Software, Inc.
If the number of users exceeds the
licensed number, the excess users may
be prevented from using the software.
UNAUTHORIZED USE OR COPYING MAY
SUBJECT
YOU AND YOUR COMPANY TO SEVERE CIVIL AND CRIMINAL
LIABILITIES.
Press RETURN
to continue,
or the interrupt key
(usually CTRL-C or DEL) to abort.
回车
Informix Product: INFORMIX-
Connect
Installation Directory:
/usr/informix
Performing
root portion of installation of INFORMIX-
Connect...
Installation of
INFORMIX-Connect complete
#
./installserver
/*
需要输入产品的序列号和密码
*/
Installation and Configuration Script
This installation procedure must be run
by a privileged user (Super User)
It
will change the owner, group, mode, (and other
file attributes on
Secure systems) of
all files of this package in this directory.
There must be a user
Press RETURN to continue,
or
the interrupt key (usually CTRL-C or DEL) to
abort.
回车
Enter your serial number (for example,
INF#X999999) >
ACP#J267193
Enter your serial number KEY (uppercase
letters only) >
PDEFJO
WARNING!
This
software, and its authorized use and number of
users, are
subject to the applicable
license agreement with Informix Software, Inc.
If the number of users exceeds the
licensed number, the excess users may
be prevented from using the software.
UNAUTHORIZED USE OR COPYING MAY
SUBJECT
YOU AND YOUR COMPANY TO SEVERE CIVIL AND CRIMINAL
LIABILITIES.
Press RETURN
to continue,
or the interrupt key
(usually CTRL-C or DEL) to abort.
回车
2.1.5
< br>修改内核参数
(
一定要小心
)
因为
OnLine
需要申请大量的共享
内存和信号量,因此,一般
UNIX
系统的缺省内核参数
都不能满足要求,必须进行修改。在
Informix
的联机说明文档
ONLINE_7.X
中给出了
OnLine
对内核参数的要求。在
OnLi
ne 7.31X
版中,该文件路径为
/usr/inform
ix/release/en_us/0333
共
74
页
第
12
页
[ Informix
数据库手册
]
该文件内容可能是:
INFORMIX-OnLine Dynamic Server Shared
Memory and Kernel Parameters:
=========
==================================================
====
The following kernel
parameters must be adjusted to the indicated
values
for minimally acceptable
Informix Online performance. See your
Compaq/Digital
UNIX System
Administrators Guide, or the doconfig (8) man
page, for information
on adjusting
these kernel parameters.
SHMMAX: 2147483647
SHMMIN: 1
SHMALL: Not Applicable
SHMMNI: 150
SHMSEG: 150
SHMBRK: Not Applicable
MAXMEM: Not Applicable
SEMMNI: 400
SEMMNS: 100
SEMMSL: 1600
NFILES: Not
Applicable
LOCATION OF
SHARED MEMORY:
=========================
The ONCONFIG variable SHMBASE should be
set to the following
SHMBASE=0X200000000
可以用
vi /etc/sysconfigtab
按照如下格式再最后一行开始添加
:
ipc:
shm_max=2147483647
shm_mni=150
shm_seg=150
sem_mni=400
sem_msl=1600
SHMBASE=0X200000000
最好是用图形终
端
xmanager
登陆,用菜单修改
.
然后去检查一下
/etc/sysconfigtab
。
修改成功后,
R
eboot
系统。
将该文件的内容和
操作系统的当前参数进行比较,如果比当前参数大,要把当前参数修改
称该文件要求的值
,如果比当前参数小,一般不需要再作改动。
不同的
UNIX
系统修改内核参数的方法差异很大。下面介绍几种常用的操作系
统修改内核
参数的方法。
Sun
So
laris
最简单,直接编辑
/etc/system
文件,然后
reboot
即可;
Digital
UNIX
可以用
sysconfig
命令进行修改,也可以用
CDE
提供的图形界面的
Kernel Tuner
工具,
因为只修改和
ipc
、
proc
有关的内核参数,因此不用重新连接内核,重新启动即可生效。
IBM
AIX
可以用集成化管理工具
smit
来修改内核参数。
HP-UX
可以用维护工具
sam
来修改内核参<
/p>
数。
SCO
UNIX
< br>可以用
idtune
命令进行修改,也可以用字符界面的
集成化管理工具
sysadmsh
或
s
coadmin
。
2.1.6
p>
修改
chunk
的属性
6.1
文件方式:
共
74
页
第
13
页
[ Informix
数据库手册
]
$$ cd /*
当前用户为
informix
,进到
informix
的
home
目录<
/p>
*/
$$ mkdir chunklink
$$ cd chunklink
fep1> cat
/dev/null>rootdbs1 /*
建立空文件
物理日志是放在
rootdb
里的
*/
fep1> cat /dev/null>tempdbs1
fep1> cat /dev/null>logdbs1
fep1> cat /dev/null>userdbs1
fep1> cat /dev/null>userdbs2
fep1>chmod 660 *
/*
修改权限为可读写
*/
#
chown informix *
# chgrp informix *
# chmod 660 * /*
为所有的
chunkfile
名称
*/
< br>解释:
OnLine
要求
chu
nk
文件的
owner
和
group
均为
informix
< br>,而且存取权限必须为
660
。因此要对所有的
chunk
执行以下命令:
裸设备方式:
逻辑卷一般有厂家帮助建立。
$$
cd /*
当前用户为
informix
,进到
informix
的
home
目录
*/
$$
mkdir chunklink
$$ cd chunklink
$$ ln
–
s
/dev/rvol/infodg/vol01 rootdbs1
$$ ln
–
s /dev/rvol/infodg/vol02
tempdbs1
$$ ln
–
s
/dev/rvol/infodg/vol03 logdbs1
$$ ln
–
s /dev/rvol/infodg/vol04
userdbs1
$$ ln
–
s
/dev/rvol/infodg/vol05 userdbs2
切换到
root
用户
#
cd /usr/informix/chunklink
# chown
informix *
# chgrp informix *
# chmod 660 * /*
为所有的
chunkfile
名称
*/
解释:对于
raw
disk
方式的
chunk
,有些操作系统可能在每次<
/p>
reboot
时自动会将
chunk
p>
的设备名的
owner
和
< br>group
恢复成
root
,存
取权限也会恢复成原来的。这时就需要把以上修
改命令加到该操作系统的启动
shell script
中。
对于
raw
disk
方式的
chunk
,最好不要直接引用设备名,而是
再创建一个符号链来引用
它。这样当
chunk
的设备名需要改变时(比如
chunk
所在的硬盘出现
故障),可以很快将该
chunk
的符号链指向另一个设备,而
不需要修改
OnLine
的配置。
2.1.7
修改
sqlhosts<
/p>
文件
在
/et
c/services
文件中为
Informix
增加一个端口号,只要不和已有的端口号重复即可,假
设用
< br>7777
。
fepdb1
7777/tcp # Informix listen port
最后,修改
$$INFORMIXDIR/etc/sqlhosts
文件,
为每种通信方式写一行描述:
ipcshm
onipcshm
ipcshm
ipcstr
onipcstr
ipcstr
onsoctcp
Informix
增加一行:
fepdb1 onsoctcp
fep1 fepdb1
共
74
页
第
14
页
[ Informix
数据库手册
]
其中每一列的含义如下:
第一列是<
/p>
dbservername
,是数据库
c
lient
访问
server
时要给出
的标识符。
第二列是
nettype
,指出该
dbservername
采
用的是哪种通信方式。
第三列是
ho
stname
。用
hostname
命
令可以查到该机的
hostname
。
第
四
列
是
p>
servicename
。
对
onsoctcp
或
ontlitcp
方
式
的
dbservern
ame
,
必
须
是
etc/services
文件中已经定义的一个服务名,不
能直接写
TCP
端口号。在有些机器上,服务名
不能超过
8
个字符。对
oni
pcshm
和
onipcstr
方式,
建议设成和
dbservername
相同。
< br>
OnLine
的数据库用户
(
client)
和
Server
之间,
可以采用不同的通信方式:
Onipcshm
client
和
server
之间通过共享内存通信。只有当
client
和
server
位于同一台机器上时才可
以采用这种方
式。这种方式速度最快,而且所有的操作系统都支持。缺点是可能带来安全性和
可靠性方
面的问题。
Onipcstr
cl
ient
和
server
之间通过
p>
stream
pipe
通信。只有当
p>
client
和
server
位于同一台机器上时
才可以采用这种方式。这种方式不会有共享内存可能带来
的安全性和可靠性方面的隐患。但是
不是所有的操作系统都支持这种方式,而且在有的操
作系统下,
onipcstr
比
oni
pcshm
明显
慢。
ontlitcp
或
onsoctcp
client
和
server
之间通过
TCP/IP
通信。这是当
client
和
server
不在同一台机器上时的唯
一选择。
OnLine
根据当前机器的操作系统支持的网络
API
是
p>
TLI
还是
socket
< br>,决定是采用
ontlitcp
还是
onsoctcp
。
每
个
OnLine
< br>Server
可
以
同
时
支
持
多
种
通
信
方
式
,
每
种
通
信
方
式
指<
/p>
定
一
个
名
字
dbservername
。
client
要
用
某
种
通
信
方
式
访
问
某
个
server
,
只
需
要
把
自
己
的
环
境
< br>变
量
INFORMIXSERVER
设成相应的
dbservername
。文件
$$INFORMIXDIR/etc/sqlhosts
中描述了
dbservername
对应的通信方式的具体参数。
< br>
首先要搞清楚当前版本的
OnLine
是否支持
onipcstr
方式,
TCP/IP
方式中支持的是
ontlitcp
还是
onsoctcp
。这些信息可以在上面提到
的
ONLINE_7.x
文件中找到。例如:
< br>ONLINE_7.x
可能是这样的:
Machine Specific Notes:
=======================
1.
The Network Protocols/Interfaces supported for
this platform are:
a. Berkeley
sockets using TCP/IP
To use
this protocol, the NETTYPE must be set to
in the ONCONFIG and sqlhosts
configuration files.
b. IPC using stream pipe
To
use this protocol, the NETTYPE must be set to
in the ONCONFIG and sqlhosts
configuration files.
根据上述说明我们知道这台机器支持
p>
onipcstr
和
onsoctcp
p>
。
2.1.8
修改
onconfig
文件
首先,从配置文件模板
onconfig
中复制
出初始的
onconfig
文件。
共
74
页
第
15
页
[ Informix
数据库手册
]
$$ cd $$INFORMIXDIR/etc
$$ cp onconfig
然后进行以下修改:
ROOTPATH
<
br>< <
br>OnLine <
br>设成
1/2 当该版本的 root dbspace <
br>...,
。
<
br> .修改 中的
进行 <
br>
<
br>。 esql/c
<
br>的 中是指负责运行
高可用性数据复制),它可以将数据库服务器整个的复制到另外的一台机器上,而且可以做到
特点,但 <
br>修改两个 <
br>
Server
<
br>如果要求前滚逻辑日志,请让它滚完。查看两个 <
br>DRAUTO
scp,smp <
br>– <
br>上,使用 <
br>;
的第一个
chunk
的路径
>
ROOTSIZE
的第一个
chunk
的大小
(
以
KB
为单位
)>
PHYSFILE
<
物理日志的大小
(
以
KB
为单
位
)>
LOGFILES
<
逻辑日志文件的个数
>
LOGSIZE
<
逻辑日志文件的大
小
(
以
KB
为
单位
)>
MSGPATH
<$$INFORMIXDIR/>
ALARMPROGRAM
<$$INFORMIXDIR/etc/log_>
LTAPEDEV
/dev/null
LTAPESIZE
1024000
DBSERVERNAME
fep1db
DBSERVERALIASES
,
ipcstr
MULTIPROCESSOR
<
单
CPU
填
0
,
多
CPU
填
1>
NUMCPUVPS
个数
>
LOCKS 10000
BUFFERS
数据缓冲区的大小,以
page
为单位,一般是
2KB>
PHYSBUFF
320
LOGBUFF
320
LOGSMAX
<
最大逻辑日志文件个数
>
LRU_MAX_DIRTY
写盘的起始条件
>
LRU_MIN_DIRTY
写盘的终止条件
>
DRLOSTFOUND
<$$INFORMIXDIR/etc/und>
OPTCOMPIND 0
以上参数中有几个值需要作进一步说明:
1. <
物理日志的大小
>
OnLine
的性能优化手册中有关于最佳物理日志大小的计算公式。一
般在硬盘空间足够的
情况下
(
物理日志
放在
rootdbs
中
)
,将物理日志的大小设成
200MB
就可以了。
p>
2
.
<
逻辑日志文件的大小
>
、
<
逻辑日志文件的个数
>
和
<
最大逻辑日志文件个数
>
的性能优化手册中有关于最佳逻辑日志大小的计算公式。在硬盘空间
足够的情况
下
(
逻辑日志准备放在
p>
logdbs
中
)
,一般可以创建
30
个
5MB
大小的逻辑日志文件。因为
OnLine
初始化
时,只创建一个
rootdbs
,因此初始化时逻辑日志文件只
能放在
rootdbs
中。为
了把逻辑
日志文件放在我们希望的
logdbs
中,必须在初始化完成后
,先创建
logdbs
,然后在
log
dbs
中创建原定大小和数量的逻辑日志文件,最后将
root
dbs
中的逻辑日志文件删掉。因
此,在上面修改参数的时候,
可以将
<
逻辑日志文件的个数
>
设成最小值
3
。
<<
/p>
逻辑日志文件的
大小
>
5MB
,
<
最大逻辑日志文件个数
>
设成
100
。
3
.
<
数据缓冲区的大小
>
一般设成机器内存的
1/4
到
。例如:对于
1GB
内存的
机器,可以设为
256MB-512MB
之间的一个值。
4
.
写盘的起始条件
>
和
写盘的终止条件
>
当
p>
BUFFERS
值比较大(比如大于
256
MB
)时,可以分别设为
1
和
0
。
5
.
DBSERVERALIASES
共
74
页
第
16
页
[ Informix
数据库手册
]
OnLine
不支持
o
nipcstr
方式时,这里只填
。
文件系统方式的参照文件,具体的
dbspace
的大小根据实际情况调整:
#**************************
************************************************
#
#
INFORMIX SOFTWARE, INC.
#
# Title:
# Description:
Informix Dynamic Server Configuration Parameters
#
#*************************
*************************************************
# Root Dbspace
Configuration
ROOTNAME
rootdbs # Root dbspace name
ROOTPATH
/usr/informix/chunklink/rootdbs1
# Path for device containing root dbspace
ROOTOFFSET 0 #
Offset of root dbspace into device (Kbytes)
ROOTSIZE 1000000 # Size
of root dbspace (Kbytes)
#
Disk Mirroring Configuration Parameters
MIRROR 0
# Mirroring flag (Yes = 1, No = 0)
MIRRORPATH # Path
for device containing mirrored root
MIRROROFFSET 0 #
Offset into mirrored device (Kbytes)
# Physical Log Configuration
PHYSDBS rootdbs
# Location (dbspace) of physical log
PHYSFILE 200000 #
Physical log file size (Kbytes)
# Logical Log Configuration
LOGFILES 30 # Number
of logical log files
LOGSIZE
500 # Logical log size (Kbytes)
# Diagnostics
MSGPATH
/usr/informix/ # System message log file
pathCONSOLE
/dev/console #
System console message path
ALARMPROGRAM /usr/informix/etc/log_
# Alarm program path
SYSALARMPROGRAM
/usr/informix/etc/ # System Alarm program path
TBLSPACE_STATS 1
# System Archive Tape
Device
TAPEDEV
/usr/informix/backup/ # Tape device path
TAPEBLK 16
# Tape block size (Kbytes)
TAPESIZE
102400000 # Maximum amount of data to put on
tape (Kbytes)
# Log Archive
Tape Device
共
74
页
第
17
页
[ Informix
数据库手册
]
LTAPEDEV
/dev/null # Log tape device path
LTAPEBLK 16 # Log
tape block size (Kbytes)
LTAPESIZE
102400000 # Max amount of data to put on log
tape (Kbytes)
# Optical
STAGEBLOB
# Informix Dynamic Server/Optical staging area
# System Configuration
SERVERNUM 0 #
Unique id corresponding to a Dynamic Server
instance
注:在
HDR
环境
这个值必需不同
DBSERVERNAME
fep1db # Name of default database server
DBSERVERALIASES fep1db # List
of alternate dbservernames
NETTYPE
soctcp,2,50,NET # Configure poll thread(s) for
nettype
Soctcp
为网络通讯协议
2
为
poll
thread
线程的个数
50
为用户连接个数。
当选用共享内存方式时用
net.
共享内存方式比较
块。
选用网络方式用
cpu
性能会好一些。
DEADLOCK_TIMEOUT 60 # Max
time to wait of lock in distributed env.
RESIDENT 0 #
Forced residency flag (Yes = 1, No = 0)
MULTIPROCESSOR 0 # 0 for
single-processor, 1 for multi-processor
NUMCPUVPS 1 #
Number of user (cpu) vps
不大于
c
pu
的个数
SINGLE_CPU_VP 0 # If
non-zero, limit number of cpu vps to one
NOAGE 0 #
Process aging
AFF_SPROC 0
# Affinity start processor
AFF_NPROCS
0 # Affinity number of processors
# Shared Memory Parameters
LOCKS 200000 #
Maximum number of locks
每个锁占用
44
个字节
BUFFERS
200000 # Maximum number of shared
buffers
为内存的
20-30%
NUMAIOVPS #
Number of IO vps
PHYSBUFF 128
# Physical log buffer size (Kbytes)
LOGBUFF 64 # Logical
log buffer size (Kbytes)
LOGSMAX
100 # Maximum number of logical log
files
CLEANERS 1 #
Number of buffer cleaner processes
SHMBASE 0x200000000 #
Shared memory base address
SHMVIRTSIZE
8000 # initial virtual shared memory
segment size
SHMADD 8192
# Size of new shared memory segments (Kbytes)
SHMTOTAL 0 # Total
shared memory (Kbytes). 0=>unlimited
CKPTINTVL 300 # Check
point interval (in sec)
当数据的修改达到物理日志的
p>
75
%,系统会自动做
checkpoin
t
,
checkpoint
时间在智能
网的应
用里不要超过
15
秒。
LRUS 8
# Number of LRU queues
LRU_MAX_DIRTY
30 # LRU percent dirty begin cleaning
limit
LRU_MIN_DIRTY 20 #
LRU percent dirty end cleaning limit
LTXHWM 50 # Long
transaction high water mark percentage
LTXEHWM 60 # Long
transaction high water mark (exclusive)
TXTIMEOUT 0x12c #
Transaction timeout (in sec)
共
74
页
第
18
页
[ Informix
数据库手册
]
STACKSIZE 64 # Stack
size (Kbytes)
# System Page
Size
# BUFFSIZE - Dynamic Server no
longer supports this configuration parameter.
# To determine the page size
used by Dynamic Server on your platform
# see the last line of
output from the command, 'onstat -b'.
# Recovery Variables
#
OFF_RECVRY_THREADS:
# Number of
parallel worker threads during fast recovery or an
offline restore.
# ON_RECVRY_THREADS:
# Number of parallel worker threads
during an online restore.
OFF_RECVRY_THREADS 10 #
Default number of offline worker threads
ON_RECVRY_THREADS 1 #
Default number of online worker threads
# Data Replication
Variables
# DRAUTO: 0 manual, 1 retain
type, 2 reverse type
DRAUTO 2
# DR automatic switchover
DRINTERVAL
30 # DR max time between DR buffer
flushes (in sec)
注意:在
HDR
环境下由于网络环境的影响建议用
30
,不要用
同步方式
(-1)
DRTIMEOUT 30
# DR network timeout (in sec)
DRLOSTFOUND /usr/informix/etc/und #
DR lost+found file path
#
CDR Variables
CDR_LOGBUFFERS 2048
# size of log reading buffer pool (Kbytes)
CDR_EVALTHREADS 1,2 #
evaluator threads (per-cpu-vp,additional)
CDR_DSLOCKWAIT 5 # DS
lockwait timeout (seconds)
CDR_QUEUEMEM
4096 # Maximum amount of memory for any
CDR queue (Kbytes)
CDR_LOGDELTA 30
# % of log space allowed in queue memory
CDR_NUMCONNECT 16 #
Expected connections per server
CDR_NIFRETRY 300 #
Connection retry (seconds)
CDR_NIFCOMPRESS 0 # Link
level compression (-1 never, 0 none, 9 max)
# Backup/Restore variables
BAR_ACT_LOG /tmp/bar_
BAR_MAX_BACKUP 0
BAR_RETRY 1
BAR_NB_XPORT_COUNT 10
BAR_XFER_BUF_SIZE 31
# Informix Storage Manager
variables
ISM_DATA_POOL ISMData
# If the data pool name is changed, be sure to
# update $$INFORMIXDIR/bin/onbar.
Change to
# ism_catalog
-create_bootstrap -pool
ISM_LOG_POOL ISMLogs
# Read Ahead Variables
RA_PAGES #
Number of pages to attempt to read ahead
RA_THRESHOLD #
Number of pages left before next group
# DBSPACETEMP:
# Dynamic
Server equivalent of DBTEMP for SE. This is the
list of dbspaces
共
74
页
第
19
页
[ Informix
数据库手册
]
# that the Dynamic Server
SQL Engine will use to create temp tables etc.
# If specified it must be a colon
separated list of dbspaces that exist
#
when the Dynamic Server system is brought online.
If not specified, or if
# all dbspaces
specified are invalid, various ad hoc queries will
create
# temporary files in /tmp
instead.
DBSPACETEMP tempdbs
# Default temp dbspaces
#
DUMP*:
# The following parameters
control the type of diagnostics information which
# is preserved when an unanticipated
error condition (assertion failure) occurs
# during Dynamic Server operations.
# For DUMPSHMEM, DUMPGCORE and DUMPCORE
1 means Yes, 0 means No.
DUMPDIR /tmp #
Preserve diagnostics in this directory
DUMPSHMEM 1 # Dump
a copy of shared memory
DUMPGCORE
0 # Dump a core image using 'gcore'
DUMPCORE 0 # Dump
a core image (Warning:this aborts Dynamic Server)
DUMPCNT 1 #
Number of shared memory or gcore dumps for
# a single user's session
FILLFACTOR 90 # Fill
factor for building indexes
# method for Dynamic Server to use when
determining current time
USEOSTIME
0 # 0: use internal time(fast), 1:
get time from OS(slow)
#
Parallel Database Queries (pdq)
MAX_PDQPRIORITY 100 #
Maximum allowed pdqpriority
DS_MAX_QUERIES #
Maximum number of decision support queries
DS_TOTAL_MEMORY #
Decision support memory (Kbytes)
DS_MAX_SCANS 1048576 #
Maximum number of decision support scans
DATASKIP off
# List of dbspaces to skip
# OPTCOMPIND
# 0 => Nested
loop joins will be preferred (where
#
possible) over sortmerge joins and hash joins.
# 1 => If the transaction isolation
mode is not
#
#
below. Otherwise it behaves as in (0) above.
# 2 => Use costs regardless of the
transaction isolation
# mode.
Nested loop joins are not necessarily
#
preferred. Optimizer bases its decision purely
# on costs.
OPTCOMPIND
2 # To hint the optimizer
ONDBSPACEDOWN 2
# Dbspace down option: 0 = CONTINUE, 1 = ABORT, 2
= WAIT
LBU_PRESERVE 0
# Preserve last log for log backup
OPCACHEMAX 0 #
Maximum optical cache size (Kbytes)
# HETERO_COMMIT (Gateway participation
in distributed transactions)
# 1 =>
Heterogeneous Commit is enabled
# 0 (or
any other value) => Heterogeneous Commit is
disabled
HETERO_COMMIT 0
共
74
页
第
20
页
[ Informix
数据库手册
]
# Optimization goal: -1 =
ALL_ROWS(Default), 0 = FIRST_ROWS
OPT_GOAL -1
# Optimizer DIRECTIVES ON
(1/Default) or OFF (0)
DIRECTIVES
1
# Status
of restartable restore
RESTARTABLE_RESTORE off
2.1.9
初始化
OnLine
p>
(基本成功)
在
informix
用户下,执行
oninit -i
,初始化
OnLine
,创建
。
检
查初始化是否成功。在
oninit
命令结束后,等待大约
p>
1
分钟左右,执行
onstat
-
,查看
OnLine
的
当
前
状
态<
/p>
。
如
果
显
示
...
OnLine
表
示
初
始
化
成
功
否
则
通
过
日
志
文
件<
/p>
$$INFORMIXDIR/
文件中记录的信息,分析错误原因,
改正后再执行
oninit
-i
,直
至
成功。执行
dbaccess
,如果
出现终端类型不对的提示信息则需要按以下流程调整终端类型:
export
TERM=vt100;
如
果
需
要
设
置
TERM
或
TERMCAP
,
把
它
们
加
入
$$INFORMIXD
IR/.profile
文件中。
2.1.10
创建其他
dbspace
1
.用
onspaces
命令创建其他
dbspace
。对于我们前面讨论的例子,过程如下:
onspaces
–
c
–
d tempdbs
–
p
/usr/informix/chunk/tempdbs1
–
o 0
–
s 1000000
-t
onspaces
–
c
–
d logdbs
–
p
/usr/informix/chunk/logdbs1
–
o 0
–
s 2000000
onspaces
–
c
–
d datadbs
–
p /usr/informix/data/data1
–
o 0
–
s 2000000
onspaces
–
a
datadbs
–
p
/usr/informix/data/data2
–
o
0
–
s 2000000
解释
p>
:tempdbs
为
dbspace
名字
/usr/informix/chunklink/tempdbs1
对应
chunk
1000000
大小为
1000M
可以按照系统磁盘大小做响应的调整
onspaces
–
a
为追加
volprint -g
infodg
–
st
可以看到逻辑卷的大小(
for
Compaq
)
SD NAME
PLEX PLOFFS DISKOFFS LENGTH DISK-NAME
DEVICE
sd rzb24-01
vol01-01 0 0 4194304 rzb24
rzb24
sd rzb24-02 vol02-01 0
4194304 4194304 rzb24 rzb24
sd
rzb24-03 vol03-01 0 8388608
4194304 rzb24 rzb24
sd rzb24-04
vol04-01 0 12582912 4194304 rzb24
rzb24
sd rzb24-05 vol05-01 0
16777216 4194304 rzb24 rzb24
sd
rzb24-06 vol06-01 0 20971520
4194304 rzb24 rzb24
sd rzb24-07
vol07-01 0 25165824 4194304 rzb24
rzb24
sd rzb24-08 vol08-01 0
29360128 4194304 rzb24 rzb24
sd
rzb24-09 vol09-01 0 33554432
4194304 rzb24 rzb24
sd rzb24-10
vol10-01 0 37748736 4194304 rzb24
rzb24
sd rzb24-11 vol11-01 0
41943040 4194304 rzb24 rzb24
sd
rzb24-12 vol12-01 0 46137344
4194304 rzb24 rzb24
sd rzb24-13
vol13-01 0 50331648 4194304 rzb24
rzb24
sd rzb24-14 vol14-01 0
54525952 4194304 rzb24 rzb24
sd
rzb24-15 vol15-01 0 58720256
4194304 rzb24 rzb24
共
74
页
第
21
页
[ Informix
数据库手册
]
sd rzb24-16 vol16-01
0 62914560 4194304 rzb24 rzb24
lvdisplay /dev/vg00/lvdb_01
可
以看到逻辑卷的大小
(for hp)
2
$$INFORMIXDIR/etc/onconfig
DBSPACETEMP
参数
DBSPACETEMP
tempdbs
3
.重新启动
informix
,使修改生效。
$$ onmode
–
ky
$$ oninit
2.1.11
将
逻辑日志移到
logdbs
(别忘了做)
在
oninit
–
I
时逻辑日志是放在
rootdbs
中的,
rootdbs
主要是为了存放物理日志和系统
表,而且空间相对较小,所以一定要把它移到
logdbs
p>
。定时做逻辑日志文件备份,系统只将
已写满的逻辑日志文件备份到
磁带上,然后清空,并释放这些日志文件。做定时备份一定要在
所有逻辑日志文件被写满
之前进行。所以,如果采用定时备份,要注意观察逻辑日志使用状
况。另外,如果经常有
长事务发生,应避免使用定时备份,采用连续备份比较安全。
使
OnLine
处于
Quiescen
t
模式
$$ onmode
–
s
在
lo
gdbs
上创建
30
个
5MB
的逻辑日志块
$$
onparams
–
a
–
d logdbs
–
s 10000
/*
可以指定文件大小
*/
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
onparams
–
a
–
d logdbs
每执行一次创建
一个,共执行
30
次。
共
74
页
第
22
页
[ Informix
数据库手册
]
0
级备份,使新增的逻辑日志块可用
$$ ontape
–
s
–
L 0
删除
rootdbs
上的
3
个逻辑日志文
件
$$ onmode
–
l
$$ onmode
–
l
$$ onmode
–
l
$$ onmode
–
c
$$ onparams
–
d
–
l
1 -y
$$ onparams
–
d
–
l
2 -y
$$ onparams
–
d
–
l
3 -y
使
OnLine
恢复在线(
On-Line
)模式
$$ onmode
–
m
2.1.12
检查
ESQL/C
p>
是否安装成功
创建演示用
database
:
stores7
$$ cd $$INFORMIXDIR/bin
$$ ./dbaccessdemo7
用
编译一个例子程序。
$$ cd $$INFORMIXDIR/demo/esqlc
$$ esql
–
o demo1
$$ ./demo1
结果应为
DEMO1 Sample ESQL Program running.
Lana Beatty
Frank
Albertson
Dick Baxter
DEMO1 Sample Program over.
如
果任何一步与预期结果不符,说明
ESQL/C
没有安装成功。
2.1.13
修改
Client
的
login
script(
成功
)
每个需要访问
OnLine
Server
的用户都必须设置几个环境变量。
如果该用户用的是
Korn
Shell
或
Bourne Shell
,修改
$$HOME/.profile
,增加以下几行:
p>
INFORMIXDIR=
home
目录
>
INFORMIXSERVER=ipcshm
ONCONFIG=onconfig
PATH=$$PATH:$$INFORMIXDIR/bin
LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:$$INFORMIXDIR/lib:
$$INFORMIXDIR/lib/esql
export
INFORMIXDIR INFORMIXSERVER ONCONFIG PATH
举例:
INFORMIXDIR=/usr/informix
INFORMIXSERVER=fep1db
ONCONFIG=onconfig
PATH=$$PATH:$$INFORMIXDIR/bin
共
74
页
第
23
页
[ Informix
数据库手册
]
LD_LIBRARY_PATH=$$LD_LIBRAR
Y_PATH:$$INFORMIXDIR/lib:$$INFORMIXDIR/lib/esql
export INFORMIXDIR INFORMIXSERVER
ONCONFIG PATH
如果该用户用的是
C Shel
l
,修改
~/.cshrc
,增加以下
几行:
setenv INFORMIXDIR
的
home
目录
>
setenv INFORMIXSERVER ipcshm
setenv ONCONFIG onconfig
setenv PATH $$PATH:$$INFORMIXDIR/bin
setenv LD_LIBRARY_PATH
$$LD_LIBRARY_PATH:$$INFORMIXDIR/lib:
$$INFORMIXDIR/lib/esql
创建初始的用户数据库
智能网
SCP/SMP
的数据库要求建在
userd
bs
上,采用
buffered
log
方式。
在下面的叙述中假设要
创建的
database
名叫
scp<
/p>
。
方法一:
创建
database
在
informix
用户下执行以下命令
$$ echo ‘create database
scp
in userdbs with bu
ffered log’ |
dbaccess
授权
$$ echo ‘grant dba to
<
数据库所有者
>’ | dbaccess
min
$$ echo ‘grant connect,
resource to <
数据库的其他访问者
>’ |
dbaccess min
<
数据库
所有者
>
在
SCP
SCP
软件的用户。同样,在
SMP
中是指负责运
行
SM
P
软件的用户创建初始的表结构,它通过读业务逻辑文件头部的数据库说明部分,自动<
/p>
创建该业务所需的所有表结构。
为用户
表的
sql
语句。
dbaccess scp <
2.2
在二台机器上搭建
INFORMIX HDR
环境
(
无
cluster
软件
)
2.2.1
配置需求说明
HDR(Hierachical
Data
Replication)
是
informix
p>
server
产品自带的一个功能,中文称为:
同步复制。比如我们对
ServerA
(主机)这边的
数据库中的某个表做操作,那么与
ServerA
做
了
HDR
的
Server
B
(从机)上可立即看到该表的变化。还有如果在
Server
A
这边加
Chunk
,
同时
ServerB
那边也加上了,前提是两台机器上
都存在相同的
Chunk
路径名字。另外,作为
主机的
ServerA
可以正常作业务,但作为从机的
ServerB
处于一种只读状态,不能直接更改
ServerB
上的数据,但可以都数据,因此我们可以将查询业务放到从机
上,从而减轻主机的负
载。
如果主机宕掉,从机可以立刻改变为主机,可以正常作业务。
要想构筑这样的一个环境,要求很高:
两台机器的硬件配置必须相同;
数据库版本必须相同;
操作系统版本必须相同;
Chunk
的路径必须相同;
总之,两台机器必须完全一模一样,包括软件和硬件,因此对于我们来说就很难体验它的
共
74
页
第
24
页
[ Informix
数据库手册
]
HDR
环境是可以在同一台机器上建起来,而且非
常简单,完全符合以上要求。
2.2.2
onconfig
文件
NETTYPE
必须为网络类型:
s
octcp
或者
tlitcp
;
SERVERNUM
必须不同而且唯一,因
为要在同一台机器上运行两个
server
;
SERVERNAME
名字可以不同;
修改
ROOTPATH
为
./CHUNK0
,这处很关键,是相对路径;
<
/p>
DRAUTO
=
0
或
1
或
2
,
(0
——代表手工切换,
1
——从机切到
standard
模式,当主机恢<
/p>
复后,自动切回从机状态
,2
——自动切
换,从机变主机,主机变从机
)
修改其它变量,如对于
fep1
#
System Archive Tape Device
TAPEDEV /usr/informix/backup/ #
Tape device path
TAPEBLK 16
# Tape block size (Kbytes)
TAPESIZE
102400000 # Maximum amount of data to put on
tape (Kbytes)
# Log Archive
Tape Device
LTAPEDEV
/dev/null # Log tape device path
LTAPEBLK 16 # Log
tape block size (Kbytes)
LTAPESIZE
102400000 # Max amount of data to put on log
tape (Kbytes)
对于
fep2
# System Archive Tape Device
TAPEDEV
/usr/informix/backup/ # Tape device path
TAPEBLK 16 # Tape
block size (Kbytes)
TAPESIZE
102400000 # Maximum amount of data to put on
tape (Kbytes)
# Log Archive
Tape Device
LTAPEDEV
/dev/null # Log tape device path
LTAPEBLK 16 # Log
tape block size (Kbytes)
LTAPESIZE
102400000 # Max amount of data to put on log
tape (Kbytes)
)
修改
sqlhosts
文件,将两个
ser
ver
的信息都加入到这个文件中,注意网络端口的配置。
2.2.3
Sqlhosts
文件示例:
fep1db onsoctcp fep1
fep1db
fep2db onsoctcp fep2
fep2db
2.2.4 /etc/services:
fep2db 7777/tcp
fep1db 8888/tcp
2.2.5
做主从机
在
fep1
上作零级备份和逻辑日志备份:
$$>ontape
–
s
–
L
0
共
74
页
第
25
页
[ Informix
数据库手册
]
Please mount
tape 1 on /usr/informix/backup/ and press Return
to continue ...
100 percent done.
Please label this tape as
number 1 in the arc tape sequence.
This tape contains the following
logical logs:
313
Program over.
$$>ontape
–
a
/*
逻辑日志的备份,第一次做双机一般不需要做
*/ <
/p>
将
fep1
设置成主
:
$$>onmode
–
d primary fep2db <
/p>
将备份文件
ftp
传送到
fep2.
在
fep2
上做物
理恢复:
$$>onmode
–
ky
$$>ontape
–
p
/*
做恢复
*/
Please
mount tape 1 on /usr/informix/backup/ and press
Return to continue ...
Archive Tape Information
Tape type: Archive Backup Tape
Online version: Informix Dynamic Server
Version 1
Archive date: Fri Jun
6 13:26:41 2003
User id:
informix
Terminal id: /dev/pts/2
Archive level: 0
Tape
device: /usr/informix/backup/
Tape
blocksize (in k): 16
Tape size (in k):
102400000
Tape number in series: 1
Spaces to restore:1
[rootdbs ]
2 [tempdbs
]
3 [logdbs ]
4
[userdbs ]
Archive Information
Informix Dynamic Server Copyright(C)
1986-1998 Informix Software, Inc.
Initialization Time 06/05/2003
16:35:34
System Page Size 2048
Version 6
Archive CheckPoint Time 06/06/2003
13:26:41
Dbspaces
number flags fchunk nchunks
flags owner name
1 1
1 1 N informix rootdbs
2 1 2 1 N
informix tempdbs
3 1
3 1 N informix logdbs
4 1 4 1 N
informix userdbs
共
74
页
第
26
页
[ Informix
数据库手册
]
Chunks
chk/dbs
offset size free bpages flags pathname
1 1 0 250000 147125
PO- /usr/informix/chunklink/rootdbs1
2 2 0 500000 499947
PO- /usr/informix/chunklink/tempdbs1
3 3 0 500000 497447
PO- /usr/informix/chunklink/logdbs1
4
4 0 500000 498267 PO-
/usr/informix/chunklink/userdbs1
Continue restore? (y/n)y
Do
you want to back up the logs? (y/n)n
Restore a level 1 archive (y/n) n
Program over.
$$>onmode
–
d secondary fep1db
中是否有
下列信息:
DR:Primary server
operational
或者:
DR: Secondary server operational
查看数据库状态:
onstat
–
你应看到在
Server1
窗口:
Version 3
–
On-Line (Prim)
你应看到在
Server2
窗口:
p>
Version 3
–
On-Line (Sec)
这就代表
HDR
已经建立了,我们可以做操作了,注意只有带日
志的数据库可以被复制,
不建日志是无法复制的。
2.2.6
验证双机
复制举例:在
fep1
窗口执行
$$>dbaccessdemo7
–
log
当执行完成后,我们在<
/p>
fep1
上建了一个数据库,而同时
fe
p2
窗口上用
Dbaccess
可以看
到
fep2
上数据库也建好了。注意加
chunk
做好不要使用绝对路经。如果你的
=
2
,
那么你将
fep1 shutdown
,
fep2
就会改变状态成为主机。
2.2.7
主从不一致的恢复
p>
如果发现二台主机都为主的状态,因该把时间短的主机用
onmod
e
–
ky
命令关闭,然后再
时间长的主机
onmode
–
ky
,再启动
oninit
。
再启动第二台主机。正常状态应该是
。
如果还不行,只有重做主从机了。
2
.3
.有
cluster
软件数据库的
安装方案
这种方式,
2
台主机配置完全一样。数据放在共享盘做
raid.
对外是一个浮动的
ip
地址,
由
cluster
软件去完成
infomix<
/p>
应用进程的切换
,
和
应用的切换。相对简单。
2.3.1
文件举例:
etc/sqlhosts
gdsdp
onsoctcp sdp sqlexec
共
74
页
第
27
页
[ Informix
数据库手册
]
.profile
EDITOR=vi
export
EDITOR
INFORMIXDIR=/usr/informix
INFORMIXSERVER=gdsdp
ONCONFIG=onconfig
PATH=$$PATH:$$INFORMIXDIR/bin
SHLIB_PATH=$$INFORMIXDIR/lib:$$INFORMIXDI
R/lib/esql
export
INFORMIXDIR INFORMIXSERVER ONCONFIG PATH
SHLIB_PATH
export
TERM=vt100
ln
ln
-s /dev/vgdata/rlvol1 rootdbs
ln -s
/dev/vgdata/rlvol1 tempdbs
ln -s
/dev/vgdata/rlvol2 logdbs
ln -s
/dev/vgdata/rlvol3 datadbs1
ln -s
/dev/vgdata/rlvol4 datadbs2
onconfig:
#*****************
**************************************************
*******
#
#
INFORMIX SOFTWARE, INC.
#
# Title:
#
Description: Informix Dynamic Server Configuration
Parameters
#
#**************
**************************************************
**********
# Root Dbspace
Configuration
ROOTNAME
rootdbs # Root dbspace name
ROOTPATH
/usr/informix/chunklink/rootdbs
# Path for device containing root dbspace
ROOTOFFSET 0 #
Offset of root dbspace into device (Kbytes)
ROOTSIZE 500000 # Size
of root dbspace (Kbytes)
#
Disk Mirroring Configuration Parameters
MIRROR 0
# Mirroring flag (Yes = 1, No = 0)
MIRRORPATH # Path
for device containing mirrored root
MIRROROFFSET 0 #
Offset into mirrored device (Kbytes)
# Physical Log Configuration
PHYSDBS phydbs
# Location (dbspace) of physical log
PHYSFILE 200000 #
Physical log file size (Kbytes)
# Logical Log Configuration
LOGFILES 36 #
Number of logical log files
LOGSIZE
30000 # Logical log size (Kbytes)
# Diagnostics
共
74
页
第
28
页
[ Informix
数据库手册
]
MSGPATH
/usr/informix/ # System message log file path
CONSOLE /dev/console #
System console message path
ALARMPROGRAM /usr/informix/etc/log_
# Alarm program path
SYSALARMPROGRAM
/usr/informix/etc/ # System Alarm program path
TBLSPACE_STATS 1
# System Archive Tape
Device
TAPEDEV
/dev/null #/dev/tapedev
# Tape
device path
TAPEBLK
16 # Tape block size (Kbytes)
TAPESIZE 10240 #
Maximum amount of data to put on tape (Kbytes)
# Log Archive Tape Device
LTAPEDEV /dev/null
#/dev/tapedev
# Log tape device path
LTAPEBLK 16 # Log
tape block size (Kbytes)
LTAPESIZE
10240 # Max amount of data to put on log
tape (Kbytes)
# Optical
STAGEBLOB
# Informix Dynamic Server/Optical staging area
# System Configuration
SERVERNUM 0
# Unique id corresponding to a Dynamic Server
instance
DBSERVERNAME gdsdp
# Name of default database server
DBSERVERALIASES # List
of alternate dbservernames
NETTYPE
soctcp,3,50,NET # Configure poll thread(s) for
nettype
DEADLOCK_TIMEOUT 60
# Max time to wait of lock in distributed env.
RESIDENT 0 #
Forced residency flag (Yes = 1, No = 0)
MULTIPROCESSOR 1
# 0 for single-processor, 1 for multi-processor
NUMCPUVPS 3 #
Number of user (cpu) vps
SINGLE_CPU_VP
0 # If non-zero, limit number of cpu
vps to one
NOAGE
0 # Process aging
AFF_SPROC 1 #
Affinity start processor
AFF_NPROCS
3 # Affinity number of processors
# Shared Memory Parameters
LOCKS 3000000
#Maximum number of locks
BUFFERS
250000 #Maximum number of shared buffers
NUMAIOVPS 6 #
Number of IO vps
PHYSBUFF 512
# Physical log buffer size (Kbytes)
LOGBUFF 256 #
Logical log buffer size (Kbytes)
LOGSMAX 60 #
Maximum number of logical log files
CLEANERS 8 #
Number of buffer cleaner processes
SHMBASE 0x0 #
Shared memory base address
SHMVIRTSIZE
51200 # initial virtual shared memory
segment size
SHMADD 40000
# Size of new shared memory segments (Kbytes)
SHMTOTAL 0 # Total
shared memory (Kbytes). 0=>unlimited
共
74
页
第
29
页
[ Informix
数据库手册
]
CKPTINTVL 300
# Check point interval (in sec)
LRUS
12 # Number of LRU queues
LRU_MAX_DIRTY 1 # LRU
percent dirty begin cleaning limit
LRU_MIN_DIRTY 0 # LRU
percent dirty end cleaning limit
LTXHWM
50 # Long transaction high water mark
percentage
LTXEHWM 60
# Long transaction high water mark (exclusive)
TXTIMEOUT 0x12c #
Transaction timeout (in sec)
STACKSIZE
64 # Stack size (Kbytes)
# System Page Size
#
BUFFSIZE - Dynamic Server no longer supports this
configuration parameter.
#
To determine the page size used by Dynamic Server
on your platform
# see the
last line of output from the command, 'onstat -b'.
# Recovery Variables
# OFF_RECVRY_THREADS:
#
Number of parallel worker threads during fast
recovery or an offline restore.
#
ON_RECVRY_THREADS:
# Number of parallel
worker threads during an online restore.
OFF_RECVRY_THREADS 10
# Default number of offline worker threads
ON_RECVRY_THREADS 1 #
Default number of online worker threads
# Data Replication
Variables
# DRAUTO: 0 manual, 1 retain
type, 2 reverse type
DRAUTO 0
# DR automatic switchover
DRINTERVAL
30 # DR max time between DR buffer
flushes (in sec)
DRTIMEOUT 30
# DR network timeout (in sec)
DRLOSTFOUND /usr/informix/etc/und #
DR lost+found file path
#
CDR Variables
CDR_LOGBUFFERS 2048
# size of log reading buffer pool (Kbytes)
CDR_EVALTHREADS 1,2 #
evaluator threads (per-cpu-vp,additional)
CDR_DSLOCKWAIT 5 # DS
lockwait timeout (seconds)
CDR_QUEUEMEM
4096 # Maximum amount of memory for any
CDR queue (Kbytes)
CDR_LOGDELTA 30
# % of log space allowed in queue memory
CDR_NUMCONNECT 16 #
Expected connections per server
CDR_NIFRETRY 300 #
Connection retry (seconds)
CDR_NIFCOMPRESS 0 # Link
level compression (-1 never, 0 none, 9 max)
# Backup/Restore variables
BAR_ACT_LOG /tmp/bar_
BAR_MAX_BACKUP 0
BAR_RETRY 1
BAR_NB_XPORT_COUNT 10
BAR_XFER_BUF_SIZE 31
# Informix Storage Manager
variables
ISM_DATA_POOL ISMData
# If the data pool name is changed, be sure to
# update $$INFORMIXDIR/bin/onbar.
Change to
# ism_catalog
-create_bootstrap -pool
ISM_LOG_POOL ISMLogs
共
74
页
第
30
页
[ Informix
数据库手册
]
# Read Ahead Variables
RA_PAGES #
Number of pages to attempt to read ahead
RA_THRESHOLD #
Number of pages left before next group
# DBSPACETEMP:
# Dynamic
Server equivalent of DBTEMP for SE. This is the
list of dbspaces
# that the Dynamic
Server SQL Engine will use to create temp tables
etc.
# If specified it must be a colon
separated list of dbspaces that exist
#
when the Dynamic Server system is brought online.
If not specified, or if
# all dbspaces
specified are invalid, various ad hoc queries will
create
# temporary files in /tmp
instead.
DBSPACETEMP
tempdbs # Default temp dbspaces
# DUMP*:
# The
following parameters control the type of
diagnostics information which
# is
preserved when an unanticipated error condition
(assertion failure) occurs
# during
Dynamic Server operations.
# For
DUMPSHMEM, DUMPGCORE and DUMPCORE 1 means Yes, 0
means No.
DUMPDIR
/tmp # Preserve diagnostics in this
directory
DUMPSHMEM 1
# Dump a copy of shared memory
DUMPGCORE 0 # Dump
a core image using 'gcore'
DUMPCORE
0 # Dump a core image (Warning:this
aborts Dynamic Server)
DUMPCNT
1 # Number of shared memory or gcore
dumps for
# a single user's session
FILLFACTOR 90
# Fill factor for building indexes
# method for Dynamic Server to use when
determining current time
USEOSTIME
0 # 0: use internal time(fast), 1:
get time from OS(slow)
#
Parallel Database Queries (pdq)
MAX_PDQPRIORITY 100 #
Maximum allowed pdqpriority
DS_MAX_QUERIES #
Maximum number of decision support queries
DS_TOTAL_MEMORY #
Decision support memory (Kbytes)
DS_MAX_SCANS 1048576 #
Maximum number of decision support scans
DATASKIP off
# List of dbspaces to skip
# OPTCOMPIND
# 0 => Nested
loop joins will be preferred (where
#
possible) over sortmerge joins and hash joins.
# 1 => If the transaction isolation
mode is not
#
#
below. Otherwise it behaves as in (0) above.
# 2 => Use costs regardless of the
transaction isolation
# mode.
Nested loop joins are not necessarily
#
preferred. Optimizer bases its decision purely
# on costs.
OPTCOMPIND
2 # To hint the optimizer
ONDBSPACEDOWN 2
# Dbspace down option: 0 = CONTINUE, 1 = ABORT, 2
= WAIT
LBU_PRESERVE 0
# Preserve last log for log backup
共
74
页
第
31
页
[ Informix
数据库手册
]
OPCACHEMAX 0
# Maximum optical cache size (Kbytes)
# HETERO_COMMIT (Gateway participation
in distributed transactions)
# 1 =>
Heterogeneous Commit is enabled
# 0 (or
any other value) => Heterogeneous Commit is
disabled
HETERO_COMMIT 0
# Optimization goal: -1 =
ALL_ROWS(Default), 0 = FIRST_ROWS
OPT_GOAL -1
# Optimizer DIRECTIVES ON
(1/Default) or OFF (0)
DIRECTIVES
1
# Status
of restartable restore
RESTARTABLE_RESTORE off
共
74
页
第
32
页
[ Informix
数据库手册
]
3
.
数
据库的启动和关闭
3.1
数据库的启动:
oninit
3.2
数据库的关闭
:
onmode
–
ky
3.3
双机的关闭的原则
:
关闭应用
->
关闭从机
->
关闭主机。
Informix<
/p>
双机系统出现故障后,首先使用
onstat
l
命令分别观察主从双机的逻辑日志使用
情况,目的是确认主机的逻辑日志和从机的逻辑日志之间相差多少,在双机出现问题至今正常
工作的机器的逻辑日志是否完全保留;(可以通过
查看一下该系统在一天内能够写
满几块逻辑日志文件,估算出经过几天所有的逻辑日志
文件可以写满)。
观察
onstat
–
l
的输出中的
U---C-L
项,在双机正常工作的情况下,主从机
U
---C-L
项为同
一个文件号,出问题后,主机的逻辑日志继
续写入,从机的逻辑日志停止。双机快速恢复就是
要恢复双机系统的逻辑日志。
确认主机的逻辑日志没有被覆盖后,建立双机系统,让双机自动进行逻
辑日志的恢复;也
可以手工进行逻辑日志的恢复,首先修改
on
config
中的
ltapedev
将
其指向文件和磁带,需要
重新启动数据库才能生效,然后使用
o
ntape
–
a
命令备份主机逻辑日
志,使用
ontape
–
l
命令
在从机上进行逻辑日志的恢复。
对
onconfig
配置文件的修改,在系统正
常后一定要恢复原状。
举例:
hostname
:
SMPA
informixserver
:
smpa
status
:
online prim
正常工作
hostname
:
SMPB
informixservce
:
smpb
status
:任何的异常情况
在<
/p>
SMPB
上,使用
onmode
–
ky
命令关闭数据库;
在
SMPA
ontape -s -L 0
命令对数据库进行零级备份
在
SMPB
上,使用
ontape
-p
命令恢复数据库,同时提问“继续还原”-
Y
,“备份日
志”-
N
在
8
、
9
之间来回反复;
在
SMPA
上,提示“备份结束”;
在
SMPA
上,使用
onmode
–
d primary
smpb
命令建立主机;(注意
onmode
–
d primary
从机
informixserver
名
.
在
SMPB
上,继续进行恢复,当提问“是否恢
复一级归档”-
N
,恢复结束;
p>
在
SMPB
上,使用
onmode
–
d secondary
smpa
命令建立从机;
共
74
页
第
33
页
[ Informix
数据库手册
]
在
SMPB
上,使用
onstat
–
命令观察
从机的状态,要求从
fast
recorery
→
read only
,该过
程一般要持续
2
-
3
个小时;在此过程中,观察系统的
,如果正常的话
log
中会记录
rootdbspace
、
phydbspace
已经恢复,逻辑日志
****
开始恢复等等。如
果看不到逻辑日志
****
开始恢复的字样,说明系统并没有正
常,如果过了十几个小时后系统仍然是
fast
recore
ry
状
态,这说明逻辑日志并没有从主机传递到从机,需要强制
恢复一下,使用方法如下:关闭从机
数据库→关闭主机数据库→启动主机数据库→启动从
机数据库,这样后系统会自动进行逻辑日
志的同步。
共
74
页
第
34
页