当前位置:文档之家› informix数据库性能查看方法

informix数据库性能查看方法

1、 相关环境变量
游标的定义和优化
A. 优化使用游标B.
export PTOFC=1 减少cursor的通信量

C. 自动释放游标D. 资源
SET AUTOFREE...ENABLED
export IFX_AUTOFREE=1

E. 优化fetch游标F.
set FET_BUF_SIZE = 32k

启动KAIO参数
export KAIOON=1
需要重新启动数据库

启动PDQ参数
A. 环境变量:export PDQPRIORITY=80
B. SQL语句中设置:set PDQPRIORITY=80
C. 并行扫描线程数:export PSORT_NPROCS=0(缺省的3个)或要启动的个数,D. 不E. 设不F. 启动。
G. 启动 light scan方法:export LIGHT_SCANS=force
H. ONCON FIG参数:
MAX_PDQPRIORITY
DS_MAX_QUERIES
DS_TOTAL_MEMORY
DS_MAX_SCANS
DBSPACETEMP
RA_PAGES
RA_THRESHOLD
G. 管理监控方法
$ onstat -g mgm

动态改变ONCONFIG中缺省设置方法
$ onmde -M (DS_TOTAL_MEMORY) / -Q (DS_MAX_QUERIES) / -D (MAX_PDQPRIORITY) / -S (DS_MAX_SCANS)

启动SQL缓存方法
ONCONFIG参数
STMT_CACHE : 0=disabled ; 1=Enabled, Session off ; 2=Enabled, Session on ;
STMT_CACHE_SIZE 缺省为72K或设置的大小
环境变量
在ONCONFIG中STMT_CACHE > 0时
export STMT_CACHE:0=disabled ; 1=enabled
SQL语句
set STMT_CACHE {ON / OFF}
动态onmode方法
$ onmode –e {ENABLE|ON|OFF|FLUSH}

管理方法
$ onstat -g cac stmt
调试方法
export STMT_CACHE_DEBUG={1|2}:/tmp/file.out


停止FUZZY Checkpoint方法
export NOFUZZYCKPT=1

缺省是fuzzy checkpoint,但发以下命令产生全checkpoint:
$ onmode -ky
$ onmode -c
$ ontape / onbar 备份或恢复
fast recovery 或 full recovery

收集数据库故障分析方法
若数据库down,查看数据库日志,查找/tmp/af.xxx文件得到详细信息

若数据库没有出现任何详细的信息,则需要下次故障后通过以下方法收集信息:
A. export AFDEBUG=1 (at command line before starting engine - oninit)
This environment variable causes OnLine to hang rather than crash when an assertion failure error is detected.

B. When an assertion failure occurs, check the online log to
determine what process is hanging. At the time of an assertion failure, type onstat -m to view the log.

C. Once the online engine suspends, you can run several onstat commands against the instance:

onstat -u
onstat -g ath
onstat -g sts
onstat -g glo
onstat -g stk thread id
onstat -g ses session id
onstat -g seg
onstat -g mem

These are all helpful in reviewing the shared memory at that instance in time.

D. In order to use a debugger against the process id, you can attach manually using the following command:

i.e. sdb $INFORMIXDIR/bin/oninit PID

E. Below is a sample:

example $ export AFDEBUG=1
example $ oninit
.........
example $ onstat -m
07:20:18 checkpoint completed: duration 13 seconds
07:22:20 bsession.c, line 861, thread 2854, procid 4975,
(destroy_session) mem pools not freed.
07:22:22 invoke_debugger:execlp error 2
07:22:22 execlp(,,,4975,0);
07:22:22 oninit pid 4975 can be attached to manually



machine:/sdb $INFORMIXDIR/bin/oninit PID

some debuggers: (sdb, xdb, dbx, gdb)

F. The stack trace will tell what functions the oninit called before the assertion failure.

G. When you are done, bring down the engine with onmode -ky and unset the AFDEBUG environment variable. If that doesn't bring the engine down, you may need to issue a kill -9 on the master oninit process and run ipcs to ensure shared memory is erased.

数据库性能监控方法
2、 主要工具 onstat 、oncheck 、SMI接口、onperf(x-window界面)、sar、top、vmstat、iostat
3、 监控的主要内容包括以下部分:
l cpu(确定数据库的CPU资源配置是否足够)

参数:NUMCPUVPS

检查CPU VP资源是否足够的方法
$ onstat –i
onstat > r 1
onstat (1) > rea
查看是否有等待处理的线程

onstat(1) > act
查看数据库CPU VP正在处理的线程

$ onstat –g glo 可以看到oninit的进程情况

l 内存(确定数据库内存的分配是否足够)

参数:BUFFERS、SHMVIRTSIZE、LOCKS、LRUS

查看数据库是否使用内存正常:
$ onstat -p
是否有ovbuff

$ onstat -m
查看是否有动态增加的虚拟内存
查看数据库的内存分配情况
$ onstat -g seg
$ ipcs -m

查看连接的session内存分配情况
$ onstat -g ses
对于内存分配大的用户session,需要分析其原因

查看内存LRU管理情况
$ onstat -R

