DB2匯出預存程序的DDL語句的方法

來源:互聯網
上載者:User

日常DBA的工作就是擷取SP的代碼,以便於分析或者移植到別的環境,如何快速擷取SP的DDL呢,總結了下,DB2在擷取SP的DDL語提供的方法還是比較多,可以供參考:

1  select routinename,text from sysibm.sysroutines;

上面是通過資料字典表查詢擷取,與其等效的系統檢視表查詢擷取方法
DB2 SELECT CHAR(ROUTINESCHEMA,20), CHAR(ROUTINENAME,20), TEXT FROM SYSCAT.ROUTINES > <輸出檔案名>
此方法的缺陷是當text>32767時,匯出的該條預存程序是不完整的。

2 GET ROUTINE
1)擷取所有預存程序的名稱:
DB2 SELECT CHAR(ROUTINESCHEMA,20) AS SCHEMA, CHAR(ROUTINENAME,20) AS NAME FROM SYSCAT.ROUTINES WHERE SUBSTR(VARCHAR(TEXT),1,16) = 'CREATE PROCEDURE' &gt; <輸出檔案名>
2)根據輸出檔案中預存程序的名稱,分別對每個預存程序執行如下操作,以便將完整的建立語句輸出到指定檔案中:
DB2 GET ROUTINE INTO <輸出檔案名> FROM PROCEDURE <預存程序模式名>.<預存程序名>

當然上面方法的好處就是均可以指定具體SP名稱,對單獨的SP進行DDL的結構匯出。

3 DB2LOOK 命令的 -e 選項中增加了對預存程序的建立語句的提取
  db2look -d <資料庫名>  -cor -e -o <輸出檔案名>

4 使用export:
db2 "EXPORT TO procudure.del OF del lobs to sp.del MODIFIED BY LOBSINFILE SELECT 'SET CURRENT SCHEMA '||rtrim(procschema)||'@'||chr(10)||'SET CURRENT PATH = SYSIBM,SYSFUN,SYSPROC,'||rtrim(procschema)||' @'||chr(10)||text||chr(10)||'@'||chr(10) FROM syscat.procedures ORDER BY create_time ; "

注意必須加lobs to選項,否則大的預存程序定義只能匯出一部分

上面的第三和第四種方法無法指定SP名稱,基本是全庫的SP的所有結構,所以可以根據工作中的需求選擇合適快捷的方法,總而言之,DB2提供了足夠多的方法便利了DBA在日常工作需求。

DB2資料庫效能調整和最佳化(第1、2版) PDF

DB2資料庫效能最佳化介紹

DB2 9.7 for Linux 5.4安裝詳細步驟

本文永久更新連結地址:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.