informix语句文档
chown -R tnms2:tnms2 TNMS_HOME/ 给目录及子目录赋值属组、属用户
HPL导入例子:
onpladm create job job01 -d /informix/gengjb/rel_duanzi_lianjie-1218 -D tnmsdb2 -t rel_duanzi_lianjie -flc -zD;
onpladm run job job01 -fl -l back.log----back.log是生成的日志;
导入的过程会锁表,不能操作
2、有很多限制,但速度较deluxe mode快
3、导入后table 是read only ,需要执行0级备份:可以先修改onconfig中的备份路径为/dev/null;这样就不用备份,只修改read only标记
bash-2.03$ ontape -s -L 0
Archive to tape device '/dev/null' is complete
如何查看物理内存的大小?
SAM ->; performance monitor ->; system properties->; memory查看物理内存。
https://www.360docs.net/doc/a813915919.html,/resource/informix/ids11/IDS1150FC8HPPA.tar
https://www.360docs.net/doc/a813915919.html,/resource/informix/ids11/IDS1150FC9HPPA.tar融海提供的informix下载地址
查找文件语句:find / -name SystemErr.log
find ./ -name *.hprof
select * from circuit where circuitnumber in(select circuitnumber from circuit group by circuitnumber having count(*)>1) and rowid not in (select min(rowid) from circuit group by circuitnumber having count(*)>1)
查找全部重复记录
delete from circuit where circuitnumber in(select circuitnumber from circuit group by circuitnumber having count(*)>1) and rowid not in (select min(rowid) from circuit group by circuitnumber having count(*)>1)
删除表多于的重复记录,只留下rowid最小的记录
锁表问题处理过程:
方法一:
informix 锁表早晨来了,发现今天所有数据都没有上来,查看发现快照表里没有今天的数据,当我想load 昨天的数据出来时,报 245: Could not position within a file via an index. 的错误,informix 锁表问题。处理步骤:
<1> 在informix用户下找出锁表的用户:onstat -ks|grep HDR+X,输出的内容很多很多,
10ad44850 0 1acf10c10 10d214a70 HDR+X 160009b 784e801 0
10ad44d20 0 1acf10c10 11d51dfa0 HDR+X 160009b 1c40301 0
10ad44e70 0 1acf10c10 123c785d0 HDR+X 160009b 70bc201 0
10ad46840 0 1acf10c10 1135969c0 HDR+X 400880 101da01 K- 1
10ad474f0 0 1acf10c10 115efbe60 HDR+X 160009b 6df6301 0 ..........................
每列分别对应:
Locks address wtlist owner lklist type tblsnum rowid key#/bsiz
锁地址等待线程列表用户…列表锁类型行id
<2> 所有的owner列都是1acf10c10,根据owner 找到对应的sessid:
onstat -u | grep 1acf10c10,
看到结果:
1acf10c10 C-RPR-- 5395192 npmuser - 10a130358 0 199800 374159 255337
分别对应为:
address flags sessid user tty wait tout locks nreads nwrites
<3> 杀掉session :onmode -z 5395192
最后锁表解决了以后,重新处理今天的数据就没问题了!
方法二:
B、数据文件拆分成200m步骤:
split -a 2 -b 200m tnmsdb2.20110906.gz tnmsdb2.20110906.gz_
将tnmsdb2.20110906.gz,按200M一个分割,分割后生成的文件名前缀是tnmsdb2.20110906.gz_,-a 2表示后面会自动加上两个字符cat tnmsdb2.20110906.gz_* > tnmsdb2.20110906.gz
将分割的数据合并。
informix改成无日志模式,需要执行ontape -s -N dbname
dbschema -d your_database -t all db.sql 导入数据库所有的表结构。
1、导出正式库的表结构
dbschema -d tnmsdb2_test -t all db.sql
2、删除数据库
>drop database tnmsdb2_test;
3、创建数据库
>CREATE database tnmsdb2_test IN tnmstestdbs;
4、将表结构导入到测试库中
dbaccess tnmsdb2_test db.sql
5、导入数据
取86的文件到本机:scp –r 10.19.78.86:+绝对路径/ .
Scp +文件名账户名@+绝对路径目录
分地市导出机架和配线架信息
SELECT https://www.360docs.net/doc/a813915919.html,er_label zd_name,d.city,https://www.360docs.net/doc/a813915919.html,er_label odfname,https://www.360docs.net/doc/a813915919.html,er_label jjname,https://www.360docs.net/doc/a813915919.html,er_label jfname FROM odfddfjia od,jijia jj,jifang jf,zhandian zd,district d where od.rel_jifang_id=jf.objectid and jj.rel_jifang_id=jf.objectid and jf.rel_zhandian_id = zd.objectid and zd.city_id = d.objectid and d.city='枣
庄'order by https://www.360docs.net/doc/a813915919.html,er_label
UPDATE Analyse_time_info SET last_analyse_time = '2011-11-25 01:00' where quartz_name='更新纤芯状态' 修改时间点
格式转换:
bash-3.2$ cd $CAP_HOME/bin
bash-3.2$ dos2ux dos2HP>dos2HP.tmp
bash-3.2$ mv dos2HP.tmp dos2HP
bash-3.2$ . dos2unix $TNMS_HOME
bash-3.2$ . dos2HP $TNMS_HOME
下面是查看HP小型机的信息的命令集:
1、机型
#model
9000/800/L2000-44
注意:其中44是指每个cpu有440MHZ。
2、cpu个数
#top
CPU LOAD USER NICE SYS IDLE BLOCK SWAIT INTR SSYS
0 0.02 0.0% 0.0% 0.% 0.0% 0.0% 0.0% 0.0%
1 0.00 0.6% 0.0% 0.% 0.0% 0.0% 0.0% 0.0%
2 0.00 2.% 97.0% 0.0% 0.0% 0.0% 0.0%
3 0.00 0.4% 0.0% 0.0% 99.6% 0.0% 0.0% 0.0% 0.0%
3、硬盘的大小信息
#diskinfo /dev/rdsk/c1t0d0
SCSI describe of c1t0d0:
vendor: SEAGA TE
product id: ST39204LC
type: direct access
size: 8891556 Kbytes
bytes per sector: 512
4、硬盘的个数
#ioscan -funC disk
disk 0 0/0/1/1.0.0 sdisk CLAIMED DEVICE SEAGATE ST39204LC
/dev/dsk/c1t0d0 /dev/rdsk/c1t0d0
disk 1 0/0/1/1.2.0 sdisk CLAIMED DEVICE SEAGATE ST39204LC
/dev/dsk/c1t2d0 /dev/rdsk/c1t2d0
disk 2 0/0/2/0.0.0 sdisk CLAIMED DEVICE SEAGATE ST39204LC
/dev/dsk/c2t0d0 /dev/rdsk/c2t0d0
disk 3 0/0/2/0.2.0 sdisk CLAIMED DEVICE SEAGATE ST39204LC
/dev/dsk/c2t2d0 /dev/rdsk/c2t2d0
disk 4 0/0/2/1.2.0 sdisk CLAIMED DEVICE HP DVD-ROM 305
/dev/dsk/c3t2d0 /dev/rdsk/c3t2d0
disk 5 0/4/0/0.8.0 sdisk CLAIMED DEVICE SEAGATE ST39236LC
/dev/dsk/c4t8d0 /dev/rdsk/c4t8d0
5、查看操作系统版本和license
#uname -a
HP-UX scp1 B.11.00 U 9000/800 1124961527 unlimited-user license
6、如何查看内存
#dmesg
Memory Information:
physical page size = 4096 bytes, logical page size = 4096 bytes
Physical: 2097152 Kbytes, lockable: 1866308 Kbytes, available: 1902728 Kbyts
7、如何查看文件系统
#bdf
Filesystem kbytes used avail %used Mounted on
/dev/vg00/lvol3 1025617 24790 898265 3% /
/dev/vg00/lvol1 700691 35482 595139 6% /stand
/dev/vg00/lvol8 2097152 436927 1557195 22% /var
/dev/vg00/lvol7 1048576 481524 531631 48% /usr
/dev/vg00/lvol6 255253 148 229579 0% /tmp
/dev/vg01/lv_tellin
2051553 127152 1719245 7% /tellin
/dev/vg00/lvol5 2097152 81783 1889462 4% /opt
/dev/vg01/lv_informix
2051553 413823 1432574 22% /opt/informix
/dev/vg00/lvol4 524288 1229 490375 0% /home
存在两个文件中:/etc/fstab /etc/mnttab
8、查看卷组、卷组所包括的逻辑卷、以及该卷组所包括的物理磁盘
#vgdisplay -v vg00
则结果都是按照逻辑卷组、逻辑卷、物理磁盘的顺序全部显示。
9、查看卷组、逻辑卷的位置
#cd /dev/
在该目录下面有所有的逻辑卷组,再进入某个逻辑卷组,则看到它所有的所有逻辑卷了。
10、激活/去激活卷组
#vgchange -a y 卷组名(激活)
#vgchange -a n 卷组名(去激活)
11、创建卷组、逻辑卷、文件系统的一系列命令
格式化
#pvcreate /dev/rdsk/c0t1d0 (这里假设有块盘的设备文件名是c0t1d0)
创建卷组名
#mkdir /dev/vglock
创建卷组的设备文件名字
#mknod /dev/vglock/group c 64 0x010000 (这里注意group不能重复)
创建卷组
#vgcreate /dev/vglock /dev/dsk/c0t1d0 (将物理磁盘c0t1d0加给该卷组)激活卷组
#vgchange -a y /dev/vglock
创建逻辑卷lv_informix
#lvcreate -n lv_informix /dev/vglock
给逻辑卷增加大小
#lvextend -l 50 /dev/vglock/lv_informix (单位是页,页的大小再创建
卷组时已经确定,不可以再更改,一般缺省为4M,所以是200M)
或者
#lvextend -L 200 /dev/vglock/lv_informix (这是带大写的L参数,表示
是以M为单位来分配的大小的。)
如果还要将该卷组变为文件系统的话,那么如下创建文件系统
#newfs -F hfs /dev/vglock/rlv_informix
创建文件系统挂接的目录
#mkdir /informix
将文件系统挂接上去
#mount /dev/vglock/lv_informix /informix
12、删除卷组、逻辑卷
删除逻辑卷
#lvremove /dev/vglock/lv_informix
去激活卷组
#vgchange -a /dev/vglock (如果不能够去激活,则可以用如下命令强行去激活,vgchange -c n /dev/vglock)
预删除卷组
#vgexport -p -s -m /tmp/vglock.map /dev/vglock
删除卷组
#vgexport -s -m /tmp/vglock.map /dev/vglock
13、创建共享卷组
在的一台已经创建卷组的机器上先去激活
#vgchange -a n /dev/vglock
预删除卷组
#vgexport -p -s -m /tmp/vglock.map /dev/vglock
将map文件传送到另外一台机器
#rcp scp1:/tmp/vglock.map scp2:/tmp/vglock.map
在另外一台机器上导入卷组之前要先创建卷组名
#mkdir /dev/vglock
创建group节点文件
#mkno /dev/vglock/group c 64 0x010000 (该节点一定要和第一台机器一致) 导入卷组
#vgimport -s -m /tmp/vglock.map /dev/vglock
14、informix的版本的收集
#su - informix
informix>;onstat -
这样可以看到informix的版本。
15、双机维护命令
在一台运行以下命令先将两个节点的cluster守护进程都拉起来,
然后还会自动的将应用也拉起来。
cmruncl;
或者先在主机上运行双机的守护进程,再将备机节点加入,
然后再来将应用制定在某个节点上运行,那么指定的节点就应该是主机。cmruncl -n scp1;
cmrunnode scp2;
cmrunpkg -n scp1 -v scp_service;
查看双机的状态
cmviewcl -v;
cmviewcl ;
cmquerycl;
cmviewconf;
双机切换
方法一:可以停止主机
cmhaltnode scp1
方法二:可以手工切换应用
cmhaltpkg -n scp1 -v scp_service(将应用scp_service从scp1机器上停止运行) 或者
su - tellin
stellin>;kill_scp.sh
或者
su - informix
informix>;onmode -kuy
主机切换后的节点要重新变为可以切换的节点,必需要运行如下命令
cmmodepkg e -n scp1 -v scp_service (应用scp_service可以下次再切回
scp1节点)
有时候为了诊断备机,特将备机设置为不可以运行应用的节点,如
cmmodepkg d -n scp1 -v scp_service (节点scp1上是不可以运行应用scp_
service)
查看地市、站点、机房
select https://www.360docs.net/doc/a813915919.html,er_label,https://www.360docs.net/doc/a813915919.html,er_label,ds.city from jifang jf,zhandian zd ,district ds where jf.rel_zhandian_id=zd.objectid and jf.district_id=ds.objectid and ds.city='枣庄'
bash-3.2 $ dbschema -d tnmsdb2 -t ems_event_history –ss 查询表结构语句
数据库表格:caresponsesheet 加一个字段assignee
alter table caresponsesheet add assignee varchar(64); 数据库表格:caresponsesheet 加一个字段assignee
调整电路时,查询电路序号语句:
select c.*
from circuit c
left join Me m1 on c.AendTransmitEquipObjectId=m1.ObjectId
left join Me m2 on c.ZendTransmitEquipObjectId=m2.ObjectId
left join Ptp p1 on c.AendTransmitEquipPortObjectId=p1.ObjectId
left join Ptp p2 on c.ZendTransmitEquipPortObjectId=p2.ObjectId
left join jifang j3 on m1.JiFangObjectId=j3.objectid
left join jifang j4 on m2.JiFangObjectId=j4.objectid
left join zhandian z3 on m1.JuZhanObjectId=z3.objectid
left join zhandian z4 on m2.JuZhanObjectId=z4.objectid
left join district d3 on z3.district_id=d3.ObjectId
left join district d4 on z4.district_id=d4.ObjectId
left join Enum_CircuitServiceType g on c.ServiceType=g.ServiceType
where ((z3.objectid = '53013102') and (c.circuitcode in (1,2,3,4,5,6,7,100000)) and (c.servicetype = '至基站的电路群(BS)') and (c.circuitrate = '2M') and
(c.circuitstate = '开通') and (c.circuitlevel = '本地基站电路') and (d3.city = '威海') and (d4.city = '威海')) and (c.importTag<>'CA' or c.importTag is null)
CRT进入数据库语句
bash-3.2$ dbaccess tnmsdb2 –
静资中执行SQL语句:psql -d postgis -f postgis.sql postgres
查询网元的具有的通道
SELECT ame.mename,aptp.portname,a.aendtimeslot,a.servicestate,a.AEndVc4Index,zme.mename,zptp.portname,a.zendtimeslot,a.AEndVc4Index FROM trail a,me ame,me,zme,ptp aptp,ptp zptp
WHERE a.AendPtpObjectId =(SELECT OBJECTID FROM PTP WHERE MEOBJECTID=(SELECT OBJECTID FROM ME WHERE MENAME='685-济南盛唐巷3楼机房-二干二平面西环1') AND PORTNAME='1-PQ1-1')
and a.aendmeobjectid=ame.objectid and a.zendmeobjectid=zme.objectid
and a.aendPtpObjectId=aptp.objectid and a.zendPtpObjectId=zptp.objectid
根据站点查电路
select c.* from circuit c ,me m ,zhandian z where https://www.360docs.net/doc/a813915919.html,er_label='???'
and z.objectid=m.juzhanobjectid and (m.objectid=c.aendtransmitequipobjectid or m.objectid=c.zendtransmitequipobjectid)
解压文件bj-mobile-tms.tar
tar xvf bj-mobile-tms.tar解压文件bj-mobile-tms.tar
the file is locked.代表数据库表已锁
$ onstat -g sql |grep SELECT |wc -l,查询执行的sql查询语句
$ onstat -g sql :查询当前数据库正在执行SQL语句
$ onstat -ks |grep HDR+X |wc -l 检查统计锁表的记录
$ onstat -x 检查回滚,并列举出来信息。
$ onstat -x |wc -l,检查回滚,并统计数据
$ onstat -u |grep 编号:找出语句编号
$ onstat -g sql 1518273,查询1518273这个编号sql语句的具体情况
如何使用onstat工具查看INFORMIX长事务
文章分类:数据库
一、查看数据库状态
正常情况下是
infodb% onstat -
IBM Informix Dynamic Server Version 9.40.FC7 -- On-Line -- Up 35 days 16:51:16 -- 3920896 Kbytes
长事务情况下是
infodb% onstat -
IBM Informix Dynamic Server Version 9.40.FC7 -- On-Line (LONGTX) -- Up 35 days 16:41:40 -- 3920896 Kbytes Blocked:LONGTX
二、显示事务(transaction)信息
其中flag字段中第三个标志位为R说明事务在rollback,说明这个事务是长事务
infodb% onstat -x
IBM Informix Dynamic Server Version 9.40.FC7 -- On-Line (LONGTX) -- Up 35 days 16:41:56 -- 3920896 Kbytes Blocked:LONGTX
Transactions
1cf0a6748 A-R-- 1cd55c618 642073 119403 119405 0x1aa91e4 DIRTY 0
三、通过长事务的userthread值找出session id
infodb% onstat -u |grep 1cd55c618
1cd55c618 --RPX-- 1880841 informix - 0 0 642073 256446 323049
四、显示会话连接信息,找出造成长事务的SQL语句,并优化
infodb% onstat -g ses 1880841
$ onstat -x |more 查看informix 版本
bash-3.2$ tar -vcf OmpServer.traces.tar OmpServer.traces*
OmpServer.traces 29941 块
OmpServer.traces: 文件改变了大小
OmpServer.traces.1 40809 块
OmpServer.traces.2 40830 块
OmpServer.traces.3 41521 块
OmpServer.traces.4 40524 块
bash-3.2$ gzip OmpServer.traces.tar
bash-3.2$ oninit 重启数据库
bash-3.2$ oninit i 重启数据库过程中查看
bash-3.2$ onmode –ky 关闭informix,关闭online命令
bash-3.2$ /opt/jm/pgsql/bin/pg_ctl -D /opt/jm/pgsql/data -l /opt/jm/pgsql/log/logfile stop 停闭postgres数据库
bash-3.2$ /opt/jm/pgsql/bin/pg_ctl -D /opt/jm/pgsql/data -l /opt/jm/pgsql/log/logfile start 启动postgres数据库
bash-3.2$ ps -ef |grep Informix 查询数据库当前的进程有哪些
Informix常见的工作模式:
Offline :停止态
Quisscent :系统维护态
Online :运行态
66账户:root 密码:Sd!!
Unload to filename.unl seledt * from T_table: 导出表T_table 中数据到 filename.unl 文件
Load from filename.unl insert into T_table: 导入文件 filename.unl 的内容到 T_table 表中。
bash-3.2$ oncheck -pt tnmsdb2:circuit: 查询circuit表的锁方式
alter table circuit lock mode (row):将circuit锁方式改为行级锁。
onmode -z:结束进程
bash-3.2$ ps -ef|grep Probe|wc –l
bash-3.2$ sar -u 5 5 每隔5秒,采集5次,查看CPU的使用情况。
Su命令:它可以让一个普通用户拥有超级用户或其他用户的权限,也可以让超级用户以普通用户的身份做一些事情。普通用户使用这个命令时必须有超级用户或其他用户的口令。
如要离开当前用户的身份,可以打exit。
? c 执行一个命令后就结束。
? 加了这个减号的目的是使环境变量和欲转换的用户相同。
? m 保留环境变量不变。
password: 【输入超级用户的密码】
Wall命令用法:
这个命令的功能是对全部已登录的用户发送信息,用户可以先把要发送的信息写好存入一个文件中,然后输入:
# wall < 文件名
例如:
# wall ‘Thank you!’
Broadcast message from root (tty1) Fri Nov 26 14:15:07 1999…
Thank you!
#
执行以上命令后,用户的屏幕上显示出“Thank you!”信息后,并不出现系统提示符$(#),再次按回车键后,屏幕出现系统提示符。
mesg指令用法:
mesg命令设定是否允许其他用户用write命令给自己发送信息。如果允许别人给自己发送信息,输入命令:
# mesg y
否则,输入:
# mesg n
uptime命令
uptime命令显示系统已经运行了多长时间,它依次显示下列信息:现在时间、系统已经运行了多长时间、目前有多少登录用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
该命令的一般格式为: uptime
df命令
功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:df [选项]
说明:df命令可显示所有文件系统对i节点和磁盘块的使用情况。
该命令各个选项的含义如下:
-a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。
-k 以k字节为单位显示。
-i 显示i节点信息,而不是磁盘块。
-t 显示各指定类型的文件系统的磁盘空间使用情况。
-x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。
-T 显示文件系统类型。
du命令
du的英文原义为“disk usage”,含义为显示磁盘空间的使用情况。
功能:统计目录(或文件)所占磁盘空间的大小。
语法:du [选项] [Names…]
说明:该命令逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况。若没有给出Names,则对当前目录进行统计。该命令的各个选项含义如下:
-s 对每个Names参数只给出占用的数据块总数。
-a 递归地显示指定目录中各文件及子孙目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
-b 以字节为单位列出磁盘空间使用情况(系统缺省以k字节为单位)。
-k 以1024字节为单位列出磁盘空间使用情况。
-c 最后再加上一个总计(系统缺省设置)。
-l 计算所有的文件大小,对硬链接文件,则计算多次。
-x 跳过在不同文件系统上的目录不予统计。
echo命令
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
该命令的一般格式为: echo [ -n ] 字符串
其中选项n表示输出文字后不换行;字符串可以加引号,也可以不加引号。用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。
cal命令
cal命令的功能是显示某年某月的日历。
该命令的一般格式为: cal [选项] [月 [年]] 命令中各选项的含义为:
- j 显示出给定月中的每一天是一年中的第几天(从1月1日算起)。
- y 显示出整年的日历。
date命令
date命令的功能是显示和设置系统日期和时间。
该命令的一般格式为: date [选项] 显示时间格式(以+开头,后面接格式)
date 设置时间格式
命令中各选项的含义分别为:
-d datestr, --date datestr 显示由datestr描述的日期
-s datestr, --set datestr 设置datestr 描述的日期
-u, --universal 显示或设置通用时间
Ftp命令的功能是在本地机和远程机之间传送文件。该命令的一般格式如下:用法:$ ftp 主机名/IP
最常用的命令有:
ls 列出远程机的当前目录
cd 在远程机上改变工作目录
lcd 在本地机上改变工作目录