日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

基于c语言的db2数据库开发,DB2日志(2) 用C语言扩展实现DB2日志管理及主备同步

發布時間:2023/12/2 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于c语言的db2数据库开发,DB2日志(2) 用C语言扩展实现DB2日志管理及主备同步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

還好DB2提供了相關的USEREXIT程序(又名用戶出口程序)可以使我們管理日志文件并有了擴展功能的可能性.在這一點上DB2明顯要比Oracle開放些.

實現

1.首先將USEREXIT接口打開,讓數據庫支持USEREXIT程序

--查看當前狀態(Windows環境下)

db2 get db cfg for XCLDB2 |find /I "userexit"

--打開userexit

db2 update db cfg for XCLDB2 using userexit on

--查看當前狀態(Windows環境下)

db2 get db cfg for XCLDB2 |find /I "userexit"

2. 去DB2安裝目錄下找到例子程序

Unix下: sqllib/samples/c

Windows下: C:\Program Files\IBM\SQLLIB\samples\c

例子文件:

Db2uext2.cadsm — 對 Tivoli Storage Manager 的支持,也稱為 ADSM

Db2uext2.cdisk — 對磁盤的支持

Db2uext2.ctape — 對本地磁帶的支持,僅可用于 UNIX 系統

Db2uext2.cxbsa — 對 XBSA Draft 0.8 客戶機的支持

這些樣本程序中的每個都只需要稍作修改(如 buffer_size 、 audit_log_activation 、 audit_log_path 、 error_log_activation 和 error_log_path )

除了上面這些,還可以用db2uext2.ctsm來實現.它是新的替代版.

3.以Windows環境為例演示如何編譯擴展.

3.1 用Visual Studio新建一個屬性為空項目的控制臺應用程序工程.注意,工程名為"Db2uext2",

工程目錄為"c:\DB2C"

3.2 將 Db2uext2.cdisk 復制到 C:\DB2C\db2uext2 目錄下,將其更名為Db2uext2.c.

然后在Visual Studio工程中將文件導入.

導入成功后打開文件. 查找并替換 "c:\\mylogs\\" 為自己所要的目錄如 "c:\\xcllogs\\"

其實主要是更改的這幾個參數,具體含義在C程序的代碼注釋中很詳細:

#define ARCHIVE_PATH "c:\\xcllogs\\"

#define RETRIEVE_PATH "c:\\xcllogs\\"

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

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

#define AUDIT_ERROR_PATH "c:\\xcllogs\\" /* 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 */

3.3將編譯好的Reselse版本的db2uext2.exe文件放在DB2管理程序能找到的目錄下.

編譯后的db2uext2.exe文件存放目錄:

Windows下:

C:\Program Files\IBM\SQLLIB\BIN

Unix下:

/sqllib/adm

3.4 測試擴展程序是否生效

3.4.1 在DB2 CLP下手工強制歸檔一份日志

db2 archive log for db XCLDB2

3.4.2 應當可以在"C:\xcllogs\XCLDB2\NODE0000"目錄下查到新產生的日志

C:\>tree C:\xcllogs

卷 WINXP 的文件夾 PATH 列表

卷序列號為 88F1-6579

C:\XCLLOGS

└─XCLDB2

└─NODE0000

c:\>dir C:\xcllogs\XCLDB2\NODE0000

上面舉的是Windows下的,在Unix下時,一定要注意,需先mkdir目錄并授權(如777),

并chown -R 目錄給DB2的用戶.

引申:

上面只是舉了個最簡單的例子,但如果把這個例子擴展下.甚至可以通過日志文件的同步

或異步復制到異機或遠程存儲來實現數據庫的容災.

簡單的說一個主備數據庫同步的實現方法 :

1. 首先在備份數據庫服務器上,用主庫的備份恢復出一個完整的DB2數據庫.

這個備份服務器硬件什么的可以不一致,就是文件系統劃分不一樣時,需要用重定向恢復來生成備庫.

2. 將備份服務器的活動日志目錄,設為主庫服務器有讀寫權限.

3. 參考上面的例子,實現一個擴展.用于將日志傳一份至備份服務器的活動日志目錄.

4. 在備份服務器上弄一個定時作業,定時前滾 "db2 rollforward to end of logs"

哈哈,這樣兩邊就同步了.

這個擴展還可以加上自動定期整理日志的功能.也可以利用Db2uext2.ctape做些磁帶庫方面的擴展.

總之,看個人的創意了.

總結

以上是生活随笔為你收集整理的基于c语言的db2数据库开发,DB2日志(2) 用C语言扩展实现DB2日志管理及主备同步的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。