DB2入門教程筆記(二)

創建實例: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 db2
DB2_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 stop
SQL4407W  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 mydb1
DB20000I  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 Creation
2. Create new entry in /etc/services
3. Update DBM configuration file for TCP/IP
4. Auto start DB2 Instance
5. ReStart DB2 Instance
發佈了51 篇原創文章 · 獲贊 7 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章