l 磁盘的读写、数据表的分布情况(检查数据的分布是否合理,l 消除I/O瓶颈)
查看数据库chunk分布情况和使用空间是否足够
$ onstat -d

查看数据库chunk的读写情况
$ onstat -D
$ onstat -g iof

查看AIO的队列情况
$ onstat -g ioq
maxlen太长的情况需要调整NUMAIOS数据

查看tbspace的读写情况
$ onstat -g ppf

检查数据表在chunk分布的拓扑情况
$ oncheck -pe

检查数据库表的详细情况,包括记录数、记录长度、碎片数据、索引层次等信息
$ oncheck -pt stores:customer

如以上得到数据显示表customer 的partition partnum为1048891
$ oncheck -pp 1048891 0 可以查看customer数据的分布情况

以下命令检查表数据或索引是否正常
$ oncheck -cDI database:table

l 网络的读写情况(检查数据库网络的配置是否正常有效)

参数:NETTYPE和sqlhosts配置的方法

$ onstat -g ath
查看相关的poll监听线程是否启动

$ onstat -g ntd
查看接收和拒绝的次数

$ onstat -g ntu
查看用户启动的sqlexec线程读写的情况

$ netstat -a
看连接监听的端口是否有效

l 检查用户SQL语句是否正常

$ onstat -u 查看用户连接ID号

$ onstat -g ses id 查看用户的内存分配情况、用户启动的线程数、用户是否用到临时表空间

$ onstat -g sql id 查看用户的SQL语句和执行结果是否有错误

$ onstat -k 查看用户的使用锁情况

$ onstat -x 查看用户的事物处理情况

$ onmoe -z id 杀掉

不正常的用户session

相关的参数衡量指标
4、 读写的命中率
$ onstat –p
dskreads pagereads bufreads %cached dskwrits pagwrits bufwrits %cached
450 1083 1893 97.62 586 1217 8076 92.74
查看参数读的命中率98%以上,调整 BUFFERS
写的命中率85%以上,调整LRUS , LRU_MAX_DIRTY , LRUS_MIN_DIRTY , CKPTINTVL , PHYSLOG

5、 内存LRU的管理
$ onstat -R
$ onstat -F
Fg Writes LRU Writes Chunk Writes
11 318 201
调整:
LRU_MAX_DIRTY
LRU_MIN_DIRTY
LRUS
控制在checkpoint时的写的数据页数
(BUFFERS / LRUS) * LRU_MAX_DIRTY 时checkpoint时写的最大数据量

6、 checkpoint的时间
$ onstat -m
$ onstat -g iof
$ onstat -D
调整写盘数据量(同2,调整LRU方法)
调整数据的分布情况,分布在不同的disk driver上

7、 物理日志和逻辑日志缓冲区的利用率
$ onstat -l
Physical Logging
Buffer bufused bufsize numpages numwrits pages/io
P-1 0 16 265 21 12.62
phybegin physize phypos phyused #used
100107 1000 266 0 0.00
Logical Logging
Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io
L-2 0 16 6766 394 28 17.2 14.1
...
调整目标是将日志的buffer利用率调整为 (pages/io)/bufzise = %75的比例
调整参数 phybuff / logbuff ,比%75小,减小phybuff、logbuff;比%75大,调大

8、 预读的性能
$ onstat -p

调整目标
将 (ixda-RA + idx-RA + da-RA) = RA-pgsused

调整参数:RA_PAGES 和 RA_THRESHOLD

其他提高数据库性能的方法
9、 使用常用表长驻内存
set table table_name memory_resident | no_resident ;

$ onstat -P 查看

10、 SQL语句进行词法预分析方法

set explain on ;
执行相应的SQL语句

检查当前目录下的sqexplain.out文件
分析词法优化器使用的路径是否合理

分析执行的效率方法
$ time dbaccess airgen_cm_db sel_cnt.sql
Database selected.
(sum)
1156215
1 row(s) retrieved.
Database closed.
real 0m0.12s
user 0m0.05s
sys 0m0.01s

11、 表不12、 带日志方法
将表的索引、以及constrain等条件全部删除后,执行以下SQL语句
alter table table_name type (raw|standard)

13、 使用Informix最快的数据转移工具HPL倒数据
$ onpladm 命令行方式定义数据库表的输出或输入关系
文档参考$INFORMIXDIR/release/en_us/0333/onpladm/index.html

$ onpladm create project stores7 -d /tmp/stores7 -D stores7 建立所有的load和unload数据到onpload数据库中

$ onpladm run project stores7 –fu 将数据库stores7数据unload出来
$ onpladm run project stores7 –fl 将数据库stores7数据load入

$ onpload 执行命令

14、 update statistics的原则
以下情况后要运行update statistics :
à data is loaded into a table,
à updates significantly change the distribution of data values contained in a column,
à deletes or inserts change the number of rows contained in a table
à indexes on the table are added or altered.

执行原则:
1

. Run UPDATE STATISTICS MEDIUM... DISTRIBUTIONS ONLY.
2. Run UPDATE STATISTICS HIGH for the first column in each index.
3. Run UPDATE STATISTICS HIGH for the first column that differentiates two similar indexes.
4. If necessary, run UPDATE STATISTICS HIGH for columns which do not head indexes, but are used in equality or inequality expressions.
5. Run UPDATE STATISTICS FOR PROCEDURE for each procedure.

