選項 說明 當前設置
------ ------------------------------- ------------
-a 顯示 SQLCA OFF
-c 自動落實 ON
-e 顯示 SQLCODE/SQLSTATE OFF
-f 讀取輸入文件 OFF
-l 將命令記錄到歷史文件中 OFF
-n 除去換行字符 OFF
-o 顯示輸出 ON
-p 顯示交互式輸入提示 ON
-r 將輸出保存到報告文件 OFF
-s 在命令出錯時停止執(zhí)行 OFF
-t 設置語句終止字符 OFF
-v 回送當前命令 OFF
-w 顯示 FETCH/SELECT 警告信息 ON
-x 不打印列標題 OFF
-z 將所有輸出保存到輸出文件 OFF
2. 對要實施Drop Table Recovery的表空間(限r(nóng)egular tablespace),執(zhí)行:
alter tablespace 表空間名 dropped table recovery on
3. 用 list history dropped table all for 數(shù)據(jù)庫名 得到刪除表的tableid(例如 0000000000006d0000020003)和表結構的生成語句(DDL),記錄tableid和該語句以便恢復。之后,用drop命令刪除的表中的數(shù)據(jù)可以在前滾恢復時導出。
4. 恢復數(shù)據(jù)庫后,如果想恢復已刪除的表,在前滾時加recover dropped table tableid to 目標目錄 。 在該目錄下被刪除的表中的數(shù)據(jù)導出,例如導出至 ../NODE0000/data文件。利用上面提到表結構生成語句生成被刪除了的表,然后用import命令將數(shù)據(jù)導入表中。
7、如何更改本地系統(tǒng)名稱
環(huán)境 [產(chǎn)品] DB2 UDB
[平臺] Windows 9x/NT/2000, Unix, Linux
[版本] 5.x/6.x/7.x
問題 在控制中心(Control Center)中,可以看到編目在節(jié)點下的系統(tǒng)名稱?蓡涌刂浦行牡墓(jié)點作為本地系統(tǒng),名稱是不能在這里改變的。那么如何改變本地系統(tǒng)的名稱呢?
環(huán)境 [產(chǎn)品] DB2 UDB
[平臺] Windows 9x/NT/2000, Unix, Linux
[版本] 5.x/6.x/7.x
問題 quiesce是一種持續(xù)狀態(tài)的鎖,它屬于一個連接,當該連接失敗時,quiesce狀態(tài)依然存在。如何將表空間的狀態(tài)置為正常狀態(tài)?
解答 除去quiesce狀態(tài):
1. 連接到數(shù)據(jù)庫
2. 用 list tablespaces 判斷哪個tablespace處于quiesce狀態(tài)和和取得對象(object)ID
3. 判斷對象ID對應的表
a)用 db2 "select tabname from syscat.tables where tablid=對象ID" 得到表名
b)用 db2 list history 判斷是那個表
4. 用 db2 quiesce tablespaces for table 表名 reset 去除quiesce狀態(tài)
9、如何實施聯(lián)機備份
環(huán)境 [產(chǎn)品] DB2 UDB
[平臺] Windows 9x/NT/2000, Unix, Linux
[版本] 5.x/6.x/7.x
問題 如何實施聯(lián)機備份?
解答 數(shù)據(jù)庫建立時日志方式默認是循環(huán)日志模式(Circular Log),這時是無法做聯(lián)機備份的。所以,希望實施聯(lián)機備份,首先要將日志方式改為歸檔日志模式(Archival Log)。
以sample數(shù)據(jù)庫為例,可以在控制中心中改變sample數(shù)據(jù)庫的配置參數(shù)LOGRETAIN為Recovery,或在命令行下用 db2 update db cfg for sample using LOGRETAIN on。改變此參數(shù)后,再次連接數(shù)據(jù)庫會顯示數(shù)據(jù)庫處于備份暫掛(BACKUP PENDING)狀態(tài)。這時,需要做一次對數(shù)據(jù)庫的脫機備份。在控制中心中選擇對數(shù)據(jù)庫進行脫機備份或在命令行下用 db2 backup db sample 實施。此后數(shù)據(jù)庫就可以進行聯(lián)機備份了。
可以選擇在控制中心中對數(shù)據(jù)庫進行聯(lián)機備份,或在命令行下用 db2 backup db sample online 實施。
環(huán)境 [產(chǎn)品] DB2 UDB
[平臺] Windows 9x/NT/2000, Unix, Linux
[版本] 5.x/6.x/7.x
問題 在查詢語句中,不想顯示所有記錄,只顯示結果的前n條記錄
解答 在查詢語句中,不想顯示所有記錄,只顯示結果的前n條記錄,可以用 fetch first n rows only 跟在查詢語句后面實現(xiàn)。
以sample數(shù)據(jù)庫中的staff表為例,用如下命令可以得到查詢結果的前5條建立:
db2 "select * from staff fetch first 5 rows only"
3、如何在命令行下查看修改實例和數(shù)據(jù)庫配置參數(shù)
環(huán)境 [產(chǎn)品] DB2 UDB
[平臺] Windows 9x/NT/2000, Unix, Linux
[版本] 5.x/6.x/7.x
問題 如何在命令行下查看修改實例和數(shù)據(jù)庫配置參數(shù)
解答 在命令行下查看實例的配置參數(shù),可用 db2 get dbm cfg 命令實現(xiàn)。
類似地用 db2 get db cfg for 數(shù)據(jù)庫名 可以得到數(shù)據(jù)庫的配置參數(shù)。
以下是數(shù)據(jù)庫參數(shù)的一部分:
Log file size (4KB) (LOGFILSIZ) = 250
Number of primary log files (LOGPRIMARY) = 3
Number of secondary log files (LOGSECOND) = 2
修改實例配置參數(shù),用 db2 update dbm cfg using 參數(shù)名 新值
類似,用 db2 update db cfg for 數(shù)據(jù)庫名 using 參數(shù)名 新值 修改數(shù)據(jù)庫配置參數(shù)。
例如,要修改sample數(shù)據(jù)庫配置參數(shù)中的LOGPRIMARY為10,可用以下命令實現(xiàn):
db2 update db cfg for sample using logprimary 10
參數(shù)中:
s 代表遇到錯誤時中止運行腳本
v 代表輸出結果到屏幕
t 指以;號作為每行的分隔符
f 指后面需跟腳本文件名
如果希望即使遇到錯誤也不要中止運行可以去掉參數(shù)s。
5、文件標題: 如何解決資料庫別名已存在問題?
修訂日期: 2001/10/15
文件來源: TSC Team
英文標題: How to eliminate the existed database alias name?
產(chǎn)品名稱: DB2 UDB
作業(yè)平臺: 跨平臺
適用範圍: system administrator
1)首先用 db2 list database directory 命令查看系統(tǒng)資料庫目錄(System Database Directory)中有沒有該資料庫。
如果有,應該再確定該資料庫是沒有用的資料庫之後用 db2 drop database 資料庫名將其刪除。
2)如果沒有,再用 db2 list database directory on location 看在本端資料庫目錄(Local Database Directory)中有沒有該資料庫,location指定資料庫的位置(如Windows下的C: ,Unix下的/home/db2inst1)。
如果有,先用 db2 catalog database 資料庫名 on location 將資料庫catalog到節(jié)點上,再對其進行刪除處理。
6、文件標題: 如何直接備份DB2資料庫到磁帶設備?
修訂日期: 2001/06/06
文件來源:
英文標題: How to backup DB2 database to a tape library?
產(chǎn)品名稱: Database and Data Management
作業(yè)平臺: 跨平臺
適用範圍:system administrator
當使用此表的應用程序終止或與數(shù)據(jù)庫斷開連接時,此表中的數(shù)據(jù)被刪除, 此表被隱式卸下。
下面是定義臨時表的一個示例:
DECLARE GLOBAL TEMPORARY TABLE gbl_temp
LIKE empltabl
ON COMMIT DELETE ROWS
NOT LOGGED
IN usr_tbsp
此語句創(chuàng)建一個名為 gbl_temp 的用戶臨時表。定義此用戶臨時表 所使用的列的名稱和說明與 empltabl 的列的名稱和說明完全相同。隱式定義只包括列名、數(shù)據(jù)類型、可為空特性和列缺省值屬性。未定義所有其他列屬性,包括唯一約束、外部關鍵字約束、觸發(fā)器和索引。執(zhí)行 COMMIT 操作時, 若未對該表打開 WITH HOLD 游標,則該表中的所有數(shù)據(jù)都被刪除。不記錄 對用戶臨時表所作的更改。用戶臨時表被放在指定的用戶臨時表空間中。此表空間必須存在,否則此表的聲明將失敗。
sqltype sqllen sqlname.data sqlname.length
--------------- ------ -------------- ---------------
500 SMALLINT 2 ID 2
449 VARCHAR 9 NAME 4
501 SMALLINT 2 DEPT 4
453 CHARACTER 5 JOB 3
501 SMALLINT 2 YEARS 5
485 DECIMAL 7, 2 SALARY 6
485 DECIMAL 7, 2 COMM 7
2) 下面的例子用于描述表結構:
db2 describe table user1.department
Table: USER1.DEPARTMENT
Column
name Type
schema Type
name Length Scale Nulls
--------- ------- ----------- -------- ------ ------
AREA SYSIBM SMALLINT 2 0 No
DEPT SYSIBM CHARACTER 3 0 No
DEPTNAME SYSIBM CHARACTER 20 0 YES
3) 下面的例子用于描述索引結構:
db2 describe indexes for table user1.department
Table: USER1.DEPARTMENT
Index
schema Index
name Unique
rule Number of
columns
------------ ---------- ------------ ----------------
USER1 IDX1 U 2
環(huán)境 [產(chǎn)品] DB2 UDB
[平臺] 跨平臺
[版本] 5.x/6.1/7.x
問題 以空文件為數(shù)據(jù)文件導入(IMPORT)并替換(REPLACE)目標表和刪除(DELETE)表操作的對比
解答 當用DELETE TABLE命令刪除整個表中數(shù)據(jù)時,該操作會逐條刪除表中記錄,并記入活動的交易日志。當表中數(shù)據(jù)量很大時,如果活動的交易日志不夠大,就會遇到交易日志已滿的錯誤,并回滾日志。即使活動的交易日志足夠大,刪除數(shù)據(jù)量很大的表的操作也會占用很多時間。用以空文件為數(shù)據(jù)文件導入(IMPORT)并替換(REPLACE)表的辦法可以解決這個問題。例如
IMPORT FROM /dev/null OF DEL REPLACE INTO 目標表名
這樣交易日志只會記錄下該條命令,并立即釋放所占的空間,而不會像刪除命令一樣逐條掃描記錄,這就類似于DROP掉該表再創(chuàng)建一個完全相同只是沒有數(shù)據(jù)的表一樣。對于屬于DMS表空間的表來說,刪除命令逐條掃描記錄,所占的記錄空間仍標記為該表所用,而不立即釋放空間,需要用REORG命令才可以釋放剩余空間。用 LIST TABLESPACE SHOW DETAIL 可以對比兩條命令執(zhí)行后表空間中的剩余空間的大小。