DBA应当对一些系统表比较熟悉,如:systables、sysindexes、sysindices
1、通过系统表查找“Partnum”
1.1、 查找标准表的partnum
(partnum在Informix数据库内部是表的唯一标识,默认partnum是十进制的如果需要可以转为十六进制)
例如:
Dbaccess->your database
select hex(partnum) from systables where tabname='test1';
(expression)
0x001000DC
1.2、查找分片表的partnum
(分片表的partnum比较特殊)
注:Partnum格式 前3位: Dbspace number, 后5位: Logical page number within tblspace tblspace
首先建立分片表:
create table "informix".test2
(
id integer,
name char(10)
) fragment by expression
(id < 10 ) in datadbs ,
((id > 20 ) AND (id < 30 ) ) in datadbs1
extent size 16 next size 16 lock mode row;
常规方法查询:
dbaccess->your database
select hex(partnum) from systables where tabname='test2';
结果:
(expression)
0x00000000
select hex(partn),tabid from sysfragments where tabid=(select tabid from systables where tabname='test2')
查询结果:
(expression) tabid
0x00200002 101
0x00300002 101
2、查找rowid
(rowid是确定表内行信息的数据库标识)
2.1、普通表查询rowid
select rowid from tabname
2.1、分片表查询
select rowid,id from test2;
857: Rowids do not exist on table
3、查找数据库的Locale
select * from sysdbslocale where dbs_dbsname='testdb';
结果:
dbs_dbsname testdb
dbs_collate en_US.819
4、查找相关的constraints
alter table test1 add constraint primary key (col1);
select * from sysconstraints where tabid=(select tabid from systables where tabname='test1');
结果:
constrid 3
constrname u100_3
owner informix
tabid 100
constrtype P
idxname 100_3
collation en_US.819
如下待续,希望大家关注。。。