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