表空間類型分為SMS和DMS,分別是system management space, database management space. SMS使用方便,簡單,無需手工創建和維護數據存儲文件。DMS需要手動指定container和存儲數據的文件名,並保證有足夠磁盤空間可用。
對於一個數據庫,至少存在一個page size為4K的系統臨時表空間,可以額外建立具有更大page size的用戶臨時表空間,系統會自動進行使用。
無法用alter語句更改一個字段的數據類型,對某些字段可以更改數據長度,這一點上相對於Oracle,DB2的限制要多一些。
可以使用: select 表達式 from sysibm.sysdummy; 替代的,以下語句是等價的:values 表達式;
表和視圖的創建、更新、刪除操作,都寫日志,因此可以commit或rollback。
在update語句中,如果沒有對定義了默認值的某個字段顯式賦值,則更新時,此字段不會重新執行默認值中定義的表達式。為了讓其重新執行默認值定義的表達式,可以采用以下方式:
create table t1 (c1 varchar(32), lastupdatetime with default current timpstamp);update t1 set c1 = ’new string’, lastupdatetime = default;
對於DB2數據庫可以在創建時指定codepage參數,創建後不可修改。當應用程序訪問數據庫時,DB2會比較兩者的codepage是否一致,不一致則進行代碼頁的自動轉換。為了減少轉換所帶來的開銷,應盡量保證應用程序所采用的代碼頁與數據庫一致。
可以對DB2 CLP工具的codepage進行設置,使用:
$ db2set DB2CODEPAGE= 1386
本例中設置的是中文GBK字符集在Windows平台對應的值。注意,這個數字值是由DB2自己定義的。有關各種字符集在相應平台所對應的代碼頁值可在IBM網站查找。
在DB2 CLP中,對遠程數據庫編目的操作,首先把遠程主機映射為本地節點,節點名自己指定,本例采用TCPIP連接。service_name一般定義在遠程主機的/etc/services文件中。
$ db2 CATALOG TCPIP NODE local_node_name REMOTE hostname|ip SERVER service_name
然後把已知的遠程主機的數據庫映射到本地別名,注意本地別名在主機級別不能重復。節點名指定上面剛編目的節點。
$ db2 CATALOG DATABASE db_name AS local_alias AT local_node_name USER username USING passWord
現在就可以用剛才編目中定義的別名連接遠程主機數據庫
$ db2 CONNECT TO local_alias USER username USING passWord
獲取數據庫詳細配置信息
$ db2 GET CONFIGURATION SHOW DETAIL
對於DB2返回的錯誤號,可以用以下方法查閱說明(以sql 10008為例):
$ db2 ? sql10008
數據庫的備份與恢復:
使用備份與恢復工具可以完成在不同的服務器見完整的轉移數據庫的工作,命令行方式如下:
備份
$ 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
恢復
$ 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
有關實例的操作:
設置默認實例環境變量
$ db2 SET DB2INSTANCE=inst_name
啟動當前實例
$ db2start
停止當前實例
$ db2stop [force]
連接到某個實例
$ db2 ATTACH TO ANSTANCE inst_name
獲取實例的配置參數
$ db2 GET DBM CFG SHOW DETAIL
導出數據庫完整的定義到腳本文件,包括表,視圖,函數,數據庫參數等
$ db2look -d sample(數據庫) -a -e -l -x -m -f -o(參數)samplesql.out(輸出文件)
load 一個表的數據時,有可能導致表空間處於backup pending(0x0020)狀態。比如把整形數