设为首页 收藏本站
查看: 1017|回复: 0

[经验分享] windows下db2维护的脚本

[复制链接]

尚未签到

发表于 2016-11-14 10:34:23 | 显示全部楼层 |阅读模式
  最近受命帮其他项目组做一个windows版本的db2维护脚步,其实人家有Linux上的shell文件,只是让我们翻译成windows版本的。借此机会熟悉了下windows下的批处理文件的书写。维护的代码如下
  下面这段是对约束的检查,而且是有必要的,在数据刚load后其数据相当于是锁定的,并不能执行太多的操作

set database=tbmprd
set schema=tbmprd
::此脚步的目的是执行后边的select 'set integrity for '语句对数据表进行约束的检查
echo 对于pending的一些表进行处理
echo 连接到数据库 db2 connect to %database%
db2 connect to %database%
echo 找到所有的表,然后执行set integrity for %schema%.'||TABNAME||' immediate checked
db2 "select 'set integrity for %schema%.'||TABNAME||' immediate checked;' from syscat.tables where upper(TABSCHEMA)=upper('%schema%') and STATUS='C' order by TABNAME" > temp.sql
findstr  "set integrity" temp.sql > unpending.sql

echo db2 -tvf unpending.sql > tbmprd_unpending.log
db2 -tvf unpending.sql >> tbmprd_unpending.log
pause
echo 找到所有有关联的表,这些表不能按照上面的单表pending的解决办法
echo db2 "select '%schema%.'||TABNAME||',' from syscat.tables where upper(TABSCHEMA)=upper('%schema%') and STATUS='C' order by TABNAME"
db2 "select '%schema%.'||TABNAME||',' from syscat.tables where upper(TABSCHEMA)=upper('%schema%') and STATUS='C' order by TABNAME"> temp.sql
findstr  "%schema%" temp.sql > unpending.sql
echo set integrity for  > temp.sql
type unpending.sql >> temp.sql
::此段的目的在于将temp.sql文件的最后一行的,号替换成 immediate checked。
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "delims=" %%i in (temp.sql) do set /a line+=1
for /f "delims=" %%i in (temp.sql) do (
  set /a n+=1
  if not {!N!}=={!line!} >> unpendingtemp.sql echo %%i
  if {!N!}=={!line!} for /f "delims=," %%j in ("%%i") do >>unpendingtemp.sql echo %%j immediate checked;&goto :final
)
:final
SETLOCAL DISABLEDELAYEDEXPANSION
@echo on
::sed '$s/,/ immediate checked;/g' temp.sql>unpendingtemp.sql
::echo set integrity for  > unpending.sql
::findstr  "%schema%" unpendingtemp.sql >> unpending.sql
echo db2 -tvf unpending.sql >> tbmprd_unpending.log
db2 -tvf unpending.sql >> tbmprd_unpending.log
del temp.sql
del unpending.sql
db2 "select 'set integrity for %schema%.'||TABNAME||' immediate checked;' from syscat.tables where upper(TABSCHEMA)=upper('%schema}') and STATUS='C' order by TABNAME" >> tbmprd_unpending.log
echo -----------pending表已经处理完毕,参阅tbmprd_unpending.log------------

  下面的是对表的重组(reorg),运行统计(runstats),绑定(bind)

::变量 创建的数据库名
set database=tbmprd
::变量 创建的schema
set schema=tbmprd
echo --------------------------对于表进行reorg处理-------------------------------------
echo 连接到数据库 db2 connect to %database%
db2 connect to %database%

echo 对于目前所有的表进行reorg处理
echo -----------正在进行reorg相关处理,请耐心等待------------
db2 "select 'reorg table '||rtrim(tabschema)||'.'||tabname||';' from syscat.tables where type='T' and upper(TABSCHEMA)=upper('%schema%')"  > temp.sql
findstr  reorg  temp.sql > reorg.sql
db2 "select 'reorg indexes all for table '||rtrim(tabschema)||'.'||tabname||';' from syscat.tables where type='T' and upper(TABSCHEMA)=upper('%schema%')"  > temp.sql
findstr  reorg  temp.sql > reorg_index.sql
db2 "select 'runstats on table '||rtrim(tabschema)||'.'||tabname||' and indexes all;' from syscat.tables where type='T' and upper(TABSCHEMA)=upper('%schema%') "  > temp.sql
findstr  runstats  temp.sql > runstats.sql
db2 "select 'rebind package '||rtrim(pkgschema)||'.'||pkgname||';' from syscat.packages where pkgschema not in ('NULLID')"  > temp.sql
findstr  rebind  temp.sql > rebind.sql
db2 -tvf reorg.sql > tbmprd_runstats.log
db2 -tvf reorg_index.sql >> tbmprd_runstats.log
db2 -tvf runstats.sql >> tbmprd_runstats.log
db2 -tvf rebind.sql >> tbmprd_runstats.log
del temp.sql
del reorg.sql
del reorg_index.sql
del runstats.sql
del rebind.sql
echo -----------reorg表已经处理完毕,参阅tbmprd_runstats.log------------

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-300178-1-1.html 上篇帖子: DB2中的SMS和DMS 下篇帖子: DB2安全管理的相关概念(原创)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表