与ONCONFIG 参数DBSPACETEMP 和 PDQRIORITY一起使用

15、 检查备16、 份磁带是否成功的工具
$ archecker -R -tvs
-b Direct XBSA access
-D Delete old files and EXIT
-d Delete old files
-F Retrieve list of pages off the archive
-P Read Performance - info only
-R Restart the checking
-s Print status message to the screen
-t Read the tape directly
-T Restart at a specific tape
-v Verbose
-V Version>




首页 | 论坛 | Linux | 博客 | 下载 | 人才 | 培训 | WIKI | 手册 | 图书 | 搜索

https://www.doczj.com/doc/0318884587.html, ? Informix ? Informix动态服务器命令集

2003-1-9 12:17 大梦
Informix动态服务器命令集

[这个贴子最后由大梦在 2003/01/09 01:34pm 编辑]

Informix动态服务器命令集

操纵动态服务器的运行模式
管理动态服务器系统的数据空间
管理逻辑日志和物理日志
利用onstat命令监控动态服务器系统

oninit 命令

语法 oninit [-s] [-i] [-p] [-y]

oninit 将系统从off-line模式变为on-line模式

oninit -s 将系统从off-line模式变为quiescent模式

oninit -i 初始化系统

oninit -p 在共享内存初始化时,不搜索,删除临时表

oninit -y 对提示自动回答yes

oninit -- 键入此命令可以获得使用帮助


oninit 命令用来改变系统的运行模式。其中-i选项用于初始化系统的root dbspace。注意,root-dbspace一旦被初始化,则等于整个数据库系统被初始化。

如果用户希望在计算机启动时自动自动启动动态服务器系统,请在系统初启文件(在许多UNIX系统中为/etc/rc)中加入onstat命令(不加任何选项)。

onmode 命令

语法: onmode [-k] [-m] [-s] [-u] [-y]

onmode -k 执行立即shutdown,将系统变为off-line模式

onmode -m 将系统从quiescent模式变为on-line模式

onmode -s 执行graceful shutdown

onmode -u 执行immediate shutdwon

onmode -y 对提示自动回答yes


onmode 命令同样用于改变动态服务器的运行模式。除了上述选项外,onmode还有很多与改变系统运行模式无关的选项。

利用onspaces命令创建数据空间

语法: onspaces -c [-b] [-d] [-z] [-m] [-o] [-p] [-s] [-t]

-c 创建blobspace或dbspace

-b blobspace blobspace名

-d dbspace dbspace名

-g page size blobpages大小

-m mirror 镜像设备设的全路径名和偏移量(KB)

-o offset

偏移量(KB)

-p pathname chunk设备的全路径名

-s size dbspace大小(KB)

-t 创建临时dbspace


onspaces命令用于创建数据空间、临时空间和存储blob数据的空间(blobspace)。键入onspaces--可以获得该命令的联机帮助。利用onstat -D或onstat -d可以看到系统中的关于数据空间的重要信息。包括:chunk的状态、空闲、每一chunk读写的次数。系统中可能包括的多个系统空间,特别当进行数据分片后,我们建议用户最好能利用命令行来创建数据空间。

可以利用如下命令创建数据空间:

onspaces -c -d datadbs1 -o 0 -p /dev/rrvol3 -s 60000

可以用如下的方式创建临时数据空间:

onspaces -c -d tempdbs1 -t -o 0 -p /dev/rrvol5 -s 80000

在系统中,临时数据空间非常重要,通常情况下,应将多个临时数据空间分布在独立的物理设备上。



利用onspaces命令删除数据空间

增加或删除chunks

语法: onspaces -a -d [-m] [-o] [-p]

-a spacename 为dbspace新增chunk

-m pathname 镜像设备的全路径名和偏移量(KB)

-o offset 主设备的偏移量(KB)

-p pathname chunk设备的全路径名

-s size chunk大小

-d spacename 删除chunk

-o offset chunk设备的偏移量(KB)


onspaces不仅能创建数据空间还能删除数据空间、临时数据空间或存储blob数据的空间。在删除数据空间时,必须首先保证它是无用的,即该数据空间上无数据库或表。

如需删除数据空间,请键入如下命令:onspaces -d dbspace_name /blobspace_name

数据空间最初由一个chunk(first chunk)构成,一旦其空间用尽,用户必须追加chunk为了提高系统性能,用户在为数据空间分配chunk时需要计算以保证它的大小能适应未来的需要,否则在追加chunk的时候,它与先前的chunk在物理上不一定相邻,导致增加读取数据的时间。关于如何计算空间需求将在以后章节中阐述。利用onspaces命令可以对数据空间增加或者删除chunk,除此之外,利用该命令还可以完成如下任务:启动镜像、中止镜像或改变chunk的状态。

例如可以用如下命令为数据空间增加chunk:

onspaces -a -d datadbs1 -0 60002 -p /dev/rrvol3 -s 60000

再如可以用如下方式从数据空间中删除chunk:

onspaces -d datadbs1 -o 60002 -p /dev/rrvol3 -s 60000



onparams 命令

语法:onparams -a -d -p [-d] [-s] [-l]

-a 新增逻辑日志

-d dbspace 指定日志存放的dbspace

-s size 新增逻辑日志的大小(KB)

-d 删除逻辑日志

-l logid 指定删除一个逻辑日志

-p 改变物理日志

-d dbspace 新物理日志存放的dbspace名

-s size 物理日志大小(KB)





系统在初始化时自动地在root dbspace中创建逻辑日志和物理日志。在DBMS系统中,尤其在OLTP环境下,数据库的操作非常频繁,日志中必须记录大量的信息,所以用户最好能将多个日志文件分布在不同的设备上。有一种非常简单的方法: 即按所需大小创建逻辑日志,同时创建一个较小的物理日志,系统初始化完毕后,再将物理日志移至其它设备。关于如何确定所需的物理日志的大小,将在以后的章节详述。

利用onstat -l命令可以看出系统中所有新增的逻辑日志被标识为A。这些逻辑日志只有在系统进行归档后才会真正被使用。为了激活这些逻辑日志有一种简单的方法:执行一次“伪”归档。具体步骤如下:将参数TAPEDEV设置为/dev/null然后运行一次ontape -s。也可以执行onbar -F命令。由于伪归档并不真正归档系统信息,所以千万要适时地对系统进行真正的归档操作。

只有在逻辑日志真正无用时才能将其删除。利用onstat -l 可以看出所有的空闲日志被标记为F。如果逻辑日志中包含事务回滚或快速恢复所需的信息,该逻辑日志是不能被删除的。利用onstat -l命令可以看出接受当前事务的日志被标记为C。如果逻辑日志包括最后一个检查点记录,它也是不能被删除的,只有当检查点记录被写入下一个日志忠并且上一个日志被备份后,该日志才能被删除。利用onstat -l命令可以看出包含最后一个检查点记录的日志被标记为L。用户可以利用onmode -c命令强制写检查点记录直至最后一个检查点记录被写入所要求的日志为止。

onstat 工具

显示动态服务器共享内存中的信息
涉及少量磁盘I/O操作
将对系统性能的影响极小
提供关于系统有价值得信息
命令行交互式监控系统
在本章中将讲解onstat 的各种重要选项,请熟悉它们的使用
onstat命令是一种非常有用的系统实时监控工具。该命令直接从共享内存的数据结构中读取信息,报告当时的系统状况。通常onstat 命令不会进行磁盘I/O操作,也不会对系统资源加锁,所以它对系统性能的影响减少到最小。简言之,onstat是informix提供的一种交互式的系统监控工具。

onstat 的一些常用选项:

onstat -- 列出所有选项

onstat -i 设置进入交互模式

onstat - 显示运行模式和数据库引擎状态

onstat -g sub_option 运行多线索选项

onstat -r ; 每隔;秒后重复选项

onstat -g act 显示系统中所有的活动线索

onstat -g ath -r 2 每隔两秒显示系统中所有的活动的线索



系统监控界面

sysmaster数据库在系统初始化时自动创建
数据库中包括指向系统共享内存结构数据字典信息
提供瞬时的系统性

能和状态信息
提供SQL界面了解数据字典信息
允许管理员将系统管理工作自动化
用于执行重复性的监控任务






系统监控界面(system Monitoring Interface --SMI)是一种基于SQL的系统工具,用户通过SMI可以非常方便地获取系统信息。系统在初始化时,自动地在root dbapace创建sysmaster系统数据库。每一系统包括一个sysmaster数据库,该数据库中的大部分表为虚表,是指向共享内存中数据结构的指针。利用SMI可以自动监控系统,特别是在执行重复任务时。

sysmaster数据库是只读的,即不允许对其进行INSERT UPDATE,或DELETE操作。所有用户都拥有对该数据库的查询权限。

在系统初始化后,用户一定要注意检查sysmaster数据库是否建立成功。创建sysmaster数据库的信息都保存在消息日志文件中(online.log)请注意由于所有的DDL语句都将被记录在日志中,所以一定要在日志文件中留出足够的空间以保证创建sysmaster所需。

sysmaster数据库模式记录在$INFORMIXDIR/etc/sysmaster.sql文件中。

oncheck 命令

检查动态服务器磁盘上的数据结构
定位并修补损坏的索引和数据
有磁盘I/O操作
一些操作在处理时将在表上加锁
oncheck命令用于修复磁盘上损坏的索引和数据页,该命令也可用于检查并打印系统的数据结构。在使用oncheck时一定要当心,因为改命令的某些选项会对表加共享锁,例如:oncheck -pt

为防止对系统的损坏,系统会对所有共享内存中的数据进行一次一致性检查。一旦发现数据页出现一致性错误或发现索引错误,系统将把问题和可能的解决方案(利用oncheck)写入消息日志文件,并返回isam错误代码105。

如果发现一致性错误信息,用户应该立即关闭系统并按消息日志文件中的提示运行oncheck。如果oncheck运行失败,则应尝试卸出表再重新装入;如果是索引得问题,则应先删除索引再重建之。如果所有这些步骤都失败了,只有根据原有的系统归档备份来恢复系统。

