當前位置:首頁 » 數據倉庫 » db2資料庫實戰手冊
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

db2資料庫實戰手冊

發布時間: 2023-02-14 04:58:13

⑴ 我們公司買了一個伺服器

硬體方面其實真沒有太多可看的,看看伺服器廠家提供的手冊和維護手冊就可以,如果覺得不夠深入可以找他們要進一步的培訓資料。

軟體方面《Windows Server2008寶典》,另外根據具體應用你可以選擇《DB2資料庫實戰手冊》或者《sql server2008寶典》。

不知你的具體工作是什麼,是管理伺服器的話那Windows Server2008寶典就應該夠了,要是做開發那就應該。針對開發項目和語言學習。

⑵ db2的sqc文件里怎麼連接資料庫

1.首先把自己編輯好的SQC文件(如:test.sqc)放在指定的目錄下。
2.正式開始編譯前,需要和DB2資料庫(如:TESTDB)建立連接。
以linux環境為例,在命令行狀態下,輸入:db2
connect
to
TESTDB
3.調用DB2的prep命令對SQC文件進行預編譯,用來生成C文件。
在命令行狀態下,輸入:db2
prep
test.sqc
BINDFILE
package
using
bindtest
說明:
上述命令中的「BINDFILE」是用來指定在做預編譯的同時生成bind文件的(如:bindtest.bnd)
上述命令中的「package
using
bindtest」是用來指定將要寫入到DB2的系統表中的package信息的名稱(如:bindtest)。
bind文件里記載的是用來寫入到package信息的數據。
4.調用DB2的bind
命令從上一步生成的bind文件中讀出必要的數據寫入到上一步指定名稱的package信息中。
並可以給這條信息指定訪問許可權。
以linux環境為例,在命令行狀態下,輸入:db2
bind
ConnTEST.bnd
GRANT
PUBLIC
5.到目前為止可以說與DB2相關的所有預編譯就基本完成了,我們需要的C文件(如:test.c)也整成生成了,那個bind文件後邊暫時不會用到了。
下來就可以調用CC或GCC之類的C代碼編譯器對這個C文件進行編譯,基本的過程是test.c→test.o→test。這樣我們就可以執行這個最終的可實行程序了。

⑶ 請問您有db2 10.1 的安裝手冊沒 能發我一份嗎

db2 V10.1 和前幾個版本的安裝流程沒有什麼特別之處。如果你以前用過前幾個版本,安裝原來的方法安裝就可以了。如果以前沒有使用過,就找個db2 v9.5或者db2 v9.7的安裝文檔就行了。這些安裝文檔 ,網路文庫中可以找到。

⑷ DB2如何新建自己的資料庫並創建用戶名和設

DB2-創建用戶和組,資料庫

1、增加一個操作系統用戶
groupadd test---添加用戶組test
useradd -m -g test -d /home/test test---添加用戶test
passwd test---修改test的密碼

2、賦予用戶DB2許可權
db2 connect to sample---連接到sample資料庫
db2 grant connect on database to user test---賦予test用戶sample資料庫的connect許可權
db2 connect reset--關閉連接

⑸ DB2怎麼創建資料庫啊

在創建資料庫時要考慮幾個因素,有幾種創建資料庫的方法。
可以使用從 Control Center 調用的 Create Database 向導,會引導用戶分步創建資料庫。要是了解實際的 Create Database 命令的話,還可以從 DB2 Command Window、Command Editor 或命令行直接發出命令。
在這個示例中,從 DB2 First Steps Launch 面板的 Create Database 向導:
1、啟動 DB2 Control Center。點擊 Start > All Programs > IBM DB2 > General Administration Tools 並選擇 Control Center。當提示選擇 Control Center 視圖時,點擊 OK 選擇默認視圖(Advanced)。
2、點擊 All Databases(如圖 5 所示),然後點擊 Create New Database。Create Your Own Database 向導打開。
5. 從 Control Center 創建新資料庫
3、在 Create Your Own Database 向導中,指定資料庫名和資料庫目錄的位置。輸入 HelloWld 作為資料庫名。指定 C:\ 作為默認路徑。輸入 hwld 作為資料庫別名。在 Comment 欄位中輸入任何描述性的注釋。
4、選中 Enable Database for XML。XML 列只能在 UTF-8 代碼集(Unicode)資料庫中使用。所以要在資料庫中使用 XML,就必須創建 Unicode 資料庫。
5、不需要指定任何其他資料庫選項,所以選擇 Summary 面板,然後點擊 Show Command 來查看創建這個資料庫所用的 DB2 命令。
6、因為在這個資料庫中啟用了 XML,所以使用 CODESET UTF-8。點擊 Close。如果想將命令保存到文件中,供以後參考或重用,那麼點擊 Save 而不是 Close。
7、在 Create New Database 窗口中,點擊 Finish 並等待向導完成操作。
在 DB2 創建資料庫時,它還創建以下東西:
1、在指定的驅動器或路徑上創建必要的資料庫目錄
2、創建一組默認的表空間,包括 SYSCAT、TEMPORARY 和 USER 表空間
3、在編目表空間中創建一組系統編目表和視圖
4、創建資料庫配置(DB CFG)文件並設置默認值
5、為資料庫恢復日誌文件創建空間並分配它
6、為資料庫(如 CLI)和命令行處理器創建的幾個應用程序
使用 DB2 Control Center 檢查創建的資料庫
在 Control Center 左邊的面板中,找到並展開 All Systems 和 All Databases。看看是否能夠找到剛才創建的 HELLOWLD 資料庫。All Systems 提供了資料庫對象視圖,這些對象依次根據機器、實例和資料庫進行分組。在這個機器上只有一個實例,DB2。All Databases 提供了這個機器上的所有資料庫的快速查看。
6. 查看新資料庫
如果了解創建資料庫所用的 DB2 命令,那麼可以使用在前面的 Create New Database 向導窗口中保存的 CREATE DATABASE 命令並根據需要進行修改,然後從 DB2 命令行處理器發出 CREATE DATABASE 命令來創建資料庫。
選擇 Start > Run,輸入 db2cmd 並按 Enter。打開 DB2 命令行處理器窗口。要想獲得 create database 命令的幫助,可以在命令行窗口中輸入 db2 ? create database。
輸入 db2 CREATE DATABASE MYTESTDB ON C:。在命令成功完成之後,點擊 Control Center 主菜單中的 Selected 並點擊 Refresh。然後看看是否能夠在 Control Center 中找到新的資料庫 MYTESTDB。
在 DB2 命令窗口中輸入命令 db2 LIST DATABASE DIRECTORY。應該會看到 HELLOWLD 和 MYTESTDB 資料庫的資料庫項。

