
常用命令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 指定存放卸载数据的目录数据存放在目录cleardbexp目录下,其中包含cleardbsql和形如unl的文件,
提示信息存放在dbexportout文件中。
(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 提示信息存放在dbexportout文件中2)装载的步骤如下:
用DBA用户注册将存放卸载数据的磁带放在磁带机上,确认磁带机正常,确认数据库系统处于On_Line状态,
服务器上没有同名数据库。
$ dbimport cleardb -t /dev/rmt/0m -b 512k -s 2048000k 当系统dbimport completed 提示数据装载完毕!提示信息存放在dbimportout 文件中。
重建表格:1) dbschema -d dbname -t tabname -ss tabnamesql /将表格结构放进tabnamesql/编辑此文件并在create table
语句末尾增加新的区域长度暂时将生成表格索引的tabnamesql部分标为说明语句,即在索引句前后加上“{}”,
例如:{ 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/customerunl" select from customer;
检查表中的行数(用SQL中的Table/Info命令),验证卸载是否成功。比较这个数与装入完成后SQL显示的消息。用此验证file_or_tape_path中的行数:wc -l file_or_tape_path
4)删除表格
5)用dbacess生产表格并运行tabnamesql。这时不要生成索引
6)用SQL的LOAD FROM 或用 dbload重新装入表格load from file_or_tape_path insert into tabname;load form "/usr/data/unload/customerunl" insert into customer;
对于日志数据库,上面的装入语句可能产生长事务或“to many lock”错误。
这时建议用dbload之类的实用程序将数据插入表中。dbload的 -n 选项强制在插入一定行后进行commit work(建议选1000行)。
检查表中的行数(用SQL中的Table/Info命令),验证装入是否成功。7)如要生产索引,运行第一步中标为说明语句的tabnamesql部分。
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 sizedbspace大小(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 sizechunk大小
-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数据库的信息都保存在消息日志文件中(onlinelog)请注意由于所有的DDL语句都将被记录在日志中,
所以一定要在日志文件中留出足够的空间以保证创建sysmaster所需。
sysmaster数据库模式记录在$INFORMIXDIR/etc/sysmastersql文件中。
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表示已经备份的日志文件
对于表及视图 其格式为
Grant TAB PRI on [ tab_name view_name ] to { PUBLIC User List };
Revoke TAB PRI on [ tab_name view_name ] from { PUBLIC User List }
其中TAB_PRI表示select update delete等 *** 作权限 tab_name view_name分别代表数据库表名和视图名
缺省情况下 新建的数据库表和视图对能够访问该数据库的用户赋予了除alter外的所有权限 有时这是比较危险的 比如对普通查询用户 应该有针对性地对权限重新定义 此外 对一些重要的表或视图 为防止敏感信息泄露 也应该重新授权 具体做法是 先用Revoke命令撤消原来所有的权限 再用Grant授予新的权限
对于字段
字段级权限的授予和撤消同表级的命令方式基本一致 所不同的仅在于必须把赋予权限的字段名列在 *** 作权限如select insert update等之后 通过这样细化可以实施更有效的数据保护
对于存储过程
存储过程由SQL语句编写 存放于数据库中 常与触发器配合 可以对数据进行批量处理 使用非常方便 但如果授权不严格 将导致非法修改现有数据 其权限设置格式为
Grant Execute on proc_name to { PUBLIC User List };
Revoke Execute on proc_name from { PUBLIC User List }
其中proc_name表示存储过程名
lishixinzhi/Article/program/SQL/201311/16364
informix初始化与配置
Dbspace 为逻辑上的数据库管理单元,实际上对应一个或者多个 chunk,初始化 informix 数据库的时候,必须首先为系统建立一个 Dbspace 和该Dbspace所关联的 chunk。
系统初始化:
informix 安装目下建立一个目录dbs,新建一个文件 rootchk,并更改该文件的访问权限为 660,,#chmod 660 rootchk[ENTER],之后,在控制台输入#onmonitor 进入系统配置界面->选择 Parameters->Initialize,在 "RootName" 中输入 rootdbs, 在Primary Path中输入刚才创建的chunk文件rootchk。即:将 rootdbs 关联到 rootchk 上。
新建Dbspace:
首先在数据存储目录,$INFORMIXDIR/dbs 下建立一个新文件,testchk,更改访问权限为:660
然后控制台中:
#onmonitor
->Dbspaces->Create
输入 Dbspace Name
Full Pathname 中输入刚刚创建的 chunk 文件的全路径:/opt/informix/dbs/testchk
[ESC]
这样就创建了一个新的Dbspace,名字为testdbs
为Dbspace 添加 chunk:
首先在数据目录 $INFORMIXDIR 中新建一个 chunk 文件,datachk01,更改访问权限为 660;
控制台输入:#onmonitor
->Dbspaces->Add_Chunk
选择要添加 chunk 的 Dbspace
F3 或 Ctrl+b
在 Full Pathname 中填入刚刚新建的 chunk 文件的全路径: /opt/informix/dbs/datachk01 即可
要配置数据库首先需要停止数据库服务
onmode -ky
初始化数据库系统
oninit -i 或 oninit -iy
新建数据库:
#dbaccess [ENTER]
Database->Create->输入数据库名
这是我建一个步骤:
root@sdunicomd # touch itnmschk
root@sdunicomd # chmod 660 itnmschk
root@sdunicomd # touch itnmschk
root@sdunicomd # chmod 660 itnmschk1
sdunicomd_cdmatmn$onspaces -c -d itnmsdbs -p /u1/tmn/newcdma/dbs/itnmschk -o 5120 -s 2000000
Verifying physical disk space, please wait
Space successfully added
WARNING A level 0 archive of Root DBSpace will need to be done
sdunicomd_cdmatmn$onspaces -a itnmsdbs -p /u1/tmn/newcdma/dbs/itnmschk1 -o 5120 -s 2000000
Verifying physical disk space, please wait
Chunk successfully added
sdunicomd_cdmatmn$onspaces -d itnmsdbs
WARNING: Dropping a DBspace
Do you really want to continue (y/n)y
Space successfully dropped
WARNING A level 0 archive will need to be done before any chunks from
DBspace itnms can be reused (see Dynamic Server Administrator's manual)
CREATE DATABASE itnms
IN itnmsdbs
WITH BUFFERED LOG
hi,
extend size 指定的数据大小为创建该表的初始空间的大小 (单位为kbyte)
next size 指定的数据大小为当前该表的初始空间使用完毕后数据库表需要向数据空间申请空间大小的初始值(单位为kbyte)
lock mode row 意思是建立的表的锁模式是行级锁,同理还有页级锁(lock mode page)
以下博文对于如何计算extend size ,next size两个大小讲的很详细,供你参考
>
shell下面是不能直接运行SQL语句的,可以通过dbaccess来执行
首先用户的环境变量要设好,然后执行:
dbaccess
选择Query-language
选择运行SQL的数据库
选择New,新建SQL语句
然后输入你的SQL,比如建表语句
输入完成后Esc退出编辑,选择Run,运行
以上就是关于Informix常用命令全部的内容,包括:Informix常用命令、讲解Informix Dynamic Server的权限设置[3]、informix问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)