1、DB2 命令行處理器中命令選項的介紹gEAitug
gEAitug
環(huán)境 產品:DB2 UDBgEAitug
平臺:跨平臺gEAitug
版本:Version 6.1,Version 7.1 gEAitug
問題 介紹 DB2 命令行狀態(tài)下有關命令選項的用途及設置方法。 gEAitug
解答 在 DB2 命令行處理器中使用命令 db2 list command options,可得到如下輸出:gEAitug
gEAitug
命令行處理器選項設置 gEAitug
后端進程等待時間(秒) (DB2BQTIME) = 1 gEAitug
連接至后端的重試次數 (DB2BQTRY) = 60 gEAitug
請求隊列等待時間(秒) (DB2RQTIME) = 5 gEAitug
輸入隊列等待時間(秒) (DB2IQTIME) = 5 gEAitug
命令選項 DB2OPTIONS) = gEAitug
gEAitug
選項 說明 當前設置 gEAitug
------ ------------------------------- ------------ gEAitug
-a 顯示 SQLCA OFF gEAitug
-c 自動落實 ON gEAitug
-e 顯示 SQLCODE/SQLSTATE OFF gEAitug
-f 讀取輸入文件 OFF gEAitug
-l 將命令記錄到歷史文件中 OFF gEAitug
-n 除去換行字符 OFF gEAitug
-o 顯示輸出 ON gEAitug
-p 顯示交互式輸入提示 ON gEAitug
-r 將輸出保存到報告文件 OFF gEAitug
-s 在命令出錯時停止執(zhí)行 OFF gEAitug
-t 設置語句終止字符 OFF gEAitug
-v 回送當前命令 OFF gEAitug
-w 顯示 FETCH/SELECT 警告信息 ON gEAitug
-x 不打印列標題 OFF gEAitug
-z 將所有輸出保存到輸出文件 OFF gEAitug
gEAitug
這些選項的具體功能及其缺省設置為: gEAitug
.a 顯示 SQLCA 的數據,缺省為 OFF。 gEAitug
.c 是否自動落實 SQL 命令,缺省為 ON。 gEAitug
.e {c|s} 顯示 SQLCODE 或 SQLSTATE,缺省為 OFF。 gEAitug
.f 文件名 將命令的輸入從標準輸入指定到某一文件,缺省為 OFF。 gEAitug
注:命令“db2 < 文件名”與“db2 -f 文件名”作用相同。 gEAitug
.l 文件名 將命令記錄到歷史文件中,缺省為 OFF。 gEAitug
.n 除去換行字符,缺省為 OFF。 gEAitug
.o 將輸出數據及信息送到標準輸出,缺省為 ON。 gEAitug
.p 在交互方式下顯示命令行處理器的提示信息,缺省為 ON。 gEAitug
.r 將輸出保存到指定文件中,缺省為 OFF。 gEAitug
.s 執(zhí)行批處理文件中或交互方式下的命令出錯時即停止執(zhí)行操作,缺省為 OFF。 gEAitug
.t 設置語句終止字符,缺省為 OFF。 gEAitug
.v 回送當前命令到標準輸出,缺省為 OFF。 gEAitug
.w 顯示 FETCH 或 SELECT 警告信息,缺省為 ON。 gEAitug
.x 不打印列標題,缺省為 OFF。 gEAitug
.z 文件名 將所有輸出保存到輸出文件,缺省為 OFF。 gEAitug
gEAitug
以上選項不要求順序并可以進行組合使用。若要修改其缺省設置,將選項設為打開,只需在選項前加“+”;而將選項關閉則加“-”。gEAitug
gEAitug
通過設置環(huán)境變量 DB2OPTIONS,也可對這些選項進行設置。如在 Intel 系統(tǒng)下使用:set DB2OPTIONS='+c -a';在 UNIX 系統(tǒng)下使用:export DB2OPTIONS='+c -a'。但命令行處理器選項設置的優(yōu)先級高于 DB2OPTIONS 的設置。gEAitug
gEAitug
另外使用 db2 update command options 命令,同樣可以實現通過交互式輸入模式或命令文件改變選項設置的功能。如:db2 update command options using c off。gEAitug
gEAitug
2、DB2備份歷史文件損壞gEAitug
gEAitug
環(huán)境 產品:DB2gEAitug
平臺:跨平臺gEAitug
版本:DB2 5.2;DB2 6.1 gEAitug
問題 DB2備份歷史文件損壞 gEAitug
解答 如果在作數據庫備份操作時遇到DB2備份歷史文件db2rhist.asc損壞, 錯誤代碼SQL2048的錯誤,可按照如下步驟操作: 1. 先在NODE000x/SQL000x目錄下找到該文件,及其備份文件db2rhist.bak,將db2rhist.asc文件移動到其他目錄中。 gEAitug
2. 重新運行備份命令。此命令仍會報同樣的錯誤,但同時DB2系統(tǒng)會自動用db2rhist.bak重新生成db2rhist.asc文件。 gEAitug
3. 再次運行備份命令,它將能夠正確運行。 gEAitug
gEAitug
如果按照上面的步驟操作后,仍出同樣的錯誤,則再按如下操作: 1. 先在NODE000x/SQL000x目錄下找到該文件,及其備份文件db2rhist.bak,將這兩個文件移動到其他目錄中。 gEAitug
2. 重新運行備份命令。此命令仍會報同樣的錯誤,但同時DB2系統(tǒng)會自動重新生成這兩個文件。 gEAitug
3. 再次運行備份命令,它將能夠正確運行。 gEAitug
gEAitug
3、DB2從7.2版本開始支持存儲過程的發(fā)布,即可以將一個數據庫上已編譯好的存儲過程抽取并安裝到其它數據庫上,目標數據庫所在的服務器上不再需要c編譯器。 gEAitug
解答 發(fā)布存儲過程請按以下步驟:gEAitug
1. 如果數據庫是從7.1版本打補丁后升為7.2版本,請用gEAitug
db2updv7 -d 數據庫名gEAitug
使DB2可以抽取或安裝已編譯好的存儲過程;gEAitug
gEAitug
2. 在源數據庫,編譯好存儲過程;gEAitug
gEAitug
3. 在源數據庫,運行gEAitug
db2 "get routine into 文件名 from procedure 存儲過程名"gEAitug
抽取存儲過程;gEAitug
gEAitug
4. 上傳文件至目標服務器;gEAitug
gEAitug
5. 在目標服務器端,運行gEAitug
db2 "put routine from 文件名"gEAitug
安裝已編譯好的存儲過程。gEAitug
gEAitug
4、DB2數據庫中一個表的行長度、列數以及每頁行數在表空間中的限制gEAitug
gEAitug
環(huán)境 [產品] DB2 UDBgEAitug
[平臺] Windows 9x/NT/2000, Unix, LinuxgEAitug
[版本] 6.x/7.x gEAitug
問題 DB2數據庫中一個表的行長度、列數以及每頁行數在表空間中的限制 gEAitug
解答 在DB2數據庫中一個表的每行長度、列數以及每頁行數在表空間中的限制如下:gEAitug
gEAitug
表空間頁面大小 表空間中行長度限制(bytes) 表空間中列數限制 表空間中每頁最大行數 gEAitug
4K 4005 500 255 gEAitug
8K 8101 1012 255 gEAitug
16K 16293 1012 255 gEAitug
32K 32677 1012 255 gEAitug
注:表空間頁面大小只有4K,8K,16K,32K四種。 gEAitug
gEAitug
5、當編譯一個復雜的SQL語句時,出現SQL0101N錯誤,怎么辦?gEAitug
gEAitug
環(huán)境 DB2 V5.2; DB2 V6.1; DB2 V7.1 gEAitug
問題 某些SQL語句可能非常復雜,比如嵌套調用多個表或觸發(fā)許多觸發(fā)器,在對這樣gEAitug
的SQL語句進行編譯時,出現SQL0101N錯誤,如何處理 gEAitug
解答 對于一個復雜的SQL語句,在調用多個表或觸發(fā)多個觸發(fā)器時, 可能會占用gEAitug
大量的系統(tǒng)資源. gEAitug
當出現SQL0101N錯誤時, 首先需要確認系統(tǒng)中沒有遞歸的觸發(fā)器存在.gEAitug
之后可通過增加如下參數的值來解決此問題:gEAitug
gEAitug
1)STMTHEAPgEAitug
2)APPLHEAPSZgEAitug
3)PCKCACHESZgEAitug
gEAitug
6、如何實施已刪除表的恢復(Dropped Table Recovery) gEAitug
解答 如何實施已刪除表的恢復(Dropped Table Recovery)gEAitug
gEAitug
解答:gEAitug
1. 首先數據庫要可以前滾恢復(數據庫配置參數logretain或userexit打開)。gEAitug
gEAitug
gEAitug
2. 對要實施Drop Table Recovery的表空間(限regular tablespace),執(zhí)行:gEAitug
alter tablespace 表空間名 dropped table recovery ongEAitug
gEAitug
gEAitug
3. 用 list history dropped table all for 數據庫名 得到刪除表的tableid(例如 0000000000006d0000020003)和表結構的生成語句(DDL),記錄tableid和該語句以便恢復。之后,用drop命令刪除的表中的數據可以在前滾恢復時導出。gEAitug
gEAitug
gEAitug
4. 恢復數據庫后,如果想恢復已刪除的表,在前滾時加recover dropped table tableid to 目標目錄 。 在該目錄下被刪除的表中的數據導出,例如導出至 ../NODE0000/data文件。利用上面提到表結構生成語句生成被刪除了的表,然后用import命令將數據導入表中。gEAitug
gEAitug
7、如何更改本地系統(tǒng)名稱gEAitug
gEAitug
環(huán)境 [產品] DB2 UDBgEAitug
[平臺] Windows 9x/NT/2000, Unix, LinuxgEAitug
[版本] 5.x/6.x/7.x gEAitug
問題 在控制中心(Control Center)中,可以看到編目在節(jié)點下的系統(tǒng)名稱??蓡涌刂浦行牡墓?jié)點作為本地系統(tǒng),名稱是不能在這里改變的。那么如何改變本地系統(tǒng)的名稱呢? gEAitug
gEAitug
解答 首先,從控制中心(Control Center)中知道本地系統(tǒng)所在的原節(jié)點名。gEAitug
然后退出控制中心,在命令行處理器中輸入以下命令:gEAitug
gEAitug
1. db2set db2system=新系統(tǒng)名gEAitug
2. db2 terminategEAitug
3. db2 uncatalog node 原節(jié)點名gEAitug
4. db2 terminategEAitug
gEAitug
重起控制中心,可以看到,本地系統(tǒng)名已更改。gEAitug
gEAitug
8、如何將表空間的狀態(tài)置為正常gEAitug
gEAitug
環(huán)境 [產品] DB2 UDBgEAitug
[平臺] Windows 9x/NT/2000, Unix, LinuxgEAitug
[版本] 5.x/6.x/7.x gEAitug
問題 quiesce是一種持續(xù)狀態(tài)的鎖,它屬于一個連接,當該連接失敗時,quiesce狀態(tài)依然存在。如何將表空間的狀態(tài)置為正常狀態(tài)? gEAitug
解答 除去quiesce狀態(tài):gEAitug
gEAitug
1. 連接到數據庫 gEAitug
2. 用 list tablespaces 判斷哪個tablespace處于quiesce狀態(tài)和和取得對象(object)ID gEAitug
3. 判斷對象ID對應的表 gEAitug
a)用 db2 "select tabname from syscat.tables where tablid=對象ID" 得到表名 gEAitug
b)用 db2 list history 判斷是那個表 gEAitug
4. 用 db2 quiesce tablespaces for table 表名 reset 去除quiesce狀態(tài) gEAitug
gEAitug
gEAitug
9、如何實施聯(lián)機備份gEAitug
gEAitug
環(huán)境 [產品] DB2 UDBgEAitug
[平臺] Windows 9x/NT/2000, Unix, LinuxgEAitug
[版本] 5.x/6.x/7.x gEAitug
問題 如何實施聯(lián)機備份? gEAitug
解答 數據庫建立時日志方式默認是循環(huán)日志模式(Circular Log),這時是無法做聯(lián)機備份的。所以,希望實施聯(lián)機備份,首先要將日志方式改為歸檔日志模式(Archival Log)。gEAitug
gEAitug
以sample數據庫為例,可以在控制中心中改變sample數據庫的配置參數LOGRETAIN為Recovery,或在命令行下用 db2 update db cfg for sample using LOGRETAIN on。改變此參數后,再次連接數據庫會顯示數據庫處于備份暫掛(BACKUP PENDING)狀態(tài)。這時,需要做一次對數據庫的脫機備份。在控制中心中選擇對數據庫進行脫機備份或在命令行下用 db2 backup db sample 實施。此后數據庫就可以進行聯(lián)機備份了。gEAitug
gEAitug
可以選擇在控制中心中對數據庫進行聯(lián)機備份,或在命令行下用 db2 backup db sample online 實施。gEAitug
gEAitug
注意: 利用聯(lián)機備份得到的IMAGE文件進行恢復時,還需要相關的日志文件。gEAitug
gEAitug
10、如何在AIX上建立使用裸設備的數據庫管理(DMS)表空間gEAitug
gEAitug
環(huán)境 [產品] DB2 UDBgEAitug
[平臺] AIXgEAitug
[版本] 5.x/6.x/7.x gEAitug
問題 如何在AIX上建立使用裸設備的數據庫管理(DMS)表空間? gEAitug
解答 1. 用mklv命令建裸設備,語法為: gEAitug
mklv -t jfs -y 設備名 -U 用戶名 -G 組名 vg名 lv大小 硬盤 gEAitug
例如: mklv -t jfs -y contest -U db2inst1 -G db2iadm1 rootvg 10 hdisk0 gEAitug
2. 然后創(chuàng)建表空間 gEAitug
1). 連接數據庫 gEAitug
2). 創(chuàng)建表空間:注意在命令中要在加引號: gEAitug
db2 "create tablespace 表空間名 managed by database using (device 裸設備名及路徑 大小)" gEAitug
例如: db2 "create tablespace tptest managed by database using (device '/dev/rcontest' 80M)" gEAitug
db2 "create tablespace tptest managed by database using (device '/dev/rcgEAitug
gEAitug
1、如何在Unix平臺上啟動DB2控制中心(Control Center)gEAitug
gEAitug
環(huán)境 [產品] DB2 UDBgEAitug
[平臺] UnixgEAitug
[版本] 6.x/7.x gEAitug
問題 如何在Unix平臺上啟動DB2控制中心(Control Center) gEAitug
解答 再Unix平臺上啟動DB2控制中心需要一下幾個步驟,以AIX操作系統(tǒng)為例: gEAitug
gEAitug
1. 安裝DB2時選擇安裝DB2控制中心(Control Center); gEAitug
2. 以root賬號登錄,輸入xhost +命令(每次重新啟動Unix后需輸入該條命令以啟動控制中心); gEAitug
3. 以DB2實例管理員賬號登錄,輸入以下命令 gEAitug
a. db2jstrt gEAitug
b. db2cc gEAitug
這樣,就啟動了DB2控制中心(Control Center)。 gEAitug
#xhost + gEAitug
#su - db2inst1 gEAitug
$db2jstrt gEAitug
$db2cc gEAitug
db2cc使用的是jdk118 gEAitug
export JAVA_HOME=/usr/jdk118 gEAitug
export PATH=/usr/jdk118/binPATH gEAitug
gEAitug
2、如何在查詢語句中只顯示結果的前n條記錄gEAitug
gEAitug
環(huán)境 [產品] DB2 UDBgEAitug
[平臺] Windows 9x/NT/2000, Unix, LinuxgEAitug
[版本] 5.x/6.x/7.x gEAitug
問題 在查詢語句中,不想顯示所有記錄,只顯示結果的前n條記錄 gEAitug
解答 在查詢語句中,不想顯示所有記錄,只顯示結果的前n條記錄,可以用 fetch first n rows only 跟在查詢語句后面實現。gEAitug
gEAitug
以sample數據庫中的staff表為例,用如下命令可以得到查詢結果的前5條建立:gEAitug
db2 "select * from staff fetch first 5 rows only"gEAitug
gEAitug
3、如何在命令行下查看修改實例和數據庫配置參數gEAitug
gEAitug
環(huán)境 [產品] DB2 UDBgEAitug
[平臺] Windows 9x/NT/2000, Unix, LinuxgEAitug
[版本] 5.x/6.x/7.x gEAitug
問題 如何在命令行下查看修改實例和數據庫配置參數 gEAitug
解答 在命令行下查看實例的配置參數,可用 db2 get dbm cfg 命令實現。gEAitug
類似地用 db2 get db cfg for 數據庫名 可以得到數據庫的配置參數。gEAitug
以下是數據庫參數的一部分:gEAitug
gEAitug
Log file size (4KB) (LOGFILSIZ) = 250gEAitug
Number of primary log files (LOGPRIMARY) = 3gEAitug
Number of secondary log files (LOGSECOND) = 2gEAitug
gEAitug
修改實例配置參數,用 db2 update dbm cfg using 參數名 新值gEAitug
類似,用 db2 update db cfg for 數據庫名 using 參數名 新值 修改數據庫配置參數。gEAitug
gEAitug
例如,要修改sample數據庫配置參數中的LOGPRIMARY為10,可用以下命令實現:gEAitug
db2 update db cfg for sample using logprimary 10gEAitug
gEAitug
4、如何在命令行下執(zhí)行DB2腳本(script)gEAitug
gEAitug
環(huán)境 [產品] DB2 UDBgEAitug
[平臺] Windows 9x/NT/2000, Unix, LinuxgEAitug
[版本] 5.x/6.x/7.x gEAitug
問題 如何在命令行下執(zhí)行DB2腳本(script) gEAitug
解答 在命令窗口中運行DB2腳本,可用 db2 -svtf 腳本文件名 來實現。gEAitug
例如,腳本文件名為sample.sql,運行:db2 -svtf sample.sqlgEAitug
gEAitug
參數中:gEAitug
s 代表遇到錯誤時中止運行腳本gEAitug
v 代表輸出結果到屏幕gEAitug
t 指以;號作為每行的分隔符gEAitug
f 指后面需跟腳本文件名gEAitug
gEAitug
如果希望即使遇到錯誤也不要中止運行可以去掉參數s。 gEAitug
gEAitug
5、文件標題: 如何解決資料庫別名已存在問題?gEAitug
修訂日期: 2001/10/15gEAitug
文件來源: TSC TeamgEAitug
英文標題: How to eliminate the existed database alias name?gEAitug
產品名稱: DB2 UDBgEAitug
作業(yè)平臺: 跨平臺gEAitug
適用範圍: system administratorgEAitug
gEAitug
gEAitug
--------------------------------------------------------------------------------gEAitug
gEAitug
問題:gEAitug
gEAitug
如何解決資料庫別名已存在問題?gEAitug
gEAitug
gEAitug
gEAitug
解答:gEAitug
gEAitug
在建立資料庫時遇到資料庫別名已存在的問題時,可以:gEAitug
gEAitug
1)首先用 db2 list database directory 命令查看系統(tǒng)資料庫目錄(System Database Directory)中有沒有該資料庫。gEAitug
如果有,應該再確定該資料庫是沒有用的資料庫之後用 db2 drop database 資料庫名將其刪除。 gEAitug
gEAitug
2)如果沒有,再用 db2 list database directory on location 看在本端資料庫目錄(Local Database Directory)中有沒有該資料庫,location指定資料庫的位置(如Windows下的C: ,Unix下的/home/db2inst1)。gEAitug
如果有,先用 db2 catalog database 資料庫名 on location 將資料庫catalog到節(jié)點上,再對其進行刪除處理。 gEAitug
gEAitug
6、文件標題: 如何直接備份DB2資料庫到磁帶設備?gEAitug
修訂日期: 2001/06/06gEAitug
文件來源: gEAitug
英文標題: How to backup DB2 database to a tape library?gEAitug
產品名稱: Database and Data ManagementgEAitug
作業(yè)平臺: 跨平臺gEAitug
適用範圍:system administratorgEAitug
gEAitug
gEAitug
--------------------------------------------------------------------------------gEAitug
gEAitug
問題:gEAitug
gEAitug
如何直接備份DB2資料庫到磁帶設備?gEAitug
gEAitug
gEAitug
gEAitug
解答:gEAitug
gEAitug
在UNIX和Windows NT作業(yè)系統(tǒng),支援本端的磁帶設備。OS/2作業(yè)系統(tǒng)不提供本端磁帶gEAitug
設備支援。下面以Windows作業(yè)系統(tǒng)為例,介紹如何將DB2資料庫直接備份到磁帶設備。gEAitug
gEAitug
(1)首先在備份資料庫之前先要初始化磁帶設備,可用INITIALIZE TAPE命令完成此工作gEAitug
,例如initialize tape on \.tape0gEAitug
(2)備份資料庫到磁帶設備,可用backup database命令。如:backup database sample to \.tape0gEAitug
(3)在回復資料庫時要先將磁帶倒帶,可用命令rewind tape。如:rewind tape on \.tape0。gEAitug
(4)回復資料庫sample到一個新資料庫newdb時,可用restore database命令。如:gEAitug
restore database sample from \.tape0 into newdbgEAitug
gEAitug
附註:在備份資料庫到磁帶設備或從磁帶設備回復時,可能需要檢查磁帶機的blockinggEAitug
參數與DB2的資料庫管理(DBM)參數Max requester I/O block size是否符合。如gEAitug
需更詳細資訊可參考DB2的命令手冊。gEAitug
gEAitug
gEAitug
7、文件標題: 怎樣解決DB2資料庫代碼頁不相容的問題gEAitug
修訂日期: 2001/03/10 gEAitug
文件來源: http://www-900.ibm.com/cn/support/viewdoc/FaqDisplay?DocId=1307130000002 gEAitug
英文標題: How to solve DB2 database codepage imcompatablility problem gEAitug
產品名稱: DB2 UDB 7.1/6.1/5.2 gEAitug
作業(yè)平臺: ALL gEAitug
適用範圍: system administratorgEAitug
gEAitug
gEAitug
--------------------------------------------------------------------------------gEAitug
gEAitug
問題: gEAitug
gEAitug
怎樣解決DB2資料庫代碼頁(codepage)不相容的問題gEAitug
gEAitug
解答:gEAitug
gEAitug
當發(fā)出命令:db2 connect to db_name 後系統(tǒng)出現gEAitug
gEAitug
SQL0332N There is no available conversion for the source code page "819" to the target code page "1386". Reason Code "1". SQLSTATE=57017gEAitug
gEAitug
DB2 要求來源代碼與目標代碼頁是相容的, 在以上的例子中,來源代碼頁為819與目標代碼頁1386不相容,導致了資料庫連接失敗, 解決方法如下:gEAitug
在發(fā)出db2 connect 命令失敗的機器上,在DB2 命令視窗中執(zhí)行如下命令後重新進行連接:gEAitug
->; gEAitug
db2set db2codepage=1386 I instance_namegEAitug
db2 terminate gEAitug
gEAitug
gEAitug
8、在 AIX 和 Solaris 上如何配置存儲過程構建器(SPB)?gEAitug
gEAitug
環(huán)境 產品: DB2 通用數據庫gEAitug
版本: 7.1gEAitug
平臺: AIX, Solaris gEAitug
問題 在 AIX 和 Solaris 上如何配置存儲過程構建器(SPB)? gEAitug
解答 為了在 AIX 或 Solaris 上配置“存儲過程構建器”,需確保在您的系統(tǒng)上安裝了“Java 開發(fā)者工具箱”(JDK)。DB2 在可用于“控制中心”的系統(tǒng)上安裝“Java 運行期環(huán)境”(JRE),但是,它將不允許使用“存儲過程構建器”。 gEAitug
一旦安裝了 JDK,就需要確保 DB2 知道 JDK 的位置,方法是在該實例的數據庫管理程序配置文件中設置 JDK 的路徑。要設置 JDK 的路徑,執(zhí)行下列步驟: gEAitug
gEAitug
1. 以具有 SYSADM 權限的用戶登錄系統(tǒng)。 gEAitug
2. 通過輸入以下命令來更新數據庫管理程序配置文件: gEAitug
db2 update dbm cfg using jdk11_path /usr/jdk_base gEAitug
其中 /usr/jdk_base 表示 JDK 安裝路徑。 gEAitug
3. 一旦更新了實例的數據庫管理程序配置文件,您就必須停止并重新啟動該實例,以使更改生效。要停止并啟動當前實例的數據庫管理程序,輸入下列命令: gEAitug
db2stopgEAitug
db2start gEAitug
gEAitug
9、在DB2 UDB中如何創(chuàng)建用戶定義臨時表? gEAitug
解答 可使用 DECLARE GLOBAL TEMPORARY TABLE 語句來定義臨時表。此語句需在應用程序中使用。只有在應用程序與數據庫斷開連接之前,用戶定義臨時表才是持續(xù)的。 gEAitug
gEAitug
gEAitug
此表的說明并不出現在系統(tǒng)目錄中,使其對于其他應用程序而言不是持續(xù)的,也不能與其他應用程序共享此表。 gEAitug
gEAitug
gEAitug
當使用此表的應用程序終止或與數據庫斷開連接時,此表中的數據被刪除, 此表被隱式卸下。 gEAitug
下面是定義臨時表的一個示例: gEAitug
DECLARE GLOBAL TEMPORARY TABLE gbl_tempgEAitug
LIKE empltablgEAitug
ON COMMIT DELETE ROWSgEAitug
NOT LOGGEDgEAitug
IN usr_tbspgEAitug
gEAitug
gEAitug
此語句創(chuàng)建一個名為 gbl_temp 的用戶臨時表。定義此用戶臨時表 所使用的列的名稱和說明與 empltabl 的列的名稱和說明完全相同。隱式定義只包括列名、數據類型、可為空特性和列缺省值屬性。未定義所有其他列屬性,包括唯一約束、外部關鍵字約束、觸發(fā)器和索引。執(zhí)行 COMMIT 操作時, 若未對該表打開 WITH HOLD 游標,則該表中的所有數據都被刪除。不記錄 對用戶臨時表所作的更改。用戶臨時表被放在指定的用戶臨時表空間中。此表空間必須存在,否則此表的聲明將失敗。 gEAitug
gEAitug
10、在使用IMPORT命令向數據庫出入數據時,如何避免日志空間滿錯誤?gEAitug
gEAitug
環(huán)境 平臺: 所有平臺gEAitug
版本: DB2 V7,DB2 V6,DB2 V5 gEAitug
問題 在用IMPORT命令向數據庫插入大量數據時,如何避免日志空間滿錯誤 gEAitug
解答 在執(zhí)行IMPORT命令時, 如果使用循環(huán)日志, 有時會出現日志滿錯誤, gEAitug
這時可用COMMITCOUNT參數來解決. gEAitug
因為日志空間滿往往是因為所有的日志均處于活動狀態(tài)導致的.gEAitug
而COMMIT執(zhí)行后, 會釋放所占據的資源, 其中包括日志 .gEAitug
這樣, 被當前事務使用的日志在COMMIT命令執(zhí)行后, 即變成非活動狀態(tài)了.gEAitug
gEAitug
1、在由備份恢復一個數據庫時,遇到SQL2542錯誤,怎麼辦?gEAitug
gEAitug
環(huán)境 版本:(試用)DB2 V5.0,DB2 V6.1,DB2 V7.1gEAitug
操作系統(tǒng):(試用)Windows NT,AIX gEAitug
問題 在由備份恢復一個數據庫時,遇到SQL2542錯誤 gEAitug
解答 如果有幾個數據庫的備份,在做數據庫恢復時,需要提供正確的路徑和時間戳,如果是用DB2命令行來執(zhí)行恢復操作,在Windows NT操作系統(tǒng),可參照如下命令:gEAitug
gEAitug
RESTORE DATABASE SAMPLE FROM D:backups TAKEN AT 19991117125141gEAitug
gEAitug
此命令中要注意路徑和時間戳。時間戳可以通過list history命令得到??蓞⒄杖缦旅睿?span style="DISPLAY: none">gEAitug
gEAitug
LIST HISTORY BACKUP ALL FOR SAMPLEgEAitug
gEAitug
Op Obj Timestamp+sequence Type Dev Earliest log Current log Backup ID gEAitug
B D 19991117125141001 F D S0000000.LOG S0000000.LOG gEAitug
gEAitug
gEAitug
Contains 2 tablespace(s):gEAitug
gEAitug
00001 SYSCATSPACEgEAitug
00002 USERSPACE1gEAitug
gEAitug
此命令的輸出列出了備份的時間戳加上一個3位的數字序列:gEAitug
gEAitug
時間戳+3位的數字序列=19991117125141001gEAitug
gEAitug
所以,可以在restore命令中使用時間戳:19991117125141。gEAitug
gEAitug
如果你有多于一個備份,list history命令將顯示所有備份紀錄的信息。gEAitug
gEAitug
更多的信息可以參考“IBM DB2 Universal Database 命令手冊:第三章 CLP命令”。gEAitug
gEAitug
2、怎么樣檢查數據庫連接有關的錯誤?gEAitug
gEAitug
環(huán)境 產品: DB2 UDBgEAitug
平臺: Windows 9x/NT/2000, Unix, LinuxgEAitug
版本: 5.x/6.x/7.x gEAitug
問題 怎么樣檢查數據庫連接有關的錯誤? gEAitug
解答 以TCP/IP連接為例, 若連接失敗,您可以檢查下列項目: gEAitug
A) 在服務器上: 1) db2comm 注冊表值包括值 tcpip。 gEAitug
輸入 db2set DB2COMM 命令, 以檢查 db2comm 注冊表值的設置。有關詳情,請參考管理指南。 gEAitug
2) 正確地更新了 services 文件。 gEAitug
3) 在數據庫管理程序配置文件中正確地更新了服務名 (svcename) 參數。 gEAitug
4) 安全服務已啟動。輸入 net start db2ntsecserver 命令(僅對于 Windows NT 服務器)。 gEAitug
5) 正確地創(chuàng)建并編目了數據庫。 gEAitug
6) 數據庫管理程序已停止并再次啟動(在服務器上輸入 db2stop 和 db2start 命令)。 gEAitug
* 如果在啟動一個協(xié)議的連接管理程序時出現問題, 則會出現警告信息,并將錯誤信息記錄在 db2diag.log 文件中。gEAitug
gEAitug
B) 在客戶機上: 1) 正確地更新了 services 和 hosts 文件(若使用過的話)。 gEAitug
2) 使用正確的主機名 (hostname) 或 IP 地址 (ip_address)編目了此節(jié)點。 gEAitug
3) 端口號必須匹配,或服務名必須映射為服務器上所用的端口號。 gEAitug
4) 在數據庫目錄中指定的節(jié)點名 (node_name) 指向節(jié)點目錄中的正確項目。 gEAitug
5) 數據庫已正確編目, 它使用在服務器上創(chuàng)建該數據庫時編目的服務器的數據庫別名(database_alias), 作為客戶機上的數據庫名 (database_name)。 gEAitug
gEAitug
驗證這些項目后,若連接仍失敗,則參考 DB2 Troubleshooting GuidegEAitug
gEAitug
3、怎么樣獲取表結構以及索引的信息?gEAitug
gEAitug
環(huán)境 產品: DB2 UDBgEAitug
平臺: Windows 9x/NT/2000, Unix, LinuxgEAitug
版本: 5.x/6.x/7.x gEAitug
問題 怎么樣獲取表結構以及索引的信息? gEAitug
解答 您可以使用"describe" 命令: gEAitug
(1) 顯示關于SELECT語句的 SQLDA 信息;gEAitug
(2) 顯示表或視圖的列信息;gEAitug
(3) 顯示表或視圖的索引信息;gEAitug
* 命令語法:gEAitug
>;>;-DESCRIBE-------------------------->;gEAitug
>;--+-select-statement---------+->;<gEAitug
'--+-TABLE--table-name----------+---+----------+-'gEAitug
'-INDEXES FOR TABLE--table-name--' '-SHOW DETAIL--'gEAitug
gEAitug
例如: gEAitug
1) 下面的例子用于描述 SELECT 語句: gEAitug
gEAitug
db2 "describe select * from staff"gEAitug
gEAitug
SQLDA InformationgEAitug
gEAitug
sqldaid : SQLDA sqldabc: 896 sqln: 20 sqld: 7gEAitug
gEAitug
Column InformationgEAitug
gEAitug
sqltype sqllen sqlname.data sqlname.length gEAitug
--------------- ------ -------------- --------------- gEAitug
500 SMALLINT 2 ID 2 gEAitug
449 VARCHAR 9 NAME 4 gEAitug
501 SMALLINT 2 DEPT 4 gEAitug
453 CHARACTER 5 JOB 3 gEAitug
501 SMALLINT 2 YEARS 5 gEAitug
485 DECIMAL 7, 2 SALARY 6 gEAitug
485 DECIMAL 7, 2 COMM 7 gEAitug
gEAitug
2) 下面的例子用于描述表結構: gEAitug
gEAitug
db2 describe table user1.departmentgEAitug
gEAitug
Table: USER1.DEPARTMENTgEAitug
gEAitug
Column gEAitug
name TypegEAitug
schema TypegEAitug
name Length Scale Nulls gEAitug
--------- ------- ----------- -------- ------ ------ gEAitug
AREA SYSIBM SMALLINT 2 0 No gEAitug
DEPT SYSIBM CHARACTER 3 0 No gEAitug
DEPTNAME SYSIBM CHARACTER 20 0 YES gEAitug
gEAitug
3) 下面的例子用于描述索引結構: gEAitug
db2 describe indexes for table user1.departmentgEAitug
gEAitug
Table: USER1.DEPARTMENTgEAitug
gEAitug
gEAitug
Index gEAitug
schema Index gEAitug
name Unique gEAitug
rule Number ofgEAitug
columns gEAitug
------------ ---------- ------------ ---------------- gEAitug
USER1 IDX1 U 2 gEAitug
gEAitug
4、以空文件為數據文件導入(IMPORT)并替換(REPLACE)目標表和刪除(DELETE)表操作的對比(一種可以繞開刪除整個表操作時遇到交易日志已滿的辦法) gEAitug
文章編號:1347131000035 gEAitug
日 期:2001-12-24 gEAitug
gEAitug
打印格式 gEAitug
gEAitug
以空文件為數據文件導入(IMPORT)并替換(REPLACE)目標表和刪除(DELETE)gEAitug
表操作的對比(一種可以繞開刪除整個表操作時遇到交易日志已滿的辦法)gEAitug
gEAitug
環(huán)境 [產品] DB2 UDBgEAitug
[平臺] 跨平臺gEAitug
[版本] 5.x/6.1/7.x gEAitug
問題 以空文件為數據文件導入(IMPORT)并替換(REPLACE)目標表和刪除(DELETE)表操作的對比 gEAitug
解答 當用DELETE TABLE命令刪除整個表中數據時,該操作會逐條刪除表中記錄,并記入活動的交易日志。當表中數據量很大時,如果活動的交易日志不夠大,就會遇到交易日志已滿的錯誤,并回滾日志。即使活動的交易日志足夠大,刪除數據量很大的表的操作也會占用很多時間。用以空文件為數據文件導入(IMPORT)并替換(REPLACE)表的辦法可以解決這個問題。例如gEAitug
IMPORT FROM /dev/null OF DEL REPLACE INTO 目標表名gEAitug
gEAitug
這樣交易日志只會記錄下該條命令,并立即釋放所占的空間,而不會像刪除命令一樣逐條掃描記錄,這就類似于DROP掉該表再創(chuàng)建一個完全相同只是沒有數據的表一樣。對于屬于DMS表空間的表來說,刪除命令逐條掃描記錄,所占的記錄空間仍標記為該表所用,而不立即釋放空間,需要用REORG命令才可以釋放剩余空間。用 LIST TABLESPACE SHOW DETAIL 可以對比兩條命令執(zhí)行后表空間中的剩余空間的大小。gEAitug
gEAitug
用LOAD命令加REPLACE參數可以達到類似IMPORT命令加REPLACE的效果,但是由于LOAD本身不記日志,所以對于可恢復的數據庫,LOAD完成后建議馬上做一下聯(lián)機備份的,相比之下,IMPORT命令加REPLACE操作上比較簡單一些。gEAitug
gEAitug
gEAitug
from jourmengEAitug
問題描述: gEAitug
db2的界面都顯示不了中文,所有該顯示中文的地方都是顯示方框 gEAitug
操作系統(tǒng): gEAitug
win2k(別的我沒有試,不知道是不是這樣) gEAitug
db2版本: gEAitug
db2 8.1 for win gEAitug
解決方法: gEAitug
控制面板-->;區(qū)域選項-->;常規(guī)選項卡-->;你的區(qū)域設置設成中文(中國) gEAitug
ok,問題解決 gEAitug
gEAitug
問題原因:一般是你把區(qū)域設置成非中文(中國),比如我設成了英語(美國),來顯示時間(9:05AM)這樣格式的 gEAitug
P.S.:win別的平臺和db2的別的版本沒有試,也許一樣:)