⑹ 想從事銀行方面的c語言開發,他上面還要了解db2資料庫的常用操作

1、 打開命令行窗口
#db2cmd
2、 打開控制中心
# db2cmd db2cc
3、 打開命令編輯器
db2cmd db2ce
=====操作資料庫命令=====

4、 啟動資料庫實例
#db2start

5、 停止資料庫實例
#db2stop

如果你不能停止資料庫由於激活的連接,在運行db2stop前執行db2 force application all就可以了 /db2stop force
6、 創建資料庫
#db2 create db [dbname]
7、 連接到資料庫
#db2 connect to [dbname] user [username] using [password]
8、 斷開資料庫連接
#db2 connect reset
9、 列出所有資料庫
#db2 list db directory

10、 列出所有激活的資料庫
#db2 list active databases
11、 列出所有資料庫配置
#db2 get db cfg
12、 刪除資料庫
#db2 drop database [dbname]
(執行此操作要小心)
如果不能刪除,斷開所有資料庫連接或者重啟db2

=========操作數據表命令==========
13、 列出所有用戶表
#db2 list tables
14、列出所有系統表
#db2 list tables for system
15、列出所有表
#db2 list tables for all
16、 列出系統表
#db2 list tables for system
17、列出用戶表
#db2 list tables for user
18、 列出特定用戶表
#db2 list tables for schema [user]
19、 創建一個與資料庫中某個表(t2)結構相同的新表(t1)
#db2 create table t1 like t2
20、 將一個表t1的數據導入到另一個表t2
#db2 "insert into t1 select * from t2"
21、 查詢表
#db2 "select * from table name where ..."
22、 顯示表結構
#db2 describe table tablename
23、 修改列
#db2 alter table [tablename] alter column [columname] set data type varchar(24)
======腳本文件操作命令=======
24、 執行腳本文件
#db2 -tvf scripts.sql
25、幫助命令
* 查看命令幫助
#db2 ? db2start
* 查看錯誤碼信息
#db2 ? 22001
* memo: 詳細命令請使用"db2 ? <command>"進行查看。
=========================
26、備份資料庫
#db2 backup db <db name>
備註:執行以上命令之前需要斷開資料庫連接

27、在線備份資料庫
#db2 -v "BACKUP DATABASE <database name> ONLINE TO <path> WITH 2 BUFFERS BUFFER 1024 INCLUDE LOGS WITHOUT PROMPTING"
28、恢復資料庫
#db2 restore db <source db name>

29、在線恢復資料庫
#db2 "RESTORE DB <database name> TO <db path> LOGTARGET <logpath> WITHOUT PROMPTING"
#db2 "ROLLFORWARD DB <database name> TO END OF LOGS AND STOP" ...
30、導出數據文件

#db2move <db name> export

[-sn <模式名稱,一般為db2admin>]
[-tn <表名,多個之間用逗號分隔>]
31、導入數據文件
#db2move <db name> import
32、獲取db2資料庫管理配置環境信息
#db2 get dbm cfg
33、.獲取db2某個資料庫資料庫管理配置環境信息
#db2 get db cfg for <db name>

或者:連接至某個資料庫以後執行db2 get db cfg

34、更改db2日誌空間的大小
備註:以下命令為了防止db2資料庫過份使用硬碟空間而設,僅用於開發者自己機器上的db2,如果是伺服器,則參數需要修改。

#db2 UPDATE DB CFG FOR <db name> USING logretain OFF logprimary 3 logsecond 2 logfilsiz 25600;
如果頁大小是4KB,則以上命令創建3個100M的日誌文件,佔用300MB硬碟空間。25600*4KB=102400KB。
35、創建臨時表空間
#DB2 CREATE USER TEMPORARY TABLESPACE STMASPACE PAGESIZE 32 K MANAGED BY DATABASE USING (FILE 'D:\DB2_TAB\STMASPACE.F1' 10000)
EXTENTSIZE 256
36、獲取資料庫管理器的快照數據
#db2 –v get snapshot for dbm
37、顯示進行程號
#db2 list applications show detail
===================================================
一、載入數據:
1、 以默認分隔符載入,默認為「,」號
db2 "import from btpoper.txt of del insert into btpoper"
2、 以指定分隔符「|」載入
db2 "import from btpoper.txt of del modified by coldel| insert into btpoper"
二、卸載數據:
1、 卸載一個表中全部數據
db2 "export to btpoper.txt of del select * from btpoper"
db2 "export to btpoper.txt of del modified by coldel| select * from btpoper"
2、 帶條件卸載一個表中數據
db2 "export to btpoper.txt of del select * from btpoper where brhid='907020000'"
db2 "export to cmmcode.txt of del select * from cmmcode where codtp='01'"
db2 "export to cmmcode.txt of del modified by coldel| select * from cmmcode where codtp='01'"
三、查詢數據結構及數據:
db2 "select * from btpoper"
db2 "select * from btpoper where brhid='907020000' and oprid='0001'"
db2 "select oprid,oprnm,brhid,passwd from btpoper"
四、刪除表中數據:
db2 "delete from btpoper"
db2 "delete from btpoper where brhid='907020000' or brhid='907010000'"
五、修改表中數據:
db2 "update svmmst set prtlines=0 where brhid='907010000' and jobtp='02'"
db2 "update svmmst set prtlines=0 where jobtp='02' or jobtp='03'"
六、聯接資料庫
db2 connect to btpdbs
七、清除資料庫聯接
db2 connect reset 斷開資料庫連接
db2 terminate 斷開資料庫連接
db2 force applications all 斷開所有資料庫連接
八、備份資料庫
1、 db2 backup db btpdbs
2、 db2move btpdbs export
db2look -d btpdbs -e -x [-a] -o crttbl.sql
九、恢復資料庫
1、 db2 restore db btpdbs without rolling forward
2、 db2 -tvf crtdb.sql
crtdb.sql文件內容:create db btpdbs on /db2catalog
db2 -stvf crttbl.sql
db2move btpdbs import
十、DB2幫助命令:
db2 ?
db2 ? restroe
db2 ? sqlcode (例:db2 ? sql0803) 註:code必須為4位數,不夠4位,前面補0

十一、bind命令:將應用程序與資料庫作一捆綁,每次恢復資料庫後,建議都要做一次bind
(1) db2 bind br8200.bnd
(2) /btp/bin/bndall /btp/bnd
/btp/bin/bndall /btp/tran/bnd
十二、查看資料庫參數:
db2 get dbm cfg
db2 get db cfg for btpdbs
十三、修改資料庫參數:
db2 update db cfg for btpdbs using LOGBUFSZ 20
db2 update db cfg for btpdbs using LOGFILSIZ 5120
改完後,應執行以下命令使其生效:
db2 stop
db2 start

補充:
db2 set schema btp 修改當前模式為"btp"
db2 list tablespaces show detail 查看當前資料庫表空間分配狀況
db2 list tablespace containers for 2 show detail 查看tablespace id=2使用容器所在目錄
db2 list application
db2 list db directory 列出所有資料庫
db2 list active databases 列出所有活動的資料庫
db2 list tables for all 列出當前資料庫下所有的表
db2 list tables for schema btp 列出當前資料庫中schema為btp的表
db2 list tablespaces show detail 顯示資料庫空間使用情況
db2 list packages for all

db2 "import from tab76.ixf of ixf commitcount 5000 insert into achact"
db2 "create table achact_t like achact"
db2 "rename table achact_t to achact"
db2 "insert into achact_t select * from achact where txndt>=(select lstpgdt from
acmact where actno=achact.actno)"
db2 get snapshot for dynaimic sql on jining
刪除一個實例:
# cd /usr/lpp/db2_07_01/instance
# ./db2idrop InstName
列出所有DB2實例:
# cd /usr/lpp/db2_07_01/bin
# ./db2ilist
為資料庫建立編目
$ db2 catalog db btpdbs on /db2catalog
取消已編目的資料庫btpdbs
$ db2 uncatalog db btpdbs
查看版本
# db2level
顯示當前資料庫管理實例
$ db2 get instance
設置實例系統啟動時是否自動啟動。
$ db2iauto -on 自動啟動
$ db2iauto -off 不自動啟動
資料庫優化命令:
reorg、runstats
當資料庫經過一段時間使用,數據空間會變得越來越龐大。一些delete掉
的數據仍存放在資料庫中,佔用數據空間,影響系統性能。因此需要定期
運行reorg、runstats命令,清除已delete的數據,優化數據結構。
db2 reorg table 表名
db2 runstats on table 表名 with distribution and indexes all
因為要優化的表比較多,所以在/btp/bin目錄下提供了一個sh程序runsall,
可在當天業務結束後,運行runsall,對資料庫進行優化

在DB2的開發過程中,貫穿整個開發過程還有很重要的一部分工作就是資料庫的維護;對於維護一個龐大信息系統來說是非常必要的;留一份簡易的維護手冊,以備不時之需;以下收集到的部分維護命令,以饗我們的維護工程師和項目經理。
=================================================================
38、更改db2日誌空間的大小
備註:以下命令為了防止db2資料庫過份使用硬碟空間而設,僅用於開發者自己機器上的db2,如果是伺服器,則參數需要修改。
# db2 UPDATE DB CFG FOR <db name> USING logretain OFF logprimary 3 logsecond 2 logfilsiz 25600;
如果頁大小是4KB,則以上命令創建3個100M的日誌文件,佔用300MB硬碟空間。25600*4KB=102400KB。
39、創建臨時表空間
#DB2 CREATE USER TEMPORARY TABLESPACE STMASPACE PAGESIZE 32 K MANAGED BY DATABASE USING (FILE 'D:\DB2_TAB\STMASPACE.F1' 10000) EXTENTSIZE 256
40、創建表空間
rem 創建緩沖池空間 8K
#db2 connect to gather
#db2 CREATE BUFFERPOOL STMABMP IMMEDIATE SIZE 25000 PAGESIZE 8K
rem 創建表空間:STMA
rem 必須確認路徑正確
rem D:\DB2Container\Stma
#db2 drop tablespace stma
#db2 CREATE REGULAR TABLESPACE STMA PAGESIZE 8 K MANAGED BY SYSTEM USING ('D:\DB2Container\Stma' ) EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL STMABMP DROPPED TABLE RECOVERY OFF
#db2 connect reset
41、將暫掛的數據恢復到前滾狀態
#db2 ROLLFORWARD DATABASE TESTDB TO END OF LOGS AND COMPLETE NORETRIEVE

42、備份表空間
#BACKUP DATABASE YNDC TABLESPACE ( USERSPACE1 ) TO "D:\temp" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING
43、創建db2工具資料庫
#db2 create tools catalog systools create new database toolsdb
44、如何進行增量/差量備份
增量:上一次完整備份至本次備份之間增加的數據部分;
差量(delta):上次備份以來(可能是完整備份、增量備份或者差量備份)至本次備份之間增加的數據部分;
45、更新所有表的統計信息
#db2 -v connect to DB_NAME
#db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"
#db2 -v reorgchkupdate statistics on table all
#db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"
#db2 -v terminate

