程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> Windows上DB2 UDB腳本編制簡介(1)

Windows上DB2 UDB腳本編制簡介(1)

編輯:DB2教程

除了提供對結構化查詢語言(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 UDB 的開發者版本一起提供。

DB2 管理 API 正式支持以下編程語言:

  • C/C++
  • COBOL
  • Fortran
  • REXX

由於象 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 UDB 命令行工具

DB2 UDB 命令行工具是 DB2 UDB 的組件,這些工具支持對 DB2 命令以及 SQL 語句的處理。在 Windows 上可使用三種命令行工具:

  • DB2 命令中心(Command Center)
  • DB2 命令行處理器(CLP)
  • DB2 命令窗口

您可以通過單擊 Start -> Programs -> IBM DB2 -> Command Line Tools找到這些工具。

DB2 命令中心

第一個命令行工具是 DB2 命令中心(圖1),它提供一個處理命令和 SQL 語句的 GUI。您可以用交互方式或腳本(批處理)方式工作,或者將兩種方式結合使用。通過單擊 Start -> Programs -> IBM DB2 -> Command Line Tools -> Command Center啟動 DB2 命令中心。

圖 1. DB2 命令中心

Windows上DB2 UDB腳本編制簡介(1)(圖一)

圖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。

圖 2. DB2 命令行處理器

Windows上DB2 UDB腳本編制簡介(1)(圖二)

要了解有關 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 命令,您將得到以下錯誤消息:

 DB21061E  Command line environment not initialized. 

這表明這種 shell 不能處理 DB2 命令。您只需通過輸入 db2cmd.exe 來啟動 DB2 命令窗口,以初始化命令環境即可。

您可以設置幾種選項來更改 DB2 CLP 的缺省行為。您可以通過輸入 list command options 命令獲取這些選項的列表,如圖3所示。從 DB2 命令窗口調用 DB2 腳本最常用的幾個選項將在下面的示例中演示。

圖 3. DB2 命令窗口和選項
Windows上DB2 UDB腳本編制簡介(1)(圖三)

有關使用 DB2 CLP 編制 SQL 和 DDL 語句腳本的更多信息,請閱讀 Blair AdaMache 撰寫的 DB2 開發者園地文章DB2 的命令行處理器和腳本編制。DB2 命令選項在 DB2 UDB Command Reference 中也有詳細的文檔記錄。

盡管 DB2 腳本可以包含 SQL 語句、DB2 系統命令和操作系統命令,但它只是有一個或多個 DB2 命令的文本文件。雖然不是必需的,但通過使用適當的文件擴展名形成一個標准的 DB2 腳本命名約定通常是個很好的方法。 表1顯示了幾種最常用的文件擴展名。

表 1. 腳本的常用文件擴展名
文件擴展名 描述 .db2 包含 DB2 命令的 DB2 腳本 .ddl 包含數據定義語言(DDL)語句的 DB2 腳本 .sql 包含 SQL 語句的 DB2 腳本

作為說明之用, 清單1包含一個非常簡單的 DB2 腳本,該腳本使用數個 DB2 命令備份 sample 數據庫。可以從任一 DB2 命令行工具執行該腳本。本文中用到的全部腳本都可以下載。這些腳本使用缺省的 DB2 實例(DB2)和樣本數據庫(SAMPLE)。其中的一些腳本將要求您安裝 Windows 資源包(Windows Resource Kit)。

清單 1. 備份 sample 數據庫的樣本 DB2 腳本(db2backup.db2)

-- -- This is a sample DB2 Backup Script --ATTACH TO DB2;BACKUP DATABASE SAMPLE;DETACH;TERMINATE;

您可以使用以下語法從 DB2 命令窗口執行以上 DB2 腳本:

db2 -tvf db2backup.db2 -l db2backup.log -r db2backup.rpt

在上面的示例中,使用了以下 DB2 命令選項來執行 DB2 腳本文件( db2backup.db2 ):

-t 指明在缺省情況下用分號(;)終止每條命令
-v 指明應將每條命令顯示到標准輸出
-f 指明從輸入文件讀取命令
-l 指明將命令記錄到輸出文件中
-r 指明將結果保存到報告文件中

使用 -l 選項將所有 DB2 命令記錄到日志文件( db2backup.log )並且使用 -r 選項將命令的輸出保存到報告文件( db2backup.rpt ),這始終是一個很好的方法。這兩個選項的區別在於:

  • -l 選項記錄每條命令的開始和結束並記錄日期和時間
  • -r 選項將每條命令的輸出保存到文件中。

同時使用這兩個選項可以讓您利用報告文件查看腳本的執行摘要,並利用日志文件查看每條命令的詳細信息。

也可以從 Windows shell 調用 DB2 命令窗口本身,只需從 Windows shell(命令提示符)輸入 db2cmd 即可。它有一些有用的開關,可以在調用它時向它傳遞這些開關。 表2描述了這些選項:

表 2. DB2 命令窗口的選項
開關 描述 -c 執行 DB2 命令窗口,然後終止。 -w 一直等到 DB2 命令窗口終止。 -i 從進行調用的 shell 繼承環境。 -t 從進行調用的 shell 繼承標題。

通過首先調用 DB2 命令窗口,您可以從任一 Windows shell 執行清單1中的腳本,如下面的示例所示:

db2cmd -c -w -i db2 -tvf db2backup.db2 -l db2backup.log -r db2backup.rpt

DB2 命令窗口提供所執行的每條命令的返回碼。 表3列出了返回碼。

表 3. DB2 CLP 返回碼
代碼 描述 0 成功執行 DB2 命令或 SQL 語句 1 SELECT 或 FETCH 語句沒有返回任何行 2 DB2 命令或 SQL 語句警告 4 DB2 命令或 SQL 語句錯誤 8 命令行處理器系統錯誤

:如果您正用交互方式執行語句,那麼 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 系統命令的示例
命令 描述 db2audit DB2 提供一個審計工具來幫助檢測對數據未知或不曾預料的訪問。可利用該實用程序使安全性審計自動化,如腳本編制方案所述。 db2batch 從平面文件或標准輸入讀取 SQL 語句,動態地准備並描述語句,然後返回結果集。在設計用於對不同實例和數據庫配置參數進行基准測試的腳本中,可使用這一 DB2 命令。在調用該實用程序之前,要重新啟動實例並捕獲系統信息,如 DB2 注冊表、實例和數據庫配置。 db2exfmt 格式化說明表的內容。在設計用於 SQL 調優的腳本中,可使用這一 DB2 命令,因為可以用它自動化 SQL 語句的解釋、抽取和格式化。用這一 DB2 命令進行腳本編制可允許解釋、抽取和格式化大量的 SQL 語句以供以後復查。 db2chkbk 該實用程序可用於測試備份鏡像的完整性,並確定是否可以復原該鏡像。當在數據庫備份腳本的末尾要生成備份完成報告時,該實用程序將非常有用。 db2flsn 返回數據庫事務日志文件的名稱,該文件包含由指定的日志順序號(LSN)標識的日志記錄。當為了恢復而啟用日志保留,而且您正在運行數據復制並需要確定在何處開始修剪事務日志時,這一實用程序作為數據庫事務日志修剪腳本的一部分將非常有用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved