<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-25  評(píng)論-6  文章-0  trackbacks-0

    DB2 UDB中用戶出口程序是如何工作的?

    ?

    采用用戶出口程序與DB2 UDB共同工作背后的基本思想是提供一種歸檔和檢索數(shù)據(jù)庫(kù)日志文件的方法以實(shí)現(xiàn)日志冗余處理并從易失性介質(zhì)上轉(zhuǎn)儲(chǔ)出來(lái)。重要的,值得注意的是,根據(jù)你的特殊需求,在用戶出口程序當(dāng)中,除了能實(shí)現(xiàn)歸檔和檢索日志之外,你還可以實(shí)現(xiàn)其他的操作。

    ?

    如果一個(gè)數(shù)據(jù)庫(kù)需要采用歸檔日志文件來(lái)進(jìn)行恢復(fù),在DB2 UDB中實(shí)行用戶出口程序策略將不能恢復(fù)100%的事務(wù)。用戶出口程序只是一種通過(guò)拷貝已經(jīng)存在的日志文件到一個(gè)安全的地方來(lái)為其提供更多保護(hù)的方法。它是數(shù)據(jù)完整性策略中的一部分,而且是重要的一部分。

    ?

    編譯了用戶出口程序之后,可執(zhí)行程序db2uext2被放置在數(shù)據(jù)庫(kù)管理器可以找到的目錄當(dāng)中。在UNIX?中,這個(gè)目錄是/sqllib/adm;在Windows?中,是Program FilesIBMSQLLIBBIN。

    ?

    除非數(shù)據(jù)庫(kù)管理器知道用戶出口程序是可用的,不然它不會(huì)調(diào)用db2uext2。讓數(shù)據(jù)庫(kù)管理器知道db2uext2可以被調(diào)用的唯一方法是將數(shù)據(jù)庫(kù)配置參數(shù)userexit設(shè)置為on。一旦這個(gè)參數(shù)被設(shè)定好而且DB2實(shí)例被重復(fù)利用了,數(shù)據(jù)庫(kù)管理器將每五分鐘調(diào)用一次用戶出口程序來(lái)檢查那些可以被歸檔到程序相關(guān)的歸檔目錄的日志文件。

    ?

    如果數(shù)據(jù)庫(kù)的恢復(fù)是必要的,在前滾操作期間,數(shù)據(jù)庫(kù)管理器將調(diào)用db2uext2把歸檔日志文件拷貝回活動(dòng)的日志目錄當(dāng)中。然后,日志文件被再次運(yùn)用到重建的數(shù)據(jù)庫(kù)中。

    ?

    讓我們看看被數(shù)據(jù)庫(kù)管理器生成的到用戶出口程序的調(diào)用的格式。注意,這一信息也可以在用戶出口示例程序的注釋部分找到。

    db2uext2 -OS -RL

    -RQ -DB -NN

    -LP -LN [-AP]

    ?

    其中:

    os=操作系統(tǒng)

    release=DB2發(fā)行版本

    request= 'ARCHIVE' 或 'RETRIEVE'

    dbname=數(shù)據(jù)庫(kù)名

    nodenumber=節(jié)點(diǎn)號(hào)

    logpath=日志文件目錄

    logname=日志文件名

    logsize=日志文件大小(可選)

    startingpage=以4k頁(yè)為單位的起始偏移量(可選)

    adsmpasswd=ADSM密碼(可選)

    ?

    注意:只有當(dāng)logpath為裸設(shè)備時(shí)才使用logsize和startingpage。

    ?

    歸檔或者從磁盤檢索日志文件遵從以下命名規(guī)則:

    歸檔:歸檔路徑+數(shù)據(jù)庫(kù)名+節(jié)點(diǎn)號(hào)+日志文件名

    檢索:檢索路徑+數(shù)據(jù)庫(kù)名+節(jié)點(diǎn)號(hào)+日志文件名

    ?

    比如:如果歸檔的路徑為”c:mylogs”,

    檢索路徑是“c:mylogs”,

    數(shù)據(jù)庫(kù)名是“SAMPLE”,

    節(jié)點(diǎn)號(hào)是 NODE0000,

    文件名是 S0000001.LOG,

    日志文件將是:

    歸檔到 - c:mylogsSAMPLENODE0000S0000001.LOG

    檢索自 - c:mylogsSAMPLENODE0000S0000001.LOG

    以下描述了用戶出口程序中的邏輯是如何運(yùn)轉(zhuǎn)的:

    1)? 安裝信號(hào)處理程序。

    2)? 驗(yàn)證傳遞的參數(shù)個(gè)數(shù)。

    3)? 驗(yàn)證操作請(qǐng)求。

    4)? 開(kāi)始審計(jì)跟蹤(如果有此請(qǐng)求)。

    5)? 根據(jù)操作需求的不同獲取以下路徑中的一個(gè):

    a)? 如果操作需求為歸檔一個(gè)文件,將日志文件從日志路徑拷貝到歸檔路徑中。

    i) 如果沒(méi)有找到日志文件,執(zhí)行第6點(diǎn)。

    ?

    b)? 如果操作需求是檢索一個(gè)文件,將日志文件從檢索路徑拷貝到日志路徑中。

    i) 如果沒(méi)有找到日志文件,執(zhí)行第6點(diǎn)。

    6) 將錯(cuò)誤記入日志(如果要求或者有需要的話)。

    7)? 結(jié)束審計(jì)跟蹤(如果有請(qǐng)求)。

    8)? 以適當(dāng)?shù)姆祷卮a退出。

    ?

    手工調(diào)用用戶出口程序來(lái)歸檔日志文件是可以的,但最好還是使用ARCHIVE LOG命令以便在定義以上參數(shù)時(shí)不會(huì)因?yàn)槟愕脑驅(qū)е洛e(cuò)誤。在這篇文章的末尾,可以找到關(guān)于ARCHIVE LOG命令的鏈接。

    ?

    日志文件術(shù)語(yǔ)

    ?

    DB2 中用戶出口程序的基本功能是將日志文件拷貝到活動(dòng)日志目錄或反之。這里,值得指出一些術(shù)語(yǔ)來(lái)闡明活動(dòng)的日志目錄被置于何處以及數(shù)據(jù)庫(kù)日志文件的狀態(tài)如何。

    ?

    活動(dòng)日志目錄:

    ?

    該目錄被置于你的數(shù)據(jù)庫(kù)目錄中。在Windows中,如果在C:中創(chuàng)建了一個(gè)叫做SAMPLE的單一數(shù)據(jù)庫(kù)且實(shí)例名為db2inst1,則將會(huì)出現(xiàn)以下的目錄結(jié)構(gòu):

    ?

    C:DB2INST1NODE0000SQL000001SQLOGDIR

    ?

    SQL00001是SAMPLE數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)目錄,SQLOGDIR 是活動(dòng)日志目錄。

    ?

    以下的圖1顯示了Windows操作系統(tǒng)上的活動(dòng)日志目錄:

    PATH o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" />SHAPE id=_x0000_i1025 style="WIDTH: 299.25pt; HEIGHT: 180.75pt" type="#_x0000_t75" />/P>

    ?

    圖 1活動(dòng)日志目錄

    日志文件狀態(tài)

    ?

    在活動(dòng)日志目錄中,日志文件可以是活動(dòng)日志,也可以是聯(lián)機(jī)歸檔日志。活動(dòng)日志是那些被 DB2 用于當(dāng)前事務(wù)處理和崩潰恢復(fù)的日志。聯(lián)機(jī)歸檔日志是那些 DB2 UDB 進(jìn)行常規(guī)處理時(shí)不再需要,而進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)時(shí)可能還會(huì)需要的日志。當(dāng)實(shí)現(xiàn)用戶出口程序時(shí),這些聯(lián)機(jī)歸檔日志將最終以歸檔日志目錄中的副本形式出現(xiàn)。

    ?

    既然 DB2 UDB 中用戶出口程序的目的是將數(shù)據(jù)庫(kù)日志拷貝到歸檔目錄中,你將最終在活動(dòng)日志目錄(缺省為 SQLOGDIR)中得到重復(fù)的日志文件。你可能考慮刪除這些重復(fù)的聯(lián)機(jī)歸檔日志以釋放文件系統(tǒng)空間。在從數(shù)據(jù)庫(kù)目錄中除去這些日志之前,要十分小心地確認(rèn)它們是否已經(jīng)將成功地被復(fù)制到歸檔目錄中。還必須確保數(shù)據(jù)庫(kù)管理器進(jìn)行崩潰恢復(fù)時(shí)不再需要它們。要確定你的活動(dòng)日志目錄中哪些日志文件不為正常處理所需要,可用通過(guò)以下命令檢查數(shù)據(jù)庫(kù)配置:

    ????????

    ???? db2 "get db cfg for sample"

    ?

    這條命令的數(shù)據(jù)庫(kù)配置輸出結(jié)果將包含第一個(gè)活動(dòng)日志文件,如:

    First active log file = S000009.LOG

    ?

    在如上所示的輸出當(dāng)中,日志文件S000009.LOG是數(shù)據(jù)庫(kù)當(dāng)前的活動(dòng)日志。任何編號(hào)比該日志文件小的日志文件都被看作聯(lián)機(jī)歸檔日志。

    ?

    這里有一個(gè)例子:

    ?

    在這個(gè)場(chǎng)景中,活動(dòng)日志目錄中有日志文件 S000000.LOG - S000009.LOG,歸檔日志目錄中有 S000000.LOG - S000008.LOG。因?yàn)?S000009.LOG 是第一個(gè)活動(dòng)日志文件,所以,可以從活動(dòng)日志目錄中移走 S000001.LOG - S000008.LOG 以釋放磁盤空間。S000009.LOG 文件必須保留在活動(dòng)日志目錄中,因?yàn)樗匀槐划?dāng)前事務(wù)使用。

    ?

    同樣可以通過(guò)檢查數(shù)據(jù)庫(kù)歷史文件來(lái)查看活動(dòng)日志目錄中哪些日志文件不再有用。以下命令將列出數(shù)據(jù)庫(kù)備份信息:

    ?

    ???? db2 "list history backup all for database sample"

    ?

    以下是該命令的輸出結(jié)果的一個(gè)例子:

    ?

    List History File for sample

    Number of matching file entries = 4

    Op Obj Timestamp+Sequence Type Dev Earliest Log Current? Log

    -- --- ------------------ ---- --- ------------------------

    B D 20030416162026001 F D S0000010.LOGS0000014.LOG

    ------------------------------------------------------------

    Contains 2 tablespace(s):

    00001 SYSCATSPACE

    00002 USERSPACE1

    ------------------------------------------------------------

    ?

    在上面的輸出中,最早的日志將表示,需要 S0000010.LOG 及其之后的任何日志。 S00000010.LOG 之前的任何日志可以被安全的刪除。再次提醒,在從活動(dòng)日志目錄中刪除日志文件之前,驗(yàn)證在活動(dòng)日志目錄中存在這些日志文件的拷貝是十分重要的。

    ?

    雖然可以手動(dòng)的從活動(dòng)日志目錄中刪除日志文件,刪除聯(lián)機(jī)歸檔日志文件的安全方法是通過(guò)prune logfile命令。該命令可以用來(lái)刪除活動(dòng)歸檔目錄中的日志文件。在下面的示例中,以下命令將刪除日志文件 S000000.LOG - S000008.LOG:

    ???? db2 "prune logfile prior to S000009.LOG"

    ?

    注意:根據(jù)您的恢復(fù)策略,可能會(huì)出現(xiàn)之前的前滾操作在數(shù)據(jù)庫(kù)上執(zhí)行的場(chǎng)景。歸檔目錄中的老日志文件可能被同名的新日志文件所覆蓋,從而阻止你使用舊日志文件對(duì)數(shù)據(jù)庫(kù)進(jìn)行時(shí)間點(diǎn)恢復(fù)。對(duì)用戶出口程序的設(shè)計(jì)程序員來(lái)說(shuō),考慮類似這樣的情況是很重要的。

    ?

    設(shè)置用戶出口

    ?

    在本文中,我們將采用DB2提供的db2uext2.cdisk樣例c程序,它位于你的c目錄當(dāng)中。在UNIX中,c目錄位于/sqllib/samples。Windows中,這目錄位于Program Files/IBM//samples。

    ?

    在Windows中設(shè)置用戶出口

    ?

    修改和編譯用戶出口程序

    1.? 創(chuàng)建名為C:mylogs的目錄

    2.? 將C:Program filesIBMSQLLIBsamplescdb2uext2.cdisk拷貝到一個(gè)工作目錄當(dāng)中

    3.? 對(duì)于本示例,用戶出口程序的以下部分應(yīng)該得以驗(yàn)證以反映路徑 c:\mylogs\

    ?

    #define ARCHIVE_PATH "c:\mylogs\"

    #define RETRIEVE_PATH "c:\mylogs\"

    #define AUDIT_ACTIVE 1 /* enable audit trail logging */

    #define ERROR_ACTIVE 1 /* enable error trail logging */

    #define AUDIT_ERROR_PATH "c:\mylogs\"

    ???????????????? /* path must end with a slash */

    #define AUDIT_ERROR_ATTR "a" /* append to text file */

    #define BUFFER_SIZE 32

    ??? /* # of 4K pages for output buffer */

    ?

    4.? 確定在你的系統(tǒng)中安裝了被支持的C編譯器(比如,Microsoft Visual Studio)而且環(huán)境中有該編譯器的路徑。

    5.? 通過(guò)命令行,將db2uext2.cdisk更名為db2uext2.c并構(gòu)建:

    cl db2uext2.c

    一旦程序被編譯,將創(chuàng)建db2uext2.exe和db2uext2.obj文件。

    6.? 將可執(zhí)行文件db2uext2.exe放到/SQLLIB/BIN目錄當(dāng)中從而使數(shù)據(jù)庫(kù)管理器能夠定位并執(zhí)行它用以歸檔和檢索日志。

    ?

    為用戶出口創(chuàng)建并準(zhǔn)備數(shù)據(jù)庫(kù)

    7.? 在 DB2 命令窗口中用 db2sampl 命令創(chuàng)建 SAMPLE 數(shù)據(jù)庫(kù)。這將使你對(duì)下面的示例使用樣本表。

    db2sampl

    8.? 更新數(shù)據(jù)庫(kù)配置文件以便為數(shù)據(jù)庫(kù)打開(kāi)用戶出口。請(qǐng)注意:只能為一個(gè)數(shù)據(jù)庫(kù)分配用戶出口程序,因?yàn)?bin 目錄被所有 DB2 實(shí)例共享。

    db2 "update db cfg for sample using userexit on"

    db2stop force

    <span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋體; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋體; mso-

    /P>
    posted on 2006-12-08 18:12 MyJavaWorld 閱讀(424) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 免费A级毛片无码A∨| 一区二区三区免费视频网站 | 亚洲精品线路一在线观看| 亚洲日本成本人观看| 国产成在线观看免费视频| 亚洲人成综合在线播放| 免费专区丝袜脚调教视频| 亚洲国产超清无码专区| 亚洲美女视频免费| 亚洲激情校园春色| 在线观看免费人成视频| 亚洲日本VA午夜在线影院| 国产精品免费视频一区| 日韩免费在线中文字幕| 中文亚洲AV片在线观看不卡| 国产精品永久免费视频| 国产日韩亚洲大尺度高清| 免费人妻无码不卡中文字幕系| 精品无码一区二区三区亚洲桃色| 免费观看国产网址你懂的| 亚洲中文字幕一区精品自拍| 国产成人免费片在线观看| 精品国产污污免费网站入口在线 | 亚洲最大免费视频网| 99视频在线精品免费观看6| 国产亚洲美女精品久久久久| 国产成人亚洲综合| 免费A级毛片av无码| 亚洲国产精品自在自线观看| 亚洲午夜久久久影院伊人| 久久福利资源网站免费看| 综合偷自拍亚洲乱中文字幕| 亚洲线精品一区二区三区| 57PAO成人国产永久免费视频| 亚洲Av永久无码精品黑人| 亚洲人成网77777色在线播放| 日本高清在线免费| 国产亚洲成在线播放va| 亚洲国产一区二区三区青草影视 | 丁香花在线视频观看免费| 亚洲色图激情文学|