46、對一張表運行統計信息
#db2 -v runstatson table TAB_NAMEand indexes all
47、查看是否對資料庫執行了RUNSTATS
#db2 -v "select tbname, nleaf, nlevels,stats_timefrom sysibm.sysindexes"
48、更改緩沖池的大小
緩沖池中,當syscat.bufferpools的npages是-1時,由資料庫的配置參數bufferpage控制緩沖池的大小。
將npages的值更改為-1的命令:
#db2 -v connect to DB_NAME
#db2 -v select * from syscat.bufferpools
#db2 -v alter bufferpoolIBMDEFAULTBP size -1
#db2 -v connect reset
#db2 -v terminate
更改資料庫配置參數BufferPages的命令如下:
#db2 -v update db cfgfor dbnameusing BUFFPAGE bigger_value
#db2 -v terminate
49、看資料庫監視內容列表
#db2 -v get monitor switches
50、打開某個資料庫監視內容
#db2 -v update monitor switches using bufferpoolon
51、獲取資料庫快照
#db2 -v get snapshot for all databases > snap.out
#db2 -v get snapshot for dbm>> snap.out
#db2 -v get snapshot for all bufferpools>> snap.out
#db2 -v terminate

52、重置資料庫快照
#db2 -v reset monitor all
53、計算緩沖池命中率
理想情況下緩沖池命中率在95%以上,計算公式如下:
(1 -((buffer pool data physical reads + buffer pool index physical reads)
/(buffer pool data logical reads + pool index logical reads))) *100%
=========資料庫實例========================
54、創建db2實例
#db2icrt <實例名稱>
55、刪除db2實例
#db2idrop <實例名稱>
56、設置當前db2實例
#set db2intance=db2
57、顯示db2擁有的實例
#db2ilist
58、恢復離線增量備份資料庫的命令
#DB2 RESTORE DATABASE YNDC INCREMENTAL AUTOMATIC FROM D:\backup\autobak\db2 TAKEN AT 20060314232015
59、創建樣本資料庫
在unix平台,使用:
#sqllib/bin/db2sampl <path>
在windows,os/2平台,使用:db2sampl e,e是可選參數,指定將創建資料庫的驅動器

60、設置聯合資料庫為可用(默認聯合資料庫不可用)

#db2 update dbm cfg using federated yes

61、列出資料庫中所有的表
#db2 list tables
62、數據遷移方法1
export腳本示例
#db2 connect to testdb user test password test
#db2 "export to aa1.ixf of ixf select * from table1"
#db2 "export to aa2.ixf of ixf select * from table2"
#db2 connect reset
import腳本示例
#db2 connect to testdb user test password test
#db2 "load from aa1.ixf of ixf replace into table1 COPY NO without prompting "
#db2 "load from aa2.ixf of ixf replace into table2 COPY NO without prompting "
#db2 connect reset

⑺ db2常用命令

操作資料庫命令

1、 啟動資料庫實例

#db2start

2、 停止資料庫實例

#db2stop

如果你不能停止資料庫由於激活的連接,在運行db2stop前執行db2 force application all就可以了 /db2stop force

3、 創建資料庫

#db2 create db [dbname]

4、 連接到資料庫

#db2 connect to [dbname] user[username] using [password]

5、 斷開資料庫連接

#db2 connect reset

操作數據表命令

1、 列出所有用戶表

#db2 list tables

2、列出所有系統表

#db2 list tables for system

3、列出所有表

#db2 list tables for all

4、 列出系統表

#db2 list tables for system

5、列出用戶表

#db2 list tables for user

6、 列出特定用戶表

#db2 list tables for schema[user]

⑻ db2日常維護手冊

#說明:由csdn下載,原版為doc格式,有對應的xml表,不過還是應該對每個服務的資料庫單獨考慮需要的檢查表格。

DB2維護手冊

目錄
DB2維護手冊 1
一、 DB2日常維護日操作 3
1、 檢查管理伺服器是否啟動 3
2、 檢查DB2實例是否已經啟動 3
3、 查看錶空間狀態是否正常 3
4、 查看錶的狀態 4
5、 查看磁碟空間 4
6、 檢查存儲管理軟體是否正常 4
7、 檢查資料庫備份是否正常 5
8、 檢查歸檔日誌是否正確歸檔了 5
9、 查看緩沖池的命中率 5
10、 查看當前運行最頻繁的SQL,其命中率是否正常 5
11、 查看當前連接的應用程序,有沒有非法連接 5
12、 檢查有沒有死鎖 6
13、 對表和索引進行RUNSTATS 6
14、 檢查表是否需要重組 6
15、 對需要重組的表進行重組 7
二、 DB2日常維護月操作 7
1、 查看DB2日誌 7
2、 檢查備份和日誌是否都保存好了 7
三、 DB2日常維護季度操作 7
1、 通過快照監控器,查看系統性能如何 7
2、 資料庫補丁級別 8
四、 注意事項 8
1、 不要刪除活動日誌文件 8
2、 注意交易日誌存儲空間 8
3、 按照系統的實際工作量配置日誌空間 8
4、 設置正確資料庫代碼頁 9
5、 檢查許可證(LICENSE)安裝情況 9
6、 創建資料庫前調整好系統時間 9
7、 不要隨便執行 CHOWN (CHMOD) –R (UNIX/LINUX) 9
8、 在歸檔日誌模式下使用LOAD記得加NONRECOVERABLE參數 9
五、 附:以離線方式重組表 9
六、 附:索引重組 10
七、 附:收集和更新統計信息的准則 11
八、 附:使用 CLP 捕獲資料庫運行狀況快照 13

一、 DB2日常維護日操作
1、 檢查管理伺服器是否啟動
用ps命令查看是否有dasusr1後台進程
#ps -ef | dasusr1

請確保管理伺服器已經啟動,如果沒有啟動,則按以下步驟啟動管理伺服器:

 以管理伺服器用戶(UNIX默認是DASUSR1)登錄
 發出db2admin start命令
 如果是HA環境,則要保證在腳本中正確配置了啟動命令
2、 檢查DB2實例是否已經啟動
用ps命令查看是否有db2sysc後台進程
#ps -ef | db2sysc

也可以以DB2實例所有者登錄,通過發出db2start命令來確保啟動了實例(如果實例已經啟動,則會告知SQL1026N 資料庫管理器已激活;否則,將把實例啟動起來)

3、 查看錶空間狀態是否正常
以db2實例所有者登錄
#db2 list tablespaces show detail //在單分區上查看錶空間的狀態,正常返回0x0000
# db2_all list tablespaces show detail //在所有分區上查看錶空間的狀態

可以使用LIST TABLESPACES 命令確定連接資料庫中表空間的當前狀態,可以使用SHOW DETAIL選項查看錶空間的詳細信息。比如,我們連上SAMPLE資料庫,執行list tablespaces show detail ,可以看到狀態返回值是0x0000,此時,使用db2tbst可以查看狀態編號對於的狀態含義,具體語法如下:

db2tbst <tablespace state> 可以查看編號所代表的狀態

db2tbst 命令接收十六進制的狀態值,並返回相應的表空間狀態。例如,命令 db2tbst 0x0008 返回 State = Load Pending 。而該十六進制的狀態值反過來又是 LIST TABLESPACES 命令輸出的組成部分。表空間的外部可見狀態是由單個狀態值的十六進制總和構成的。例如,如果表空間的狀態是 Backup Pending和 Load in Progress,那麼所返回的十六進制值就是 0x20020(0x00020 + 0x20000)
4、 查看錶的狀態
查詢系統目錄視圖以獲得關於資料庫的有用信息。例如,下面的語句使用 NOT LIKE 斷言,返回在 SYSCAT.TABLES 中有項的所有用戶定義的表的名稱,以及每個表的列數和表的狀態(N = 正常;C = 待審核(check pending))

#db2 select tabname, colcount, status FROM syscat.tables WHERE tabschema NOT LIKE 'SYS%' ORDER BY tabname

也可以使用load query命令查看單個表的狀態,比如對表TEST1,我們可以發出如下命令:

#db2 load query table test1

5、 查看磁碟空間
查看資料庫活動日誌目錄是否已滿,活動日誌目錄可以使用get db cfg查看,注意一定不要手工刪除活動日誌
#df -k

查看SMS表空間對應的容器目錄空間是否滿了
#df -k

查看DMS表空間中是否還有可用頁
#db2 list tablespaces show detail //在單分區上查看錶空間的是否還有可用頁
# db2_all list tablespaces show detail //在所有分區上查看錶空間是否還有可用頁

6、 檢查存儲管理軟體是否正常
請檢查TSM或其他存儲管理軟體是否正常,以及磁帶機是否運行正常。
7、 檢查資料庫備份是否正常
請查看TSM或第三方存儲管理軟體,看備份映像文件是否完整的保存到了磁帶機上了,想在DB2上查看備份情況,可以使用LIST命令

# db2 list history backup all for 資料庫名

8、 檢查歸檔日誌是否正確歸檔了
請確保活動日誌目錄下沒有的日誌文件都已經正確歸檔到了帶機上(查看TSM或第三方存儲管理軟體)。

查看活動目錄里的日誌文件:
#ls -l
9、 查看緩沖池的命中率
# db2 get snapshot for bufferpools on 資料庫名
查看緩沖池的命中率,看其是否低於95%(命中率越高越好)
10、 查看當前運行最頻繁的SQL,其命中率是否正常
# db2 get snapshot for bufferpools on 資料庫名 > log.txt
用grep命令查看" Number of executions"執行次數最頻繁的語句,看其命中率是否正常。

比如:
grep -n " Number of executions" snap.out | grep -v "= 0" | sort -k 5,5rn | more

11、 查看當前連接的應用程序,有沒有非法連接
#db2 list applications show detail
看這些連接的情況,看有沒有不合適的IP連上來,或者不被允許的第三方工具連上來,比如一些第三方工具連上來會對表進行鎖定,影響業務系統正常運行,這個時候可以用FORCE APPLICATIONS (應用程序句柄)停下來。
12、 檢查有沒有死鎖
# db2 get snapshot for all on 資料庫名 > log.txt
用grep命令查看輸出的文件中是否有死鎖的記錄,比如
grep -n "Deadlocks detected" log.txt | grep -v "= 0" | more

13、 對表和索引進行runstats
#db2 runstats on table 表名 and index all
對系統表以及變化比較頻繁的表運行統計信息,建議寫成shell腳本自動運行。
14、 檢查表是否需要重組
使用REORGCHK命令,通過統計數據檢查表是否需要重組,語法如下:
REORGCHK [UPDATE | CURRENT ]STATISTICS ON [TABLE SYSTEM| TABLE USER | TABLE ALL | TABLE table_name | SCHEMA schema_name]

UPDATE STATISTICS: 更新表的統計數據,根據該統計數據判斷是否需要重組表
CURRENT STATISTICS:根據當前表統計數據判斷是否需要重組表
TABLE table_name : 對單個表進行分析
TABLE ALL: 對資料庫所有的表進行分析
TABLE SYSTEM: 對系統表進行分析
TABLE USER : 對當前用戶模式下的所有表進行分析

#db2 reorgchk update statistics on table all
15、 對需要重組的表進行重組
#db2 reorg table 表名 //通過重構行來消除「碎片」數據
#db2 reorg indexes all for table 表名 //只重組索引

