簡(jiǎn)介: 許多 iSeries 開發(fā)人員正開始使用 SQL 代替專有的非 SQL 接口來創(chuàng)建他們的數(shù)據(jù)庫(kù)對(duì)象。本文將向您展示怎樣一種通過 DB2 Universal Database for iSeries 的模式來分類相關(guān)數(shù)據(jù)庫(kù)對(duì)象。
發(fā)布日期: 2003 年 9 月 01 日
級(jí)別: 初級(jí)
訪問情況 63 次瀏覽
建議: 0 (添加評(píng)論)
許多 iSeries? 開發(fā)人員正開始使用 SQL 代替專有的非 SQL 接口來創(chuàng)建他們的數(shù)據(jù)庫(kù)對(duì)象。這種 SQL 的用法使許多 iSeries 開發(fā)人員為怎樣最好地管理同 iSeries SQL 接口混雜在一起的模式和日志對(duì)象而費(fèi)盡心思。此外,由于 OS/400? 的日志記錄不同于其他 DB2 UDB 服務(wù)器使用的日志記錄機(jī)制,IBM? DB2? Universal Database? (UDB) 開發(fā)人員在第一次使用 iSeries 時(shí)也面臨著相似的難題。
在 DB2 UDB for iSeries 中,使用模式來對(duì)相關(guān)數(shù)據(jù)庫(kù)對(duì)象進(jìn)行分組。一個(gè) DB2 UDB for iSeries 模式實(shí)際上是一個(gè) DB2 對(duì)象與 OS/400 對(duì)象的集合。執(zhí)行 CREATE SCHEMA 語(yǔ)句,將創(chuàng)建以下對(duì)象(請(qǐng)參閱 圖 1):
該模式中的這些對(duì)象提供了容器,用于存儲(chǔ)相關(guān)的 DB2 對(duì)象和日志對(duì)象,在恢復(fù)對(duì)這些 DB2 對(duì)象所作的數(shù)據(jù)庫(kù)變更時(shí)必需用到這些日志對(duì)象。
庫(kù)是對(duì)象的“邏輯”容器,是存儲(chǔ)對(duì)象的地方。在這個(gè)容器中 DB2 對(duì)象的名稱必須是唯一的。DB2 視圖是作為模式的一部分創(chuàng)建的,是一組描述表、視圖、索引、包、過程、函數(shù)、觸發(fā)器和約束的視圖。這些視圖建立在庫(kù) QSYS 和 QSYS2 中目錄表的基本集合上,僅包括了該模式包含的對(duì)象的信息。
DB2 UDB for iSeries 通過一個(gè)稱為 日志記錄的過程記錄了表的變更。OS/400 日志通過發(fā)送信息至日志接收器來記錄數(shù)據(jù)庫(kù)對(duì)象的變更。這樣,日志接收器類似于 DB2 UDB 的日志文件。當(dāng)表被創(chuàng)建到模式中時(shí),它被自動(dòng)記錄到 DB2 UDB for iSeries 執(zhí)行 CREATE SCHEMA
語(yǔ)句期間所創(chuàng)建的日志對(duì)象中。
即使 DB2 自動(dòng)為表對(duì)象開始進(jìn)行日志記錄,用戶仍需要負(fù)起管理日志和日志接收器對(duì)象的責(zé)任。您可以想象得到,這些包含有數(shù)據(jù)庫(kù)變更的日志接收器會(huì)變得相當(dāng)大,所以除非您有無限的磁盤空間,否則不要選擇忽略這些自動(dòng)創(chuàng)建的日志接收器對(duì)象。然而,也不能任意地刪除日志接收器對(duì)象來節(jié)省磁盤空間。此外,即使能夠停止為表進(jìn)行的日志記錄,我也不建議您這么做,因?yàn)樵L問無日志記錄的對(duì)象的應(yīng)用程序不能指定隔離級(jí)別,也不能發(fā)出提交和回滾。
絕大多數(shù) iSeries 客戶將日志接收器作為數(shù)據(jù)庫(kù)備份和恢復(fù)處理的核心部分使用。一種方法是每周保存一次表備份介質(zhì)的完整副本,而每天晚上只將對(duì)表(也就是,日志接收器)所做的變更保存到備份介質(zhì)中,并且每周重復(fù)這個(gè)過程。一旦日志接收器經(jīng)過備份,日志接收器對(duì)象就可以被刪除了。在 iSeries 信息中心的 Backup and Recovery Guide能找到更多保存和刪除日志接收器對(duì)象時(shí)所采用的正確步驟的相關(guān)信息。iSeries 信息中心的在線版本,可以在 http://www.iseries.ibm.com/infocenter找到。
讓系統(tǒng)自動(dòng)刪除日志接收器對(duì)象也是可能的,可以通過在 CHGJRN CL
命令上指定 DLTRCV(*YES)
或在 iSeries Navigator 界面上設(shè)置 XYZ 選項(xiàng)(請(qǐng)參閱 圖 2)來做到這一點(diǎn)。然而,只有在閱讀了 Backup and Recovery Guide 并理解了該選項(xiàng)的行為之后,才可以使用該選項(xiàng)。
隨著您使用時(shí)間的增加,您將注意到在 DB2 UDB for iSeries 選項(xiàng)中會(huì)出現(xiàn)數(shù)個(gè)日志接收器對(duì)象。這是因?yàn)?DB2 UDB for iSeries 在 CHGJRN CL
命令上使用了系統(tǒng)管理的接收器(system-managed receiver)選項(xiàng)(例如, MNGRCV(*YES)
)來創(chuàng)建日志對(duì)象。 圖 2中的圖形日志管理界面,通過在“Receivers managed by:”部分上選擇 System單選按鈕,指示一個(gè)系統(tǒng)管理日志接收器。通過指定該選項(xiàng),每當(dāng)系統(tǒng)重啟(也就是,系統(tǒng) IPL)及連接的接收器達(dá)到其大小閾值時(shí),DB2 UDB 將自動(dòng)創(chuàng)建一個(gè)新的日志接收器。當(dāng)前的日志接收器被拆離,并創(chuàng)建一個(gè)新的接受器。
當(dāng)日志接收器被拆離時(shí)很容易對(duì)其進(jìn)行備份。同樣,接收器必須在被拆離后才可以刪除。因此您能夠看得出該選項(xiàng)是怎樣使管理日志接收器更為方便的。管理日志性能的主題超出了本文的范圍,不過您可以參考紅皮書 Striving for Optimal Journal Performance(SG24-6486)。
由于 DB2 UDB for iSeries 沒有表空間的概念,并且自動(dòng)跨磁盤條帶化和均衡 DB2 對(duì)象,因此從管理員的觀點(diǎn)來說,日志和日志接收器對(duì)象將成為唯一需要空間管理的模式對(duì)象。僅有的另一個(gè)空間管理任務(wù)是確保系統(tǒng)上留有足夠的可用磁盤空間。
當(dāng)把模式移動(dòng)到一新系統(tǒng)或另一模式時(shí)(例如,從測(cè)試環(huán)境移到生產(chǎn)環(huán)境),由 DB2 UDB 自動(dòng)創(chuàng)建的日志和日志接收器對(duì)象也是需要處理的關(guān)鍵組件。當(dāng)表被移動(dòng)到一個(gè)新模式時(shí)(通過復(fù)制或恢復(fù)操作),它仍和原來模式的日志相關(guān)聯(lián) - 它不會(huì)自動(dòng)開始使用新模式中的日志。因此,在模式之間移動(dòng)表時(shí),為該 DB2 表重設(shè)日志是一個(gè)必需的步驟。
將模式移動(dòng)到不同的模式或系統(tǒng)的首選方法是重新運(yùn)行原始的 SQL 創(chuàng)建腳本。如果 SQL 創(chuàng)建腳本不可用,通過在 iSeries Navigator 中使用“Generate SQL”任務(wù),采用逆向工程能得到它。在模式對(duì)象上單擊鼠標(biāo)右鍵并選擇“Generate SQL”任務(wù)為模式中所有的對(duì)象構(gòu)建一個(gè) SQL 創(chuàng)建腳本。因?yàn)楸韺?duì)象是在新的模式中創(chuàng)建的,它們會(huì)自動(dòng)被記錄進(jìn)新的日志中。
很多時(shí)候重新創(chuàng)建所有的 DB2 對(duì)象是不可行的,因?yàn)檫@些源對(duì)象含有大量數(shù)據(jù)。在這里另一種可以使用的方法是保存并恢復(fù)該模式,然后手工重設(shè)后來的日志信息。假設(shè)我有一個(gè)稱為 ABC 的模式,帶有兩個(gè)表 DEPARTMENT 和 EMPLOYEE,以下是使用保存和恢復(fù)方法將模式 ABC 移動(dòng)到模式 XYZ 內(nèi)時(shí)所需遵循的步驟。
SAVLIB ABC ACCPTH(*YES)
請(qǐng)記住模式的 OS/400 容器是一個(gè)庫(kù)。如果模式中有索引存在的話,選項(xiàng) ACCPTH(*YES)
保存實(shí)際的索引樹對(duì)象 - 那將會(huì)消除必須在恢復(fù)操作中重新構(gòu)建的索引。
SQL: CREATE SCHEMA XYZ
這將會(huì)創(chuàng)建目標(biāo)模式對(duì)象,并帶有自動(dòng)創(chuàng)建的日志和系統(tǒng)目錄視圖。
RSTLIB ABC OPTION(*NEW) RSTLIB(XYZ)
*NEW 選項(xiàng)僅會(huì)恢復(fù)在 XYZ 模式中尚不存在的 ABC 對(duì)象。這種恢復(fù)本質(zhì)上恢復(fù)所有東西,但不包括 DB2 UDB 自動(dòng)創(chuàng)建的對(duì)象(如:日志、日志接收器和目錄視圖)。
因?yàn)?OS/400 日志的 CL 命令僅接受簡(jiǎn)短的 DB2 對(duì)象標(biāo)識(shí),因此我們將在這一步中記錄 DB2 UDB for iSeries 對(duì)象的簡(jiǎn)短名稱(請(qǐng)參閱文章 DB2 UDB for iSeries 長(zhǎng)標(biāo)識(shí)符和短標(biāo)識(shí)符)。
ENDJRNPF *ALL ABC/QSQJRN
新模式 XYZ 中的 DB2 對(duì)象目前同原始模式相關(guān)聯(lián)。通過終止所有表的日志記錄來消除這種關(guān)聯(lián)。如果用戶將模式中的其他對(duì)象(比如索引)顯式地記錄進(jìn)日志,那就必須終止并重啟這些對(duì)象的日志記錄。舉例來說,已記入日志的索引要通過 ENDJRNAP
和 STRJRNAP CL
命令終止并重啟。
STRJNRPF XYZ/DEPT XYZ/QSQJRN IMAGES(*BOTH) OMTJRNE(*OPNCLO) STRJRNPF XYZ/EMPLOYEE XYZ/QSQJRN IMAGES(*BOTH) OMTJRNE(*OPNCLO) |
ENDJRNPF
命令不同, STRJRNPF
通常不支持 *ALL
選項(xiàng)。因此對(duì)每個(gè) DB2 表對(duì)象都需要執(zhí)行該命令,以使它們同 XYZ 的日志和日志接收器對(duì)象相關(guān)聯(lián)。 注:如果使用 CHGJRN CL
命令或 iSeries Navigator 改變了日志對(duì)象使其不同于缺省設(shè)置。則需要在 XYZ 模式的日志對(duì)象上進(jìn)行相應(yīng)的定制。
現(xiàn)在您應(yīng)對(duì)構(gòu)成 DB2 UDB for iSeries 模式對(duì)象的對(duì)象及這些 OS/400 對(duì)象是如何互相聯(lián)系的有了一個(gè)清晰的理解。此外,隨著時(shí)間的推移,這里討論的管理和移動(dòng)模式對(duì)象的首選方法也應(yīng)使您能更有效地使用 DB2 UDB for iSeries。
Kent Milligan是 PartnerWorld ? for Developers, iSeries 的 DB2 UDB 技術(shù)專家。在 IBM 任職的前八年中,Kent 是位于羅徹斯特的 DB2 開發(fā)小組成員。他定期就各種 iSeries 和 AS/400e? 關(guān)系數(shù)據(jù)庫(kù)方面的主題發(fā)表演講并撰寫此類文章??梢酝ㄟ^ kmill@us.ibm.com與他聯(lián)系。
聯(lián)系客服