下面的命令可以提供extend信息:

oncheck -pe


操作系统: AIX 4.3.3
数据库产品:IBM Informix ClientSDK 2.70CU1(32位/64位)
IBM Informix Dynamic Server 9.21

系统配置:
数据库服务器为IBM小型机。
IBM Informix数据库软件安装在机器内置硬盘上,划分出1G的文件系统挂在根文件系统的/informix目录下,每次机器启动时自动将此文件系统自动mount。

确保硬盘有足够剩余空间,至少剩余6G。

1 IBM Informix数据库产品的安装过程

注::
1. 以下安装过程中,在命令行中出现 '$'的为informix用户登录,出现 '# ' 为root用户登录。
2. 确认系统ROOT 的 PP SIZE,执行$lsvg rootvg可以查看到该项参数值。

1.1 设置AIX UNIX 环 境
(5和6步可

以不做)
1. 以root 登 录。使 用 AIX 中的系统管理工具smitty。
2. 建立一个文件系统,该文件系统挂在根目录的informix目录下,不要创建该目录,在创建该文件系统时指明挂在/informix系统自动会创建该目录,文件系统要有1G大小。
#smitty/System Storage Management/File Systems/ Add File Systems/Journaled File System/Add a Journaled File Syste/Add a Standard Journaled File System
选择rootvg
设置SIZE of file system等于1000兆×1024K×2BLOCK=2048000BLOCK
设置MOUNT POINT为/Informix
设置Mount AUTOMATICALLY at system restart?为yes
#mount /informix
3. 创建用户组informix。该组组号必须大于或等于100。
#smitty/Security & Users/Groups/Add a Group
设置Group NAME为informix
4. 创建用户informix。(修改)该用户主目录为/informix,用户组为informix,用户口令为informix(可以任意更改)。其用户号必须大于或等于100。
a.#smitty/Security & Users/Users/Add a User/
设置User NAME为informix
设置Primary GROUP为informix
设置HOME directory为/informix
b.设置完之后,退到上级菜单选择Change a User's Password,输入informix用户名,接着输入用户新密码;
c.退出菜单,将/informix目录的宿主改为informix:informix
chown informix:informix /informix
5. 设置环境变量INFORMIXDIR 和PATH 等:
用informix用户登陆,在文件/Informix/.profile中加入如下环境变量,然后退出用户重新登陆:
INFORMIXDIR=/informix
PATH=$INFORMIXDIR/bin:$PATH
TERMCAP=$INFORMIXDIR/etc/termcap
INFORMIXSERVER=map
ONCONFIG=onconfig.map
export INFORMIXDIR PATH TERMCAP INFORMIXSERVER ONCONFIG
6. 退出用户,再登录,使环境变量生效,可用如下命令来查看:
$env |grep INFORMIXSERVER

1.2 IBM Informix产品安装顺序
INFORMIX 产 品 安 装 顺 序 如 下:
1. 数据库服务器,如IDS 9.21;
2. 客户端开发工具包,如ClientSDK 2.70CU1;