比如:
reorg table db2inst1.org index by_id
將根據索引by_id,如果不加INDEX選項將重組表和所有的索引
reorg table db2inst1.org index by_id use tempspace1

使用指定的臨時表空間重組表

表重組完成後需要進行RUNSTATS。另外,記住在分區資料庫環境中,如果想在所有節點運行命令,需要使用db2_all命令。

二、 DB2日常維護月操作
1、 查看DB2日誌
請至少每月查看一次db2diag.log文件,看其中是否有異常。
2、 檢查備份和日誌是否都保存好了
通過TSM或第三方存儲管理軟體,查看備份和歸檔日誌是否都保存好了,在資料庫級別查看備份,可以使用:

# db2 list history backup all for 資料庫名

三、 DB2日常維護季度操作
1、 通過快照監控器,查看系統性能如何
通過快照監控器,抓取資料庫的信息,分析資料庫性能是否合理:
# db2 get snapshot for all on 資料庫名 > log.txt
2、 資料庫補丁級別
# db2level
四、 注意事項
1、 不要刪除活動日誌文件
DB2 的活動日誌文件不能被刪除。一旦 DB2 的活動日誌文件被刪除,或者所在的存儲設備出現問題,則不可避免地造成 DB2 資料庫系統宕機。
2、 注意交易日誌存儲空間
在歸檔日誌模式下,如果沒有使用自動歸檔方式,則存儲的日誌文件會不斷增多,有可能造成日誌所在的文件系統空間滿。 當這種情況發生時,會根據參數 BLK_LOG_DSK_FUL 的配置而有不同的現象:
1)如果該參數啟用,則 DB2 資料庫可繼續讀操作,但是寫操作會掛起
2)如果該參數沒有啟用,則 DB2 資料庫會停止工作

兩種情況下,都需要到日誌所在的文件系統添加了空間才恢復正常。

3、 按照系統的實際工作量配置日誌空間
DB2資料庫通過日誌文件維護數據的完整性和一致性。DB2 資料庫的日誌空間可通過如下公式計算:
日誌空間 = (主日誌文件 + 二級日誌文件) * 日誌文件尺寸

其中:
1) 主日誌文件由參數 LOGPRIMARY 控制,
2) 二級日誌文件由參數 LOGSECOND 控制
3) 日誌文件尺寸由參數 LOGFILSIZ 控制
4) LOGPRIMARY + LOGSECOND < 256 (不同的 DB2 版本略有不同,請參看相同版本的 DB2 手冊確認)

4、 設置正確資料庫代碼頁
由於資料庫的代碼頁在資料庫創建之後是無法修改的,所以在創建資料庫時一定要選擇正確的代碼頁。
錯誤的資料庫代碼頁會造成 JDBC/ODBC 訪問時中文欄位被截斷(包括控制中心),這種情況需要重建資料庫以修改資料庫代碼頁。

從全局規劃來說,如果應用需要訪問多個資料庫,那麼這多個資料庫的代碼頁應該是一致的。

5、 檢查許可證(License)安裝情況
許可證過期會造成不必要的服務中斷,所以在 DB2 安裝完畢後,建議檢察許可的安裝情況

6、 創建資料庫前調整好系統時間
在資料庫創建好之後,調整系統時間會造成資料庫內部時間戳的異常。資料庫中一些對象和時間相關,一旦時間不準確要調整需要很小心。錯誤的時間調整可能會造成很多問題,如:
1)某些對象失效,例如 :
SQL0440N,找不到具有兼容自變數的類型為 「<常式類型>」 的名為 「<常式名>」 的已授權常式
2)資料庫日誌邏輯錯誤 -> 宕機
3)常見錯誤 – 只調整時間,未調整時區
7、 不要隨便執行 chown (chmod) –R (UNIX/Linux)
在實例目錄下chown (chmod) -R 會造成
1) 在資料庫伺服器上 db2 connect to <dbname> 能連接上資料庫
2) db2 connect to <dbname> user ... using ...連接不上
8、 在歸檔日誌模式下使用LOAD記得加NONRECOVERABLE參數

