Informix常用命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Informix常用命令相关的知识,希望对你有一定的参考价值。
Informix常用命令的用法说明
常用命令oninit将系统从off-line模式变为on-line模式oninit -iy
(初始化数据库,删除所有dbspace和chunk)oninit -s (
脱机-->静态)onmode -ky offlineonmode -s graceful shutdown-->quiescent(联机到静态,让用户处理完成)
onmode -u
immediate shutdown-->quiescent(联机到静态,所有用户立即终止)
onmode -m
quiescent--->onlineonmode -z sid 删除某session onmode -l 将当前正在使用的逻辑日志下移onmode -c
强制执行检查点操作即onmonitor->force ckpt onstat - 查看服务器状态onstat -d 查看dbspace和chunk情况onstat -l
查看逻辑日志onstat -F 查看写入磁盘的页刷新和类型情况,从共享内存缓冲区向磁盘写入页面有三种方式(fg:前台写 LRU:队列写 chunk:块写)onstat -R
打印LRU队列onstat -p 显示系统的基本I/O与性能配置文件onstat -c 查看onconfig文件onstat -m 查看消息日志onstat -f
查看受DATASKIP影响的dbspaceonstat -x 查看事务onstat -k
显示所有活动的锁onstat -g sub_option 运行多线索选项
onstat -g ses/sql onstat -r <value> 每隔<value>秒后重复选项 onstat -g act
显示系统中所有的活动线索 onstat -g ath -r 2 每隔两秒显示系统中所有的活动的线索 onstat -i 交互方式 >sql>sql sidipcs
查看共享内存情况ipcrm
删除某个共享内存ipcrm -m id ipcrm -s id
Ontape命令:
1)零级(一级或二级)备份$>ontape -s$>ontape -s -L 0$>ontape -s -L 1$>ontape -s -L
2自动备份逻辑日志文件 $>ontape -a
3)连续逻辑日志备份(日志文件写满一个,online系统自动备份一个,你可以插盘磁带到磁带机上,让IDS自动备份。
要占用磁带机)$>ontape -c
4)备份恢复(对应零级备份或一级备份或二级备份)$>ontape -r (详细过程见ontape恢复文挡)
5)备份恢复几个DBSPACE(一定要存在逻辑日志备份,否则物理恢复完后,还是不能用)$>ontape -r -D dbs1 dbs2 。。。
6)配置HDR时使用的物理恢复$>ontape -p
7)修改数据库日志模式$>ontape -s -B db_name 修改为buffer_log 即缓冲日志模式$>ontape -s -U db_name
修改为unbuffer_log 即非缓冲日志模式$>ontape -s -N db_name
修改为无日志模式 数据库不含日志,即不支持事务,对数据库的任何修改都不会记录到逻辑日志中去$>ontape -s -A db_name
修改为ansi logging模式,从个模式无法改到其它模式,因此一般不要用该项。oncheck 命令 oncheck -pe
extendoncheck -ceoncheck -cr reserved pagesoncheck -cd TBLspace data rows including bitmaponcheck -ci
table indexes databases对逻辑日志的操作:以informix用户登录, $ onmode -uy (由Online切换到Quiescent状态,所有用户立即中止)
onmode -m (切换到Online) $ onparams -a -d logdbs -s 100000 其中logdbs为dbspaces 名,-s 100000 表示增加了100M空间。
再连续执行4遍上述命令,这样新的逻辑日志空间总共为500M,可以用 onstat -l 查看逻辑日志情况,接下来就要删除前面3个旧逻辑日志,
删除前做一个0级备份 # ontape -s -L 0 执行该命令做0级备份,建议: 如果允许可以每天在业务系统结束工作
后做一次0级备份,做完备份后管理好备份磁带,做好标记。 $ onparams -d -l logid
logid 为逻辑日志id号,可以用onstat -l 查看,然后就可根据id号删 除3个旧逻辑日志。
将当前正在使用的逻辑日志下移 $onmode -l 三、DBSPACE及数据库导入导出1.增加一个新的dbspace:(datadbs,15M, 偏移为0)
onspaces -c -d datadbs -p /home/informix/datadbs -o 0 -s 150002.
在datadbs这一个dbspace中增加一个chunk:(datadbs_chunk1)onspaces -a datadbs -p /home/informix/datadbs_chunk1 -o 0 -s 150003.将上述chunk删除onspaces -d datadbs -p /home/informix/datadbs_chunk1 -o 0 4.删除dbspace(仅当要删除的dbspace空间没有数据时才可删除)onspace -d datadbs 导出数据库: 用dbexport工具将数据卸成文本,并装载到其它服务器上。(1)卸载文本的步骤如下:用informix用户注册 dbexport cleardb -o WORKDIR -ss 当系统提示dbexport completed!数据卸载完毕。其中: -ss 确保数据库的建库信息或建表信息被保留如日志模式、初始extent尺寸、lock mode、表所在dbspace等。 -o 指定存放卸载数据的目录数据存放在目录cleardb.exp目录下,其中包含cleardb.sql和形如*.unl的文件,
提示信息存放在dbexport.out文件中。
(2)装载文本的步骤如下:用informix用户注册确保数据库处于On_Line状态,服务器上没有同名数据库。
dbimport cleardb -i WORKDIR 当系统dbimport completed!提示数据装载完毕。其中: -i
指定从何处装载。如何在不破坏库本身信息情况下(如行级锁等)将数据库卸载到磁带设备,并装载在其它服务器上?1)
p; 卸载的步骤如下:用DBA用户注册将存放数据的磁带插入磁带机,确认磁带及磁带机完好可用。
dbexport cleardb -t /dev/rmt/0m -b 512k -s 2048000k -ss当系统提示dbexport completed!数据卸载完毕。其中: -ss 确保数据库
的建库信息或建表信息被保留如日志模式,初始extent尺寸,lockmode,表所在dbspace -t 磁带设备/dev/rmt/0m -s
磁带容量2G -b 块大小512KB 提示信息存放在dbexport.out文件中2)装载的步骤如下:
用DBA用户注册将存放卸载数据的磁带放在磁带机上,确认磁带机正常,确认数据库系统处于On_Line状态,
服务器上没有同名数据库。
$ dbimport cleardb -t /dev/rmt/0m -b 512k -s 2048000k 当系统dbimport completed 提示数据装载完毕!提示信息存放在dbimport.out 文件中。
重建表格:1) dbschema -d dbname -t tabname -ss tabname.sql /*将表格结构放进tabname.sql*/编辑此文件并在create table
语句末尾增加新的区域长度暂时将生成表格索引的tabname.sql部分标为说明语句,即在索引句前后加上“”,
例如: create index xl on customer(last_name); create index x2 on customer(cust_nbr);
最好在后面生成索引,因为这样表格能快速装入,索引能在连续磁盘空间生成,使其更加有效。
2)锁定表格lock table tabname in exclusive mode;
3)用SQL UNLOAD 将表格卸载到磁盘或磁带中unload to file_or_tape_path select * from tabnameunload to "/usr/data/unload/customer.unl" select * from customer;
检查表中的行数(用SQL中的Table/Info命令),验证卸载是否成功。比较这个数与装入完成后SQL显示的消息。用此验证file_or_tape_path中的行数:wc -l file_or_tape_path
4)删除表格
5)用dbacess生产表格并运行tabname.sql。这时不要生成索引
6)用SQL的LOAD FROM 或用 dbload重新装入表格load from file_or_tape_path insert into tabname;load form "/usr/data/unload/customer.unl" insert into customer;
对于日志数据库,上面的装入语句可能产生长事务或“to many lock”错误。
这时建议用dbload之类的实用程序将数据插入表中。dbload的 -n 选项强制在插入一定行后进行commit work(建议选1000行)。
检查表中的行数(用SQL中的Table/Info命令),验证装入是否成功。7)如要生产索引,运行第一步中标为说明语句的tabname.sql部分。
8)更新表格统计信息 update statistics on tabname;
语法 oninit [-s] [-i] [-p] [-y]
oninit 将系统从off-line模式变为on-line模式
oninit -s 将系统从off-line模式变为quiescent模式
oninit -i 初始化系统
oninit -p 在共享内
存初始化时,不搜索,删除临时表
oninit -y 对提示自动回答yes
oninit -v 加入这个选项显示oninit处理过程
oninit-- 键入此命令可以获得使用帮助
oninit命令用来改变系统的运行模式。其中-i选项用于初始化系统的root dbspace。注意,root-dbspace一旦被初始化,则等于整个数据库系统被初始化。
如果用户希望在计算机启动时自动自动启动动态服务器系统,请在系统初启文件(在许多UNIX系统中为/etc/rc)中加入oninit命令(不加任何选项)。
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>
-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
在onstat –l中,flag位表示了逻辑日志的状态,
A表示新加了还不能使用的日志
F表示空闲的可以使用的日志,一般是在0级备份之后才有这样的状态
U表示已经使用的逻辑日志
L表示当前的日志文件包含一个检查点
C表示正在使用当前的日志文件
B表示已经备份的日志文件 参考技术A Informix数据库安装文档
一、SCO UNIX5.0.7系统上安装Informix7.31数据库
安装前提:
Informix7.31的安装介质(IDS.CPI.Z、SQL.TAR.Z、CLISDK.CPI.Z)。
SCO UNIX系统的网络配置完成。
机器有非UNIX分区的空闲空间14G以上。
1. 创建informix组
以root用户登录系统。
执行scoadmin-》Account Manager-》Group-》Add New Group
Group Name:informix
其它默认。
2. 创建informix用户
以root用户登录系统。
执行scoadmin-》Account Manager-》Users-》Add New Users
设置如图
3. 设置informix用户的环境变量
以informix用户登录系统
编辑 .profile 文件
在文件的最后增加下面内容
INFORMIXDIR=/usr/informix
INFORMIXSERVER=online
ONCONFIG=onconfig.online
export INFORMIXDIR INFORMIXSERVER ONCONFIG
保存退出
从新以Informix用户登录系统。
4. 准备数据空间
以root用户登录系统
执行fdisk
# fdisk
1. Display Partition Table
2. Use Entire Disk for UNIX
3. Use Rest of Disk for UNIX
4. Create UNIX Partition
5. Activate Partition
6. Delete Partition
7. Create Partition
Enter your choice or 'q' to quit:1
先选1查看当前分区情况
Current Hard Disk Drive: /dev/rhd00
+-------------+----------+-----------+---------+---------+---------+
| Partition | Status | Type | Start | End | Size |
+-------------+----------+-----------+---------+---------+---------+
| 1 | Active | UNIX | 1 | 65015 | 65015 |
+-------------+----------+-----------+---------+---------+---------+
Total disk size: 133110 tracks (256 reserved for masterboot and diagnostics)
Press <Return> to continue
选择4创建UNIX分区再创建一个14G的UNIX分区,
Current Hard Disk Drive: /dev/rhd00
+-------------+----------+-----------+---------+---------+---------+
| Partition | Status | Type | Start | End | Size |
+-------------+----------+-----------+---------+---------+---------+
| 1 | Active | UNIX | 1 | 65015| 65015 |
| 2 | Inactive | UNIX | 65016 | 133109 | 68094 |
+-------------+----------+-----------+---------+---------+---------+
Total disk size: 133110 tracks (256 reserved for masterboot and diagnostics)
注:本例中硬盘总大小只有4G,第二个分区只有2G,在实际工作中分区的起始位置和大小要按实际情况填写。
创建好分区后,再把分区2平均分成7个2G大小的设备文件。
Divvy –m /dev/rhd02
There are 2144677 blocks in the UNIX area.
Please enter the number of file systems you want this area
to be divided into, or press <Return> to get the default of 2 file system(s)
7
The layout of the filesystems and swap area is now prepared.
Do you wish to make any manual adjustments to the sizes or
names of the filesystems or swap area before they are created
on the hard disk? (y/n) y
+-------------------+------------+-------- +--+-------------+------------+
| Name | Type | New FS | # | First Block | Last Block |
+-------------------+------------+-------- +--+-------------+------------+
| d1020 | HTFS | yes | 0 | 0| 306381|
| d1021 | HTFS | yes | 1 | 306382| 612763|
| d1022 | HTFS | yes | 2 | 612764| 919145|
| d1023 | HTFS | yes | 3 | 919146| 1225527|
| d1024 | HTFS | yes | 4 | 1225528| 1531909|
| d1025 | HTFS | yes | 5 | 1531910| 1838291|
| d1026 | HTFS | yes | 6 | 1838292| 2144673|
| d1027all | WHOLE DISK | no| 7 | 0| 2144959|
+-------------------+------------+------- -+---+-------------+------------+
通过命令name、type和prevent 将上表改为下表
+-------------------+------------+--------+---+-------------+------------+
| Name | Type | NewFS | # | First Block | Last Block |
+-------------------+------------+--------+---+-------------+------------+
| dbs01 | NON FS | no | 0 | 0| 306381|
| dbs02 | NON FS | no | 1 | 306382| 612763|
| dbs03 | NON FS | no | 2 | 612764| 919145|
| dbs04 | NON FS | no | 3 | 919146| 1225527|
| dbs05 | NON FS | no | 4 | 1225528| 1531909|
| dbs06 | NON FS | no | 5 | 1531910| 1838291|
| dbs07 | NON FS | no | 6 | 1838292| 2144673|
| d1027all | WHOLE DISK |no| 7 | 0| 2144959|
+-------------------+------------+--------+---+-------------+------------+
退出时要选择install
在/dev下会产生相应的多个dbs文件。
设置这些设备文件的属性:
Chmod 660 rdbs*
Chown Informix:Informix rdbs*
在根目录下建目录dbs并将该目录赋给informix用户和informix组。
Chown –R Informix:Informix dbs
再以informix用户登录系统,切换到/dbs目录下
创建数据空间的连接
ln –s /dev/rdbs01 dbs01
ln –s /dev/rdbs02 dbs02
ln –s /dev/rdbs03 dbs03
ln –s /dev/rdbs04 dbs04
ln –s /dev/rdbs05 dbs05
ln –s /dev/rdbs06 dbs06
ln –s /dev/rdbs07 dbs07
5. 安装informix
以informix用户登录系统
将informix的安装介质(IDS.CPI.Z、SQL.TAR.Z、CLISDK.CPI.Z)上传到informix用户目录下。
解压缩:uncompress *.Z
第一步安装sql
tar xvf SQL.TAR
切换到root用户安装(这里要用su切换,尔不能用su - root)
在/usr/Informix/下执行 ./installsql
按系统提示输入相应的序列号:
License S/N: AAB#J904945
Key: TEOVKG
安装完成后退出root用户,回到informix用户下。
第二步安装clisdk
cpio –ivcdumB < CLISDK.CPI
切换到root用户安装(这里要用su切换,尔不能用su - root)
在/usr/Informix/下执行 ./ installclientsdk
系统提示:
Is ClientSDK being installed along with Informix database server
version 9.x (required to be run as user "informix")?
(yes or no) n
按系统提示输入相应的序列号:
License S/N: AAB#J904945
Key: TEOVKG
安装完成后退出root用户,回到informix用户下。
第三步安装IDS:
cpio -ivcdumB < IDS.CPI
切换到root用户安装(这里要用su切换,尔不能用su - root)
在/usr/Informix/下执行 ./ installserver
按系统提示输入相应的序列号:
License S/N: AAB#J904945
Key: TEOVKG
安装完成后退出root用户,回到informix用户下。
数据库安装完成了。
6. 配置informix数据库
a) 调整系统核心参数:
切换目录到release/en_us/0333
vi IDS_7.3
记录下其中的
SHMMAX: 409600000
SHMMIN: 1
SHMALL: 512
SHMMNI: 100
SHMSEG: 6
MAXUMEM:524287
SEMMNI: 8192
SEMMNS: 8192
SEMMAP: 8192
SEMMNU: 100
SEMMSL: 25
切换到root用户,编辑文件/etc/conf/cf.d/stune
将上面的内容增加该文件里。(注意要去掉其中的“:”)
保存退出后执行该目录下的./link_unix 重连内核,然后重启系统。
b) 配置sqlhosts文件
以informix用户登录系统,到etc下编辑sqlhosts文件
注释掉文件中的两条记录,增加下面内容到文件中。
online onipcshm scosysv sqlexec
注: scosysv是系统的名称,该名字应该在/etc/hosts中声明。
sqlexec是端口号,该名字应该在/etc/services中声明。
c) onmonitor配置参数
以informix用户登录系统,执行onmonitor
Parameters中的各项逐个设置。
Root Size 是创建的数据空间的dbs01的大小。
Phy. Log Size 一般是Root Size的1/20。
Log. Log Size一般是 Phy. Log Size的1/2。
Number of Logical Logs 是3
输入完毕按ESC进入下一画面。
Server Number 在本机器上应是唯一值。
Server Name 应与sqlhosts中配置的第一个字段一致。
Max # of Locks 与 Max # of Buffers联合调整Shared Memory size的大小,建议Shared Memory size的值应是小于机器总内存的1/2。
多CPU的机器Multiprocessor Machine选择Y,否则N
NETTYPE settings
Protocol ipcshm 共享内存
Threads 1 单CPU的这里是1
Users 100 这个值估计连接该数据库的最大用户数。
VP-class CPU 与ipcshm对应。
其它界面不需要修改。
结束最后的配置,系统提示是否初始化,选择y。
初始化后退出onmonitor,
执行onstat - ; 显示信息 包括 -- Quiescent – 说明数据库已正常启动。
d) 给数据库增加数据空间
我们要再增加3个数据空间:tempdbs、logdbs、datadbs。
Onmonitor-》Dbspaces-》Create
Dbspace Name [ ] Mirror [ ] Temp [ ]
PRIMARY CHUNK INFORMATION:
Full Pathname [ ]
Offset [ 0] Kbytes Size [ 0] Kbytes
MIRROR CHUNK INFORMATION:
Full Pathname [ ]
Offset [ 0] Kbytes
Dbspace Name:输入数据空间的名称
Mirror:都填N
Temp:只有增加tempdbs时是Y,其它都是N。
Full Pathname:是设备文件的全路径。例:/dbs/dbs02
Offset:数据空间在设备文件中的偏移量。
Size:数据空间的大小。
e) 将逻辑日志移到数据空间logdbs中。
二、RS6000系统上安装Informix9.4数据库
1.创建informix组
# smitty group -> Add a Group
2.创建informix用户
# smitty user -> Add a User
3.设置informix用户的环境变量
内容同SCO系统环境
4.准备数据空间
数据库空间要在磁盘阵列上创建,类型为裸设备,大小根据实际的生产数据量而定。
5.安装
将Informix安装盘状入光驱,
执行
mount /mnt/cdrom
cd /mnt/cdrom
./install
按系统提示安装。
安装完毕,用超级用户(root)执行Informix主目录下的RUN_AS_ROOT.server
数据库安装完毕
行内的sdk光盘不好用,可以安装的已近给张冯
6.配置数据库。
配置方法同SCO系统,各参数要根据系统实际情况修改。
7.其它
为了零级备份,要将文件系统的文件大小限制(2G)改为不限大小。
/etc/security/limits
default:
fsize = -1
core = -1
cpu = -1
三、数据库常用命令
1.启动数据库。
用Informix用户登录系统,执行命令:
oninit –v
2.关闭数据库。
用Informix用户登录系统,执行命令:
Onmode –ky
3.检查数据库状态。
onstat –
结果中有 -- On-Line -- 表示数据库是联机状态。
-- Quiescent -- 表示数据库是静止状态。
-- Fast Recovery -- 快速恢复状态。
shared memory not initialized for INFORMIXSERVER 数据库未启动
4.检查数据库空间。
onstat –df
5.检查数据库当前进程。
onstat –g sql
Sess SQL Current Iso Lock SQL ISAM F.E.
Id Stmt type Database Lvl Mode ERR ERR Vers Explain
5 SELECT hzccb CR Not Wait 0 0 9.03 Off
查具体的进程内容:
onstat –g sql 进程Id号)
onstat –g sql 5
Current statement name : cu_larg
Current SQL statement :
select *,rowid from ggxtcs
Last parsed SQL statement :
select *,rowid from ggxtcs
6.数据库备份。(零级备份)
A.准备备份文件。
cd /backup/data
touch bak_data
chmod 660 bak_data
B.ontape –s –L 0
Please mount tape 1 on /backup/data/bak_data and press Return to continue ... 回车
7.恢复数据库备份。
A.准备备份文件。
将要恢复的数据库备份文件拷贝的/backup/data下,并改名为 bak_data。
B.关闭数据库
onmode -ky
C.恢复数据
ontape –r
Please mount tape 1 on /backup/data/bak_data and press Return to continue ... 回车
Continue restore? (y/n) 输入 y
Do you want to back up the logs? (y/n) 输入 n
Restore a level 1 archive (y/n) 输入 n
Do you want to restore log tapes? (y/n) 输入 n
检查数据库状态,直到状态为 – Quiescent –
onmode –m 将数据库转为 On-Line状态。
informix常用函数
一、常用函数
1、decimal
decimal(14,2):14位数,小数占两位;decimal(26,8),有效长度为26,小数位占8位。
2、cast
cast:Oracle中的数据类型转换函数,将某种数据类型的表达式显式转换为另一种数据类型。
3、decode
decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
该函数的含义如下:
IF 条件=值1 THEN
RETURN(翻译值1)
ELSIF 条件=值2 THEN
RETURN(翻译值2)
......
ELSIF 条件=值n THEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
END IF
decode(字段或字段的运算,值1,值2,值3)这个函数运行的结果是,当字段或字段的运算的
值等于值1时,该函数返回值2,否则返回值3。当然值1,值2,值3也可以是表达式,这个函数
使得某些sql语句简单了许多。
使用方法:
1、比较大小
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
例如:
变量1=10,变量2=20
则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。
2、此函数用在SQL语句中,功能介绍如下:
Decode函数与一系列嵌套的 IF-THEN-ELSE语句相似。base_exp与compare1,compare2等
等依次进行比较。如果base_exp和 第i 个compare项匹配,就返回第i 个对应的value 。
如果base_exp与任何的compare值都不匹配,则返回default。每个compare值顺次求值,
如果发现一个匹配,则剩下的compare值(如果还有的话)就都不再求值。一个为NULL的
base_exp被认为和NULL compare值等价。如果需要的话,每一个compare值都被转换成和
第一个compare 值相同的数据类型,这个数据类型也是返回值的类型。
3、Decode函数在实际开发中非常的有用
(1)结合Lpad函数,如何使主键的值自动加1并在前面补0
select LPAD(decode(count(记录编号),0,1,max(to_number(记录编号)+1)),14,‘0‘)
记录编号 from tetdmis;eg:
select decode(dir,1,0,1) from a1_interval;
dir 的值是1变为0,是0则变为1
(2)比如我要查询某班男生和女生的数量分别是多少?
通常我们这么写:
select count(*) from 表 where 性别 = 男;
select count(*) from 表 where 性别 = 女;
要想显示到一起还要union一下,太麻烦了
用decode呢,只需要一句话
select sum(decode(性别,男,1,0)),sum(decode(性别,女,1,0)) from 表
eg:
select sum(decode(siteno,‘LT‘,1,0)),sum(decode(siteno,‘SZ‘,1,0))
from facd605;
select sum(case siteno when ‘LT‘ then 1 else 0 end),
sum(case siteno when ‘SZ‘ then 1 else 0 end) from facd605;
4、
以上是关于Informix常用命令的主要内容,如果未能解决你的问题,请参考以下文章
Oracle-01-数据库分类/oracle sql*plus常用命令