db2實例資料庫
一、安裝前准備工作:
1、對於Linux系統,至ibm網站下載軟體包
2、Linux內核設置:編輯/etc/sysctl.conf文件
3、創建相應用戶以及組:
4、創建相應目錄用於存放db2的數據文件以及日誌文件:
這里在根下面創建一個db2總目錄,然後創建了一個15G大小的邏輯卷掛載/db2下面,然後在其下面創建相應的文件夾。
database目錄存放資料庫實例
db2log1存放db2的主日誌文件
db2log2存放鏡像日誌文件
db2temp存放db2臨時表空間
db2用戶的家目錄的位置
二、安裝過程:
安裝可以使用root用戶安裝也可以使用非root用戶安裝,這里就直接使用root用戶安裝了。
以root身份執行db2setup,會彈出以下畫面:
這里選擇安裝企業版,點擊install new:
下一步之後,就出現創建用戶的畫面:
最後點擊finish開始安裝過程。
三、創建資料庫:
如果在安裝過程中,沒有創建資料庫,則後續可以使用db2cc命令創建資料庫。這是一個基於圖形界面的管理工具,使用起來也非常方便。執行db2cc後,會彈出以下畫面:
點擊右側的Create New Database,創建資料庫:
指定資料庫名稱以及存放位置,選中Let DB2 manage my storage,下一步:
點擊finish開始創建。默認db2會創建以下三個表空間:
(1)、catalog table space用於存放catalog表。
(2)、user table space存放所有表和索引數據。
(3)、temporary table space臨時數據的存放位置。
創建完成後,會看到如下畫面:
此時還沒有連接到xzxjdb1上,點擊右側的connect進行連接。連接之後,會看到右側多了好多信息:
使用命令行查看當前資料庫中表空間信息:
四、DB2的簡單管理:
1、查看錶空間信息:
2、查看錶信息:
3、查看當前實例下的所有資料庫信息:
4、停止資料庫:
5、啟動資料庫:
6、設置實例自動啟動:
《Linux就該這么學》里有相關介紹,建議看看。
2. 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
3. 如何啟動DB2資料庫管理器
在一個DB2 實例下,可以創建多個database(具體每個實例下可以創建多少個database,可以通過DB2 GET DBM CFG查看.一旦建立了資料庫之後,就可以對其進行操作,然而,在向資料庫中建立對象或訪問資料庫中的對象(數據)之前,必須先知道如何啟動和停止資料庫.
本小節簡單介紹了db2 database通過command line的方式如何實現啟動和停止.
激活資料庫
如果在database沒有激活之前,就在應用中使用connect to database_name或隱式連接,那麼應用就必須要進行等待,知道資料庫管理器啟動了你要連接的資料庫.一般第一個應用會引發等待資料庫管理器執行資料庫啟動的所有開銷.
我們也可以使用activate database database_name這樣的命令啟動特定的資料庫.這個命令就會免除第一個應用程序連接上來的時候等候資料庫初始化所花費的時間。一般情況下,DB2 DBA會提前激活所有必要的資料庫.
注意:1)如果發出activate database命令的應用已經與一個database建立了活動的資料庫連接,就回返回錯誤消息.
2)如果需要重新啟動(restart)的資料庫接受了一個activate database命令,那麼這個activate database命令就會象connect to 或隱式連接一樣工作.
3)如果資料庫配置了
啟用的自動重新啟動 (AUTORESTART) = ON
那麼在activate database命令對其初始化之前,資料庫會重新啟動.
察看指定資料庫的配置參數
--默認
DB2 GET DB CFG FOR study
--分屏顯示
DB2 GET DB CFG FOR study | More
--將顯示結果存入study.txt 文件中
DB2 GET DB CFG FOR study > study.txt
下面是一個示例,我在當前DB2實例下,創建了3個database,我利用activate命令挨個將他們激活
D:DB2BIN>db2 db2start
DB20000I DB2START命令成功完成。
D:DB2BIN>db2 list database directory
系統資料庫目錄
目錄中的條目數 = 3
資料庫 1 條目:
資料庫別名 = TEST
資料庫名稱 = TEST
本地資料庫目錄 = D:DB2test
資料庫發行版級別 = c.00
注釋 = test
目錄條目類型 = 間接
目錄資料庫分區號 = 0
備用伺服器主機名 =
備用伺服器埠號 =
資料庫 2 條目:
資料庫別名 = BANK
資料庫名稱 = BANK
本地資料庫目錄 = D:db2bank
資料庫發行版級別 = c.00
注釋 = bank
目錄條目類型 = 間接
目錄資料庫分區號 = 0
備用伺服器主機名 =
備用伺服器埠號 =
資料庫 3 條目:
資料庫別名 = STUDY
資料庫名稱 = STUDY
本地資料庫目錄 = D:db2study
資料庫發行版級別 = c.00
注釋 = STUDY
目錄條目類型 = 間接
目錄資料庫分區號 = 0
備用伺服器主機名 =
備用伺服器埠號 =
D:DB2BIN>db2 list active databases
SQL1611W 「資料庫系統監視器」沒有返回任何數據。
D:DB2BIN>db2 activate database study
DB20000I ACTIVATE DATABASE命令成功完成。
D:DB2BIN>db2 list active databases
活動資料庫
資料庫名稱 = STUDY
當前連接的應用程序 = 0
資料庫路徑 = D:db2studyDB2NODE0000SQL00001
D:DB2BIN>db2 activate database bank
DB20000I ACTIVATE DATABASE命令成功完成。
D:DB2BIN>db2 list active databases
活動資料庫
資料庫名稱 = STUDY
當前連接的應用程序 = 0
資料庫路徑 = D:db2studyDB2NODE0000SQL00001
資料庫名稱 = BANK
當前連接的應用程序 = 0
資料庫路徑 = D:db2bankDB2NODE0000SQL00001
D:DB2BIN>db2 activate database test
DB20000I ACTIVATE DATABASE命令成功完成。
D:DB2BIN>db2 list active databases
活動資料庫
資料庫名稱 = STUDY
當前連接的應用程序 = 0
資料庫路徑 = D:db2studyDB2NODE0000SQL00001
資料庫名稱 = BANK
當前連接的應用程序 = 0
資料庫路徑 = D:db2bankDB2NODE0000SQL00001
資料庫名稱 = TEST
當前連接的應用程序 = 0
資料庫路徑 = D:DB2testDB2NODE0000SQL00001
D:DB2BIN>停止資料庫
由activate database命令初始化的資料庫可以由deactivate database命令關閉,也可以通過stop database manager(或db2stop)命令終止資料庫管理器來關閉.
如果使用activate
database命令初始化一個資料庫,那麼最後一個與資料庫斷開連接的應用就不會關閉資料庫.必須要使用deactivate
database.在這種情況下,stop database manager(或db2stop)會關閉資料庫,也會終止實例.
如果使用connect
to 或隱式地連接啟動資料庫,然後再由另外一個應用對相同的資料庫發出activate database命令,那麼就必須使用deactivate
database命令關閉資料庫.如果沒有使用activate
database啟動資料庫,那麼當最後一個應用斷開與資料庫連接的時候,資料庫就會關閉.
示例一:使用connect to方式啟動的資料庫
D:DB2BIN>db2 list active databases
SQL1611W 「資料庫系統監視器」沒有返回任何數據。
D:DB2BIN>db2 connect to study --連接到study資料庫,將自動激活study資料庫
資料庫連接信息
資料庫伺服器 = DB2/NT 9.5.0
SQL 授權標識 = ZHANGRP
本地資料庫別名 = STUDY
D:DB2BIN>db2 list active databases
活動資料庫
資料庫名稱 = STUDY
當前連接的應用程序 = 1
資料庫路徑 = D:db2studyDB2NODE0000SQL00001
說明:資料庫被激活,並有一個應用連接上來(就上面的connect to study操作)
D:DB2BIN>db2 connect reset --斷開連接
DB20000I SQL命令成功完成。
D:DB2BIN>
D:DB2BIN>db2 list active databases
SQL1611W 「資料庫系統監視器」沒有返回任何數據。
D:DB2BIN>
說明:可以發現,上面的連接斷開後,資料庫study也自動停止(因為這個study資料庫是通過connect to 的方式激活的)
示例二:使用activate database方式啟動的資料庫
D:DB2BIN>db2 list active databases --這個時候沒有啟動的資料庫
SQL1611W 「資料庫系統監視器」沒有返回任何數據。
D:DB2BIN>db2 activate database study --用activate database激活study資料庫
DB20000I ACTIVATE DATABASE命令成功完成。
D:DB2BIN>db2 list active databases --可以看到study數據已經激活,但沒有應用連接上來
活動資料庫
資料庫名稱 = STUDY
當前連接的應用程序 = 0
資料庫路徑 = D:db2studyDB2NODE0000SQL00001
D:DB2BIN>db2 connect to study --發起一個連接到study資料庫
資料庫連接信息
資料庫伺服器 = DB2/NT 9.5.0
SQL 授權標識 = ZHANGRP
本地資料庫別名 = STUDY
D:DB2BIN>db2 list active databases --再看一下活動的資料庫,發現study 資料庫上有一個應用連接上來了
活動資料庫
資料庫名稱 = STUDY
當前連接的應用程序 = 1
資料庫路徑 = D:db2studyDB2NODE0000SQL00001
D:DB2BIN>db2 connect reset --關閉剛才那個連接,看看資料庫是不是會自動關閉
DB20000I SQL命令成功完成。
D:DB2BIN>db2 list active databases --資料庫依然啟動,雖然沒有了任何連接
活動資料庫
資料庫名稱 = STUDY
當前連接的應用程序 = 0
資料庫路徑 = D:db2studyDB2NODE0000SQL00001
D:DB2BIN>db2 deactivate database study --使用deactivate database命令關閉資料庫
DB20000I DEACTIVATE DATABASE命令成功完成。
D:DB2BIN>
D:DB2BIN>db2 list active databases
SQL1611W 「資料庫系統監視器」沒有返回任何數據。
D:DB2BIN>
4. 如何查看db2的資料庫的日誌文件
查看db2的資料庫的日誌文件:
實例日誌在sqllib/db2mp/db2diag.log,記錄起停、出錯警告信息。
資料庫的事務日誌通過db2 get db cfg for <dbname>,看NEWLOGPATH下面一行。
(4)db2實例資料庫擴展閱讀:
在日常DB2的維護中,transaction log full是比較常見的問題,日誌空間使用情況也是我們比較重視的問題,如果日誌是單獨的文件系統分區,在操作系統上即可看到日誌空間使用情況,對日誌使用情況進行監控,可以看到如下信息:
$ df -g
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/db2inst1_log01 60.00 54.50 10% 1458 1% /db2inst1_log01