简介
除了提供对结构化查询语言(Structure Query Language,SQL)的支持外,IBM® DB2® Universal Database™ 还提供一组丰富且广泛的管理应用程序编程接口(API)。因为正确维护 DB2 UDB 系统所需的所有日常任务都依靠 DB2 管理 API,所以这些 API 就为 DB2 UDB 的管理提供了一个编程接口。
例如,DB2 控制中心(Control Center)就是一个调用 DB2 管理 API 来执行 DB2 系统、实例和数据库管理任务的基于 Java 的图形用户界面(GUI)工具。DB2 UDB 还提供了象 DB2 CLP 这样的命令行工具来执行类似任务,这些工具也调用 DB2 管理 API。
除了 DB2 UDB 命令行工具,DB2 通用数据库还提供一组丰富的系统实用程序,称为 DB2 系统命令。这些命令通常被用来执行尚未集成到 GUI 工具的任务。通常从操作系统的 shell(如 Windows shell — Wshell),也称为命令提示符,调用 DB2 UDB 系统命令。
您可以在几乎所有的脚本语言(从简单的 Windows shell 脚本到用 JScript、VBScript、Object REXX 或 PerlScript 编写的较复杂脚本)中将 SQL、DB2 命令、DB2 UDB 系统命令和操作系统命令结合起来,以便使简单重复的任务自动化或调度这些任务,从而形成更复杂的任务或您能想到的任何 DB2 管理任务。
一般说来, 脚本(scripting)指的是一种被解释的语言。脚本在文本文件中创建,执行后编译成汇编程序或字节代码。Windows 提供了几种环境,它们可用于执行脚本编制语言。其中,执行系统管理任务最常用的两个环境是 Windows shell(Wshell)和 Windows Scripting Host(WSH)。
本文描述在 Windows 平台上可用于 DB2 UDB 的几种不同的脚本编制接口,首先将概述 DB2 管理 API、DB2 命令行工具和 DB2 系统命令。我将向您介绍用 Windows shell 编制 DB2 UDB 脚本的最佳技术,并提供可从本网站下载的几个有用示例。
DB2 管理 API
作为 DB2 UDB for Linux、UNIX® 和 Windows 的一部分,DB2 管理 API 一直包含在 DB2 UDB 中,有文档记录并得到支持。随着 DB2 UDB 不断提供其它功能,如分割镜像(Split Mirror Images),API 集也随之继续扩展以支持这些特性。这些 API 在 DB2 Administrative API Reference中有详细的文档记录。用这些 API 编程的样本源代码也和 DB2 UDB 的开发者版本一起提供。
DB2 管理 API 正式支持以下编程语言:
由于象 Java、Perl 和 Visual Basic 这样的编程语言(随便列举几个)不断涌现,所以这份列表可能乍一看显得相当短。但是,大多数编程语言都可以调用用其它语言编写的 API,其中 C API 受到最普遍的支持。除了可以通过 C、COBOL、FORTRAN 和 REXX 直接访问 DB2 管理 API 之外,还可以通过其它方法间接访问这些 API,譬如通过 Java 本机接口(Java Native Interface,JNI)。事实上,现今与 DB2 UDB 一起提供的 DB2 管理工具几乎全都是用 Java 编写的,而 Java 却不在 DB2 管理 API 正式支持的编程语言的简短列表上。DB2 控制中心使用 IBM 开发的 Java 本机接口(JNI)访问这些 API。
对于那些不能直接访问 DB2 管理 API 的编程语言和脚本语言(如 VBScript、Jscript 和 Perl),还有另一种方法。DB2 CLP 作为命令行界面,可通过 DB2 命令(DB2 Command)提供对几乎所有 DB2 管理 API 功能的间接访问。DB2 命令在 DB2 UDB Command Reference中有详细的文档记录。
DB2 UDB 命令行工具
DB2 UDB 命令行工具是 DB2 UDB 的组件,这些工具支持对 DB2 命令以及 SQL 语句的处理。在 Windows 上可使用三种命令行工具:
您可以通过单击 Start -> Programs -> IBM DB2 -> Command Line Tools找到这些工具。
DB2 命令中心
第一个命令行工具是 DB2 命令中心( 图 1),它提供一个处理命令和 SQL 语句的 GUI。您可以用交互方式或脚本(批处理)方式工作,或者将两种方式结合使用。通过单击 Start -> Programs -> IBM DB2 -> Command Line Tools -> Command Center启动 DB2 命令中心。
图 1是 DB2 命令中心的抓屏。在本例中,我们导入了如 清单 1所示的样本 DB2 备份脚本。您可以通过从 Script菜单选择 Import来导入脚本。
DB2 命令行处理器(CLP)
一般而言,可以把 DB2 命令行处理器(CLP)当作用于调用 DB2 命令的 DB2 提示符 DB2 => ,就象 Windows 命令提示符 C: 用于调用操作系统命令一样。也可以从任一 DB2 命令行工具调用 DB2 系统命令(稍后讨论)和操作系统命令,只要在命令前加一个感叹号 ! 即可。
图 2显示了 DB2 CLP 以及关于如何获取 DB2 命令帮助的一些基本信息。单击 Start -> Programs -> IBM DB2 -> Command Line Tools -> Command Line Processor,启动 DB2 CLP。
要了解有关 DB2 UDB V8.1 中 DB2 CLP 新增功能的更多信息,请阅读 Paul C. Zikopoulos 撰写的 DB2 开发者园地文章 定制 DB2 通用数据库命令行处理器。
DB2 命令窗口
您可以把 DB2 命令窗口看成一个 DB2 shell( db2cmd.exe ),它扩展 Windows shell( cmd.exe )以提供对 DB2 命令和 SQL 语句的支持。在 DB2 命令窗口中输入的命令必须是以大写、小写或大小写结合的 DB2 开头。操作系统命令(如 dir )直接被传递到 Windows shell(cmd.exe),不需要感叹号( ! )。
DB2 CLP 与 DB2 命令窗口的主要区别在于 CLP 提供 DB2 命令提示符 DB2 => ,而 DB2 命令窗口提供 Windows 命令提示符,DB2 命令和操作系统命令都可以在其中输入。在 Windows 上用 DB2 命令窗口可以最有效地执行 DB2 UDB 脚本编制,因为它方便地支持对 SQL 语句、DB2 命令、DB2 系统命令和操作系统命令的调用。
提示:如果您试图从 Windows shell 直接运行 DB2 命令,您将得到以下错误消息:
这表明这种 shell 不能处理 DB2 命令。您只需通过输入 db2cmd.exe 来启动 DB2 命令窗口,以初始化命令环境即可。
您可以设置几种选项来更改 DB2 CLP 的缺省行为。您可以通过输入 list command options 命令获取这些选项的列表,如 图 3所示。从 DB2 命令窗口调用 DB2 脚本最常用的几个选项将在下面的示例中演示。
图 3. DB2 命令窗口和选项
有关使用 DB2 CLP 编制 SQL 和 DDL 语句脚本的更多信息,请阅读 Blair Adamache 撰写的 DB2 开发者园地文章 DB2 的命令行处理器和脚本编制。DB2 命令选项在 DB2 UDB Command Reference 中也有详细的文档记录。
尽管 DB2 脚本可以包含 SQL 语句、DB2 系统命令和操作系统命令,但它只是有一个或多个 DB2 命令的文本文件。虽然不是必需的,但通过使用适当的文件扩展名形成一个标准的 DB2 脚本命名约定通常是个很好的方法。 表 1显示了几种最常用的文件扩展名。
表 1. 脚本的常用文件扩展名
作为说明之用, 清单 1包含一个非常简单的 DB2 脚本,该脚本使用数个 DB2 命令备份 sample 数据库。可以从任一 DB2 命令行工具执行该脚本。本文中用到的全部脚本都可以 下载。这些脚本使用缺省的 DB2 实例(DB2)和样本数据库(SAMPLE)。其中的一些脚本将要求您安装 Windows 资源包(Windows Resource Kit)。
清单 1. 备份 sample 数据库的样本 DB2 脚本(db2backup.db2)
您可以使用以下语法从 DB2 命令窗口执行以上 DB2 脚本:
在上面的示例中,使用了以下 DB2 命令选项来执行 DB2 脚本文件( db2backup.db2 ):
-t 指明在缺省情况下用分号(;)终止每条命令 -v 指明应将每条命令显示到标准输出 -f 指明从输入文件读取命令 -l 指明将命令记录到输出文件中 -r 指明将结果保存到报告文件中
使用 -l 选项将所有 DB2 命令记录到日志文件( db2backup.log )并且使用 -r 选项将命令的输出保存到报告文件( db2backup.rpt ),这始终是一个很好的方法。这两个选项的区别在于:
同时使用这两个选项可以让您利用报告文件查看脚本的执行摘要,并利用日志文件查看每条命令的详细信息。
也可以从 Windows shell 调用 DB2 命令窗口本身,只需从 Windows shell(命令提示符)输入 db2cmd 即可。它有一些有用的开关,可以在调用它时向它传递这些开关。 表 2描述了这些选项:
表 2. DB2 命令窗口的选项
通过首先调用 DB2 命令窗口,您可以从任一 Windows shell 执行 清单 1中的脚本,如下面的示例所示:
DB2 命令窗口提供所执行的每条命令的返回码。 表 3列出了返回码。
表 3. DB2 CLP 返回码
注:如果您正用交互方式执行语句,那么 DB2 CLP 不会提供每条命令的返回码。
DB2 系统命令
DB2 系统命令是一组命令行实用程序,您可以用来执行那些由于种种原因尚未集成到 DB2 控制中心或其它 GUI 工具的任务。通常从操作系统 shell(如 Windows 命令提示符)调用 DB2 系统命令,但也可以从 DB2 命令中心、DB2 任务中心、DB2 CLP、DB2 命令窗口,当然还可以从您惯用的脚本语言调用。
有近百条 DB2 系统命令可用。请参阅 DB2 Command Reference以获得这些命令的完整列表,以及详细的文档。通读 DB2 UDB 修订包发行说明以查找新的 DB2 系统命令始终是个很好的方法,因为常常都是通过修订包添加新命令或增强现有命令的。
表 4是一个非常简短的列表,它列出了一些比较常用的 DB2 系统命令,这些命令在脚本编制时非常有用。乍一看,其中的一些命令可能看起来不太象脚本编制命令,因此提供了对命令的描述,以使您清楚如何在脚本中使用它们。
表 4. DB2 系统命令的示例
可以将一些 DB2 系统命令编制成脚本以便简单地使它们已经提供的功能自动化。DB2 审计工具(db2audit.exe)就是可以通过脚本编制实现自动化的实用程序的典型示例。另一些 DB2 系统命令在单独使用时作用并不大,但与其它 DB2 命令或操作系统命令结合起来就非常有用。我将在本文的 脚本编制方案一节向您演示一些示例。
Windows shell 脚本
Windows shell 脚本编制环境经过了很长时间的发展,它最初是早期 Windows 操作系统上的简单批处理文件。对于需要用到 Window shell 命令或者带命令行界面的其它程序的任务而言,Windows shell 脚本是调度和自动化这些任务的理想工具。
Windows shell 是自动化 DB2 UDB 管理任务方面引人注目的脚本编制环境,原因如下。第一,Windows shell 集成在 Windows 操作系统中,这使得它可用于所有版本的 Windows 客户机与服务器。第二,Windows shell 脚本编制相对较简单,使它易于实现。这使您可以专注地完成当前的任务。最后,介绍 Windows shell 脚本编制的书籍、手册和参考资料有很多。
Windows shell 脚本编制环境提供:
除了这些特性之外,还可以通过使用 Windows 资源包提供的系统实用程序,进一步增强 Windows shell 脚本。 表 5列出了其中的一些实用程序。有关 Windows 资源包的更多信息,请在 www.microsoft.com/windows/reskits访问 Windows Deployment and Resource Kits 主页。
表 5. Windows 资源包实用程序
Windows shell 脚本的最简单形式是包含一条或多条命令的文本文件。Windows shell 脚本的缺省文件扩展名是 .bat 和 .cmd 。 清单 2是一个简单 Windows shell 脚本的示例。
清单 2. Windows shell 脚本“Hello World”(hworld.bat)
从 Windows shell 脚本调用 DB2 命令有两个基本方法:
从 Wshell 脚本调用 DB2 命令窗口
清单 3 是一个使用 DB2 CLP 备份 sample 数据库的样本 Windows shell 脚本。该文件无需在 DB2 命令窗口中执行,因为它调用一个 DB2 命令窗口,然后将 DB2 备份数据库命令传递给它。环境变量 DB2INSTANCE 的值将缺省实例设置为“DB2”,也可以用 DB2 ATTACH 命令替换这个值。我将在后面向您演示这一点。
提示:因为 Windows shell 不支持指定的命令行参数,但我们可以用任意顺序将这些参数传递给脚本,所以将这些值显式地定义为脚本内的全局或局部变量是较常见的做法。
清单 3. 从 Windows shell 调用的 DB2 备份脚本(db2backup2.bat) @echo off
rem
rem This is a Windows Shell Script that invokes a DB2 Command Window that
rem performs a database backup by calling the DB2 backup database command.
set DB2INSTANCE=DB2
set DB2DATABASE=SAMPLE
title Starting database backup of %DB2DATABASE% on %date% at %time%...
DB2CMD.EXE -c -w -i DB2 BACKUP DATABASE %DB2DATABASE%
if not %errorlevel% == 0 (
echo Database backup of %DB2DATABASE% failed, RC=%errorlevel%
) else (
echo Database backup of %DB2DATABASE% completed on %date% at %time%.
)
从 shell 脚本内执行 DB2 命令窗口的优点是您不必从 DB2 命令窗口内执行 shell 脚本。该方法的缺点是每次调用 DB2 命令窗口时只能运行一条 DB2 命令。可以通过在单独的 DB2 脚本中放置数条 DB2 命令的方法绕开这一限制,并使用 -tf 开关执行 DB2 脚本,如 清单 4所示。
清单 4 也是一个使用 DB2 CLP 备份 sample 数据库的 Windows shell 脚本。该文件无需在 DB2 命令窗口中执行,因为它调用一个 DB2 命令窗口,然后将包含多条 DB2 命令(包括备份数据库命令)的 DB2 脚本( db2backup.db2 ,如 清单 5所示)传递给该命令窗口。
清单 4. 从 Windows shell 调用的 DB2 备份脚本(db2backup3.bat)
@echo off
rem performs a database backup by calling the DB2 backup database command
rem located in a db2 script file (db2backup.db2).
DB2CMD.EXE -c -w -i DB2 -tf db2backup.db2 -l db2backup.log -r db2backup.rpt
清单 5显示了由 清单 4中的 Windows shell 脚本执行的 DB2 脚本。
清单 5. DB2 备份脚本(db2backup.db2)
-- This is a sample DB2 Backup Script
--
ATTACH TO DB2;
BACKUP DATABASE SAMPLE;
DETACH;
TERMINATE;
从 DB2 命令窗口运行 Wshell 脚本
从 DB2 命令窗口内执行 Windows shell 脚本的优点是您可以在该 shell 脚本内调用多条 DB2 命令,而不必将它们置于单独的脚本中。这使您对每条单独的 DB2 命令有更好的执行控制。该方法的缺点是 shell 脚本的执行必须在 DB2 命令窗口内进行。通过从任一调度程序(包括 DB2 任务中心)执行 DB2 命令窗口并将 Windows shell 脚本传递给该窗口,就可以绕开这一限制,方法如下所示:
在这一示例中,当 DB2 命令窗口退出时,调度程序将收到最终的返回码。
清单 6是一个使用 DB2 backup database 命令备份 sample 数据库的样本 Windows shell 脚本。必须从 DB2 命令窗口内调用该脚本。
清单 6. 从 DB2 命令窗口内调用的 DB2 备份脚本(db2backup4.bat)
@echo off:
:---------------------------------------------------------------------------::
:: This is a Windows Shell Script that must be run inside a DB2 Command::
Window (db2cmd).
::---------------------------------------------------------------------------::
set SCRIPT_NAME=%~n0
set SCRIPT_VER=1.0
title %SCRIPT_NAME% v%SCRIPT_VER%
echo Starting database backup of %DB2DATABASE% on %date% at %time%...
DB2 BACKUP DATABASE SAMPLE
如果您已经安装了 Windows 资源包,您可以按清单 7 所示更改脚本。这个版本的脚本使用 logevent 实用程序将信息和错误消息写到 Windows 事件日志而不是写到标准输出。
清单 7. 从 DB2 命令窗口调用的样本脚本(db2backup5.bat)
:: This is a Windows Shell Script that must be run inside a DB2 Command
:: Window (db2cmd). It uses the logevent utility from the Windows Resource
:: Kit to log information and error messages.
:: Backup Database (Requires Windows Resource Kit)
logevent -s I -r %script_name% "Starting database backup of %DB2DATABASE% on
%date% at %time%...
"DB2 BACKUP DATABASE %DB2DATABASE%
if %errorlevel% == 0 (
echo Database backup of %DB2DATABASE% failed, RC=%
errorlevel%
logevent -s I -r %script_name% "Database backup of %DB2DATABASE%
failed, RC=%errorlevel% "
logevent -s E -r %script_name% "Database backup of %DB2DATABASE%
completed on %date% at %time%."
调度任务
DB2 任务中心提供了用于调度作业的图形用户界面。该工具在 DB2 UDB V8.1 中已得到了显著的增强。它提供了创建新任务的向导,新任务可以是 DB2 脚本、操作系统脚本、MVS shell 脚本和 JCL 脚本。
和 DB2 命令中心一样,可以从文件导入脚本。DB2 任务中心允许您调度任务以使其在本地运行或在另一个 DB2 UDB 系统上远程运行。您可以定义任务完成时的定制返回码,还可以在发生故障时停止任务。您可以定义在任务成功或失败时要通知的联系人名单。DB2 任务中心还允许您按照 图 4所示的类别对任务进行分组,图 4 显示我们已经为导入的样本 DB2 备份脚本( 清单 1)创建了 DB2 Maintenance 类别。
在 Windows 上,可以用以下任一方法启动 DB2 任务中心:
您可以获得关于 DB2 任务中心使管理更方便:在 DB2 通用数据库中调度和自动化的更多信息。
脚本编制方案
既然您已经了解 DB2 UDB 如何提供用于脚本编制的接口,并且知道如何从 Windows shell 访问这些接口以及如何用 DB2 任务中心调度脚本,那么让我们看几个可以用脚本使任务自动化的方案。这些方案包括当前没有自动化的任务,以及需要组合多种命令的任务,它们包括 DB2 命令、DB2 系统命令、操作系统特定命令和/或只能通过 DB2 系统命令使用的特性。让我们看看下面的示例:
归档诊断日志
可以用简单的 Windows Shell 脚本自动化的最简单任务之一是定期归档 DB2 诊断日志。每个 DB2 实例都使用 DB2 诊断日志文件编写与实例及实例内全部数据库相关的诊断信息。写入日志的信息的数量由实例配置参数 DIAGLEVEL 控制。将 DIAGLEVEL 设置成最高级别四(4)可以在问题确定期间提供极有价值的大量信息。但是,在这一级别,DB2 诊断日志很快会增长为吉字节大小的文件。
目前,DB2 不提供任何自动归档或修剪 DB2 诊断日志的工具。管理 DB2 诊断日志文件的策略之一是定期归档 DB2 诊断日志并使这些归档文件在一定的天数内随时可用。在给定的天数过后,就可以删除归档文件,因为已经在定期的系统备份期间将它备份到磁带上了。使用 Windows shell 脚本可以轻松地完成这一任务,如 清单 8所示。
清单 8. 归档 DB2 诊断日志脚本(db2arcdiag.bat)
:: This is a Windows Shell Script to archive the db2 diagnostic log file. It
:: assumes the db2diag.log file is in the default diagnostic log directory
:: and renames it to db2diag.YYYYMMDD.log It also deletes all but the last
:: seven (7) of these diagnostic log archives.
set script_name=%~n0
set script_log=%~n0.log
set script_ver=1.0
title %script_name% v%script_ver%
echo %script_name% v%script_ver% started on %date% at %time%
:: Set Script Date Variable
for /F "tokens=1-4 delims=/ " %%i in (''date /t'') do (
set script_date=%%l%%j%%k
:: Set DB2 Path Variable
if not defined db2path (
for /F %%i in (''db2set db2path'') do (set db2path=%%i)
echo %script_name% v%script_ver% set db2path as %db2path%
set db2diag_path=%db2path%%db2instance%
echo %script_name% v%script_ver% set db2diag_path to %db2diag_path%
set db2diag_file=%db2diag_path%db2diag.log
echo %script_name% v%script_ver% set db2diag_file to %db2diag_file%
:: Archive DB2 Diagnostic Log File
echo %script_name% v%script_ver% archiving %db2diag_file% to
db2diag.%script_date%.log
ren %db2diag_file% db2diag.%script_date%.log 2> %script_log%
echo ERROR: Unable to archive %db2diag_file% to db2diag.%script_date%.log,
RC=%errorlevel%
type %script_log%
:: Delete DB2 Diagnostic Log Archives 7 days or older
set db2diag_arch=%db2diag_path%db2diag.*.log
for /f "skip=7" %%i in (''dir %db2diag_arch% /b /o:-n'') do (
echo %script_name% v%script_ver% purging %%i
del %db2diag_path%%%i 2> %script_log%
echo ERROR: Unable to delete archive %%i, RC=%errorlevel%
echo %script_name% v%script_ver% completed on %date% at %time%
以上 Windows shell 脚本假定 db2diag.log 文件位于缺省的 DB2 DIAGPATH 中,并根据脚本的执行日期将该文件归档(重命名)为 db2diag. YYYYMMDD.log 。然后,它删除七天或更旧的所有 db2diag. YYYYMMDD.log 文件。
收集 DB2 系统信息
另一个可以用 Windows shell 和 DB2 命令迅速进行脚本编制的任务是相关系统、实例和数据库信息的收集。我们可以收集系统资源、DB2 注册表变量、实例和数据库配置参数以及数据库资源利用情况的快照。在开始对数据库系统作出更改之前,有这样一个脚本始终是很方便的。
清单 9. DB2 获取配置信息的脚本(db2getconf.bat)
:: This is a Windows Shell Script to collect DB2 system information. The
:: information collected is stored in a file name with the following format:
:: ..YYYYMMDD.HHMMSS.rpt
for /F "tokens=1-4 delims=/ " %%i in (''echo %date%'') do (
:: Set Script Time Variable
for /F "tokens=1-4 delims=:. " %%i in (''echo %time%'') do (
set script_time=%%i%%j%%k
:: Set Script Report File
set script_rpt=%db2instance%.%db2database%.%script_date%.%script_time%.rpt
:: Collect DB2 Services Configuration (Requires Windows Resource Kit)
echo %script_name% v%script_ver% collecting DB2 Services configuration...
echo DB2 Services Configuration > %script_rpt%
srvinfo | find "DB2" >> %script_rpt% 2> %script_log%
echo ERROR: Unable to collect DB2 Services data, RC=%errorlevel%
:: Collect DB2 Registry Configuration
echo %script_name% v%script_ver% collecting DB2 Registry configuration...
echo DB2 Registry Configuration >> %script_rpt%
db2set -all >> %script_rpt% 2> %script_log%
echo ERROR: Unable to collect DB2 Registry data, RC=%errorlevel%
:: Collect DB2 Database Administration Server (DB2DAS00) Configuration
echo %script_name% v%script_ver% collecting DB2DAS00 instance configuration...
db2 get admin cfg >> %script_rpt% 2> %script_log%
echo ERROR: Unable to collect DB2DAS00 instance data, RC=%errorlevel%
:: Collect DB2 Instance Configuration
echo %script_name% v%script_ver% collecting %DB2INSTANCE% instance
configuration...
db2 get dbm cfg >> %script_rpt% 2> %script_log%
echo ERROR: Unable to collect %DB2INSTANCE% instance data, RC=%errorlevel%
:: Collect DB2 Database Configuration
echo %script_name% v%script_ver% collecting %DB2DATABASE% database
db2 get db cfg for sample >> %script_rpt% 2> %script_log%
echo ERROR: Unable to collect %DB2DATABASE% database data, RC=%errorlevel%
db2 connect to %DB2DATABASE%
echo ERROR: Unable to connect to %DB2DATABASE% database, RC=%errorlevel%
db2 "select BUFFERPOOLID, BPNAME, NPAGES from SYSCAT.BUFFERPOOLS" >>
%script_rpt% 2> %script_log%
echo ERROR: Unable to collect %DB2DATABASE% database bufferpool data,
db2 list tablespaces show detail >> %script_rpt% 2> %script_log%
echo ERROR: Unable to collect %DB2DATABASE% database tablespace data,
db2 connect reset
echo ERROR: Unable to reset connection from %DB2DATABASE% database,
您甚至可以将这些信息存储在数据库的表中,这样这些信息就与数据库备份镜像保存在一起。定期地维护这些系统信息的历史记录可以为以后进行容量规划提供极有价值的帮助。
DB2 安全性审计
现在让我们看一个 DB2 系统命令的较好示例,该命令在用脚本语言进行自动化时非常有用。DB2 审计工具是一个实用程序,可以利用它充分地增强 DB2 实例和数据库安全性审计。它由名为 db2audit.exe 的 DB2 系统命令完全管理和控制。该命令使您能够全面地实现非常严格的 DB2 UDB 安全性审计实践。您可以配置、启动和停止安全性审计,并可以从该工具清除和抽取审计数据。这个过程是非常耗时的日常工作,但很容易用脚本语言使其自动化。例如,在您配置并启动 DB2 审计工具之后,您也许希望创建并调度一个脚本以定期地清除审计数据并将审计数据抽取到报告文件中。
清单 10. DB2 获取审计报告脚本(db2getaudit.bat)
:: This is a Windows Shell Script to collect DB2 Audit Facility information.
:: You must first start the DB2 Audit Facility (db2audit start) and optionally
:: configure scope and status (db2audit configure scope all status both). It
:: flushes and extracts the audit data to the default DB2 Audit Facility
:: directory (sqllib\security and then and renames the extracted
:: files to db2audit.YYYYDDMM.HHMMSS.rpt and prunes the DB2 Audit Log.
set prune_date=%%l%%j%%k
set prune_hour=%%i
:: Set DB2 Path Variable, DB2 Audit Path, and DB2 Audit Log
echo %script_name% v%script_ver% set db2path to %db2path%
set db2audit_path=%db2path%%db2instance%SECURITY
echo %script_name% v%script_ver% set db2audit_path to %db2audit_path%
set db2audit_file=%db2audit_path%db2audit.log
echo %script_name% v%script_ver% set db2audit_log to %db2audit_file%
:: Flush DB2 Audit Data to Log File
echo %script_name% v%script_ver% flushing data to db2audit.log...
db2audit.exe flush 2> %script_log%
echo ERROR: Unable to flush db2 audit data to log, RC=%errorlevel%
:: Extract DB2 Audit Data from Log File
echo %script_name% v%script_ver% extracting data from db2audit.log...
db2audit.exe extract 2> %script_log%
echo ERROR: Unable to extract db2 audit data from log, RC=%errorlevel%
:: Rename DB2 Audit Out File (db2audit.YYYYMMDD.HHMMSS.rpt)
echo %script_name% v%script_ver% renaming db2audit.out file...
ren %db2audit_path%*.out *.%script_date%.%script_time%.rpt 2> %script_log%
echo ERROR: Unable to rename db2 audit out file, RC=%errorlevel%
:: Prune DB2 Audit Log File
echo %script_name% v%script_ver% pruning db2audit.log file...
db2audit.exe prune date %prune_date%%prune_hour% 2> %script_log%
echo ERROR: Unable to prune db2 audit file, RC=%errorlevel%
然后可以将数据导入或装入到安全性审计数据库,该数据库可以通过触发器和/或存储过程将警报通知自动转发给相应的管理员。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
关于TWT使用指南社区专家合作厂商入驻社区企业招聘投诉建议版权与免责声明联系我们 © 2024talkwithtrend — talk with trend,talk with technologist京ICP备09031017号-30
添加新评论0 条评论