五、 附:以離線方式重組表
以離線方式重組表是整理表碎片的最快方法。重組可減少表所需的空間量並提高數據訪問和查詢性能。
必須具有 SYSADM、SYSCTRL、SYSMAINT 或 DBADM 許可權,或者必須具有對表的 CONTROL 許可權才能重組表。必須具有資料庫連接才能重組表。
標識需要重組的表之後,可以對這些表運行 REORG 實用程序,並且可以選擇對在這些表上定義的任何索引運行該實用程序。
1. 要使用 CLP 重組表,請發出 REORG TABLE 命令:
db2 reorg table test.employee
要使用臨時表空間 mytemp 重組表,請輸入:
db2 reorg table test.employee use mytemp
要重組表並根據索引 myindex 對行進行重新排序,請輸入:
db2 reorg table test.employee index myindex
2. 要使用 SQL 調用語句重組表,請使用 ADMIN_CMD 過程發出 REORG TABLE 命令:
call sysproc.admin_cmd ('reorg table employee index myindex')
3. 要使用 DB2 管理 API 重組表,請使用 db2REORG API。
在重組表之後,應收集有關表的統計信息,以便優化器具有最准確的數據來評估查詢訪問方案。
六、 附:索引重組
通過刪除和插入操作對表進行更新後,索引的性能會降低,其表現方式如下:
• 葉子頁分段
葉子頁被分段之後,由於必須讀取更多的葉子頁才能訪存表頁,因此 I/O 操作成本會增加。
• 物理索引頁的順序不再與這些頁上的鍵順序相匹配(此稱為不良集群索引)。
葉子頁出現不良集群情況後,順序預取操作的效率將降低,因此會導致更多的 I/O 等待。
• 形成的索引大於其最有效的級別數。
在此情況下應重組索引。
如果在創建索引時設置了 MINPCTUSED 參數,則在刪除某個鍵且可用空間小於指定的百分比時,資料庫伺服器會自動合並索引葉子頁。此過程稱為聯機索引整理碎片。但是,要復原索引集群和可用空間以及降低葉級別,請使用下列其中一種方法:
• 刪除並重新創建索引。
• 使用 REORG INDEXES 命令聯機重組索引。
因為此方法允許用戶在重建表索引期間對表進行讀寫操作,所以在生產環境中可能需要選擇此方法。
• 使用允許離線重組表及其索引的選項運行 REORG TABLE 命令。
聯機索引重組
在使用 ALLOW WRITE ACCESS 選項運行 REORG INDEXES 命令時,如果同時允許對指定的表進行讀寫訪問,則會重建該表的所有索引。進行重組時,對基礎表所作的任何將會影響到索引的更改都將記錄在 DB2® 日誌中。另外,如果有任何內部內存緩沖區空間可供使用,則還將這些更改放在這樣的內存空間中。重組將處理所記錄的更改以便在重建索引時與當前寫活動保持同步更新。內部內存緩沖區空間是根據需要從實用程序堆中分配的指定內存區域,它用來存儲對正在創建或重組的索引所作的更改。使用內存緩沖區空間使索引重組操作能夠通過這樣的方式來處理更改,即先直接從內存讀取,然後讀取日誌(如有必要),但讀取日誌的時間要晚得多。在重組操作完成後,將釋放所分配的內存。重組完成後,重建的索引可能不是最佳集群的索引。如果為索引指定 PCTFREE,則在重組期間,每頁上均會保留相應百分比的空間。
對於分區表,支持對各個索引進行聯機索引重組和清除。要對各個索引進行重組,指定索引名:REORG INDEX index_name for TABLE table_name
對於空間索引或多維集群(MDC)表,不支持採用 ALLOW WRITE 方式的聯機索引重組。
註: REORG INDEXES 命令的 CLEANUP ONLY 選項不能完全重組索引。CLEANUP ONLY ALL 選項將除去那些標記為「刪除」且被認為要落實的鍵。此外,它還將釋放所有標記為「刪除」且被認為要落實的鍵所在的頁。在釋放頁後,相鄰的葉子頁將會合並,前提是這樣做可以在合並頁上至少留出 PCTFREE 可用空間。PCTFREE 是指在創建索引時為其定義的可用空間百分比。CLEANUP ONLY PAGES 選項僅刪除那些標記為「刪除」且被認為要落實的所有鍵所在的頁。
使用 CLEANUP ONLY 選項對分區表的索引進行重組時,支持任何訪問級別。如果未指定 CLEANUP ONLY 選項,則預設訪問級別 ALLOW NO ACCESS 是唯一支持的訪問級別。
REORG INDEXES 具有下列要求:
• 對索引和表具有 SYSADM、SYSMAINT、SYSCTRL 或 DBADM 許可權,或者具有 CONTROL 特權。
• 用於存儲索引的表空間的可用空間數量等於索引的當前大小
在發出 CREATE TABLE 語句時,考慮在大型表空間中重組索引。
• 其他日誌空間
REORG INDEXES 需要記錄其活動。因此,重組可能會失敗,尤其是在系統繁忙和記錄其他並發活動時。
註: 如果具有 ALLOW NO ACCESS 選項的 REORG INDEXES ALL 命令運行失敗,則會標記索引無效並且此項操作不可撤銷。但是,如果具有 ALLOW READ ACCESS 選項的 REORG 命令或具有 ALLOW WRITE ACCESS 選項的 REORG 命令運行失敗,則可以復原原來的索引對象。

七、 附:收集和更新統計信息的准則

