db2 存儲過程遷移方法


    大家在遷移數據庫時,存儲過程一般也要遷移過去,但一般有兩個問題:

1. 非常多存儲過程有先后關系(存儲過程調用存儲過程),假設存儲過程數量少,還能手動操作。假設量大,那真是要瘋了。

2. 存儲過程過大(行數過多),導致異常

這邊有個方法,也許能夠解決問題。

一. 導出存儲過程

EXPORT TO G:/PROCUDURE/procudure.del OF 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 WHERE PROCSCHEMA  = 'ILS' ORDER BY create_time ;

運行以上導出語句,則是把schema為ils以下的存儲過程導出為文件,由於有ORDER BY create_time。所以導出的順序也是依照原有存儲過程的順序建立的。

運行完了,應該在G:/PROCUDURE看到兩個文件

1. procudure.del

2. procudure.del.001.lob

如圖:

會出現procudure.del.001.lob這個文件,由於我這邊有存儲過程太大(使用MODIFIED BY LOBSINFILE)。所以導出為lob文件,這樣不easy出錯。

二. 導入存儲過程

下一步當然是在其它db以下導入存儲過程啦:

1. 命令行下進入到G:/PROCUDURE

2. 連接到要導入的db:  connect to ilsdb user xxx用戶 using  xxxpassword

3. db2 -td@ -vf procudure.del.001.lob

ok。順便看看log。有沒有報錯。

有報錯,在運行一次(盡管是依照創建時間排序的,但不能保證有人后期改動過父存儲過程,導致創建時間不正確)。

導入過程見圖:

打開后輸入下面命令

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM