最近受命帮其他项目组做一个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------------
分享到:
相关推荐
总的来说,这个压缩包提供的DB2自动备份脚本是企业维护数据安全的有效工具。正确配置和使用这些脚本,可以确保在数据丢失或系统故障时能够迅速恢复,从而降低业务风险。对于DB2数据库管理员来说,理解和掌握此类脚本...
在 WINDOWS 和 OS/2 环境下,DB2 的安装目录结构如下: * \SQLLIB:安装的根目录,包括 README 文件 * \SQLLIB\ADSM:包含 ADSTAR 分布式存储管理器文件 * \SQLLIB\BIN:包含 DB2 工具的可执行文件 * \SQLLIB\BND:...
在Windows环境下,DB2数据库系统的备份通常可以通过编写批处理脚本(Bat脚本)来自动化完成,这样可以提高效率,减少人为错误。这篇博客“window db2数据库备份Bat脚本”可能详细讲解了如何利用批处理脚本来实现DB2...
在Windows环境下,首先需要使用`db2move`工具对数据库进行备份和导出。这一步骤通过创建数据库的逻辑备份,确保了数据的一致性和完整性。具体命令示例如下: ``` db2move -s db2inst1 -u db2inst1 -p ``` 该命令会...
在Windows系统下,使用`db2 drop database`命令删除目标数据库。 - 然后,在Linux环境下创建新的数据库,这可能涉及到代码页和领土配置的调整。例如,代码页1386对应GBK编码,1208对应UTF-8编码。可以通过`db2 get ...
#### 五、Windows 平台下的 DB2 安装步骤 1. **下载安装包**:同样从 IBM 官方网站下载适用于 Windows 的 DB2 9.7 安装程序。 2. **运行安装向导**:双击安装程序,按照图形界面提示完成安装过程。 - 选择安装选项...
7. **自动化脚本**:如何利用操作系统脚本语言(如Windows批处理、Linux shell脚本)配合工具定期自动执行导出任务。 "AutoData4DB2"这个文件名可能是这个工具的主程序或者配置文件,具体用途可能需要根据工具的...
在Linux环境下,DB2 V11.1可以充分利用操作系统的优势,如多线程处理、内存管理和安全性。本压缩包包含的是专为Linux系统设计的DB2 V11.1版本,可能包含安装脚本、配置文件、数据库实例、数据文件以及相关的工具和...
在Windows 7环境下安装DB2 V9.7.0.441的过程涉及到多个步骤,包括环境检查、下载安装文件、配置选项选择以及后续的系统设置。以下是对这个过程的详细解析: 1. **环境准备**: 在开始安装之前,确保你的Windows 7...
1. **DB2**: IBM的DB2是一款高性能、可扩展且安全的数据库产品,适用于各种环境,包括云、Linux、Unix、Windows以及大型机。它支持SQL标准,并提供了丰富的特性,如事务处理、数据仓库和数据分析。 2. **Oracle...
在DB2命令中心,你可以导入和执行预先编写好的脚本,例如清单1中的DB2备份脚本。 2. **DB2命令行处理器(CLP)**: 它类似于一个DB2提示符(DB2=>),用户可以直接在这里输入DB2命令,就像在Windows命令提示符中...
默认情况下,UNIX系统上的DB2实例名为**DB2AS**,而在Windows系统上则为**DB2DAS00**。 #### 21. 如何创建和管理DB2实例? 管理DB2实例的操作包括: - 使用**DB2ADMINSTART**命令启动DB2实例。 - 使用**DB2...
本课程“DB2 Admin Workshop for Windows”专注于在Windows环境下对DB2 v9进行管理和维护,旨在帮助IT专业人员掌握DB2的核心管理技能,提升数据库性能和可用性。 1. **安装与配置** - 学习如何在Windows操作系统上...
这些批处理文件通常使用DOS命令或者Windows PowerShell脚本编写,包含了DB2的命令行工具db2cmd或db2.exe执行的SQL命令。我们可以假设这些文件分别代表了两个独立的批处理流程,可能是数据导入、数据库维护、备份或...
接着,“midware_iis7_windows”意味着脚本也适用于Windows环境下的IIS(Internet Information Services)7中间件。IIS是微软提供的Web服务器,主要负责处理HTTP请求。扫描IIS7的基线配置可能包括检查Web服务的...
在Windows环境下创建名为`Administrator`的新DB2实例,实例数据存储在`d:\db2`目录下。 - **实例操作** - **启动实例** `db2start` - **停止实例** `db2stop force` 强制停止实例。 - **连接到数据库** ...
- `db2icrt <instance_name>`:在Windows环境下创建实例。 - `db2icrt -u fenced_user_ID <instance_name>`:在UNIX环境下创建受限制用户实例。 - `db2idrop -f <instance_name>`:删除实例。 **注意事项:** - `...
通过db2_RazorSQL这个压缩包文件,用户可以获得与DB2数据库交互所需的一切资源,无论是开发、测试还是维护,RazorSQL都能提供强大且易用的工具集,帮助IT专业人士更高效地管理工作。无论你是数据库管理员还是开发者...