自己写的检查数据库中表的extents数及相应处理的shell

自己写的检查数据库中表的extents数及相应处理的shell》摘要: 平时经常要监测数据库中各表的情况,于是写了两个shell,用起来蛮方便。。。 一、检查数据库中所有的表的extents数并输出到文件中。输出的文件中,表是按extents数目大小倒序排列。 >cat check_…

平时经常要监测数据库中各表的情况,于是写了两个shell,用起来蛮方便。。。

一、检查数据库中所有的表的extents数并输出到文件中。输出的文件中,表是按extents数目大小倒序排列。

>cat check_extents.sh

[code:1:a96ccbdc4e]

today=`date +%Y%m%d%H%M%S`

dbaccess - < sql_tab_ext_${today}.txt

database sysmaster;

select dbsname,tabname,

count(*) num_of_extents,

sum( pe_size ) total_size

from systabnames,sysptnext

where partnum = pe_partnum

group by 1, 2

order by 3 desc,4 desc;

EOF

[/code:1:a96ccbdc4e]

二、如发现表的extents过大,可采取下列步骤

0。dbschema 导出表结构

1。rename 原表名

2。以原结构新建表,但增大extents和next size

3。unload出原表数据

4。dbload 数据到新表

例如发现表t_prox_pb_log的extents过大,可以这样:

0.dbschema -t t_prox_pb_log -d dbname -ss t_prox_pb_log.sql

1-4步可以写成pblog.sh如下:

>cat pblog.sh

(表结构用第0步生产的结构即可)

[code:1:a96ccbdc4e]

dbaccess << -- 2>>pblog.err

!

database dbname;

rename table t_prox_pb_log to t_pb_log_bak;

create table t_prox_pb_log

(

oper_kind char(3) not null ,

oper_detail char(6) not null ,

trn_mode char(1) not null ,

user_no1 char(20) not null ,

cust_name char(40) not null ,

trn_amt float,

cert_no integer,

cert_num integer,

trn_code char(4),

上一篇:INFORMIX SQL技巧   下一篇:关于online的备份
共2页: 上一页 1 [2] 下一页
你的位置:电脑故障网 >> 数据库 >> Informix >> 自己写的检查数据库中表的extents数及相应处理的shell