創建實例:db2icrt
root@nimei:/opt/ibm/db2/V9.7/instance# ls
common daslist dasutil db2ckupgrade db2iauto db2icrt db2idrop db2ilist db2instcfg db2isetup db2istrt db2iupgrade db2prechk native
dascrt dasmigr db2chkf db2clpid db2icknm db2idbm db2iexec db2imchk db2ipcld db2isrv db2iuadm db2iutil db2uit
dasdrop dasupdt db2ckmig db2dbmchk db2ickts db2idefs db2iinfo db2imigr db2iset db2istop db2iupdt db2iver disp_msg
root@nimei:/opt/ibm/db2/V9.7/instance# ./db2icrt -u db2fenc1 db2inst1
DBI1070I Program db2icrt completed successfully.
注意:必須有和實例同名的用戶和用戶組。
db2inst1@nimei:~$ cat .bashrc
# The following three lines have been added by UDB DB2.
if [ -f /home/db2inst1/sqllib/db2profile ]; then
. /home/db2inst1/sqllib/db2profile
fi
可以看到實例目錄中的配置文件中存在了上面的一段代碼
db2inst1@nimei:~$ ps -elf|grep db2inst1
4 S root 14121 12824 0 80 0 - 17706 wait 09:53 pts/12 00:00:00 su - db2inst1
4 S db2inst1 14122 14121 0 80 0 - 7022 wait 09:53 pts/12 00:00:00 -su
4 S root 19054 10784 0 80 0 - 17705 wait 13:46 pts/12 00:00:00 su - db2inst1
4 S db2inst1 19055 19054 0 80 0 - 7024 wait 13:46 pts/12 00:00:00 -su
0 R db2inst1 19855 19055 0 80 0 - 5661 - 13:50 pts/12 00:00:00 ps -elf
0 S db2inst1 19856 19055 0 80 0 - 3985 pipe_w 13:50 pts/12 00:00:00 grep --color=auto db2inst1
4 S root 22774 21617 0 80 0 - 17705 wait 10:31 pts/10 00:00:00 su - db2inst1
4 S db2inst1 22775 22774 0 80 0 - 7024 wait 10:31 pts/10 00:00:00 -su
0 S db2inst1 23379 2667 0 80 0 - 37263 msgrcv 10:32 pts/10 00:00:00 /home/db2inst1/sqllib/bin/db2bp 22775A1004 5 A
注意:ps -e表示列出所有的進程;-l表示長格式顯示;-f表示完整格式的顯示
由上可知有很多當前實例的進程
root@nimei:/home/db2inst1# netstat -anp | grep db2
tcp 0 0 0.0.0.0:6666 0.0.0.0:* LISTEN 10656/db2sysc 0
當前實例的端口是6666
netstat -a表示列出所有的監聽的和非監聽的套接字,-n表示以數字形式顯示地址和端口號;-p表示顯示出套接字所屬進程的PID
db2inst1@nimei:~$ db2 get dbm cfg|grep db2
Java Development Kit installation path (JDK_PATH) = /home/db2inst1/sqllib/java/jdk64
Diagnostic data directory path (DIAGPATH) = /home/db2inst1/sqllib/db2dump/
Size of rotating db2diag & notify logs (MB) (DIAGSIZE) = 0
Default database path (DFTDBPATH) = /home/db2inst1
db2start/db2stop timeout (min) (START_STOP_TIME) = 10
可以查看實例參數,在實例參數中可以查看數據庫的默認安裝路經
3.4 特別注意:
手動建立的實例並不會像GUI建立的實例那樣,會自動設定實例參數。 如果要使實例能夠被正確attach,必須設定三個地方:
更改環境變量:
[db2inst1@ibm1 ~]$ db2set DB2COMM=tcpip
更改實例參數:
[db2inst1@ibm1 ~]$ db2 update dbm cfg using SVCENAME DB2_db2inst1
DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed
successfully.
[db2inst1@ibm1 ~]$ db2 terminate
DB20000I The TERMINATE command completed successfully.
terminate:斷開與數據庫的連接
在 /etc/services 確認有與SVCENAME對應的條目
db2inst1@nimei:~$ cat /etc/services|grep db2DB2_db2inst 60000/tcp
DB2_db2inst_1 60001/tcp
DB2_db2inst_2 60002/tcp
DB2_db2inst_END 60003/tcp
DB2_db2inst1 60004/tcp
DB2_db2inst1_1 60005/tcp
DB2_db2inst1_2 60006/tcp
DB2_db2inst1_END 60007/tcp
可以看到剛纔的服務實例已經創建成功
[root@nimei ~]# /opt/ibm/db2/V9.7/instance/db2iauto -on db2inst1
讓實例跟隨着系統啓動一塊啓動
DAS 是Database Administration Service的縮寫,如果某個DB2實例希望被遠程管理,那麼數據庫本地必須配置DAS,才能被遠端的Control Center進行註冊,類似於Oracle 9i enterprise console中的agent (oracle 9i之後就淘汰了)
linux上DAS的管理員是dasusr1, 屬於組dasadm1.
DAS的創建與刪除、更新均是由root完成的,基本上都是 /opt/ibm/db2/V10.1/instance/ 下das開頭的命令
root@nimei:/opt/ibm/db2/V9.7/instance# groupadd dasusr1
root@nimei:/opt/ibm/db2/V9.7/instance# useradd -m -s /bin/bash -d /home/dasuser1 -g dasusr1 dasuser1
root@nimei:/opt/ibm/db2/V9.7/instance# ./dascrt -u dasuser1
SQL4406W The DB2 Administration Server was started successfully.
DBI1070I Program dascrt completed successfully.
linux下啓動與關閉DAS需要具有DASADM權限的用戶登錄操作,因此要使用dasuser1:
dasuser1@nimei:~$ db2admin stopSQL4407W The DB2 Administration Server was stopped successfully.
dasuser1@nimei:~$ db2admin start
SQL4406W The DB2 Administration Server was started successfully.
1. 數據庫邏輯上有大到小是 instance - database - tablespace - container - extent - datapage
2. container實際上類似於Oracle datafile的概念。一個tablespace可以跨多個container,
3. 其中extent是由連續的datapage組成 (類似Oracle中,extent與block的關係),一個extent不能跨表!是寫container的最小單位
4. extentsize 實際上是間接指定其包含多少個datapage
5. datapage是DB2最小IO單位 (類似Oracle 的block),其size類似 Oracle的blocksize,也有4k 8k 16k 32k 幾種
數據庫操作:
創建數據庫後,本地數據庫目錄結構如下:
db2inst1@nimei:~$ db2 create database mydb1DB20000I The CREATE DATABASE command completed successfully.
db2inst1@nimei:~$ ls
db2inst1 examples.desktop sqllib
db2inst1@nimei:~$ cd db2inst1/
db2inst1@nimei:~/db2inst1$ ls
NODE0000
db2inst1@nimei:~/db2inst1$ cd NODE0000/
重要文件講解:
1. SQLBP.1 和SQLBP.2 包含緩衝池信息。這兩個文件互爲備份。
2. SQLSPCS.1 和SQLSPCS.2 文件中包含表空間信息。這兩個文件互爲備份。
3. SQLSGF.1 和 SQLSGF.2 包含與數據庫的自動存儲有關的存儲路徑信息,兩個文件互爲備份。
4. SQLDBCONF 包含數據庫配置信息,切勿手動編輯此文件。
5. SQLLOGCTL.LFH 是日誌控制文件,崩潰恢復處理過程中使用這些文件的信息確定要在日誌中退回多遠開始崩潰恢復。
6. DB2RHIST.ASC 歷史記錄文件及其備份 DB2RHIST.BAK 中包含關於備份,復原,表裝入,表重組,表空間改變和其它數據庫更改的歷史記錄。
7. SQLINSLK 確保一個數據庫只能由數據庫管理器的一個實例使用。
總結:手動創建實例的
1. DB2 Instance Creation2. Create new entry in /etc/services
3. Update DBM configuration file for TCP/IP
4. Auto start DB2 Instance
5. ReStart DB2 Instance