关于 informix 中查看表所在数据库空间的问题

关于 informix 中查看表所在数据库空间的问题[@more@]

关于 informix 中查看表所在数据库空间的问题
最近想查一个表所在的数据库空间,结果还是挺麻烦的,如下:
一、如果建表的时候没有使用 in 指定数据库空间(或者表也没有分段),则用 dbschema -d 数据库名 -t 表名 -ss 是看不到该表所处的数据库空间的。见例1.1
(在 《IBM Informix Dynamic Server管理员指南》11.5版本的P2-22可以看到“可以在创建表(通常用 create table 的 in dbspace 选项)时,通过命名数据库空间将表放到特定的数据库空间中。当您不指定数据库空间时,数据库服务器会将该表放置在数据库驻留的数据库空间中。”)
例1.1
> create table lilei(c1 int);

Table created.

> !dbschema -d nmosdb -t lilei -ss

DBSCHEMA Schema Utility INFORMIX-SQL Version 11.50.FC4DE

{ TABLE "informix".lilei row size = 4 number of columns = 1 index size = 0 }
create table "informix".lilei
(
c1 integer
) extent size 16 next size 16 lock mode page;

revoke all on "informix".lilei from "public" as "informix";

> drop table lilei;

Table dropped.

> create table lilei(c1 int) in fmdbs;

Table created.

> !dbschema -d nmosdb -t lilei -ss

DBSCHEMA Schema Utility INFORMIX-SQL Version 11.50.FC4DE
{ TABLE "informix".lilei row size = 4 number of columns = 1 index size = 0 }
create table "informix".lilei
(
c1 integer
) in fmdbs extent size 16 next size 16 lock mode page;

revoke all on "informix".lilei from "public" as "informix";
>

二、 使用系统表 SYSFRAGMENTS 的 partname 字段。
如果这个表没有分段,或者这个表没有索引(即使创建表时使用 in 选项),则在这个系统表中是查不到的。见例1.2
例1.2
> drop table lilei;

Table dropped.

> create table lilei(c1 int);

Table created.

> select * from sysfragments where tabid in(select tabid from systables where tabname='lilei');

No rows found.

> create index ix_lilei on lilei(c1);

Index created.

> select * from sysfragments where tabid in(select tabid from systables where tabname='lilei');
fragtype I
tabid 547
indexname ix_lilei
colno 0
partn 25166354
strategy I
location L
servername
evalpos 0
exprtext
exprbin
exprarr
flags 2
dbspace nmosdbs
levels 1
npused 1.000000000000
nrows 0.00
clust 0.00
partition nmosdbs

1 row(s) retrieved.

例1.3 (接例1.2)
> !dbschema -d nmosdb -t lilei -ss;

DBSCHEMA Schema Utility INFORMIX-SQL Version 11.50.FC4DE

{ TABLE "informix".lilei row size = 4 number of columns = 1 index size = 9 }
create table "informix".lilei
(
c1 integer
) extent size 16 next size 16 lock mode page;

revoke all on "informix".lilei from "public" as "informix";


create index "informix".ix_lilei on "informix".lilei (c1) using
btree in nmosdbs;

>
三、在创建索引时如果不指定 in 选项,则索引与表处于同一个数据库空间,所以也可以在有索引且创建索引时没有使用 in 选项的表上使用 dbschema -ss 来看这个表所在的数据库空间,见例1.3

那么我现在就有一个问题:如何查看一个没有索引,且在创建表时没有使用 in 选项的非分段表所处在数据库空间?难道只能按照以下方法了吗?如果有人知道,也请麻烦告诉我一下,先谢谢啦!
在 《IBM Informix Dynamic Server管理员指南》11.5版本的P2-22可以看到“可以在创建表(通常用 create table 的 in dbspace 选项)时,通过命名数据库空间将表放到特定的数据库空间中。当您不指定数据库空间时,数据库服务器会将该表放置在数据库驻留的数据库空间中。”
即这类表的数据库空间与该表所在数据库的数据库空间一致。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22565551/viewspace-1029528/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22565551/viewspace-1029528/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值