RUNSTATS 命令收集表、索引和統計信息視圖的統計信息,以為優化器提供准確信息進行訪問方案選擇。
在下列情況下,使用 RUNSTATS 實用程序來收集統計信息:
• 當數據已裝入表中且已創建適當的索引時。
• 當在表中創建新的索引時。如果自從上次在表中運行 RUNSTATS 以來尚未修改表,則只需要對新的索引執行 RUNSTATS。
• 當一個表已用 REORG 實用程序重組時。
• 當通過數據修改、刪除和插入已大量更新表及其索引時。(此處所指的「大量」可能表示有 10% 到 20% 的表和索引數據受影響。)
• 在綁定性能非常重要的應用程序之前
• 當您想要比較當前和先前統計信息時。如果定期更新統計信息,則可以及早發現性能問題。
• 當預取量更改時。
• 當使用了 REDISTRIBUTE DATABASE PARTITION GROUP 實用程序時。
注:
在先前版本的 DB2® 中,此命令使用了 NODEGROUP 關鍵字,而不是 DATABASE PARTITION GROUP 關鍵字。
• 使用 RUNSTATS 實用程序來收集關於 XML 列的統計信息。 使用 RUNSTATS 僅收集 XML 列的統計信息時,將保留 LOAD 或上一次執行 RUNSTATS 實用程序已收集的非 XML 列的現有統計信息。如果先前已收集關於一些 XML 列的統計信息,則在當前命令未收集關於該 XML 列的統計信息時,將刪除先前收集的 XML 列的統計信息;在當前命令收集了關於該 XML 列的統計信息時,將替換先前收集的 XML 列的統計信息。
要提高 RUNSTATS 性能並保存用來存儲統計信息的磁碟空間,考慮僅指定應該收集其數據分布統計信息的列。
理論上,您應在運行統計信息之後重新綁定應用程序。如果查詢優化器具有新的統計信息,則它可以選擇不同的訪問方案。
如果您沒有足夠的時間一次收集全部的統計信息,則可以運行 RUNSTATS 來每次僅更新幾個表、索引或統計信息視圖的統計信息,並輪流完成該組對象。如果對選擇性部分更新運行 RUNSTATS 期間由於表上的活動而產生了不一致性,則在查詢優化期間將發出警告消息(SQL0437W,原因碼 6)。例如,如果執行 RUNSTATS 來收集表分布統計信息,以及在某個表活動後,再次執行 RUNSTATS 來收集該表的索引統計信息,則可能發生這種情況。如果由於表上的活動產生了不一致並且在查詢優化期間檢測到這些不一致,則發出該警告消息。當發生這種情況時,應再次運行 RUNSTATS 來更新分布統計信息。
要確保索引統計信息和表同步,執行 RUNSTATS 來同時收集表和索引統計信息。索引統計信息保留自上次運行 RUNSTATS 以來收集的大部分表和列的統計信息。如果自上次收集該表的統計信息以來已對該表做了大量修改,則只收集該表的索引統計信息將使兩組統計信息不能在所有節點上都同步。
對生產系統調用 RUNSTATS 可能會對生產工作負載的性能產生負面影響。RUNSTATS 實用程序現在支持調速選項,在執行較高級別的資料庫活動期間,可以使用調速選項來限制執行 RUNSTATS 的性能影響。
在分區資料庫環境中收集表的統計信息時,RUNSTATS 僅收集執行該命令的資料庫分區上的表的統計信息。將此資料庫分區的 RUNSTATS 結果推廣到其他資料庫分區。如果執行 RUNSTATS 的資料庫分區不包含特定表的一部分,則將請求發送到資料庫分區組中包含該表一部分的第一個資料庫分區。
收集統計信息視圖的統計信息時,將收集所有包含該視圖引用的基本表的資料庫分區的統計信息。
考慮以下技巧來提高 RUNSTATS 的效率和已收集的統計信息的有效性:
• 僅對用來連接表的列或 WHERE、GROUP BY 以及查詢的類似子句中的列收集統計信息。如果對這些列建立了索引,則可以用 RUNSTATS 命令的 ONLY ON KEY COLUMNS 子句指定列。
• 為特定表和表中特定列定製 num_freqvalues 和 num_quantiles 的值。
• 使用 SAMPLE DETAILED 子句收集 DETAILED 索引統計信息,以減少對詳細的索引統計信息執行的後台計算量。SAMPLE DETAILED 子句減少收集統計信息所需要的時間,並在大多數情況下產生足夠的精度。
• 當創建已填寫的表的索引時,添加 COLLECT STATISTICS 子句來在創建索引時創建統計信息。
• 當添加或除去了大量錶行時,或如果更新了收集其統計信息的列中的數據,則再次執行 RUNSTATS 來更新統計信息。
• 因為 RUNSTATS 僅收集單個資料庫分區的統計信息,所以,如果數據不是在所有資料庫分區中一致分發的,則統計信息將不太准確。如果您懷疑存在變形數據分發,則您可能想要在執行 RUNSTATS 之前使用 REDISTRIBUTE DATABASE PARTITION GROUP 命令來在各資料庫分區之間再分發數據。
八、 附:使用 CLP 捕獲資料庫運行狀況快照

可從 CLP 使用 GET HEALTH SNAPSHOT 命令來捕獲運行狀況快照。該命令語法支持檢索運行狀況監視器監視的不同對象類型的運行狀況快照信息。
先決條件
必須具有實例連接才能捕獲運行狀況快照。如果沒有實例連接,則創建預設實例連接。要獲取遠程實例的快照,必須先連接至該實例。
過程
要使用 CLP 捕獲資料庫運行狀況快照
1. 從 CLP 發出帶有期望參數的 GET HEALTH SNAPSHOT 命令。
在以下示例中,將在啟動資料庫管理器之後立即捕獲資料庫管理器級別運行狀況快照。
db2 get health snapshot for dbm

2. 對於分區資料庫系統,可為特定分區捕獲專門的資料庫快照,或者為所有分區捕獲全局的資料庫快照。要對特定分區(如分區號 2)上的資料庫捕獲運行狀況快照,請發出以下命令:
db2 get health snapshot for db on sample at dbpartitionnum 2
要對所有分區上的所有應用程序捕獲資料庫快照,請發出以下命令:
db2 get health snapshot for db on sample global
以下命令捕獲的運行狀況快照帶有附加詳細信息,包括公式、附加信息和運行狀況指示器歷史記錄:
db2 get health snapshot for db on sample show detail

3. 對於基於集合狀態的運行狀況指示器,可對所有集合對象捕獲資料庫快照,而不考慮這些對象的狀態。常規 GET HEALTH SNAPSHOT FOR DB 命令返回所有集合對象,這些對象需要針對所有基於集合狀態的運行狀況指示器的警報。
要對列示了所有集合對象的資料庫捕獲運行狀況快照,請發出以下命令:
db2 get health snapshot for db on sample with full collection

⑼ 求助各位大神,小弟初學IBM DB2,求助關於資料庫創建問題,多謝!!

在命令行處理器中只能執行資料庫命令,在命令窗口中可以執行操作系統命令。在命令行處理器中執行quit命令,就會返回命令窗口。在命令窗口執行db2 ,就可進行命令行處理器。在命令窗口執行db2命令時,在前面加db2並用""把sql語句包起來。創建資料庫可以查詢一下幫助在命令行處理器中執行 ? create db回車。或在命令窗口執行db2 ? create db
查詢錯誤db2 ? sql1024N
DB2錯誤分為sqlcode 和sqlstate 1024N或1052N為sqlcode
C:\Program Files\IBM\SQLLIB\BIN>db2 ? sql1024n

SQL1024N 不存在資料庫連接。

說明:

沒有與資料庫連接。除非先前執行了 SQL CONNECT,否則不能處理其他 SQL 語句


無法處理該命令。

用戶響應:

如果與資料庫斷開連接時發生錯誤,那麼繼續處理。如果在另一條 SQL 語句中發
生錯誤,那麼發出 SQL CONNECT 語句,並重新提交該命令或語句。

sqlcode:-1024

sqlstate:08003

⑽ db2如何查詢表結構

1、打開db2資料庫連接工具。