informix常用命令

一、常用命令
oninit        将系统从off-line模式变为on-line模式
oninit -iy   (初始化数据库,删除所有dbspace和chunk)
oninit -s    (脱机-->静态)

onmode -ky   offline
onmode -s    graceful shutdown-->quiescent(联机到静态,让用户处理完成)
onmode -u    immediate shutdown-->quiescent(联机到静态,所有用户立即终止)
onmode -m    quiescent--->online
onmode -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影响的dbspace
onstat -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 sid


ipcs         查看共享内存情况
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       extend
oncheck -ce
oncheck -cr       reserved pages
oncheck -cd       TBLspace data rows including bitmap
oncheck -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 15000

2.在datadbs这一个dbspace中增加一个chunk:(datadbs_chunk1)
onspaces -a datadbs -p /home/informix/datadbs_chunk1 -o 0 -s 15000

3.将上述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) 卸载的步骤如下:
用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 tabname
unload 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;


数据库授权:
grant connect to scp;
grant resource to scp;
grant dba to scp

你可能感兴趣的:(informix常用命令)