1.3 装入INFORMIX产品并运行安装程序
(注:以下安装一定要用INFORMIX用户登录)
1. IBM INFORMIX Dynamic Server 9.21 产品
(1). 插入IBM INFORMIX Dynamic Server 9.21安装光盘
(2). 导入IBM INFORMIX Dynamic Server 9.21安装文件:
$ mount /cdrom //假设光驱文件系统是挂在/cdrom目录下
$ cpio -icumdvB < /cdrom/IDS/ids.cpi
也可以通过局域网将ids.cpi传送到/informix目录下,以上两个操作就改成$ cpio -icumdvB < ids.cpi
(3). 运行IBM INFORMIX Dynamic Server 9.21 相应的安装程序:
$ ./installserver
当显示:Enter your serial number (e.g.INF#X999999,) > 时,输入产品标签上的序列号。(AAD#J298231)
当显示:Enter your serial number KEY (uppercase letters only) > 时,输入产品标签上的序列号键值。(HSDJJH)
当显示:Installation of INFORMIX ONLINE complete 时,表明安装完成。
(4). 用root用户执行如下:(修改相关文件的权限)
# ./RUN_AS_ROOT.server

2 IBM Informix数据库产品的配

置过程
(实际配置时修改相关的物理设备或目录的名称)
2.1 准备数据库空间
1. INFORMIX 数据库管理系统和应用系统使用AIX Unix文件系统。
2. INFORMIX 数据库数据空间使用AIX Unix 裸设备,不需要建立文件系统,不需要执行mount命令。
* 对于AIX Unix,裸设备为逻辑卷(Logical Volume).
* 所有的裸设备均使用字符式裸设备文件名(/dev下命令"ls -l"输出以c打头的设备名).
* 裸设备所取的名称一定要用给定的名称.

3. 划分原则如下:
数据库的空间可以逻辑分为:数据库系统使用空间和数据库用户使用空间。其中数据库系统使用空间包括Informix root空间(rootdbs)、物理

日志空间(phydbs)、逻辑日志空间(logdbs)和临时表空间(tempdbs)。数据库用户使用空间可以包括数据空间(datadbs)和索引空间(idxdbs)。

为减少并发用户的数据冲突,尽量将系统和用户数据分开。为提高数据处理的并发特点,可以将表数据分片(作用是可以使用到数据库的并发处

理特性、备份恢复的最小单位、提高数据表的最大容量等)。在建立数据dbspace时,可以多建立几个,以利于以后数据表的分片。

4. IBM硬盘划分如下:

硬盘划分:
使用AIX 管理工具smitty lv将共享硬盘划分为下列逻辑卷:

生产数据库部分(限制:chunk的最大容量为2G,因此划分的lv不要超过2G,以下以1G举例)

(1)Informix 根数据卷 320M
裸设备映射系统文件名 空间 裸设备名称
/dev/rrootdbs 320M rootdbs
创建过程:
#smitty/ System Storage Management/ Logical Volume Manage/ Logical Volumes/ Add a Logical Volume
选择rootvg
设置Logical volume NAME为rootdbs
设置Number of LOGICAL PARTITIONS为320/PP(PP为物理分区大小,文档开头有介绍如何查询PP值,一般为4兆,8兆,或32兆)
以下建裸设备过程雷同。
(2)Informix 物理日志卷 448M
裸设备映射系统文件名 空间 裸设备名称
/dev/rphydbs 448M phydbs
(3)Informix 逻辑日志卷 1.28G
裸设备映射系统文件名 空间 裸设备名称
/dev/rlogdbs 1.28GB logdbs
(4)Informix 临时表空间卷 640M
裸设备映射系统文件名 空间 裸设备名称
/dev/rtempdbs 640 tempdbs
(5)应用数据使用空间卷/应用索引使用空间卷2.56G(可以根据数据量的大小,建立多几个数据空间卷)
裸设备映射系统文件名 空间 裸设备名称
/dev/rmapdbs1 1.28GB mapdbs1
/dev/rmapdbs2 1.28GB mapdbs2

5. 设置数据设备文件的权限并配置网络服务端口:
# chmod 666 /dev/console
# chmod 660 /dev/r*dbs*
# chown informix:informix /dev/r*dbs*

# cd /etc
使用vi编辑工具将下列内容加入到/etc/services文件中:
sql_map 3333/tcp #informix
数据库服务器IP服务名(sql_map)在配置sqlhosts文件中使用。


2.2 修改AIX Unix内核参数
以root登录,修改内

核参数

1. 使用AIX 管理工具smitty aio 进入管理状态,修改如下参数:
进入Change / Show Characteristics of Asynchronous I/O
修改STATE to be configured at system restart [available]

2.3 初始化数据库
1. 连接裸设备字符式文件名。
通过ln 命令连接到 /informix/data 目录下相应的文件名:
$ cd
$ mkdir data
$ cd data

$ ln -s /dev/rrootdbs rootdbs
$ ln -s /dev/rphydbs phydbs
$ ln -s /dev/rlogdbs logdbs
$ ln -s /dev/rtempdbs tempdbs
$ ln -s /dev/rmapdbs1 mapdbs1
$ ln -s /dev/rmapdbs2 mapdbs2

2. 修改Informix配置文件onconfig.map:
$ cd etc
$ cp onconfig.std onconfig.map

使用vi 编辑工具按以下建议内容修改onconfig.map中的内容:
ROOTNAME rootdbs
ROOTPATH /informix/data/rootdbs
ROOTSIZE 320000(320M,此大小只是参考,以实际建立的裸设备大小为准)
MSGPATH /informix/online.log
TYPEDEV /dev/null
LTYPEDEV /dev/null
DBSERVERNAME map
NETTYPE soctcp,1,10,CPU
LOCKS 100000 (安照默认即可)
BUFFERS 20000 (安照默认即可)
LOGSMAX 32

3. 修改$INFORMIXDIR/etc/sqlhosts 文件
$ cd
$ cd etc
$ cp sqlhosts.std sqlhosts
$ vi sqlhosts

增加如下内容
#注释
map onsoctcp hostname sql_map

注: 为数据库服务器名,与.profil中定义的要一致。
为虚拟主机名,要与/etc/hosts中的主机名一致。
为数据库服务端口号,要与/etc/services中的数
据库服务端口号一致。

4. 初始化数据库:(危险步骤!!不要对正常的数据库使用以下命令,仅当第一次初始化数据库时使用)
# shutdown -Fr (AIX要重启,用root用户)
$ oninit -ivy (用informix用户)

注:可用onstat - 命令来查看数据库服务启动情况或export TERM=vt100,用dbaccess数据库管理工具来检查。

5. 创建数据库空间:
创建逻辑日志文件、物理日志文件、数据文件及索引文件所用的空间:
1)、使用以下命令行命令:
(注:可用命令onstat -d 查看创建的情况)

$ onspaces -c -d phydbs -p /informix/data/phydbs -o 0 -s 447000 (建立dbspace phydbs)

$ onspaces -c -d logdbs -p /informix/data/logdbs -o 0 -s 1280000 (建立dbspace logdbs)

