DB2 UDB V8.1管理學(xué)習(xí)筆記(二)
更新時(shí)間:2007年03月06日 00:00:00 作者:
正在看的db2教程是:DB2 UDB V8.1管理學(xué)習(xí)筆記(二)。表空間類型分為SMS和DMS,分別是system management space, database management space. SMS使用方便,簡(jiǎn)單,無需手工創(chuàng)建和維護(hù)數(shù)據(jù)存儲(chǔ)文件。DMS需要手動(dòng)指定container和存儲(chǔ)數(shù)據(jù)的文件名,并保證有足夠磁盤空間可用。
對(duì)于一個(gè)數(shù)據(jù)庫,至少存在一個(gè)page size為4K的系統(tǒng)臨時(shí)表空間,可以額外建立具有更大page size的用戶臨時(shí)表空間,系統(tǒng)會(huì)自動(dòng)進(jìn)行使用。
無法用alter語句更改一個(gè)字段的數(shù)據(jù)類型,對(duì)某些字段可以更改數(shù)據(jù)長(zhǎng)度,這一點(diǎn)上相對(duì)于Oracle,DB2的限制要多一些。
可以使用: select 表達(dá)式 from sysibm.sysdummy; 替代的,以下語句是等價(jià)的:values 表達(dá)式;
表和視圖的創(chuàng)建、更新、刪除操作,都寫日志,因此可以commit或rollback。
在update語句中,如果沒有對(duì)定義了默認(rèn)值的某個(gè)字段顯式賦值,則更新時(shí),此字段不會(huì)重新執(zhí)行默認(rèn)值中定義的表達(dá)式。為了讓其重新執(zhí)行默認(rèn)值定義的表達(dá)式,可以采用以下方式:
create table t1 (c1 varchar(32), lastupdatetime with default current timpstamp);update t1 set c1 = 'new string', lastupdatetime = default;
對(duì)于DB2數(shù)據(jù)庫可以在創(chuàng)建時(shí)指定codepage參數(shù),創(chuàng)建后不可修改。當(dāng)應(yīng)用程序訪問數(shù)據(jù)庫時(shí),DB2會(huì)比較兩者的codepage是否一致,不一致則進(jìn)行代碼頁的自動(dòng)轉(zhuǎn)換。為了減少轉(zhuǎn)換所帶來的開銷,應(yīng)盡量保證應(yīng)用程序所采用的代碼頁與數(shù)據(jù)庫一致。
可以對(duì)DB2 CLP工具的codepage進(jìn)行設(shè)置,使用:
$ db2set DB2CODEPAGE= 1386
本例中設(shè)置的是中文GBK字符集在Windows平臺(tái)對(duì)應(yīng)的值。注意,這個(gè)數(shù)字值是由DB2自己定義的。有關(guān)各種字符集在相應(yīng)平臺(tái)所對(duì)應(yīng)的代碼頁值可在IBM網(wǎng)站查找。
在DB2 CLP中,對(duì)遠(yuǎn)程數(shù)據(jù)庫編目的操作,首先把遠(yuǎn)程主機(jī)映射為本地節(jié)點(diǎn),節(jié)點(diǎn)名自己指定,本例采用TCPIP連接。service_name一般定義在遠(yuǎn)程主機(jī)的/etc/services文件中。
$ db2 CATALOG TCPIP NODE local_node_name REMOTE hostname|ip SERVER service_name
然后把已知的遠(yuǎn)程主機(jī)的數(shù)據(jù)庫映射到本地別名,注意本地別名在主機(jī)級(jí)別不能重復(fù)。節(jié)點(diǎn)名指定上面剛編目的節(jié)點(diǎn)。
$ db2 CATALOG DATABASE db_name AS local_alias AT local_node_name USER username USING password
現(xiàn)在就可以用剛才編目中定義的別名連接遠(yuǎn)程主機(jī)數(shù)據(jù)庫
$ db2 CONNECT TO local_alias USER username USING password
獲取數(shù)據(jù)庫詳細(xì)配置信息
$ db2 GET CONFIGURATION SHOW DETAIL
對(duì)于DB2返回的錯(cuò)誤號(hào),可以用以下方法查閱說明(以sql 10008為例):
$ db2 ? sql10008
數(shù)據(jù)庫的備份與恢復(fù):
使用備份與恢復(fù)工具可以完成在不同的服務(wù)器見完整的轉(zhuǎn)移數(shù)據(jù)庫的工作,命令行方式如下:
備份
$ db2 BACKUP DATABASE db_name USER user_name USING password to backup_dir_name$ db2 BACKUP DATABASE dlhdb USER dlh USING admindlh TO d:\backups
恢復(fù)
$ db2 RESTORE DATABASE source_db_name USER user_name USING password FROM backup_dir_name TAKEN AT backup_file_create_time TO driver_letter INTO new_db_name$ db2 RESTORE DATABASE dlhdb USER dlh USING admindlh FROM d:\backups TAKEN AT 20031209141056 TO d: INTO newdb
有關(guān)實(shí)例的操作:
設(shè)置默認(rèn)實(shí)例環(huán)境變量
$ db2 SET DB2INSTANCE=inst_name
啟動(dòng)當(dāng)前實(shí)例
$ db2start
停止當(dāng)前實(shí)例
$ db2stop [force]
連接到某個(gè)實(shí)例
$ db2 ATTACH TO ANSTANCE inst_name
獲取實(shí)例的配置參數(shù)
$ db2 GET DBM CFG SHOW DETAIL
導(dǎo)出數(shù)據(jù)庫完整的定義到腳本文件,包括表,視圖,函數(shù),數(shù)據(jù)庫參數(shù)等
$ db2look -d sample(數(shù)據(jù)庫) -a -e -l -x -m -f -o(參數(shù))samplesql.out(輸出文件)
load 一個(gè)表的數(shù)據(jù)時(shí),有可能導(dǎo)致表空間處于backup pending(0x0020)狀態(tài)。比如把整形數(shù)據(jù)load到double型的字段中。
處于backup pending狀態(tài)的表空間不能被訪問。
可以通過對(duì)此表空間運(yùn)行一次backup操作,恢復(fù)到正常狀態(tài)(0x0)。
對(duì)于自增字段,可以通過兩種方式指定:
generated by default as identitygenerated always as identity
區(qū)別是,第一種方式在插入數(shù)據(jù)時(shí)允許手工指定自增字段的值,只要不重復(fù)即可,并且數(shù)據(jù)庫會(huì)自動(dòng)設(shè)置下一個(gè)值;
第二種方式則不允許指定,只能由數(shù)據(jù)庫自動(dòng)分配并插入。
DB2 sql語句中轉(zhuǎn)義符的使用:
select * from t1 where a like '%abc\%def' escape '\';
創(chuàng)建數(shù)據(jù)庫時(shí),出現(xiàn)SQL1043C錯(cuò)誤,可能的問題:
指定容器所在的磁盤空間不足,
當(dāng)容器為file類型時(shí),后面的long-num參數(shù)不對(duì),比如25600代表256Mb,但如果指定256則會(huì)導(dǎo)致以上錯(cuò)誤。
平臺(tái) RH Linux 8
DB2 UDB v8.1
在WAS 5中建立到db2的數(shù)據(jù)源,但連接失敗,返回以下錯(cuò)誤:
[Servlet Error]-[SQLConnect]: java.lang.UnsatisfiedLinkError: SQLConnect
原因是沒有正在看的db2教程是:DB2 UDB V8.1管理學(xué)習(xí)筆記(二)。為運(yùn)行was服務(wù)的用戶設(shè)置以下環(huán)境變量:
D_LIBRARY_PATHLIBPATHDB2INSTANCE...
以上環(huán)境變量定義在 $INSTHOME/sqllib/db2profile文件中,可以采用的解決方案:
$ sh stopServer.sh servername$ . $INSTHOME/sqllib/db2profile$ sh startServer.sh servername
也可以把db2profile放到was啟動(dòng)腳本中首先執(zhí)行。
如果只設(shè)置了LD_LIBRARY_PATH,LIBPATH兩個(gè)環(huán)境變量,DB2會(huì)返回以下錯(cuò)誤:
CLI0600E Invalid connection handle or connection is closed.SQLSTATE S1000
對(duì)應(yīng)于Oracle的Job包功能,DB2通過一個(gè)GUI工具-任務(wù)中心(task center)實(shí)現(xiàn)。使用任務(wù)中心前需要進(jìn)行必要的工具設(shè)置,需要?jiǎng)?chuàng)建一些數(shù)據(jù)庫對(duì)象,可以創(chuàng)建在已有的一個(gè)數(shù)據(jù)庫中,也可以單獨(dú)創(chuàng)建一個(gè)數(shù)據(jù)庫。通過以下命令實(shí)現(xiàn):
create catalog tools schema_name create new database db_name
此命令為編目工具創(chuàng)建一個(gè)名為db_name 的數(shù)據(jù)庫,并指定了一個(gè)模式名。
注意:無法用using 子句指定一個(gè)codeset,系統(tǒng)會(huì)默認(rèn)使用ISO8859-1字符集。
Quest Center for DB2帶有數(shù)據(jù)庫性能診斷功能,動(dòng)態(tài)監(jiān)視db內(nèi)存,磁盤io, 表空間,負(fù)載等等。
DB2客戶端的類型:
DB2運(yùn)行時(shí)客戶端 DB2 Runtime Client
DB2管理客戶端 DB2 Administrator Client(包含運(yùn)行時(shí)客戶端的所有內(nèi)容)
DB2應(yīng)用程序開發(fā)客戶端 DB2 Application Development Client(包含管理客戶端的所有內(nèi)容)
DB2瘦客戶端 DB2 Thin Client
DB2 Relational Connect 聯(lián)邦數(shù)據(jù)庫,用于連接異種數(shù)據(jù)庫。
對(duì)于一個(gè)數(shù)據(jù)庫,至少存在一個(gè)page size為4K的系統(tǒng)臨時(shí)表空間,可以額外建立具有更大page size的用戶臨時(shí)表空間,系統(tǒng)會(huì)自動(dòng)進(jìn)行使用。
無法用alter語句更改一個(gè)字段的數(shù)據(jù)類型,對(duì)某些字段可以更改數(shù)據(jù)長(zhǎng)度,這一點(diǎn)上相對(duì)于Oracle,DB2的限制要多一些。
可以使用: select 表達(dá)式 from sysibm.sysdummy; 替代的,以下語句是等價(jià)的:values 表達(dá)式;
表和視圖的創(chuàng)建、更新、刪除操作,都寫日志,因此可以commit或rollback。
在update語句中,如果沒有對(duì)定義了默認(rèn)值的某個(gè)字段顯式賦值,則更新時(shí),此字段不會(huì)重新執(zhí)行默認(rèn)值中定義的表達(dá)式。為了讓其重新執(zhí)行默認(rèn)值定義的表達(dá)式,可以采用以下方式:
create table t1 (c1 varchar(32), lastupdatetime with default current timpstamp);update t1 set c1 = 'new string', lastupdatetime = default;
對(duì)于DB2數(shù)據(jù)庫可以在創(chuàng)建時(shí)指定codepage參數(shù),創(chuàng)建后不可修改。當(dāng)應(yīng)用程序訪問數(shù)據(jù)庫時(shí),DB2會(huì)比較兩者的codepage是否一致,不一致則進(jìn)行代碼頁的自動(dòng)轉(zhuǎn)換。為了減少轉(zhuǎn)換所帶來的開銷,應(yīng)盡量保證應(yīng)用程序所采用的代碼頁與數(shù)據(jù)庫一致。
可以對(duì)DB2 CLP工具的codepage進(jìn)行設(shè)置,使用:
$ db2set DB2CODEPAGE= 1386
本例中設(shè)置的是中文GBK字符集在Windows平臺(tái)對(duì)應(yīng)的值。注意,這個(gè)數(shù)字值是由DB2自己定義的。有關(guān)各種字符集在相應(yīng)平臺(tái)所對(duì)應(yīng)的代碼頁值可在IBM網(wǎng)站查找。
在DB2 CLP中,對(duì)遠(yuǎn)程數(shù)據(jù)庫編目的操作,首先把遠(yuǎn)程主機(jī)映射為本地節(jié)點(diǎn),節(jié)點(diǎn)名自己指定,本例采用TCPIP連接。service_name一般定義在遠(yuǎn)程主機(jī)的/etc/services文件中。
$ db2 CATALOG TCPIP NODE local_node_name REMOTE hostname|ip SERVER service_name
然后把已知的遠(yuǎn)程主機(jī)的數(shù)據(jù)庫映射到本地別名,注意本地別名在主機(jī)級(jí)別不能重復(fù)。節(jié)點(diǎn)名指定上面剛編目的節(jié)點(diǎn)。
$ db2 CATALOG DATABASE db_name AS local_alias AT local_node_name USER username USING password
現(xiàn)在就可以用剛才編目中定義的別名連接遠(yuǎn)程主機(jī)數(shù)據(jù)庫
$ db2 CONNECT TO local_alias USER username USING password
獲取數(shù)據(jù)庫詳細(xì)配置信息
$ db2 GET CONFIGURATION SHOW DETAIL
對(duì)于DB2返回的錯(cuò)誤號(hào),可以用以下方法查閱說明(以sql 10008為例):
$ db2 ? sql10008
數(shù)據(jù)庫的備份與恢復(fù):
使用備份與恢復(fù)工具可以完成在不同的服務(wù)器見完整的轉(zhuǎn)移數(shù)據(jù)庫的工作,命令行方式如下:
備份
$ db2 BACKUP DATABASE db_name USER user_name USING password to backup_dir_name$ db2 BACKUP DATABASE dlhdb USER dlh USING admindlh TO d:\backups
恢復(fù)
$ db2 RESTORE DATABASE source_db_name USER user_name USING password FROM backup_dir_name TAKEN AT backup_file_create_time TO driver_letter INTO new_db_name$ db2 RESTORE DATABASE dlhdb USER dlh USING admindlh FROM d:\backups TAKEN AT 20031209141056 TO d: INTO newdb
有關(guān)實(shí)例的操作:
設(shè)置默認(rèn)實(shí)例環(huán)境變量
$ db2 SET DB2INSTANCE=inst_name
啟動(dòng)當(dāng)前實(shí)例
$ db2start
停止當(dāng)前實(shí)例
$ db2stop [force]
連接到某個(gè)實(shí)例
$ db2 ATTACH TO ANSTANCE inst_name
獲取實(shí)例的配置參數(shù)
$ db2 GET DBM CFG SHOW DETAIL
導(dǎo)出數(shù)據(jù)庫完整的定義到腳本文件,包括表,視圖,函數(shù),數(shù)據(jù)庫參數(shù)等
$ db2look -d sample(數(shù)據(jù)庫) -a -e -l -x -m -f -o(參數(shù))samplesql.out(輸出文件)
load 一個(gè)表的數(shù)據(jù)時(shí),有可能導(dǎo)致表空間處于backup pending(0x0020)狀態(tài)。比如把整形數(shù)據(jù)load到double型的字段中。
處于backup pending狀態(tài)的表空間不能被訪問。
可以通過對(duì)此表空間運(yùn)行一次backup操作,恢復(fù)到正常狀態(tài)(0x0)。
對(duì)于自增字段,可以通過兩種方式指定:
generated by default as identitygenerated always as identity
區(qū)別是,第一種方式在插入數(shù)據(jù)時(shí)允許手工指定自增字段的值,只要不重復(fù)即可,并且數(shù)據(jù)庫會(huì)自動(dòng)設(shè)置下一個(gè)值;
第二種方式則不允許指定,只能由數(shù)據(jù)庫自動(dòng)分配并插入。
DB2 sql語句中轉(zhuǎn)義符的使用:
select * from t1 where a like '%abc\%def' escape '\';
創(chuàng)建數(shù)據(jù)庫時(shí),出現(xiàn)SQL1043C錯(cuò)誤,可能的問題:
指定容器所在的磁盤空間不足,
當(dāng)容器為file類型時(shí),后面的long-num參數(shù)不對(duì),比如25600代表256Mb,但如果指定256則會(huì)導(dǎo)致以上錯(cuò)誤。
平臺(tái) RH Linux 8
DB2 UDB v8.1
在WAS 5中建立到db2的數(shù)據(jù)源,但連接失敗,返回以下錯(cuò)誤:
[Servlet Error]-[SQLConnect]: java.lang.UnsatisfiedLinkError: SQLConnect
原因是沒有正在看的db2教程是:DB2 UDB V8.1管理學(xué)習(xí)筆記(二)。為運(yùn)行was服務(wù)的用戶設(shè)置以下環(huán)境變量:
D_LIBRARY_PATHLIBPATHDB2INSTANCE...
以上環(huán)境變量定義在 $INSTHOME/sqllib/db2profile文件中,可以采用的解決方案:
$ sh stopServer.sh servername$ . $INSTHOME/sqllib/db2profile$ sh startServer.sh servername
也可以把db2profile放到was啟動(dòng)腳本中首先執(zhí)行。
如果只設(shè)置了LD_LIBRARY_PATH,LIBPATH兩個(gè)環(huán)境變量,DB2會(huì)返回以下錯(cuò)誤:
CLI0600E Invalid connection handle or connection is closed.SQLSTATE S1000
對(duì)應(yīng)于Oracle的Job包功能,DB2通過一個(gè)GUI工具-任務(wù)中心(task center)實(shí)現(xiàn)。使用任務(wù)中心前需要進(jìn)行必要的工具設(shè)置,需要?jiǎng)?chuàng)建一些數(shù)據(jù)庫對(duì)象,可以創(chuàng)建在已有的一個(gè)數(shù)據(jù)庫中,也可以單獨(dú)創(chuàng)建一個(gè)數(shù)據(jù)庫。通過以下命令實(shí)現(xiàn):
create catalog tools schema_name create new database db_name
此命令為編目工具創(chuàng)建一個(gè)名為db_name 的數(shù)據(jù)庫,并指定了一個(gè)模式名。
注意:無法用using 子句指定一個(gè)codeset,系統(tǒng)會(huì)默認(rèn)使用ISO8859-1字符集。
Quest Center for DB2帶有數(shù)據(jù)庫性能診斷功能,動(dòng)態(tài)監(jiān)視db內(nèi)存,磁盤io, 表空間,負(fù)載等等。
DB2客戶端的類型:
DB2運(yùn)行時(shí)客戶端 DB2 Runtime Client
DB2管理客戶端 DB2 Administrator Client(包含運(yùn)行時(shí)客戶端的所有內(nèi)容)
DB2應(yīng)用程序開發(fā)客戶端 DB2 Application Development Client(包含管理客戶端的所有內(nèi)容)
DB2瘦客戶端 DB2 Thin Client
DB2 Relational Connect 聯(lián)邦數(shù)據(jù)庫,用于連接異種數(shù)據(jù)庫。
您可能感興趣的文章:
- 解決db2事務(wù)日志已滿及日志磁盤空間已滿問題辦法詳解
- DB2 常用命令小結(jié)
- 比較SQL Server與Oracle、DB2
- DB2數(shù)據(jù)庫的備份和恢復(fù)
- DB2優(yōu)化(簡(jiǎn)易版)
- IBM DB2 日常維護(hù)匯總(一)
- DB2數(shù)據(jù)庫的安裝
- DB2常用傻瓜問題1000問(一)
- DB2數(shù)據(jù)同步方面的經(jīng)驗(yàn)
- DB2常用傻瓜問題1000問(四)
- DB2個(gè)人版(Linux)安裝
- DB2編程序技巧 (十)
- IBM DB2 日常維護(hù)匯總(二)
- DB2常用傻瓜問題1000問(二)
- DB2常用傻瓜問題1000問(五)
- IBM DB2 日常維護(hù)匯總(六)
- IBM DB2 日常維護(hù)匯總(三)
- DB2編程序技巧 (八)
- 分析DB2活動(dòng)日志滿的原因及解決DB2日志滿方法與避免方案
相關(guān)文章
DB2 日期和時(shí)間的函數(shù)應(yīng)用說明
DB2中有關(guān)日期和時(shí)間的函數(shù),及應(yīng)用,比較老的文章了,需要的朋友可以參考下。2009-10-10
分析DB2活動(dòng)日志滿的原因及解決DB2日志滿方法與避免方案
本文簡(jiǎn)單地介紹了DB2中日志的使用、活動(dòng)日志以及首個(gè)活動(dòng)日志的概念、日志滿的原因、日志滿的診斷、臨時(shí)處理以及避免辦法2018-03-03

