20180511账户中心新custid规则升级问题总结

目录

DB2 查看表空间的容器情况

扩表空间大小

赋权限

db2 with子句运用 -- with 在db2 文档里面叫做 公共表表达式

事务日志满解决办法:

LOAD导致的表空间backup pending

alter table t1 activate not logged initially:不记录日志引起的锁表重建。

DB2 使用REORG命令重组优化表和索引


DB2 查看表空间的容器情况

先获取表空间的表空间标识

db2 => list tablespaces show detail

然后用如下命令查获此表空间使用的容器

db2 => list tablespace containers for 0

扩表空间大小

db2 " ALTER TABLESPACE AC_HIS_DATA_TBS EXTEND (FILE '/home/db2inst3/hdata' 262144) "

赋权限

给存储过程赋执行权限

db2 "grant execute on PROCEDURE AC.SP_UPT_DEL_CUST_ID to user zhzxbcc"

给用户赋db2管理权限

db2 "grant dbadm on database to user zhzxbcc"

将 DBADM 权限授予 db2grp1 组中的每个用户。同样,只有 SYSADM 用户能够发出这个命令

db2 grant dbadm on database to group db2grp1

给用户赋一个表的增删改查权限

db2 grant select on table tableName to user zhzxbcc

 

db2 with子句运用 -- with 在db2 文档里面叫做 公共表表达式

db2 "with tt (SEC_ACC, DONE_DATE, RPT_CONTRACT_NO)

as (

values ('A209938165','20180321','0208003684'),

('A209938199','20180321','0208003652')

)

select 'update ks.tx_frozen_detail set business_code = ''4711''

where MARKET_CODE = ''1'' and DONE_DATE = '''||a.DONE_DATE||'''

and BS = '''||BS||''' and CUST_NO = '''||CUST_NO||'''

and SERIAL_NO = '''||SERIAL_NO||''' and business_code = ''4709'';'

from ks.tx_frozen_detail a left join tt on a.SEC_ACC = tt.SEC_ACC

and a.DONE_DATE = tt.DONE_DATE and a.RPT_CONTRACT_NO = tt.RPT_CONTRACT_NO

where market_code = '1' and sec_code = '501307' and tt.SEC_ACC is not null"

 

事务日志满解决办法:

db2 get db cfg for ksdbs|grep LOG

(1) 增大日志文件大小:

db2 udpate db cfg for mid using LOGFILSIZ 8192

或者增大主日志文件个数:

db2 update db cfg for mid using LOGPRIMARY 15

或者增大辅助日志文件个数:

db2 update db cfg for mid using LOGSECOND 10

(2)停掉引起这个错误的应用程序或者停掉所有的应用程序,再重启数据库

db2 force applications all

db2 force application (应用程序句柄 通过db2 list applications获取)

db2stop

db2start

LOAD导致的表空间backup pending

LOAD默认模式是 COPY NO

COPY NO 会强制将表所在的整个表空间置于Backup Pending的状态,只能对该表空间读取操作,不能更新或删除,必须备份表空间/数据库之后才能解除该状态。 COPY NO是默认的选项

COPY YES 会生成一个文件,里面包含了被load数据的副本, 表所在表空间不会被置于backup pending的状态。

NONRECOVERABLE 不会把表空间置于Backup Pending的状态,这样load完成之后,表空间状态仍然是正常的。但这样做的后果就是如果出了问题,后续恢复数据库,并rollforward的时候,会将该表置为drop pending的状态,访问的时候会报SQL1477N

backup pending状态解决办法是备份表空间(状态0x0020)

//db2 load不加nonrecoverable可能导致table space变为backup pending状态,联机或者脱机备份表空间即可

db2 "backup db bcudb tablespace (USERSPACE1) [ online ] to /dev/null without prompting"

正确用法:LOAD FROM ac.cust_extend_info.del OF DEL REPLACE/INSERT INTO ac.cust_extend_info NONRECOVERABLE

alter table t1 activate not logged initially:不记录日志引起的锁表重建。

这个操作仅仅在同一个事务内有效,也就是说,这个事务结束(发出了commit命令)之后,后续操作会重新记录日志。但是这个语句有个问题。如果在这个事务中显式地发出了rollback命令,或者SQL因为意外情况失败(比如锁超时、内存不足等)导致回滚,则该表将不能访问,必须被删除。

后面在用到此语句时需要导出建表语句及表中数据

DB2 使用REORG命令重组优化表和索引

reorgchk,检查table index 是否需要重组。

reorg 重组,重新放置数据位置。

$db2 reorg table ks.ACCU_CHANGE

runstats 统计信息,可以优化查询器

$db2 runstats on table ks.ACCU_CHANGE  and indexes all

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值