$ onspaces -c -d tempdbs -t -p /informix/data/tempdbs -o 0 -s 640000 (建立dbspace tempdbs)

$ onspaces -c -d mapdbs -p /informix/data/mapdbs1 -o 0 -s 1280000 (建立dbspace mapdbs)
$ onspaces -a mapdbs -p /informix/data/mapdbs2 -o 0 -s 1280000 (添加chunk 到dbspace mapdbs中)

......

6. 改变逻辑日志和物理日志的位置,大小和个数:
1) 修改数据库状态为单用户维护状态
$ onmode -uy

2) 将物理日志从缺省的rootdbs上移到phydbs上
$ onparams -p -d phydbs -s 190000

3) 在logdbs上划分13个100M的逻辑日志
$ onparams -a -d logdbs -s 100000
将上一条命令执行13次

4) 做系

统的0 级备份,将新加的逻辑日志变为可用的状态:
$ ontape -s

5) 将当前的逻辑日志位置从rootdbs上的逻辑日志移到logdbs数据库空间上:
(用onstat -l 来查看移动情况)
$ onmode -l
$ onmode -l
$ onmode -l

强行做一次checkpoint操作:
$ onmode -c

现在可以删除在rootdbs_b上的逻辑日志:
(用onstat -l 查看,直到删除为此,可能有6个)
$ onparams -d -l 1 -y
$ onparams -d -l 2 -y
$ onparams -d -l 3 -y

7. 改变数据库到online状态:
$ onmode -m

8. 做一次整个数据库系统的0级备份:
$ ontape -s
选择0
9. 先关闭INFORMIX服务:
$ onmode -ky
10. 启动系统:
$ oninit
$ dbaccess
(使用之前环境变量TERM是否为vt100,命令export TERM=vt100可设置)
3 IBM Informix数据库产品的维护与管理

3.1 Informix数据库的启动
1. 以Informix 登录,执行启动命令:
$ oninit

启动后,执行命令查看Informix状态:
$ onstat -
应显示数据库版本、状态,启动时间和所占内存。

3.2 Informix 数据库的关闭
1. 以Informix 登 录,执行关闭命令:
$ onmode -ky

3.3 Informix数据库的备份
1. 数据备份
数据备份采用Informix所提供的增量备份方式。数据备份使用磁带机(/dev/rmt/0m)。数据备份规划为:每个星期的星期日作0 级备份,即整

个数据库系统的全备份。星期一到星期六作1级备份,即本星期以来数据 库所作修改的备份。
备份日程安排如下:
星 期: 日 一 二 三 四 五 六
备 份 级 别: 0 1 1 1 1 1 1

当需要进行数据库系统恢复时,从本星期的0 级备份和前一天的1级备份 中进行恢复。详细说明为:如果星期一需要恢复,只需从星期日的0级

备份恢复。如果星期二需要恢复,需要从星期日的0 级备份和星期一的1级备份恢复。依此类推,如果星期六需要恢复,需要从星期日的0 级备

份和星期五的1级备份恢复。如果星期日需要恢复,需要从上星期日的0级备份和星期六的1级备份恢复。

另外,由于应用系统需要,每天的备份需要进行两次,批处理前和批处理后分别各作一次。

数据备份操作命令为:(以informix 登 录)
$ ontape -s
please enter the level of archive to be performed (0,1,or 2)
选 择 0 ( 星 期 日)
选 择 1 ( 星 期 一 , 二 , 三, 四, 五, 六)

数据恢复操作命令为:(以informix 登 录)
$ ontape -r
please mount tape 1 on /dev/rmt/0m and press Return to continue ...
按照提示插入0 级备份带、1 级备份带和逻辑日志备份带。

2. 逻辑日志备份
逻辑日志备份采用连续或自动备份方式。逻辑日志备份固定于AIX机器上的一个窗口(连续备份) 。
连续逻辑日志备份操作命令为:(以informix 登 录)
$ ontape -c

连自动辑日志备份操作命令为:(以informix 登 录)
$ on

tape -a

逻辑日志备份分单双日进行。每日作批处理前,在AIX机的窗口上中断当天的逻辑日志备份。然后插入新的逻辑备份磁带,键入命令行执行逻辑备份。

3. onbar 备份
以上的备份方式也可以使用onbar 与第三方的备份软件一起使用,但不可和ontape的备份混合使用。

3.4 常用的系统管理命令
在执行系统管理命令之前,使用env 命令查看当前informix 的环境变量属于营销业务还是测试业务。两者之间使用设置环境变量命令互相转变:
$cd
$. ./setenv

1. dbexport
将数据库以ASCII方式下载。该命令常用于迁移数据库。
如:命令dbexport -o /informix/db_export stores7,将数据库 stores7 下载到/informix/db_export/stores7.exp 目录下。
数据库模式文件存放在/informix/db_export/stores7.exp/stores7.sql 下。

2. dbimport
与dbexport 配合使用,根据dbexport 的输出创建数据库。
如:命令dbimport -c -i /informix/db_export stores7
根据上例中输出结果创建数据库。

3. dbload
将ASCII 文件中的数据传送到数据库中。

4. dbschema
将数据库的模式输出到文件中,可用于重建数据库或表。

5. oncheck
数据一致性检查和索引修复工具。常用选项有:
oncheck -ce 检查Chunks 和extents
oncheck -cd 检查数据行
oncheck -ci 检查索引值
oncheck -cI 检查索引值和rowid
oncheck -cr 检查系统保留页
oncheck -cc 检查系统目录表

6. oninit
启动OnLine

7. onlog
显示系统逻辑日志的内容。常用选项有:
onlog -l 显示已经备份到磁带上的日志信息

8. onmode
改变OnLine 的运行模式,强制检查点动作,切换逻辑日志以及杀死指定的进程。常用选项有:
onmode -k 关闭OnLine
onmode -c 强制检查点动作
onmode -l 切换逻辑日志到下一个逻辑日志文件
onmode -z 杀死指定的进程
onmode -F 释放多余的内存
onmode -a 动态分配内存

9. onparams
改变OnLine 的逻辑日志和物理日志的配置参数。(添加逻辑日志时使用)

10. onspaces
创建、删除和修改dbspace、chunk工具。

11. ontape
进行逻辑日志的备份,改变数据库日志的状态,执行数据恢复。常用选项有:
ontape -a 备份所有已满的逻辑日志
ontape -c 启动连续逻辑日志备份
ontape -s 启动数据备份
ontape -r 启动数据恢复
ontape -s -B | -N | -U 数据库名 改变数据库日志的状态

12. onstat
监视数据库的操作。常用选项有:
onstat --help 显示所有信息help
onstat - 显示数据库状态信息
onstat -l 显示物理日志和逻辑日志信息
onstat -g ses 显示用户线索信息
onstat -g sql 显示sql语句
onstat -k 显示锁信息
onstat -x 显示事物信息
onstat -d 显示数据库空间使用信息
onstat -D 显示CHUNK读写信息
onstat -c 显示配置信息
onstat -m 显示online.log最后20行信


onstat -p 显示性能信息
onstat -r 周期性重复显示信息
onstat -u 显示用户信息
onstat -z 将所有统计值置为0
onstat -g ath 显示线程
onstat -g seg 显示内存信息
onstat -g rea 显示等待线程
onstat -g act 显示活动线程
onstat -g iof 显示CHUNK读写信息
onstat -g ioq 显示AIO队列信息
onstat -g ntu 显示网络端口读写信息
onstat -g ntd 显示线程读写信息

13. 在x-windows下可以运行的程序
$ onperf 数据库性能监控
$ ipload Informix最快的load数据工具
$ onpload ipload的命令行方式工具

14. onbar
$ onbar 支持IBM光盘库、磁带库的备份工具

15. Dbaccess
$ dbaccess 最常用的数据库管理(库、表、索引)工具

16. onmonitor
$ onmonitor 菜单界面的Informix数据库管理工具

17. Update statistics 需要定期处理,最好每天都做
对性能最有影响的SQL语句

18. set explain on 打开分析SQL语句性能的开关

19. dbaccessdemo7 建立demo数据库



3.5 数据库导入/导出
Informix数据库在不同配置(如数据库空间大小、名称等)的系统上进行恢复与备份时,使用ontape、onbar等方式备份的数据库可能无法恢复。推荐使用导入dbimport/导出dbexport方式进行备份与恢复。

3.5.1 数据库导出(备份)
$ cd /informix ; mkdir export_db 建立导出目录,已存在则可跳过
$ dbexport db_name -o /informix/export_db 导出数据库db_name
$ tar cvf db_name.tar /informix/export_db 打包export_db目录为db_name.tar
$ compress db_name.tar 压缩为.Z文件

3.5.2 数据库导入(恢复、新建)
$ cd /informix
$ uncompress -c db_name.tar.Z | tar xvf - 解压缩、解包
$ dbimport -d mapdbs_sd -l buffered -i <目录, db_name.exp的父目录> db_name
参数说明:
-d mapdbs_db 指定dbspace为mapdbs_sd,应根据实际修改,注意:必须指定本参数,否则数据库可能会建立在rootdbs。
-l buffered 指定数据库为buffered日志模式
db_name 数据库名,必须与目录db_name.exp匹配

如果需要改变数据库的名称,如改变数据库名db_name为new_db_name则在导入前必须进行如下:
a) 改变文件db_name.exp/db_name.sql为db_name.exp/new_db_name.sql,“.sql”不变 ;
$ cd db_name.exp
$ mv db_name.sql new_db_name.sql

b) 改变目录db_name.exp为new_db_name.exp,“.exp”不变;
$ mv db_name.exp new_db_name.exp

2.3.5.3 修改数据库日志模式
$ ontape -U db_name
如果失败,则可能需要0级备份,可使用如下命令
$ ontape -s -L 0 -U db_name
$ onmonitor
选择Status/Databases可查看状态。

2.3.6 数据库错误码查询方法
Informix的错误码可通过命令finderr查询错误详细信息,该命令在安装目录的bin目录(如/informix/bin)下。
$ finderr 107 查询错误代码107的详细信息
$ finderr 显示其帮助

相关主题
文本预览
相关文档 最新文档