P. 1
Nhap Mon CSDL DB2

Nhap Mon CSDL DB2

|Views: 42|Likes:
Published by ttkh23

More info:

Published by: ttkh23 on Oct 15, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

11/03/2011

pdf

text

original

Sections

  • Thông cáo và Nhãn hi u hàng hóa
  • Ai nên c cu n sách này?
  • C u trúc c a quy n sách này nh th nào?
  • M t quy n sách do c ng ng làm và giành cho c ng ng
  • Tác gi và nh ng ng i óng góp
  • L i c m n
  • L i c m n b n ti ng Vi t
  • L i nói u
  • Ph n I – T ng quan và Cài t
  • Ch ng 1 - DB2 Express-C là gì?
  • 1.1 T do phát tri n, tri n khai và phân ph i…không có gi i h n!
  • 1.2 H tr k thu t
  • 1.3 Các máy ch DB2
  • 1.4 Máy khách DB2
  • 1.5 T do phát tri n ph n m m ng d ng
  • 1.6 Phiên b n và n b n DB2 (version and edition)
  • 1.7 Chuy n sang n b n DB2 khác
  • 1.8 B o trì DB2 Express-C
  • 1.9 M t s ph n m m mi n phí liên quan
  • 1.9.1 DB2 Developer Workbench (công c phát tri n)
  • 1.9.2 DB2 9 Embedded Application Server (máy ch nhúng)
  • 1.9.3 DB2 9 Net Search Extender (m r ng tìm ki m trên m ng)
  • 1.9.4 B công c b t u Rails cho DB2
  • 1.9.5 B công c b t u Web 2.0 dành cho DB2
  • Ch ng 2 – Các tính n ng liên quan và các s n ph!m
  • 2.1 Các tính n ng bao hàm trong ng ký s" d ng DB2 Express-C
  • 2.1.1 Các ch ng trình s"a l i
  • 2.1.2 Tính s#n sàng cao và khôi ph c sau s c (HADR)
  • 2.1.3 Kh n ng tái t o d li u (di trú d li u)
  • 2.2 Các tính n ng không có trong b n DB2 Express-C
  • 2.2.1 Phân vùng c s d li u
  • 2.2.2 B t p trung k t n i
  • 2.2.3 B m r ng không gian $a lý
  • 2.2.4 B ki m soát truy v n
  • 2.3 Các s n ph!m có tr phí liên quan n DB2
  • 2.3.1 DB2 Connect
  • 2.3.2 WebSphere Federation Server
  • 2.3.3 WebSphere Replication Server
  • Ch ng 3 - Cài t DB2
  • 3.1 Các i u ki n tr c khi cài t
  • 3.2 Quy n cài t h i u hành
  • 3.4 Cài t hàng lo t (Silent Install)
  • Bài t p nhanh #1: Cài t DB2 Express-C và t o ra c s d li u m%u
  • Ch ng 4 - Các công c DB2
  • 4.1 Trung tâm i u khi n (Control Center)
  • 4.2 Nh p l nh tr c ti p
  • 4.3. Trình tr giúp SQL
  • 4.4 Trình bày nút Show SQL
  • Bài t p nhanh #2 - T o m t CSDL m i v i Trung tâm i u khi n
  • 4.5 T o k$ch b n
  • 4.5.1 Các k$ch b n SQL
  • 4.5.2 Các k$ch b n v i h i u hành
  • Bài t p nhanh #3 – T o m t k$ch b n cài t cho c s d li u EXPRESS
  • 4.6 Trung tâm tác v (Task Center)
  • 4.6.1 C s d li u Tools Catalog
  • 4.7 Nh t ký
  • 4.8 Giám sát tình tr ng (health)
  • 4.8.1 Trung tâm tình tr ng
  • Ch ng 5 - Môi tr ng c a DB2
  • 5.1 C u hình DB2
  • 5.1.1 Các bi n môi tr ng
  • 5.1.2 T p c u hình qu n tr$ c s d li u (dbm cfg)
  • 5.1.3 T p c u hình c s d li u (db cfg)
  • 5.2 Máy ch qu n tr$ DB2
  • Ph n II – H c DB2: Qu n tr$ C s d li u
  • Ch ng 6 - Ki n trúc c a DB2
  • 6.1 Mô hình x" lý c a DB2
  • 6.2 Mô hình b nh c a DB2
  • 6.3 Mô hình l u tr c a DB2
  • 6.3.1 Trang và ph m vi
  • 6.3.2 Vùng nh m
  • 6.3.3 Các không gian b ng
  • Ch ng 7 – K t n i máy khách DB2
  • 7.1 Tr giúp c u hình
  • 7.1.1 Nh ng cài t b t bu c trên máy ch
  • 7.1.2 Nh ng cài t c n thi t trên máy khách
  • 7.1.3 T o lý l$ch cho máy khách và máy ch
  • Bài t p nhanh #4 – S" d ng Tr giúp thi t l p c u hình
  • Ch ng 8 - Làm vi c v i các i t ng d li u
  • 8.1 S
  • 8.2 B ng
  • 8.2.1 Ki u d li u
  • 8.2.2 C t khoá chính (Identity columns)
  • 8.2.3 Các t ng tu n t (Sequence object)
  • 8.2.4. Các b ng danh sách h th ng
  • 8.2.5. Khai báo các b ng t m th i
  • Bài t p nhanh #5 - Kh i t o m t b ng m i
  • 8.3 Các khung nhìn (Views)
  • 8.4 Các ch, m c (Index)
  • 8.4.1 Tr giúp thi t k (Design Advisor)
  • 8.5 Tính toàn v.n tham chi u
  • Ch ng 9 – Công c di chuy n d li u
  • 9.1 Công c EXPORT (xu t)
  • 9.2 Công c IMPORT (nh p)
  • 9.3. LOAD (n p)
  • 9.4 Công c db2move
  • 9.5 Công c db2look
  • Bài t p nhanh #6 - Trích xu t DDL t& c s d li u EXPRESS
  • Ch ng 10 – B o m t c s d li u
  • 10.2 Quy n h n
  • 10.3 Quy n qu n tr$ c s d li u DBADM
  • 10.4 Nhóm PUBLIC
  • 10.5 L nh GRANT và REVOKE
  • 10.6 Ki m tra vi c c p quy n và quy n
  • 10.7 Xem xét quy n trên nhóm
  • Bài t p nhanh # 7: Cho phép và h y b+ (phân quy n) quy n ng i s d ng
  • Ch ng 11 – Sao l u và khôi ph c
  • 11.1 Nh t ký c s d li u
  • 11.2 Các ki u nh t ký
  • 11.3 Các ki u ghi nh t ký
  • 11.3.1 Ghi tu n t quay vòng
  • 11.3.2 Nh t ký l u tr
  • 11.4 Nh t ký c s d li u t& Trung tâm i u khi n
  • 11.5 Các tham s c a nh t ký
  • 11.6 Sao l u c s d li u
  • Bài t p nhanh #8 - L p l$ch sao l u
  • 11.7 Khôi ph c c s d li u
  • 11.7.1 Các ki u khôi ph c d li u
  • 11.7.2 Khôi ph c c s d li u
  • 11.8 Các ho t ng khác v i BACKUP và RESTORE
  • Ch ng 12 - Nhi m v b o trì
  • 12.1 REORG, RUNSTATS, REBIND
  • 12.1.1 L nh REORG
  • 12.1.2 L nh RUNSTATS
  • 12.1.3 BIND/REBIND
  • 12.1.4 Các công vi c duy trì t& Trung tâm i u khi n
  • 12.2 Các l a ch n b o trì
  • Bài t p nhanh #9 – C u hình vi c b o trì t ng
  • Ch ng 13 – Truy c p ng th i và khóa
  • 13.1 Các giao d$ch
  • 13.2 Truy c p ng th i
  • 13.3 Các v n khi không ki m tra truy c p ng th i
  • 13.3.1 M t d li u c p nh t
  • 13.3.2 * c v i không cam k t
  • 13.4 Các m c cô l p
  • 13.4.1 * c v i không cam k t
  • 13.4.5 So sánh các m c cô l p d li u
  • 13.4.6 * t m c cô l p
  • 13.5 Khóa leo thang
  • 13.6 Ki m soát khóa
  • 13.7 Ch khóa
  • 13.8 V n khóa ph thu c và phát hi n
  • 13.9 Truy c p ng th i và th c ti n khóa t t nh t
  • Ch ng 14 – Các th t c SQL PL
  • 14.1 DB2 Developer Workbench
  • 14.1.2 T o m t th t c l u trong DWB
  • 14.2 M t s khái ni m v th t c SQL PL:
  • 14.2.1 C u trúc c a th t c
  • 14.2.2 Nh ng thu c tính tùy ch n c a th t c
  • 14.2.3 Các lo i tham s
  • 14.2.4 Chú thích trong th t c SQL PL
  • 14.2.5 Câu l nh ghép
  • 14.2.6 Khai báo bi n
  • 14.2.7 Câu l nh gán
  • 14.3 Các con tr+ (cursor)
  • 14.4 *i u khi n lu ng
  • 14.5 G i th t c
  • 14.6 L i và x" lý i u ki n
  • 14.7 SQL ng
  • 15.1 Hàm n i tuy n SQL
  • 15.2 B%y s ki n (Triggers)
  • 15.2.1 Các lo i b%y s ki n
  • Bài t p nhanh #10 - Kh i t o m t b%y b6ng Trung tâm i u khi n
  • 15.3 Hàm ng i dùng $nh ngh-a (UDF)
  • 15.3.1 Hàm vô h ng
  • 15.3.2 Hàm b ng
  • Bài t p nhanh #11 - Kh i t o UDF s" d ng DB2 Developer Wordbench
  • Ch ng 16 – SQL/XML và XQuery
  • 16.1 S" d ng XML v i các c s d li u
  • 16.2 C s d li u XML
  • 16.2.1 c s d li u h tr XML
  • 16.2.2 C s d li u thu n XML
  • 16.3 XML trong DB2
  • 16.3.1 7u i m c a công ngh pureXML trong DB2 9
  • 16.3.2 Khái ni m c b n v XPath
  • 16.3.3 *$nh ngh-a XQuery
  • 16.3.4 Chèn các tài li u XML
  • 16.3.5 Truy v n d li u XML
  • 16.3.6 N i (join) v i SQL/XML
  • 16.3.7 N i (Join) v i XQuery
  • 16.3.8 Các l nh c p nh t và xóa
  • 16.3.9 Ch, m c XML
  • Bài t p nhanh #12 – SQL/XML và XQuery
  • Ch ng 17 – Phát tri n v i Java, PHP và Ruby
  • 17.1 Phát tri n ng d ng b6ng Java
  • 17.1.1 Trình i u khi n JDBC ki u 2 (type 2)
  • 17.1.2 Trình i u khi n JDBC ki u 4
  • 17.2 Phát tri n ng d ng b6ng PHP
  • A.1 Thêm thông tin v mã các l i
  • A.2 SQLCODE and SQLSTATE
  • A.3 Nh t ký khai báo qu n tr$ DB2
  • A.4 db2diag.log
  • A.5 Theo v t CLI
  • A.6 Kh c ph c và s"a l i trong DB2
  • Các trang web
  • Sách

NHÂP MÔN

DB2 Express-C

Lòi nói dâu: DR. ARVIND KRISHNA

Môt cuôn sách cúa công dông dành cho công dông

KHÔNG CHÍ LÀ..DÜ LIÊU
Nhp môn H qun tr c s d liu DB2

1





























Xuât bán lân dâu (tháng 11 nãm 2007)

Tài liêu này sú dung cho IBM DB2 Express-C phiên bán 9.1 vói hê diêu hành Linux,
UNIX và Windows

Bán quyên thuôc công ty IBM
Nhp môn H qun tr c s d liu DB2

2
Muc Luc
Thông cáo và Nhãn hiêu hàng hóa................................................................................... 7
Ai nên doc cuôn sách này?............................................................................................... 8
Câu trúc cua quyên sách này nhu thê nào?...................................................................... 8
Môt quyên sách do công dông làm và giành cho công dông........................................... 8
Tác gia và nhung nguoi dóng góp ................................................................................... 8
Loi cam on....................................................................................................................... 9
Loi cam on ban tiêng Viêt ............................................................................................. 10
Loi nói dâu..................................................................................................................... 12
Phân I – Tông quan và Cài dàt ....................................................................................... 13
Chuong 1 - DB2 Express-C là gì?................................................................................... 13
1.1 Tu do phát triên, triên khai và phân phôi…không có gioi han!............................... 13
1.2 Hô tro kÿ thuât ......................................................................................................... 14
1.3 Các máy chu DB2.................................................................................................... 14
1.4 Máy khách DB2....................................................................................................... 15
1.5 Tu do phát triên phân mêm ung dung...................................................................... 16
1.6 Phiên ban và ân ban DB2 (version and edition) ...................................................... 16
1.7 Chuyên sang ân ban DB2 khác ................................................................................ 17
1.8 Bao trì DB2 Express-C............................................................................................ 17
1.9 Môt sô phân mêm miên phí liên quan...................................................................... 17
1.9.1 DB2 Developer Workbench (công cu phát triên) ............................................. 17
1.9.2 DB2 9 Embedded Application Server (máy chu nhúng) ................................. 18
1.9.3 DB2 9 Net Search Extender (mo rông tìm kiêm trên mang) ............................ 18
1.9.4 Bô công cu bát dâu Rails cho DB2................................................................... 18
1.9.5 Bô công cu bát dâu Web 2.0 dành cho DB2..................................................... 18
Chuong 2 – Các tính nàng liên quan và các san phâm................................................. 19
2.1 Các tính náng bao hàm trong dáng ký su dung DB2 Express-C ............................. 20
2.1.1 Các chuong trình sua lôi ................................................................................... 20
2.1.2 Tính sán sàng cao và khôi phuc sau su cô (HADR) ......................................... 20
2.1.3 Kha náng tái tao du liêu (di trú du liêu)............................................................ 20
2.2 Các tính náng không có trong ban DB2 Express-C................................................. 21
2.2.1 Phân vùng co so du liêu.................................................................................... 21
2.2.2 Bô tâp trung kêt nôi........................................................................................... 21
2.2.3 Bô mo rông không gian dia lý .......................................................................... 22
2.2.4 Bô kiêm soát truy vân ....................................................................................... 22
2.3 Các san phâm có tra phí liên quan dên DB2. ........................................................... 22
2.3.1 DB2 Connect..................................................................................................... 22
2.3.2 WebSphere Federation Server .......................................................................... 22
2.3.3 WebSphere Replication Server ......................................................................... 23
Chuong 3 - Cài dàt DB2.................................................................................................. 24
3.1 Các diêu kiên truoc khi cài dát ................................................................................ 24
3.2 Quyên cài dát hê diêu hành...................................................................................... 24
3.3 Cài dát theo huong dân tung buoc........................................................................... 25
3.4 Cài dát hàng loat (Silent Install) .............................................................................. 28
Bài tâp nhanh #1: Cài dát DB2 Express-C và tao ra co so du liêu mâu........................ 30
Chuong 4 - Các công cu DB2.......................................................................................... 32
4.1 Trung tâm diêu khiên (Control Center) ................................................................... 33
4.2 Nhâp lênh truc tiêp................................................................................................... 36
4.3. Trình tro giúp SQL................................................................................................. 38
4.4 Trình bày nút Show SQL......................................................................................... 40
Nhp môn H qun tr c s d liu DB2

3
Bài tâp nhanh #2 - Tao môt CSDL moi voi Trung tâm diêu khiên .............................. 40
4.5 Tao kich ban............................................................................................................. 42
4.5.1 Các kich ban SQL............................................................................................. 42
4.5.2 Các kich ban voi hê diêu hành.......................................................................... 44
Bài tâp nhanh #3 – Tao môt kich ban cài dát cho co so du liêu EXPRESS.................. 45
4.6 Trung tâm tác vu (Task Center) ............................................................................... 48
4.6.1 Co so du liêu Tools Catalog ............................................................................. 48
4.7 Nhât ký..................................................................................................................... 49
4.8 Giám sát tình trang (health) ..................................................................................... 51
4.8.1 Trung tâm tình trang ......................................................................................... 51
Chuong 5 - Môi truòng cua DB2................................................................................... 54
5.1 Câu hình DB2 .......................................................................................................... 62
5.1.1 Các biên môi truong ......................................................................................... 63
5.1.2 Têp câu hình quan tri co so du liêu (dbm cfg).................................................. 63
5.1.3 Têp câu hình co so du liêu (db cfg) .................................................................. 65
5.1.4 Dáng ký lý lich DB2 (profile). .......................................................................... 66
5.2 Máy chu quan tri DB2.............................................................................................. 67
Phân II – Hoc DB2: Quan tri Co so dü liêu .................................................................. 68
Chuong 6 - Kiên trúc cua DB2 ....................................................................................... 68
6.1 Mô hình xu lý cua DB2 ........................................................................................... 68
6.2 Mô hình bô nho cua DB2......................................................................................... 69
6.3 Mô hình luu tru cua DB2......................................................................................... 70
6.3.1 Trang và pham vi .............................................................................................. 70
6.3.2 Vùng nho dêm................................................................................................... 70
6.3.3 Các không gian bang......................................................................................... 73
Chuong 7 – Kêt nôi máy khách DB2.............................................................................. 77
7.1 Tro giúp câu hình..................................................................................................... 77
7.1.1 Nhung cài dát bát buôc trên máy chu ............................................................... 77
7.1.2 Nhung cài dát cân thiêt trên máy khách............................................................ 79
7.1.3 Tao lý lich cho máy khách và máy chu............................................................. 82
Bài tâp nhanh #4 – Su dung Tro giúp thiêt lâp câu hình ............................................... 86
Chuong 8 - Làm viêc vói các dôi tuong dü liêu ............................................................ 88
8.1 So dô ........................................................................................................................ 88
8.2 Bang......................................................................................................................... 88
8.2.1 Kiêu du liêu....................................................................................................... 89
8.2.2 Côt khoá chính (Identity columns) ................................................................... 91
8.2.3 Các dô tuong tuân tu (Sequence object) ........................................................... 92
8.2.4. Các bang danh sách hê thông........................................................................... 92
8.2.5. Khai báo các bang tam thoi.............................................................................. 93
Bài tâp nhanh #5 - Khoi tao môt bang moi.................................................................... 94
8.3 Các khung nhìn (Views) .......................................................................................... 96
8.4 Các chi muc (Index)................................................................................................. 96
8.4.1 Tro giúp thiêt kê (Design Advisor)................................................................... 97
8.5 Tính toàn ven tham chiêu......................................................................................... 98
Chuong 9 – Công cu di chuyên dü liêu........................................................................ 100
9.1 Công cu EXPORT (xuât) ....................................................................................... 101
9.2 Công cu IMPORT (nhâp)....................................................................................... 102
9.3. LOAD (nap) .......................................................................................................... 102
9.4 Công cu db2move .................................................................................................. 104
9.5 Công cu db2look.................................................................................................... 104
Nhp môn H qun tr c s d liu DB2

4
Bài tâp nhanh #6 - Trích xuât DDL tu co so du liêu EXPRESS................................. 107
Chuong 10 – Bao mât co so dü liêu.............................................................................. 110
10.1 Dinh danh............................................................................................................. 111
10.2 Quyên han............................................................................................................ 112
10.3 Quyên quan tri co so du liêu DBADM................................................................ 114
10.4 Nhóm PUBLIC .................................................................................................... 115
10.5 Lênh GRANT và REVOKE................................................................................. 115
10.6 Kiêm tra viêc câp quyên và quyên....................................................................... 115
10.7 Xem xét quyên trên nhóm.................................................................................... 117
Bài tâp nhanh # 7: Cho phép và huy bo (phân quyên) quyên nguoi su dung. ............ 118
Chuong 11 – Sao luu và khôi phuc............................................................................... 121
11.1 Nhât ký co so du liêu ........................................................................................... 121
11.2 Các kiêu nhât ký................................................................................................... 122
11.3 Các kiêu ghi nhât ký............................................................................................. 122
11.3.1 Ghi tuân tu quay vòng................................................................................... 122
11.3.2 Nhât ký luu tru.............................................................................................. 123
11.4 Nhât ký co so du liêu tu Trung tâm diêu khiên.................................................... 123
11.5 Các tham sô cua nhât ký ..................................................................................... 124
11.6 Sao luu co so du liêu............................................................................................ 125
Bài tâp nhanh #8 - Lâp lich sao luu............................................................................. 127
11.7 Khôi phuc co so du liêu....................................................................................... 129
11.7.1 Các kiêu khôi phuc du liêu ........................................................................... 129
11.7.2 Khôi phuc co so du liêu................................................................................ 129
11.8 Các hoat dông khác voi BACKUP và RESTORE............................................... 130
Chuong 12 - Nhiêm vu bao trì ...................................................................................... 131
12.1 REORG, RUNSTATS, REBIND ........................................................................ 131
12.1.1 Lênh REORG................................................................................................ 131
12.1.2 Lênh RUNSTATS......................................................................................... 132
12.1.3 BIND/REBIND............................................................................................. 132
12.1.4 Các công viêc duy trì tu Trung tâm diêu khiên............................................. 133
12.2 Các lua chon bao trì ............................................................................................. 135
Bài tâp nhanh #9 – Câu hình viêc bao trì tu dông ....................................................... 137
Chuong 13 – Truy câp dông thòi và khóa................................................................... 139
13.1 Các giao dich........................................................................................................ 139
13.2 Truy câp dông thoi ............................................................................................... 140
13.3 Các vân dê khi không kiêm tra truy câp dông thoi .............................................. 141
13.3.1 Mât du liêu câp nhât ..................................................................................... 141
13.3.2 Doc voi không cam kêt ................................................................................. 142
13.3.3 Doc không láp lai .......................................................................................... 142
13.3.4 Doc thua........................................................................................................ 143
13.4 Các muc cô lâp..................................................................................................... 144
13.4.1 Doc voi không cam kêt ................................................................................. 144
13.4.2 On dinh con tro ............................................................................................. 144
13.4.3 Doc ôn dinh................................................................................................... 145
13.4.4 Doc láp lai ..................................................................................................... 145
13.4.5 So sánh các muc dô cô lâp du liêu................................................................ 145
13.4.6 Dát muc cô lâp.............................................................................................. 146
13.5 Khóa leo thang..................................................................................................... 147
13.6 Kiêm soát khóa .................................................................................................... 148
13.7 Cho khóa.............................................................................................................. 148
Nhp môn H qun tr c s d liu DB2

5
13.8 Vân dê khóa phu thuôc và phát hiên.................................................................... 149
13.9 Truy câp dông thoi và thuc tiên khóa tôt nhât ..................................................... 150
PHAN 3: HOC DB2 – PHÁT TRIEN UNG DUNG................................................... 152
Chuong 14 – Các thu tuc SQL PL................................................................................ 153
14.1 DB2 Developer Workbench................................................................................. 154
14.1.2 Tao môt thu tuc luu trong DWB................................................................... 154
14.2 Môt sô khái niêm vê thu tuc SQL PL .................................................................. 158
14.2.1 Câu trúc cua thu tuc ...................................................................................... 158
14.2.2 Nhung thuôc tính tùy chon cua thu tuc......................................................... 158
14.2.3 Các loai tham sô............................................................................................ 159
14.2.4 Chú thích trong thu tuc SQL PL................................................................... 159
14.2.5 Câu lênh ghép ............................................................................................... 160
14.2.6 Khai báo biên................................................................................................ 160
14.2.7 Câu lênh gán ................................................................................................. 160
14.3 Các con tro (cursor) ............................................................................................. 161
14.4 Diêu khiên luông.................................................................................................. 161
14.5 Goi thu tuc............................................................................................................ 162
14.6 Lôi và xu lý diêu kiên.......................................................................................... 163
14.7 SQL dông............................................................................................................. 165
Chuong 15 – Hàm nôi tuyên, hàm nguòi dùng dinh nghia, các hàm xu ký các su kiên
bây (Inline SQL PL, UDF, Triggers)............................................................................ 166
15.1 Hàm nôi tuyên SQL............................................................................................. 166
15.2 Bây su kiên (Triggers) ......................................................................................... 167
15.2.1 Các loai bây su kiên...................................................................................... 167
Bài tâp nhanh #10 - Khoi tao môt bây báng Trung tâm diêu khiên............................. 170
15.3 Hàm nguoi dùng dinh nghia (UDF).................................................................... 172
15.3.1 Hàm vô huong .............................................................................................. 172
15.3.2 Hàm bang...................................................................................................... 173
Bài tâp nhanh #11 - Khoi tao UDF su dung DB2 Developer Wordbench .................. 175
Chuong 16 – SQL/XML và XQuery ............................................................................ 176
16.1 Su dung XML voi các co so du liêu.................................................................... 176
16.2 Co so du liêu XML.............................................................................................. 177
16.2.1 co so du liêu hô tro XML ............................................................................. 177
16.2.2 Co so du liêu thuân XML............................................................................. 178
16.3 XML trong DB2................................................................................................... 178
16.3.1 Uu diêm cua công nghê pureXML trong DB2 9 .......................................... 179
16.3.2 Khái niêm co ban vê XPath .......................................................................... 181
16.3.3 Dinh nghia XQuery....................................................................................... 184
16.3.4 Chèn các tài liêu XML.................................................................................. 185
16.3.5 Truy vân du liêu XML.................................................................................. 188
16.3.6 Nôi (join) voi SQL/XML.............................................................................. 193
16.3.7 Nôi (Join) voi XQuery.................................................................................. 194
16.3.8 Các lênh câp nhât và xóa .............................................................................. 194
16.3.9 Chi muc XML............................................................................................... 195
Bài tâp nhanh #12 – SQL/XML và XQuery................................................................ 197
Chuong 17 – Phát triên vói Java, PHP và Ruby......................................................... 198
17.1 Phát triên ung dung báng Java............................................................................. 198
17.1.1 Trình diêu khiên JDBC kiêu 2 (type 2)......................................................... 198
17.1.2 Trình diêu khiên JDBC kiêu 4 ...................................................................... 199
17.2 Phát triên ung dung báng PHP............................................................................. 200
Nhp môn H qun tr c s d liu DB2

6
17.2.1 Lua chon kêt nôi DB2 cho PHP.................................................................... 200
17.2.2 Ung dung công nghê Zend Core dành cho IBM........................................... 201
17.3 Phát triên ung dung Ruby trên nên Rails ............................................................. 203
17.3.1 Bô công cu phát triên DB2 trên nên Rails .................................................... 203
A.1 Thêm thông tin vê mã các lôi................................................................................ 204
A.2 SQLCODE and SQLSTATE ................................................................................ 205
A.3 Nhât ký khai báo quan tri DB2 ............................................................................. 205
A.4 db2diag.log............................................................................................................ 206
A.5 Theo vêt CLI ......................................................................................................... 206
A.6 Khác phuc và sua lôi trong DB2........................................................................... 206
Các trang web .............................................................................................................. 207
Sách.............................................................................................................................. 208
Nhp môn H qun tr c s d liu DB2

7
Vê cuôn sách này
Thông cáo và Nhãn hiêu hàng hóa

Copyright IBM Corporation 2007
All right Reserved.
IBM Canada
8200 Warden Avenue
Markham, ON
L6G 1C7
Canada

Không duoc sao chép hoãc sú dung duói bât ky dang thúc nào hoãc dich sang ngôn
ngü khác toàn bô hoãc bât cú phân nào cúa tài liêu này mà không duoc su cho phép
truóc cúa nguòi giü bán quyên ó trên.

IBM không dám báo hay dai diên cho nhüng nôi dung duoc nêu ra ó dây và không chiu
trách nhiêm vê tính thuong mai hoãc tính hop lý cho bât kì muc dích nào. IBM cho rãng
mình không có trách nhiêm vói bât ky lôi nào trong tài liêu này. Thông tin trong tài liêu
này có thê thay dôi mà không cân báo truóc. IBM giành quyên duoc thay dôi và không
bãt buôc phái thông báo cho bât cú ai vê su thay dôi này. IBM không cam kêt nhüng
thông tin trong tài liêu này là mói nhât.

Các thông tin trong tài liêu này liên quan dên sán phâm không phái cúa IBM dã có duoc
qua các nhà cung câp sán phâm dó. IBM không kiêm tra các sán phâm dó và không
khãng dinh vê tính chính xác khi thuc hiên, tính tuong thích hoãc bât ky thãc mãc nào
liên quan dên sán phâm không phái cúa IBM. Các câu hói vê khá nãng cúa các sán
phâm không phái cúa IBM cân duoc gúi cho các nhà cung câp sán phâm dó.

IBM, biêu tuong IBM, DB2, DB2 Connect, DB2 Universal Database, i5/OS, pureXML,
WebSphere, và z/OS là nhãn hiêu hàng hóa dã dãng ký cúa tâp doàn IBM tai Mÿ, các
nuóc khác, hoãc cá hai.

Java và tât cá các nhãn hiêu Java là nhãn hiêu hàng hóa dãng ký cúa công ty Sun
Microsystem, Inc. tai Mÿ, các nuóc khác, hoãc cá hai.

Microsoft và Windows là nhân hiêu hàng hóa cúa tâp doàn Microsoft tai Mÿ, các nuóc
khác, hoãc cá hai.

Linux là nhãn hiêu dãng ký cúa Linus Torvalds tai Mÿ, các nuóc khác, hoãc cá hai.

Tên cúa công ty khác, sán phâm, hoãc dich vu có thê là nhãn hiêu dãng ký cúa ho.

Trích dân các sán phâm và dich vu cúa IBM trong tài liêu này không có nghïa là IBM dua
chúng dên tât cá các quôc gia mà IBM có hoat dông.

Nhp môn H qun tr c s d liu DB2

8
Ai nên doc cuôn sách này?
Quyên sách này giành cho bât ky ai dang làm viêc hoãc muôn làm viêc vói co só dü
liêu, nhu quán tri hê co só dü liêu (DBAs), nguòi phát triên úng dung, nhà tu vân, kiên
trúc phân mêm, giám dôc sán phâm, giáo viên và sinh viên.
Câu trúc cúa quyên sách này nhu thê nào?
Phân I, Tông quan và Cài dãt, giái thích ân bán DB2 Express-C là gì, giói thiêu ho sán
phâm DB2 và các chúc nãng, giúp dõ cài dãt và tao mói co só dü liêu, và khám phá các
công cu sãn có cúa DB2.

Phân II, Hoc DB2: Quán tri co só dü liêu, duoc thiêt kê dê ban làm quen vói môi truòng,
kiên trúc, kêt nôi tù xa, các dôi tuong dü liêu, chuyên dü liêu (nhâp và xuât dü liêu), an
toàn, sao luu và khôi phuc, truy câp dông thòi và khóa cúa DB2, và các công viêc báo trì
thông thuòng.

Phân III, Hoc DB2: Phát triên úng dung, bao gôm thú tuc, hàm do nguòi dùng dinh
nghïa, các bây su kiên, SQL/XML, XQuery, phát triên úng dung bãng Java, PHP và
Ruby.

Phu luc có các thông tin cân thiêt vê súa lôi.

Bài tâp ó dây là bài tâp nhanh, có ó hâu hêt các chuong, tât cá các têp cân thiêt dê thuc
hiên bài tâp này có thê tìm thây ó têp nén expressc_book_quicklabs.zip di kèm theo
sách này, hoãc së tìm thây ó trang web cúa IBM DB2 Express-C, dia chi
www.ibm.com/db2/express

Tài liêu cúa cuôn sách cüng duoc sú dung làm bài giáng cúa chuong trình “DB2 vói Ðai
hoc” (DB2 on Campus). Cuôn sách này cüng giúp ban chuân bi cho bài kiêm tra cúa
chuong trình “DB2 vói Ðai hoc”, chuong trình dây dú cúa nó bài hoc vói 16 giò trên lóp.
Ban có thê xem thêm thông tin vê chuong trình này ó trang DB2 Express-C, dia chi
www.ibm.com/db2/express/students.html.
Môt quyên sách do công dông làm và giành cho công dông
Ðôi ngü làm DB2 Express-C dã có sáng kiên làm quyên sách này dê cung câp miên phí
cho công dông. Viêt và chinh lý môt cuôn sách là viêc làm khó khãn. Muc dích cúa
chúng tôi là nôi dung cuôn sách së duoc duy trì và mó rông bãng viêc tham gia cúa
công dông DB2 Express-C. Nêu ban muôn dóng góp ý kiên, dóng góp nhüng nôi dung
mói dê nâng cao nôi dung hiên tai hoãc dich cuôn sách này sang ngôn ngü khác, làm
on gúi kê hoach thuc hiên vê dia chi db2x@ca.ibm.com vói tiêu dê “DB2 Express-C
book changes.”
Tác giá và nhüng nguòi dóng góp
Nhüng nguòi sau dây dã cung câp nôi dung và có các dóng góp có ý nghïa cho cuôn
sách này

Tên Ðon vi Chúc danh Tài liêu dóng góp Ngày
Raul F. Chong IBM GÐ chuong trình
“DB2 vói Ðai hoc”
Bán tháo tât cá các
chuong
Tháng 5 –
2007
Ian Hakes IBM Công dông DB2
Express-C
Xem lai và súa chüa Tháng 5, 6
– 2007
Rav Ahuja IBM GÐ sán phâm DB2 Xem lai, câp nhât và
trình bày cuôn sách
Tháng 7-10
- 2007
Nhp môn H qun tr c s d liu DB2

9
Lòi cám on

Chúng tôi chân thành cám on các cá nhân sau dây vói su tro giúp
- Ted Wasserman, Clara Liu và Paul Yip ó phòng thí nghiêm IBM Toronto, nguòi
dã phát triên úng dung trong khuôn khô cuôn sách này
- Don Chamberlin và Cindy Saracco vói các bài báo cúa ho vê XQuery dãng trên
developerWorks, và Matthía Nicola vói bài trình bày vê pureXML.
- Kevin Czap và Grant Hutchingson vói các tài liêu kÿ thuât vê phát triên DB2
- Katherine Boyachok vói thiêt kê bìa
- Susan Visser giúp dõ xuât bán cuôn sách này


Nhp môn H qun tr c s d liu DB2

10
Lòi cám on bán tiêng Viêt

Ðê có duoc bán dich tiêng Viêt này, rât nhiêu các ban sinh viên dã tham gia dich và hiêu
dính. Chúng ta tu hào rãng dây dúng là môt quyên sách do công dông và vì công dông.
Vì trình dô và thòi gian han chê, dù có thê còn nhiêu khiêm khuyêt, nhung rât mong các
ban dón nhân nó nhiêt tình và dóng góp ý kiên cho bán dich hoàn thiên hon. Hy vong
rãng các ban sinh viên së tiêp tuc chuyên dên công dông nhüng ân phâm mói, vói
chât luong chãc chãn tôt hon.

Danh sách sinh viên tham gia dich và hiêu dính:
Ho và tên Truòng
1 Bùi Thanh Son ÐH Bách Khoa Hà Nôi
2 Châu Uyên Minh Hoc viên Công nghê Buu chính Viên thông TPHCM
3 Ðãng Chiên Công Coltech Hà Nôi
4 Ðô Bá Lâm ÐH Bách khoa Hà Nôi
5 Ðô Tuân Anh
6 Ðô Tuân Anh ÐH Khoa hoc Tu nhiên, Tp HCM
7 Hà Thúy Hãng ÐH Khoa hoc Tu nhiên, Tp HCM
8 Hà Tuân Trung ÐH Bách Khoa Hà Nôi
9 Hà Tuân Trung
10 Hoàng Minh Hiên Truòng Ðai Hoc Công Nghê, VNU Hà Nôi
11 Huynh Hüu Hiêp Hoc Viên công nghê BCVT
12 Huynh Minh Tân ÐH Khoa Hoc Tu Nhien, Tp HCM
13 Lê Anh Ðúc ÐH Bách Khoa Hà Nôi
14 Lê Bá Trong ÐH Khoa hoc Tu nhiên, Tp HCM
15 Lê Huynh Công Tháo ÐH Công nghê Thông tin, Tp HCM
16 Lê Nguyên Thúy An ÐH Công nghê Thông tin, Tp HCM
17 Lê Thành Huy ÐH Cân Tho
18 Ngô Phi Thành Ðai hoc Duy Tân, Ðà Nãng
19 Nguyên Anh Khoa ÐH Khoa hoc Tu nhiên, Tp HCM
20 Nguyên Chiên Thãng ÐHBK Ðà Nãmg
21 Nguyên Hái Phong ÐH Bách Khoa Hà Nôi
22 Nguyên Hoàng Minh Quôc
23 Nguyên Hùng Thông ÐH Su pham Kÿ thuât, Tp. HCM
24 Nguyên Hüu Tho ÐH Khoa hoc Tu nhiên, Tp HCM
25 Nguyên Luong Son Ðai hoc Duy Tân, Ðà Nãng
26 Nguyên Minh Châu ÐH Khoa hoc Tu nhiên, Tp HCM
27 Nguyên Minh Tuân ÐH Bách khoa Hà Nôi
28 Nguyên Minh Tuân
29 Nguyên Ngoc Duy
30 Nguyên Ngoc Trí ÐH Su pham Kÿ thuât, Tp. HCM
31 Nguyên Thành Trung ÐH Bách khoa Hà Nôi
32 Nguyên Thê Phúc Ðai hoc Duy Tân, Ðà Nãng
33 Nguyên Thi Diêu Hãng ÐH Khoa hoc Huê
34 Nguyên Thi Hông Hà ÐH Bách Khoa Hà Nôi
35 Nguyên Thi Kim Phung
ÐH Công nghê Thông tin, Tp HCM
36 Vü Thi Lan Chi
ÐH Công nghê Thông tin, Tp HCM
37 Nguyên Trang
38 Nguyên Trung Hiêu ÐH Khoa hoc Tu nhiên, Tp HCM
39 Nguyên Vãn Nam ÐH Khoa hoc Huê
40 Nguyên Vãn Nam ÐH Khoa hoc Huê
Nhp môn H qun tr c s d liu DB2

11
41 Nguyên Xuân Truòng ÐH Khoa hoc Tu nhiên, Tp HCM
42 Pham Ngoc Huy Ðai hoc Công nghê-Ðai hoc quôc gia Hà nôi
43 Pham Thi Minh Hiên ÐH Bách khoa Ðà Nãng
44 Pham Vÿ Tuân
45 Quách Tiêu Thuân Trung tâm Công nghê Phân mêm - ÐH Cân Tho
46 Thái Quang Hòa ÐH Khoa hoc Huê
47 Thái Tuyên Ðai hoc Nông Lâm tp. HCM
48 Trân Anh Huy Ðai hoc Duy Tân, Ðà Nãng
49 Trân Thi Thúy Trinh ÐH Bách Khoa Ðà Nãng
50 Trân Vãn Tân ÐH Bách khoa Hà Nôi
51 Trân Vãn Tân
52 Trân Vuong Trung
53 Tuân Viêt

Nhp môn H qun tr c s d liu DB2

12
Lòi nói dâu

Sáng tao là su dôt phá cúa các tiên bô công nghê. Tai IBM, sáng tao dã tró thành côi
nguôn cúa su phát triên co só dü liêu. Là nguòi di tiên phong trong kÿ thuât quán tri dü
liêu trong nhüng nãm 60 và 70, chúng tôi tiêp tuc dua ra nhüng sáng tao công nghê vê
quán tri thông tin, biêu hiên bãng hàng nghìn dãng ký phát minh vê quán tri dü liêu cúa
nhüng nhà công nghê cúa IBM. Kêt quá là, môt sô các tô chúc lón nhât hành tinh ngày
nay dã tin tuóng vào các sán phâm cúa IBM nhu DB2 dê vân hành các giái pháp có nhu
câu cao nhât, quán tri nhüng dü liêu tôi quan trong cúa ho.

Tuy nhiên DB2 không chi dành cho các doanh nghiêp lón. Vói viêc dua ra bán DB2
Express-C, công nghê nôi tiêng DB2 dã sãn sàng cho các doanh nghiêp vùa và nhó - và
không bãt buôc phái mât chi phí! Mãc dù còn có các sán phâm miên phí hay các phân
mêm nguôn mó khác, DB2 Express-C trao cho ban súc manh duy nhât vuot trên tât cá
các lua chon cùng loai.

Có rât nhiêu sáng tao công nghê hiên diên trong DB2 Express-C. Môt sô trong chúng
nhãm vào khá nãng tiên tiên mói, môt sô khác lai huóng tói giám thiêu gánh nãng quán
tri, môt sô khác nüa lai cái thiên hiêu nãng, giám chi phí ha tâng. Chúng tôi së không
trình bày chúng ó dây, hy vong các ban së bi cuôn hút khi doc quyên sách này – chúng
tôi chi xin mô tá môt vân dê hóc búa nhât.

DB2 Express-C duoc xây dung trên nên công nghê “Viper”, nó là co só dü liêu lai dâu
tiên quán lý cá dü liêu quan hê và dü liêu XML duói dang bâm sinh. Ðiêu này làm cho
DB2 tró nên rât lý tuóng cho các xu huóng mói cúa úng dung SOA và Web 2.0 trong dó
các luông dü liêu XML là rât nhiêu. Không giông vói hê quán tri co só dü liêu cúa các
hãng thuong mai khác, DB2 Express-C không giói han dung luong dü liêu luu trü trong
co só dü liêu hay sô luong co só dü liêu ban có thê tao ra trong hê thông. Và tât nhiên,
nêu ban cân tro giúp hô tro tù IBM, ban chi cân nhân chuôt vào nút Help.

Cuôn sách này dùng dê giúp nhüng nguòi mói bãt dâu sú dung DB2 Express-C, nó së
giúp ban hiêu các khái niêm cúa DB2 và cho phép ban phát triên kÿ nãng quán tri cüng
nhu phát triên úng dung DB2. Kÿ nãng và su hiêu biêt nhân duoc tù cuôn sách này có
liên quan rât nhiêu dên các bán DB2 tiên tiên hon trên Linus, UNIX và Windows.

Mãc dù DB2 Express-C không phái là sán phâm mã nguôn mó, IBM chúng tôi vân rât tin
tuóng vào su hô tro và cô vü tù công dông. Tôi vui mùng duoc thây cuôn sách này do
các thành viên cúa công dông DB2 Express-C phát triên và phát hành miên phí cho
công dông. Tôi mong các ban câp nhât, làm giàu thêm kiên thúc cúa cuôn sách vói hiêu
biêt, kinh nghiêm cúa các ban, và giúp dich cuôn sách này sang các ngôn ngü khác,
nhu vây nhüng nguòi khác së có loi tù su hiêu biêt cúa ban.

Arvind Krishna
Phó chú tich, Co só dü liêu
Ban Quán tri thông tin, Nhóm phân mêm IBM

Nhp môn H qun tr c s d liu DB2

13
1
Phân I – Tông quan và Cài dåt
Chuong 1 - DB2 Express-C là gì?

DB2 Express-C là môt sán phâm thuôc dòng IBM DB2 – phân mêm máy chú dü liêu
quán lý cá dü liêu quan hê và dü liêu XML. DB2 Express-C là ân bán DB2 duoc dùng
miên phí, không han chê và dê sú dung. Chü C trong DB2 Express-C là viêt tãt cúa
Community (Công dông). Nghïa là công dông nhüng nguòi sú dung DB2 Express-C kêt
hop lai dê hô tro lân nhau cá truc tuyên và không truc tuyên. Công dông DB2 Express-C
bao gôm các cá nhân và các công ty thiêt kê, phát triên, triên khai, hay sú dung các giái
pháp co só dü liêu nhu:

• Các nhà phát triên úng dung có nhu câu vê môt phân mêm co só dü liêu chuân
mó dê xây dung các úng dung dôc lâp, dang khách-chú, dang nên web hoãc các
úng dung lón.
• ISVs – các nhà cung câp phân mêm dôc lâp, các nhà cho thuê phân cúng, co só
ha tâng hay nhüng nguòi cung câp giái pháp, muôn dóng gói môt máy chú dü
liêu vói dây dú tính nãng nhu là môt phân trong các giái pháp cúa ho.
• Nguòi cô vân, quán tri dü liêu, và kiên trúc su công nghê thông tin, nhüng nguòi
cân môt máy chú dü liêu manh dê tu hoc tâp, phát triên kÿ nãng, dánh giá hoãc
thú nghiêm.
• Các công ty mói thành lâp, vùa và nhó cân môt máy chú dü liêu tin cây cho công
viêc và úng dung cúa ho.
• Nhüng nguòi yêu thích co só dü liêu, say mê tìm hiêu công nghê muôn có môt
máy chú dü liêu dê sú dung dê xây dung úng dung Web 2.0 hay các úng dung
thê hê sau.
• Sinh viên, giáo viên hay nhüng hoc giá muôn có môt máy chú dü liêu linh hoat
dê giáng day, hoc tâp, nghiên cúu.

DB2 Express-C có dây dú các tính nãng co bán nhu các ân bán DB2 thuong mai trên
nên Linux, UNIX và Windows. DB2 Express-C có thê chay trên cá hê thông 32-bit hoãc
64-bit cúa Linux hay Windows. Nó duoc tôi uu cho các hê thông tôi da 2 bô xú lý, bô
nhó 4GB, và không yêu câu bât ky môt bô nhó chuyên dung hay các cài dãt hê thông
nào khác. DB2 Express-C cüng bao gôm pureXML, pureXML là môt công nghê dãc
trung cúa DB2 dùng dê luu trü và xú lý các vãn bán XML bâm sinh.

1.1 Tu do phát triên, triên khai và phân phôi…không có giói han!
Các tu tuóng côt lõi cúa DB2 Express-C gôm:
• Tu do phát triên: Nêu ban là nguòi phát triên úng dung và cân môt co só dü
liêu cho úng dung cúa mình, ban có thê sú dung DB2 Express-C.
Nhp môn H qun tr c s d liu DB2

14
• Tu do triên khai: Nêu ban dang làm viêc trong lïnh vuc sán xuât và cân môt co
só dü liêu dê luu trü các thông tin quan trong, ban có thê dùng DB2 Express-C.
• Tu do phân phôi: Nêu ban dang phát triên môt úng dung hay môt công cu cân
dóng gói vói môt máy chú dü liêu, ban cüng có thê dùng DB2 Express-C. DB2
Express-C miên phí ngay cá khi duoc dóng gói vào trong úng dung cúa ban,
duoc phân phôi môi khi ban bán úng dung cúa mình. Ban chi cân dãng ký vói
IBM dê tái phân phôi DB2 Express-C. Tât nhiên viêc dãng ký cüng hoàn toàn
miên phí.
• Không giói han: Trong khi các dôi thú canh tranh dua ra các giói han vê kích
thuóc co só dü liêu, nhung DB2 Express-C thì không dãt giói han nào cá. Co só
dü liêu cúa ban có thê duoc tiêp tuc mó rông mà không hê vi pham diêu khoán
sú dung. Cüng không có giói han nào vê sô luong kêt nôi hay sô nguòi sú dung
trên môi máy chú.
1.2 Hô tro kÿ thuât
Nêu ban có bât ky thãc mãc kÿ thuât nào vê DB2 Express-C, ban có thê dãng câu hói
cúa ban lên diên dàn cúa DB2 Express-C. Diên dàn này duoc diêu hành bói môt dôi
DB2 Express-C, nhung chính công dông së là nhüng nguòi giái dáp trên co só tu
nguyên. IBM cüng cho phép nguòi dùng mua bán quyên theo nãm vói giá thâp (còn
duoc goi là Bán quyên 12 tháng hay Bán quyên thòi han cô dinh FTL (Fixed Term
License)). Viêc mua này së cho phép nguòi dùng duoc hô tro kÿ thuât 24×7 cüng nhu
câp nhât phân mêm. Vói khoán phí thâp hãng nãm ($2,995 trên môt máy chú môt nãm ó
Mÿ - có thê thay dôi ó các nuóc khác) ban së duoc huóng các quyên loi vê hô tro và
báo trì phân mêm cho máy chú DB2 Express-C, ban cüng có thêm hai tính nãng nüa là:
tính sãn sàng phuc hôi sau khi gãp su cô (HARD - High Availability Disaster Recovery)
và di trú dü liêu truy vân (SQL replication - dê tái tao lai dü liêu vói các máy chú DB2
khác).
1.3 Các máy chú DB2
Tât cá các ân bán máy chú DB2 dêu có chung các thành phân lõi; Các ân bán này duoc
dóng gói thuân tiên dê nguòi sú dung có thê lua chon các tính nãng cân thiêt vói giá cá
hop lý. Hình 1.1 thê hiên su khác nhau giüa các ân bán cúa DB2.


Hình 1.1 - Các máy chú DB2

Nhu trên hình 1.1, ân bán DB2 Express-C cüng giông nhu ân bán DB2 Express chi thiêu
di môt sô thành phân. DB2 Express-C là hoàn toàn miên phí. Cüng nhu dã nói ó trên,
nguòi dùng luôn duoc sãn sàng hô tro kÿ thuât tù diên dàn, hoãc có thê nhân su hô tro
chính thúc 24x7 cúa IBM nêu trá phí 12 tháng.
Nhp môn H qun tr c s d liu DB2

15

Hình 1.1 cüng cho thây khá nãng nâng câp tù DB2 Express-C lên bât kì ân bán máy chú
DB2 nào khác, vì tât cá các máy chú DB2 dêu có chung thành phân lõi. Ðiêu này có
nghïa là tât cá các úng dung duoc phát triên trên môt ân bán vân së hoat dông trên các
ân bán khác mà không cân phái chinh súa. Và bât kì kÿ nãng nào ban hoc duoc tù môt
ân bán dêu áp dung duoc cho các ân bán khác.
1.4 Máy khách DB2
Môt máy khách DB2 bao gôm các chúc nãng cân thiêt dê kêt nôi vói máy chú DB2. Tuy
nhiên, không phái lúc nào cüng cân cài dãt môt máy khách DB2. Ví du, môt úng dung
JDBC (Java DataBase Connectivity) kiêu 4 có thê nôi thãng tói máy chú DB2, chi cân có
trình diêu khiên thích hop. Máy khách DB2 gôm nhüng loai sau:
• Máy khách DB2: dây dú nhât, bao gôm các công cu dô hoa, các trình diêu khiên.
• Máy khách DB2 runtime client: Có các chúc nãng co bán dê kêt nôi, cüng bao
gôm các trình diêu khiên.
• Máy khách DB2 runtime kêt hop Mô-dun cho Windows: duoc sú dung chú yêu
trên máy khách DB2 runtime nhu là môt phân cài dãt cho các úng dung cúa
Windows.

Hình 1.2 cho ta thây các máy khách khác nhau và các trình diêu khiên sãn có.



Hình 1.2 - Các máy khách DB2 và các trình diêu khiên

Trên phân bên trái cúa hình 1.2, tât cá các máy khách DB2 và trình diêu khiên duoc thê
hiên. Mãc dù tât cá các máy khách DB2 dêu bao gôm trình diêu khiên cân thiêt, trong
DB2 9 chúng tôi vân cung câp nhüng trình diêu khiên riêng biêt. Các máy khách DB2 và
các trình diêu khiên dêu miên phí và có thê duoc tái vê tù trang web DB2 Express-C.
Các máy khách và các trình diêu khiên có thê duoc sú dung dê kêt nôi dên máy chú
DB2 trên nên Linux, Unix, hoãc Windows. Ðê kêt nôi dên DB2 trên máy chú z/OS® hoãc
DB2 trên máy chú i5/OS®, ban cân phái thông qua máy chú kêt nôi DB2 (DB2 Connect
nãm ó giüa hình 2). Chúng ta së tháo luân vê phân mêm DB2 Connect trong Chuong 2.
Nhp môn H qun tr c s d liu DB2

16
1.5 Tu do phát triên phân mêm úng dung
DB2 tao ra môt môi truòng phát triên úng dung dua trên các chuân và trong suôt dôi vói
ho sán phâm DB2. Viêc sú dung SQL chuân trong các dòng sán phâm DB2 së cung câp
môt tâp các giao diên lâp trình úng dung (API) thông dung cho viêc truy nhâp co só dü
liêu.

Thêm vào dó, môi sán phâm DB2 cung câp các bô tiên-dich (pre-compiler) cho phép nhà
phát triên nhúng các câu lênh SQL tïnh và dông trong các chuong trình úng dung khá
chuyên. DB2 còn có môt sãn công cu quán lý .NET có thê tích hop vói các công cu
Microsoft® Visual Studio.

Các ngôn ngü và các chuân có thê duoc sú dung vói DB2 là:
• Ruby trên nên Rails
• C/C++(ODBC và SQL nhúng)
• JDBC và SQLJ
• COBOL
• Borland
• Python
• PHP
• Perl
• Ngôn ngü .NET
• OLE-DB
• ADO
• Dich vu Web (Web Service)
• SQL
• Microsoft Office: Excel, Access, Word
1.6 Phiên bán và ân bán DB2 (version and edition)
Nêu ban mói làm quen vói DB2, ban có thê bi bôi rôi môt chút vê su khác biêt giüa các
phiên bán DB2 (version) và các ân bán DB2 (edition).

Vài nãm môt lân, IBM công bô môt phiên bán mói cúa DB2. Môt phiên bán bao gôm các
tính nãng mói và dua nhüng cái tiên dáng kê vào sán phâm. Hiên tai, phiên bán DB2 8
và DB2 9 duoc hô tro chính thúc bói IBM. Môt phiên bán cüng có thê có môt vài lân
phát hành, có thê bao gôm môt vài chúc nãng mói nhung thông thuòng không dú rõ
ràng dê nói rãng dây là môt phiên bán mói. Ví du 8.1 và 8.2 là các lân phát hành vói
phiên bán DB2 8. Trong thòi gian vùa qua, IBM thuòng dua ra môt lân phát hành mói
cúa DB2 môi nãm môt lân, tuy nhiên nhüng phiên bán mói thuòng duoc dua ra cách
nhau tù 2-3 nãm. Lân phát hành mói nhât dên thòi diêm hiên tai, V9.1 (truóc dây duoc
goi là DB2 “Viper”) tró thành phiên bán chính thúc vào mùa hè nãm 2006. Khi cuôn sách
này duoc viêt (tháng 9/2007), lân phát hành tiêp theo (có tên là DB2 “Viper 2”) dã có
phiên bán beta. Môi lân phát hành cüng có thê chúa nhiêu múc chinh súa, thuòng chúa
nhüng phân vá lôi túc là tuong úng vói các chuong trình súa lôi (fixpack), và rât ít khi
chúa nhüng tính nãng mói. Tai thòi diêm này, phiên bán, phát hành, chinh súa (Version-
Release-Modification/ V-R-M) cúa DB2 là 9.1.2 tuong duong vói phiên bán 9.1 cùng vói
bô chuong trình súa lôi 2.

Trên môt nôi dung khác, các ân bán là nhüng lua chon hoãc nhóm các gói tính nãng
trong môi phiên bán. Nhu dã dê câp, môt ân bán là môt gói nhüng chúc nãng khác nhau
vói giá thành và bán quyên xác dinh. DB2 phiên bán 9 (cüng duoc biêt tói vói tên DB2
9) có nhiêu ân bán; ví du: DB2 express-C 9, DB2 Express 9, DB2 Workgroup 9, và DB2
Enterprise 9 (xem hình 1.1)

Nhp môn H qun tr c s d liu DB2

17
1.7 Chuyên sang ân bán DB2 khác
Khi co só dü liêu cúa ban cân mó rông, có thê ban së cân nâng câp ân bán DB2 hô tro
câu hình phân cúng lón hon. Nêu truòng hop này xáy ra, rât dê dàng dê nâng câp lên
môt ân bán khác cúa DB2:
• Nêu ban nâng câp lên môt ân bán DB2 khác trên cùng môt máy, cài dãt ân bán
DB2 mói dè lên DB2 Express-C, cùng vói bán quyên tuong úng. Co só dü liêu
cúa ban së không bi xóa (nhung chúng ta vân nên sao luu co só dü liêu truóc
khi nâng câp).
• Nêu ban nâng câp DB2 trên môt máy mói, lón hon và sú dung chung môt hê
diêu hành vói máy cü, hãy cài dãt ân bán DB2 mói trên máy mói, sao luu dü liêu
trên máy cü và khôi phuc lai nó trên máy mói. Ban cüng có thê luu các câu hình
trên máy cü (dbm cfg) và cài dãt câu hình này trên máy mói. Các lênh sao luu và
khôi phuc së duoc nói rõ hon trong Chuong 11 Sao luu và Khôi phuc, dbm cfg
së duoc nói rõ hon trong Chuong 5, Môi truòng DB2.
• Trong bât kì truòng hop nào, úng dung cúa ban dêu không phái súa chüa dê sú
dung DB2.
1.8 Báo trì DB2 Express-C
Nhu dã nói truóc dây, có hai lua chon hô tro cho DB2 Express –C:

1. Mua môt bán quyên 12 tháng. Ðiêu này së cung câp cho ban hô tro 24x7 tù bô
phân hô tro kï thuât cúa IBM, dông thòi còn cho ban khá nãng cài dãt các câp nhât
cúa DB2 (còn duoc goi là các chuong trình súa lôi fixpack).

2. Sú dung diên dàn công dông DB2 Express-C truc tuyên. Cách này hoàn toàn
miên phí, tuy nhiên ban së không có duoc su hô tro chính thúc nào tù IBM. Ðông
thòi, vói cách này, IBM không cam kêt cung câp nhüng chúc nãng mói và nhüng
bán vá lôi nhu thòi gian dã dinh. Ðinh nghïa vê môt chuong trình súa lôi, duoc nói
dên trong Chuong 2, cüng së không có ý nghïa ó dây, thay vì vây môt bán cài dãt
mói cúa DB2 Express-C së duoc cüng câp trên trang web cho các nguòi dùng tái
vê. Khi IBM dua ra bât kì su chinh súa mói nào trong DB2, ban có thê tìm thây bán
cài dãt mói này và thay thê cho bán DB2 cü ban dang dùng.
1.9 Môt sô phân mêm miên phí liên quan
Tât cá các phân mêm có thê duoc tái tù trang tái phân mêm cúa DB2 Express-C
(www.ibm.com/db2/express/download.html) dêu là phân mêm miên phí. Bên canh
nhüng bán DB2 Express-C (cho Linux và Windows, cá kiên trúc 32 và 64 bit), còn có
nhüng phân mêm hüu dung có thê duoc tái và sú dung miên phí nhu:
• DB2 Developer Workbench
• DB2 9 Embedded Application Server
• DB2 9 Net Search Extender

Ngoài ra ban có thê tái vê bô công cu khói dâu dua trên DB2 Express-C tù trang web
IBM Alphaworks (www.alphaworks.ibm.com/datamgmt). Bô công cu này bao gôm:
• Starter toolkit for DB2 on Rails
• Web 2.0 Starter Toolkits for DB2

1.9.1 DB2 Developer Workbench (công cu phát triên)
DB2 Developer Workbench (DBW) là môt môi truòng phát triên tích hop manh (IDE) cho
phép ban tao ra, súa chüa, gõ rôi, triên khai và kiêm tra các thú tuc duoc luu trü SQL
PL và Java, cüng nhu các hàm do nguòi dùng dinh nghïa (User defined function UDFs),
các úng dung SQLJ, khói tao và thuc thi các câu lênh SQL và các truy vân XML. Công
Nhp môn H qun tr c s d liu DB2

18
cu này dua trên Eclipse IDE và thay thê IBM Development Center cúa các phiên bán
DB2 truóc dây. Chúng ta së tháo luân DBW trong chuong 14, Các thú tuc luu trü SQL
PL.

1.9.2 DB2 9 Embedded Application Server (máy chú nhúng)
Embedded Application Server cho phép ban chay các úng dung Web duoc hô tro vói
DB2 phiên bán 9.1 mà không yêu câu ban phái mua thêm môt máy chú úng dung riêng
biêt. Các úng dung Web duoc hô tro vói DB2 phiên bán 9.1 bao gôm:
• Các công cu Web DB2 dành cho nguòi quán tri co só dü liêu nên web.
• DB2WebServer, môt úng dung tu dông triên khai các dich vu web .NET tù
Microsoft Visual Studio dên DB2 Embedded Application Server..

1.9.3 DB2 9 Net Search Extender (mó rông tìm kiêm trên mang)
Vói DB2 9 Net Search Extender ban có thê thuc thi nhanh và chi tiêt các tìm kiêm nôi
dung vãn bán (full-text), bao gôm bât cú tài liêu XML nào duoc luu trü bâm sinh trong
DB 9.1
1.9.4 Bô công cu båt dâu Rails cho DB2
Bô công cu bãt dâu Rail cho DB2 là môt tâp các sán phâm và công nghê duoc dóng gói
tiên loi cho phép tao ra nhanh chóng môt môi truòng dê xây dung các úng dung Web
DB2 sú dung công nghê Ruby trên nên Rails. Tât cá các phân mêm duoc yêu câu bao
gôm: DB2 Express-C, trình diêu khiên DB2 cho Ruby, bô thích nghi (adapter) DB2 vói
Rails, bên canh dó là các huóng dân, ví du, và nhüng tài liêu hoc tâp khác. Chúng ta së
tháo luân Ruby trên nên Rails ó Chuong 17, Su phát triên trong Java, PHP và Ruby.
1.9.5 Bô công cu båt dâu Web 2.0 dành cho DB2
Bô công cu bãt dâu Web 2.0 dành cho DB2 là môt cách dê dàng dê bãt dâu vói DB2,
PHP và Dojo. Nó giúp cho ban triên khai các yêu câu phân mêm, cung câp cho ban các
bài huóng dân và các bán úng dung trình diên (demo). Hai trong sô các úng dung trình
diên là Atom Feed Control Panel, nó khói tao các Atom lây tù các báng DB2, và Web
Services Control Panel tao ra các bao phú dich vu Web REST xung quanh các báng
DB2 cúa ban. Cá hai úng dung dêu dua trên Dojo hô tro dây dú khá nãng nôi bât cúa
Ajax và khá nãng mó rông.
















Nhp môn H qun tr c s d liu DB2

19
2
Chuong 2 – Các tính nång liên quan và các sán phâm

Chuong này mô tá các tính nãng cúa DB2 di kèm trong viêc mua giây phép sú dung 12
tháng cúa DB2 Express-C. Ngoài ra còn môt sô tính nãng khác không có trong DB2
Express-C, nhung là môt phân cúa nhüng ân bán DB2 khác, trong truòng hop có trá
thêm phí.

Nhüng tính nãng có trong DB2 Express-C có bán quyên 12 tháng
• Bô chuong trình súa lôi (Fixpacks)
• Tính sãn sàng cao và Khôi phuc sau su cô (High Availability and Disaster
Recovery- HADR )
• Di trú dü liêu (SQL hop nhât)

Nhüng tính nãng không có mãt trong DB2 Express-C nhung có mãt trong các ân bán
DB2 khác là:

Các tính nãng cúa ân bán DB2 Enterpirse có phí:
• Tính nãng phân tán co só dü liêu (DPF)
• Tính nãng tôi uu hóa luu trü dü liêu (kê cá nén)
• Ðiêu khiên truy nhâp múc cao (an toàn múc cao và duoc chia nhó tôt)
• Tôi uu su thuc thi (kiêm soát các truy vân, chuyên nghiêp trong thuc thi)
• Quán lý dü liêu do dac
• Su liên kêt hop nhât dü liêu DB2

DB2 Enterprise cüng bao gôm nhüng tính nãng duoc thêm vào miên phí nhu
• Phân tán báng (pham vi)
• Các báng truy vân duoc cu thê hóa (Materializated Query Tables MQT)
• Kÿ thuât bó da chiêu (Multi-dimensional Clustering - MDC)
• Tính sãn sàng cao và khá nãng phuc hôi sau su cô (HADR)
• Bô tâp trung kêt nôi (Connection Concenstrator)

Các tính nãng cúa ân bán DB2 Workgroup và Express có phí
• Tính sãn sàng cao
• Quán lý công viêc (Bô tâp trung kêt nôi, bô kiêm soát truy vân)
• Tôi uu hiêu nãng (MQT, MDC, truy vân song song)
• Su liên kêt hop nhât dü liêu DB2

Các sán phâm có phí có liên quan tói DB2:
• DB2 Connect
• WebSphere® Federation Server - Máy chú nhóm WebSphere
• WebSphere Replication Server - Máy chú di trú WebSphere

Nhp môn H qun tr c s d liu DB2

20
2.1 Các tính nång bao hàm trong dång ký sú dung DB2 Express-C
Phân này diêm qua các chuong trình súa lôi DB2, su di trú HADR và SQL.
2.1.1 Các chuong trình súa lôi
Môt chuong trình súa lôi DB2 là môt tâp các súa lôi duoc áp dung cho môt sán phâm
DB2 dã duoc cài dãt, nhãm muc tiêu súa các vân dê khác nhau duoc báo cáo sau khi
sán phâm duoc phát hành. Vói môt dãng ký sú dung có bán quyên, các chuong trình
súa lôi có thê duoc tái xuông và cài dãt miên phí. Chúng thuòng duoc dua ra ba tháng
môt lân.

Ðê tái chuong trình súa lôi mói nhât, xem trang hô tro kÿ thuât cúa DB2 tai dia chi
http://www.ibm.com/software/data/db2/support/db2_9/
2.1.2 Tính sån sàng cao và khôi phuc sau su cô (HADR)
Tính sãn sàng cao và khôi phuc sau su cô là dô tin cây cúa dü liêu, nó cung câp môt
giái pháp sãn sàng và khôi phuc sau su cô cho su suy sup toàn phân hoãc môt phân.
Môt môi truòng HADR thông thuòng bao gôm hai máy chú dü liêu, máy chú chính và
phu (có thê duoc dãt tai nhüng noi khác nhau). Máy chú chính là noi co só dü liêu gôc
duoc luu trü và truy câp bói các trình úng dung tai máy khách. Trong khi các giao dich
duoc tiên hành trên co só dü liêu chính, các bán ghi nhât ký dü liêu duoc chuyên tu
dông dên máy chú thú câp (máy chú phu) thông qua hê thông mang. Máy chú thú câp
có môt bán sao cúa co só dü liêu chính, thuòng duoc tao ra bãng cách sao luu co só
dü liêu chính và khôi phuc nó tai hê thông thú câp. Khi các bán ghi nhât ký dü liêu duoc
nhân vê, chúng duoc thuc thi lai và áp dung cho co só dü liêu thú hai.Thông qua viêc
thuc hiên lai các bán ghi nhât ký này, co só dü liêu thú hai duoc dông bô hóa vói co só
dü liêu chính và có thê thay thê co só dü liêu chính nêu có su cô xáy ra.

Môt giái pháp HADR hô tro DB2 dây dú cung câp cho ban:
» Khá nãng phuc hôi cuc nhanh, trong suôt tuyêt dôi vói khách hàng và các úng
dung tai máy tram
» Giao dich dây dú tùng thành phân nhó dê tránh mât mát dü liêu
» Khá nãng nãng câp hê thông hoãc nâng câp úng dung mà không gây ngãt quãng
dôi vói dich vu
» Khá nãng thay thê hê thông tù xa, cung câp khã nãng phuc hôi dây dú cho dia
diêm bi su cô
» Quán tri dê dàng vói các công cu dô hoa cúa DB2
» Tât cá các khá nãng trên có ánh huóng không dáng kê vói hiêu nãng tông thê
cúa hê thông
2.1.3 Khá nång tái tao dü liêu (di trú dü liêu)
Tính nãng này cho phép tái tao dü liêu giüa máy chú nguôn noi các thay dôi dü liêu
duoc ghi lai, và môt máy chú dích noi các thay dôi dü liêu duoc áp dung. Hình 2.1 cung
câp tông quan vê cách tái tao dü liêu.
Nhp môn H qun tr c s d liu DB2

21

Hình 2.1 – Khôi phuc SQL

Trong hình 2.1 có hai máy chú, môt máy chú nguôn và môt máy chú dích. Trên máy chú
nguôn, môt chuong trình “chup” ghi nhân lai các thay dôi dôi vói co só dü liêu. Trên
máy chú dích, môt chuong trình “áp dung” thuc hiên các thay dôi cho co só dü liêu nhu
thât. Khá nãng tái tao dü liêu hüu dung cho rât nhiêu muc dích cân dên dü liêu duoc tái
lâp, bao gôm giám tái dung luong truyên, nap dü liêu vào các kho chúa dü liêu hay các
“cho” dü liêu (data marts), và kiêm tra lich sú thay dôi. Sú dung tính nãng tái tao dü liêu,
ban có thê tái tao dü liêu giüa DB2 Express-C và các máy chú DB2 khác, bao gôm cá
nhüng máy sú dung các hê thông khác nhu Linux, UNIX, z/OS và i5/OS.
2.2 Các tính nång không có trong bán DB2 Express-C
Phân này miêu tá môt vài tính nãng có trong các bán DB2 khác mà không trong DB2
Express-C
2.2.1 Phân vùng co só dü liêu
Tính nãng phân vùng co só dü liêu (DPF) chi có trong ân bán DB2 Enterprise vói môt
múc phí dãng ký bô sung. Nó cho phép các co só dü liêu có thê duoc trái ra trên nhiêu
phân vùng khác nhau, dãt trên nhiêu máy tính. DPF dua trên kiên trúc không chia sé
(share-nothing architecture). Môi máy tính, do duoc thêm vào nhóm phân vùng, mang
theo súc manh xú lý dü liêu vói CPU và bô nhó cúa chúng. DPF dãc biêt hüu dung
trong môi truòng máy chú co só dü liêu lón nhu các kho chúa dü liêu noi mà các truy
vân cúa hê tro giúp quyêt dinh (DSS) duoc thuc thi.
2.2.2 Bô tâp trung kêt nôi
Bô tâp trung kêt nôi là tính nãng cho phép hô tro môt luong lón nguòi dùng kêt nôi tai
môt thòi diêm. Truóc dây, môi kêt nôi co só dü liêu cân dên môt tác tú (agent) co só dü
liêu. Bô tâp trung kêt nôi giói thiêu khái niêm tác tú lô-gic, cho phép môt tác tú xú lý
nhiêu kêt nôi. Các tác tú duoc bàn dên kÿ hon trong chuong 6, kiên trúc DB2.
Nhp môn H qun tr c s d liu DB2

22
2.2.3 Bô mó rông không gian dia lý
Bô mó rông không gian dia lý cúa DB2 tôn tai nhu môt lua chon có phí cho ân bán DB2
Enterprise. Phân mó rông này làm viêc phát triên cho các úng dung chính phú diên tú
hoãc các úng dung có qui trình nghiêp vu yêu câu phân tích các vi trí dia lý duoc dê
dàng hon. Bô mó rông không gian dia lý cúa DB2 có thê câu thành môt thê giói dia lý áo
vói bât ky tý lê nào. Hâu hêt các thông tin vi trí duoc thu thâp sú dung các hê thông toàn
câu, nhu hê thông dinh vi vê tinh toàn câu (GPS), và có thê duoc thê hiên trong hê kinh
dô/vï dô. Các dü liêu kinh doanh, nhu dia chi, có thê duoc chuyên dôi thành toa dô kinh
tuyên/vï tuyên nhò bô mó rông không gian cúa DB2 (DB2 Spatial Extender) và các
chuong trình úng dung doanh nghiêp làm viêc tôt hon khi chúng luu trü dü liêu theo
dinh dang này, dê phép chiêu tuong úng lên bán dô duoc thông nhât ó các úng dung
khác nhau: lóp trình bày, dê hiên thi và in các bán dô.
2.2.4 Bô kiêm soát truy vân
Bô kiêm soát truy vân cúa DB2 là môt hê thông quán lý truy vân manh, có thê diêu khiên
luông các truy vân tói co só dü liêu DB2 cúa ban. Nó cho phép ban diêu chinh lai khôi
luong công viêc cúa truy vân dü liêu, do dó các truy vân nhó và có múc uu tiên cao có
thê chay nhanh chóng, dám báo các tài nguyên hê thông duoc sú dung hiêu quá.
2.3 Các sán phâm có trá phí liên quan dên DB2.
2.3.1 DB2 Connect
DB2 Connect là môt phân mêm dua trên viêc trá phí cho phép môt máy khách DB2
Linux, UNIX hay Windows kêt nôi dên môt máy chú DB2 z/OS hay DB2 i5/OS nhu trong
hình 2.2. DB2 Connect không duoc yêu câu trong quá trình liên kêt theo chiêu nguoc
lai, khi ban kêt nôi tù DB2 z/OS hay DB2 i5/OS dên môt máy chú DB2 Linux, UNIX hay
Windows. DB2 Connect có trong hai ân bán chính tùy theo su kêt nôi mà ban cân: DB2
Connect Personal Edition và DB2 Connect Enterprise Edition.

Hình 2.2. DB2 Connect
2.3.2 WebSphere Federation Server
Ðuoc biêt dên truóc dây là WebSphere Infomation Integrator (hô tro tích hop thông tin),
WebSphere Federation Server cho phép su liên kêt hop nhât các co só dü liêu, diêu
này nghïa là ban có thê chay các truy vân co só dü liêu trên nhiêu dôi tuong tù các hê
thông co só dü liêu quan hê khác nhau. Ví du nêu ban mua WebSphere Federation
Server ban có thê chay truy vân duói dây:


Nhp môn H qun tr c s d liu DB2

23
SELECT *
FROM Oracle.Table1 A
DB2.Table2 B
SQLServer.Table3 C
WHERE
A.col1 < 100
And B.col5 = 1000
and C.col2 = ’Test’

Hình 2.3 cung câp su giói thiêu vê khá nãng sú dung cúa WebSphere Federation Server

Hình 2.3 - WebSphere Federation Server

Ðôi vói các hê thông quán lý co só dü liêu quan hê thuôc ho IBM, su hô tro liên kêt hop
nhât dã duoc xây dung sãn trong DB2 Express-C. Ðiêu này nghïa là WebSphere
Federation Server không cân duoc dòi hói., ví du khi ban muôn chay môt truy vân giüa
hai co só dü liêu DB2 khác nhau, hoãc giüa môt co só dü liêu DB2 và môt co só dü
liêu Informix® (Infomix là môt phân trong ho IBM).
2.3.3 WebSphere Replication Server
Ðuoc biêt truóc dây là WebSphere Infomation Integrator (hô tro tích hop thông tin).
WebSphere Replication Server cho phép su tao lai SQL trong các bán ghi co só dü liêu
khi các máy chú không phái cúa IBM tham gia vào. Nó cüng bao gôm môt tính nãng
duoc biêt dên là Q-Replication cho su tái tao dü liêu sú dung các hàng doi thông diêp.
Nhp môn H qun tr c s d liu DB2

24
3
Chuong 3 - Cài dåt DB2

Ðê cài dãt ân bán DB2 Express-C cho Linux hay Windows, dám báo rãng các hê thông
cúa ban thóa mãn các diêu kiên truóc khi cài dãt.
3.1 Các diêu kiên truóc khi cài dåt
Ó khía canh phiên bán hê diêu hành, DB2 Express-C có thê duoc sú dung trên Linux
hay Windows 2000, XP, Vista. Kiên trúc bô xú lý duoc yêu câu là 32 bít, 64 bít và
PowerPC (Linux). Nêu ban cân chay DB2 trên môt nên khác (giông nhu UNIX), ban nên
mua môt trong nhüng ân bán máy chú dü liêu khác dã duoc nói dên truóc dây trong
quyên sách này. Các diêu kiên cúa hê diêu hành truóc khi cài dãt cho tât cá các ân bán
DB2 cüng duoc miêu tá trong tài liêu này.
http://www.ibm.com/software/data/db2/udb/sysregs.html

Trong khía canh vê các tài nguyên phân cúng, DB2 Express-C duoc tôi uu hóa cho các
hê thông lên tói 2 CPU vât lý và 4GB RAM. Các hê thông này có thê là các hê thông vât
lý hay các hê thông áo duoc tao ra bói su phân tán hoãc viêc chay các phân mêm máy
áo. Ban có thê dï nhiên chay nó trong các hê thông nhó hon nêu ban muôn, ví du trong
các hê thông don CPU vói 1GB RAM.

Ðê có duoc nhüng thông tin mói nhât vê các diêu kiên cúa phân cúng truóc khi cài dãt
DB2 Express-C, hãy xem trên trang web DB2 Express-C.
http://www.ibm.com/software/data/db2/udb/db2express/getstarted.html
3.2 Quyên cài dåt hê diêu hành
Ðê cài dãt DB2 Express-C trên Linux hay Windows, ban phái là môt nguòi sú dung hê
diêu hành có dú quyên.

Vói Linux: ban cân phái là root (superuser) dê cài dãt DB2 Express-C.

Vói Windows, tài khoán nguòi sú dung phái thuôc vê nhóm Quán tri trên máy mà ban
së thuc hiên cài dãt. Môt cách khác, môt tài khoán nguòi dùng không thuôc nhóm Quán
tri có thê duoc sú dung, vói diêu kiên là môt thành viên thuôc nhóm Quán tri Windows
dâu tiên câu hình các thiêt lâp nâng quyên Windows dê cho phép môt tài khoán nguòi
dùng không thuôc nhóm Quán tri có thê thuc thi cài dãt.

Vói các tài khoán miên (domain) Windows, dê xác thuc dinh danh (ID) cúa nguòi dùng
trên máy chú DB2, ID cúa nguòi tiên hành cài dãt phái thuôc nhóm Quán tri tai miên
(domain) mà các tài khoán này së duoc tao. Có thê sú dung tài khoán sãn có (built-in)
trên hê thông dê tiên hành cài dãt.

Tài khoán nguòi dùng cüng phái có quyên “Truy câp máy tính này qua mang”
Nhp môn H qun tr c s d liu DB2

25
3.3 Cài dåt theo huóng dân tùng buóc
Có rât nhiêu cách dê tiên hành cài dãt DB2 Express-C, nhung don gián nhât là sú dung
cách cài dãt theo huóng dân tùng buóc dua trên giao diên dô hoa cúa DB2. Sau khi tái
và giái nén DB2 Express-C, ban có thê tiên hành cài dãt nhu sau :
• Windows: chay têp setup.exe trong thu muc EXP/image.
• Linux: chay lênh db2setup trong thu muc exp/disk1.

Viêc cài dãt DB2 Express-C theo huóng dân cài dãt tùng buóc rât don gián. Thông
thuòng, ban chi viêc sú dung các thiêt lâp mãc dinh, vì vây, tât cá các viêc cân làm là
châp nhân diêu khoán sú dung, nhân liên tuc nút “Next” rôi nhân “Finish”. Quá trình cài
dãt së kêt thúc sau vài phút và ban có thê bãt dâu sú dung DB2.

Trên hình 3.1 là cúa sô bãt dâu cài dãt DB2 (DB2 Setup Launchpad), ban nên chon
“Install New” dê cài dãt môt bán sao mói cúa DB2 lên hê thông.


Hình 3.1 – Båt dâu cài dåt DB2 (DB2 Setup Launchpad)



Nhp môn H qun tr c s d liu DB2

26
Sau khi châp nhân diêu khoán sú dung, thông thuòng ban nên chon kiêu cài dãt
“Typical” (mãc dinh) nhu trên hình 3.2.


Hình 3.2 – Các kiêu cài dåt

Trong hình 3.3, ban có các lua chon dê cài dãt sán phâm, tao môt têp biên bán
(response file), hoãc cá hai. Các têp biên bán së duoc tháo luân trong muc 3.4, Cài dãt
hàng loat (Silent Install). Sú dung tùy chon mãc dinh (Cài dãt IBM DB2 Express Edition
trên máy tính này và luu các thiêt lâp ra têp biên bán) là dú.

Nhp môn H qun tr c s d liu DB2

27

Hình 3.3 – Lua chon cài dåt

Trong vài màn hình tiêp theo, hãy chon giá tri mãc dinh cho dên khi ban gãp màn hình
nhu trong hình 3.4. Trong màn hình này ban có thê nhâp vào môt nguòi dùng dã có dê
làm viêc vói bán cài dãt DB2 này (instance) cüng nhu các dich vu khác. Nguòi dùng này
phái nãm trong danh sách Quán tri (Local Administrator) cúa Windows. Nêu nhu ID cúa
nguòi dùng ban nhâp vào không tôn tai, môt nguòi dùng mói së duoc thêm vào nhóm
Quán tri. Ban có thê dê trông “domain” nêu nhu nguòi dùng ban nhâp vào không thuôc
vào môt miên nào dó. ID nguòi dùng mãc dinh duoc tao ra trong windows là db2admin,
trong Linux là db2inst1.

Nhp môn H qun tr c s d liu DB2

28

Hình 3.4 - Nhâp thông tin nguòi dùng cho bán DB2 måc dinh.

Cuôi cùng trong hình 3.5, cài dãt theo huóng dân tùng buóc së hiên thi môt danh sách
tông kêt nhüng phân nào së duoc cài dãt cüng nhu môt vài thông tin, thiêt lâp do ban
nhâp vào. Khi ban nhân “Finish”, quá trình cài dãt DB2 vào hê thông cúa ban bãt dâu.


Hình 3.5 - Danh sách tông kêt nhüng phân së duoc cài
3.4 Cài dåt hàng loat (Silent Install)
Trong nhiêu truòng hop ban cân phái cài dãt máy khách DB2 trên nhiêu máy tính khác
nhau. Hoãc máy chú dü liêu DB2 là môt phân trong úng dung ban xây dung và ban
Nhp môn H qun tr c s d liu DB2

29
muôn quá trình cài dãt DB2 là môt phân cúa quá trình cài dãt chung toàn bô úng dung
dó. Khi dó, cài dãt hàng loat là phuong pháp phù hop cho ban.

DB2 hô tro cài dãt hàng loat nhò têp biên bán (response file) chúa các thông tin cân
thiêt cho quá trình cài dãt. Duói dây là môt trích doan cúa môt têp biên bán mâu.

Têp biên bán mâu:

PROD = UDB_EXPRESS_EDITION
LIC_AGREEMENT=ACCEPT
FILE = C:\Program Files\IBM\SQLLIB\
INSTALL_TYPE = CUSTOM
COMP=TCPIP_DB2_LISTENER_SUPPORT COMP=TCPIP_DB2_CLIENT_SUPPORT
COMP=DB2_SAMPLE_DATABASE
COMP=DB2_SAMPLE_APPLICATIONS
COMP=OLE_DB_SUPPORT
COMP=ODBC_SUPPORT
COMP = JDBC_SUPPORT
COMP = IBM_JRE
...

Các phuong pháp có thê dùng dê tao ra têp biên bán:
• Cài dãt DB2 Express-C truóc môt lân, sú dung phuong pháp cài dãt theo huóng
dân tùng buóc. Môt trong các lua chon dâu tiên khi ban cài dãt theo phuong
pháp này cho phép ban dánh dâu yêu câu DB2 luu lai các thông sô ban nhâp
vào trong quá trình cài dãt vào môt têp biên bán. Khi kêt thúc quá trình cài dãt
têp biên bán së duoc luu vào thu muc và tên têp do ban nhâp vào. Vì têp này là
môt têp vãn bán cho nên sau dó ban có thê súa lai nó tùy ý. Ban có thê xem lai
Hình 3.3 vê phuong pháp này.
• Chinh súa têp biên bán mâu duoc dóng gói kèm theo DB2. Têp mâu này (có
phân mó rông là .rsp) nãm trong thu muc: db2/platform/samples/ directory
• Trong Windows, ban cüng có thê dùng lênh tao têp biên bán:
db2rspgn -d <thu muc luu têp>
• Sau khi ban dã có têp biên bán, trong Windows ban dùng lênh:
setup -u <Tên têp biên ban>
• Ðôi vói Linux, ban dùng lênh:
db2setup -r <Tên têp biên ban>







Nhp môn H qun tr c s d liu DB2

30
Bài tâp nhanh #1: Cài dåt DB2 Express-C và tao ra co só dü liêu mâu
Chú ý: Nêu ban dang sú dung DB2 Express-C V9.1.2 hoãc phiên bán cao hon, nêu ban
chon cài dãt thông qua chê dô dô hoa co só dü liêu mâu có thê duoc tao ra cho ban
môt cách tu dông.

Muc dích

Truóc khi ban có thê bãt dâu nghiên cúu các tính nãng và công cu có trong DB2
Express-C, ban phái cài nó trên hê thông cúa mình. Bài thuc hành này së huóng ban
tùng buóc cách cài dãt DB2 Express-C trên Window.

Các buóc

1. Lây vê ánh cúa DB2 Express-C. Ðê có thê cài dãt DB2, ban có thê tái bô cài duói
dang têp .zip tai dia chi http://www.ibm.com/db2/express. Giái nén các têp vào môt thu
muc do ban dãt tên.

2. Ðinh vi thu muc chính vê thu muc chúa các têp dã giái nén

3. Kích hoat tiên trình cài dãt. Ðê kích hoat tiên trình cài dãt, ban nhân dúp vào têp
setup.exe, sau dó tù cúa sô windows hiên ra ban nhân vào tùy tron Install Product ó
phía bên trái cúa cúa sô.

4. Chay cài dãt DB2 theo tùng buóc (setup wizard). Sau khi ban chon Install Product ó
buóc 3, môt thành phân tro giúp cài dãt goi là “cài dãt tùng buóc” së chay kiêm tra câu
hình phân cúng cúa hê thông dê tiên hành chuân bi cài dãt DB2 Express-C, cüng nhu
kiêm tra xem ban dã cài DB2 truóc dó hay chua. Sau khi chuong trình dã kiêm tra xong
ban nhân vào nút Next dê tiêp tuc cài dãt

5. Châp nhân các diêu khoán ràng buôc, ban hãy doc kÿ các diêu khoán trong giây phép
sú dung và lua chon “I Accept...” và nhân nút Next dê tiêp tuc tiên trình cài dãt.

6. Lua chon kiêu cài dãt. Trong bài thuc hành này ban hãy chon lua kiêu cài dãt là
Typical (ban së thây rãng dây là kiêu cài dãt mãc dinh). Hai kiêu cài dãt khác là Compact
và Custom. Kiêu Compact là kiêu cài dãt co bán còn kiêu Custom cho phép ban thuc
hiên môt sô tùy tron trong quá trình cài dãt. Nhân nút Next dê tiêp tuc.

7. Lua chon thu muc cài dãt. Ban chon thu muc dê cài dãt DB2, chú ý dên dung luong
cúa ô cúng. Trong ví du này ban chon thu muc mãc dinh dê cài dãt DB2 lên hê thông
cúa ban nhu sau:

O cài dåt: C:
Thu muc cài dåt: C:\Program Files\IBM\SQLLIB

Nhân nút Next dê tiêp tuc.

8. Nhâp vào thông tin cúa nguòi sú dung. Môt khi DB2 Express-C dã duoc cài dãt,
nhüng tiên trình DB2 së duoc chay duói tu cách là các dich vu cúa hê thông. Nhüng
dich vu này dòi hói phái duoc dãng nhâp bãng môt tài khoán cúa hê thông dê có thê
thuc hiên. Trong môi truòng Window ban sú dung tài khoán mãc dinh duoc dê nghi là
db2admin, nêu tài khoán này chua tôn tai, DB2 së tao ra cho ban. Chú ý ban phái dãt
mât khâu (password) cho tài khoán. Ban cüng có thê sú dung môt tài khoán sãn có trong
Nhp môn H qun tr c s d liu DB2

31
hê thông thay vì nhò DB2 tao ra môt tài khoán mói cho ban nhung phái ghi nhó rãng dê
có thê chay các dich vu DB2 tài khoán này phái có quyên quán tri (admin).
Nhân nút Next dê tiêp tuc.

9. Câu hình DB2 ínstance. Môt ínstance DB2 có thê duoc coi nhu là môt “kho chúa cho
co só dü liêu”. Môt ínstance này phái tôn tai truóc khi bât kì môt co só dü liêu nào duoc
tao ra và duoc “dãt vào bên trong kho”. Trong môi truòng Window, môt ínstance duoc
goi là DB2 tu dông duoc tao ra, trong khi trong môi truòng Linux tên cúa ínstance mãc
dinh này là db2inst1. Chúng ta së giái thích chi tiêt các dôi tuong này trong các chuong
tiêp theo cúa cuôn sách.

Mãc dinh, ínstance DB2 duoc câu hình dê lãng nghe kêt nôi TCP/IP trên công kêt nôi
5000. Cá hai giao thúc kêt nôi (TCP, UDP) và công kêt nôi dêu có thê duoc cài dãt lai
khi ban nhân vào các nút Protocols và Startup.Tuy nhiên, trong ví du này chúng ta së sú
dung su câu hình mãc dinh dã duoc cài dãt sãn và không thay dôi bât cú câu hình thuôc
vê giao thúc kêt nôi hay công kêt nôi nào cá. Nhân nút Next dê tiêp tuc.

10. Bãt dâu cài dãt. Ðê bãt dâu cài dãt ban nhân vào nút Install, tât cá các câu hình và
các têp cân thiêt së duoc cài dãt vào máy cúa ban môt cách tu dông.

11. First Steps. Sau khi quá trình cài dãt kêt thúc, môt công cu hô tro cài dãt khác duoc
goi là First Steps së duoc chay và hiên thi trên màn hình. First Step cüng có thê duoc
khói chay bãng tay vói câu lênh db2fs trong cúa sô hê diêu hành DOS.

12. Tao ra co só dü liêu Mâu. Trong First Steps, lua chon thé “Database Creation”, và
sau dó theo sau các huóng dân cúa chuong trình dê tao ra co só dü liêu Mâu. Chú ý
ban phái dám báo rãng tùy chon XML and SQL objects and data phái duoc lua chon, và
nhân nút OK.

13. Sau khi ban nhân OK môt cúa sô window sau së duoc hiên ra dê thông báo co só
dü liêu mâu dang duoc tao ra cho ban. Tiên trình này có thê mât môt vài phút.



14. Xác nhân co só dü liêu mâu dã duoc tao ra. Khi viêc tao co só dü liêu dã hoàn tât,
nhân nút OK và dóng công cu First Steps. Quay lai Trung tâm diêu khiên (Control
Center) và kiêm tra rãng môt co só dü liêu tên là SAMPLE dã duoc tao ra trong khung
cúa sô Object Tree (cây dôi tuong). Ban có thê phái làm mói lai Trung tâm diêu khiên dê
nhân biêt duoc su thay dôi này.

15. Khói dông lai máy tính. Mãc dù buóc này là không bãt buôc trong các tài liêu huóng
dân cài dãt DB2, nhung chúng tôi dê nghi ban nên khói dông lai hê thông dê dám báo
rãng tât cá các tiên trình duoc bãt dâu môt cách hoàn háo và giái phóng các tài nguyên
cúa hê thông dã bi chiêm dung trong quá trình cài dãt DB2. Ðây là môt Tùy chon.
Nhp môn H qun tr c s d liu DB2

32


4
Chuong 4 - Các công cu DB2

Trong chuong này chúng tôi së giói thiêu môt sô công cu ban có thê dùng vói DB2.
Trong hình 4.1, phía bên trái là các lênh DB2 khác nhau, SQL, SQL/XML và các câu
lênh XQuery có thê duoc dùng dê tuong tác vói máy chú dü liêu DB2. Phân ó giüa
(duoc dánh dâu bãng hình elip màu dó) liêt kê tên cúa các công cu khác nhau có thê
tuong tác vói máy chú dü liêu DB2. Phía bên phái trong hình vë là môi truòng DB2 co
bán bao gôm môt thê hiên (instance) DB2, môt co só dü liêu và các têp câu hình tuong
úng.

Hình 4.1 - Búc tranh tông thê DB2: Các công cu DB2

Hình 4.2 liêt kê tât cá các công cu DB2 sãn có trong IBM DB2 Start Menu. Hâu hêt các
công cu này giông nhau trên cá Linux và Windows.
Nhp môn H qun tr c s d liu DB2

33


Hình 4.2 - Các công cu DB2 trên IBM DB2 Start Menu

Báng 4.1 cung câp môt danh sách các lênh tãt dê goi môt sô các công cu DB2 phô biên
nhât trong cá môi truòng Linux và Windows.

Tên công cu Lênh
Command Editor Cúa sô nhâp lênh db2ce
Command Line processor Bô xú lý dòng lênh db2
Command Window Cúa sô lênh (Chi dành cho
môi truòng Windows)
db2cmd
Control Center Trung tâm diêu khiên db2cc
Task Center Trung tâm tác vu db2tc
Health Center Trung tâm súc khóe/tình trang db2hc
Configuration Assistant Tro giúp câu hình db2ca
First Steps Buóc khói dâu db2fs
Báng 4.1 - Các lênh tåt cho môt sô công cu DB2

4.1 Trung tâm diêu khiên (Control Center)
Công cu chính cúa DB2 dùng trong viêc quán tri co só dü liêu là Trung tâm diêu khiên
có giao diên nhu trong hình 4.3
Nhp môn H qun tr c s d liu DB2

34

Hình 4.3 - Trung tâm diêu khiên cúa DB2

Trung tâm diêu khiên là môt công cu quán lý tâp trung cho phép ban:
• Xem xét hê thông cúa ban, các bán cài dãt DB2, các co só dü liêu và các dôi
tuong trong co só dü liêu;
• Tao, súa và quán lý co só dü liêu và các dôi tuong co só dü liêu;
• Khói dông các công cu dô hoa khác cúa DB2

Khung bên trái cung câp môt cây phân câp truc quan phán ánh câu trúc cúa các dôi
tuong co só dü liêu trong hê thông cúa ban, vói các “thu muc” dai diên cho báng
(Tables), thê hiên (Views)… Khi ban nhân dúp vào môt thu muc (ví du thu muc Tables,
nhu trong hình 4.3), khung trên cùng bên phái së liêt kê tât cá các dôi tuong liên quan,
trong truòng hop này là tât các báng liên quan dên co só dü liêu SAMPLE. Nêu ban
chon môt báng nào dó ó khung trên bên phái, thì khung phía duói bên phái së cung câp
các thông tin chi tiêt hon vê báng dó.

Nhân chuôt phái vào các thu muc/dôi tuong khác nhau trong Cây dôi tuong (Object
tree) së hiên lên môt báng chon thích hop vói thu muc/dôi tuong dó. Ví du, nhân phái
chuôt lên môt cài dãt DB2 và chon “Configure parameters” cho phép ban xem và câp
nhât têp câu hình cho chuong trình quán tri co só dü liêu. Tuong tu, nêu ban nhân
chuôt phái vào môt co só dü liêu và chon “Configure parameters”, ban có thê xem và
câp nhât têp câu hình cho co só dü liêu dó. Môi truòng DB2 và các thông sô câu hình
së duoc nhãc tói kÿ hon ó chuong 5, Môi truòng DB2.

Lân dâu tiên chay Trung tâm diêu khiên, ban duoc hói và lua chon cách trung tâm diêu
khiên së hiên thi theo cách nào. Úng vói môi cách hiên thi, các dôi tuong co só dü liêu
së duoc thê hiên thi theo kiêu tuong úng. Hình 4.4 là hôp thoai dùng dê lua chon cách
hiên thi cúa Trung tâm diêu khiên.
Nhp môn H qun tr c s d liu DB2

35

Hình 4.4 - Hôp thoai chon cách hiên thi Trung tâm diêu khiên

Cách hiên thi co bán (basic) cung câp các chúc nãng nòng côt cúa DB2.
Cách hiên thi nâng cao (advanced) thê hiên nhiêu lua chon và chúc nãng hon.
Cách hiên thi tùy chon (custom) cho phép ban tùy biên các hình thúc thê hiên các chúc
nãng, các lua chon và các dôi tuong theo ban muôn.

Ðê bât lai hôp thoai này, ban chon “Customize Control Center” tù báng chon Tools nhu
trong hình 4.5


Hình 4.5 - Tùy biên Trung tâm diêu khiên

Nhp môn H qun tr c s d liu DB2

36
Khói dông Trung tâm diêu khiên
Có nhiêu cách dê khói dông Trung tâm diêu khiên:
• Sú dung tù Menu Start cúa Windows
• Chay lênh db2cc tù dâu nhãc lênh
• Nhân dúp vào biêu tuong Trung tâm diêu khiên trên bât ky thanh công cu
nào cúa các công cu giao diên dô hoa DB2.
• Tù biêu tuong DB2 trên khay hê thông cúa Windows nhu trong hình 4.6 (Nhân
phái chuôt vào biêu tuong DB2 và chon DB2 Trung tâm diêu khiên)



Hình 4.6 - Khói dông Trung tâm diêu khiên DB2 tù khay hê thông cúa Windows

4.2 Nhâp lênh truc tiêp
Sú dung cúa sô nhâp lênh cúa DB2 (Command Center), ban có thê thuc thi các lênh
DB2, SQL và các câu lênh XQuery, phân tích kê hoach thuc hiên cúa môt câu lênh, xem
hay súa kêt quá cúa câu truy vân.

Hình 4.7 thê hiên Cúa sô nhâp lênh cùng vói mô tá ngãn gon các thành phân cúa nó.


Hình 4.7 - Cúa sô nhâp lênh cúa DB2

Trong vùng nhâp lênh (input area), ban có thê nhâp nhiêu câu lênh cùng lúc, nhung cân
dám báo các câu lênh kêt thúc vói ký tu kêt thúc do ban chon. Khi ban bâm nút thuc
hiên (xem hình 4.8), các câu lênh së duoc thuc hiên lân luot. Nêu nhu ban dánh dâu
môt câu lênh nào dó thì chi mình câu lênh này së duoc thuc hiên. Môt kêt nôi tói co só
dü liêu cân phái duoc thiêt lâp truóc khi thuc hiên bât ky câu lênh SQL nào, tuy nhiên
ban cüng có thê chèn câu lênh thuc hiên kêt nôi vào doan lênh cúa mình.

Quay tró lai Trung
tâm diêu khiên
Vùng nhâp lênh
Vùng kêt quá

Ðang chon Cúa sô
nhâp lênh
Thêm môt kêt nôi
vói co só dü liêu
Co só dü liêu
dang kêt nôi
Ký tu duoc dùng dê xác
dinh kêt thúc cúa câu lênh
Nhp môn H qun tr c s d liu DB2

37






Hình 4.8 - Cúa sô nhâp lênh – Thé Lênh

Khói dông Cúa sô nhâp lênh
Ban có thê khói dông cúa sô nhâp lênh bãng môt sô cách:
» Tù Menu Start cúa Windows:
Start -> Programs -> IBM DB2 -> Command Line Tools -> Command Editor
» Tù môt cúa sô nhâp lênh (cúa windows hoãc linux), gõ db2ce
» Tù menu Tools cúa Trung tâm diêu khiên
» Nhúng trong Trung tâm diêu khiên:
- Nhân phái chuôt vào biêu tuong co só dü liêu SAMPLE trong khung hiên
thi các dôi tuong cúa Trung tâm diêu khiên sau dó chon menu Query.
- Bât ky khi nào môt dôi tuong mà ban có thê truy vân, duoc chon (co só
dü liêu, báng..), ban có thê khói dông Cúa sô nhâp lênh bãng cách nhân
vào duòng dân Query trong khung thông tin chi tiêt vê dôi tuong cúa
Trung tâm diêu khiên (khung duói bên tay phái).
» Tù Trung tâm diêu khiên, nhân chon biêu tuong Cúa sô nhâp lênh trên
thanh công cu cúa Trung tâm diêu khiên nhu trong hình 4.9


Hình 4.9 - Biêu tuong Cúa sô nhâp lênh trong Trung tâm diêu khiên

Thêm môt kêt nôi tói co só dü liêu
Ðê thêm môt kêt nôi tói môt co só dü liêu nhân vào nút Add. Môt hôp thoai nhu trong
hình 4.10 së xuât hiên.
Thuc hiên câu lênh
(Có thê dùng tô hop phím
tãt Ctrl+Enter)
Thuc hiên câu lênh và sinh
ra môt kê hoach truy câp
(Së nói kÿ hon ó phân sau)
Sinh ra môt kê hoach truy câp mà
không thuc hiên câu lênh
(Së nói kÿ hon ó phân sau)

Nhp môn H qun tr c s d liu DB2

38


Hình 4.10 - Thêm môt kêt nôi co só dü liêu

4.3. Trình tro giúp SQL
Nêu ban không quen thuôc vói ngôn ngü SQL và thích sú dung môt trình hô tro hoãc
huóng dân tu dông sinh mã SQL, lúc này trình tro giúp “SQL Assist Wizard” là môt
công cu sãn có tù trình soan tháo dòng câu lênh (Command Editor) së giúp ban giái
quyêt. Nhu hình 4.11 bên duói, ban có thê triêu goi nó tù Command Editor bãng viêc
nhâp chuôt vào biêu tuong sau vói ký hiêu SQL (nôi lên trong hình vói vòng tròn dó).







Chon ô này
nêu ban muôn
sú dung ID và
mât khâu cúa
nguòi dùng
dang dãng
nhâp vào hê
diêu hành.
Lua chon môt
co só dü liêu
trong hê thông
ID và mât
khâu cúa môt
nguòi dùng
cúa hê diêu
hành.
Nhp môn H qun tr c s d liu DB2

39

Hình 4.11 – Goi trình tro giúp SQL Assist Wizard.
Hình 4.12 trình bày vê trình tro giúp SQL Assist Wizard. Nó cho phép sú dung song
hành dông thòi cá hai chê dô. Ðâu tiên chi ra kiêu cúa câu lênh SQL ban hô tro vói
(SELECT, INSERT, UPDATE, DELETE). Nó còn phu thuôc vào câu lênh ban chon, các
tùy chon khác nhau së duoc hiên thi ra. Ó phân cuôi cùng cúa cúa sô ban së nhìn thây
làm thê nào dê câu lênh SQL duoc xây dung nên giông nhu ban chon nhüng lua chon
khác trong trình huóng dân.
Nhp môn H qun tr c s d liu DB2

40















Hình 4.12 – Trình tro giúp SQL Assist Wizard

4.4 Trình bày nút Show SQL
Hâu hêt các công cu tro giúp dô hoa (GUI) và các trình huóng dân trong DB2 cho phép
ban xem lai câu lênh hiên thòi hoãc câu lênh SQL dã duoc thuc thi ra kêt quá bãng viêc
sú dung công cu hay trình huóng dân dê thuc hiên môt công viêc. Ðê xem phân này,
nhâp chuôt vào nút Show SQL trong công cu ban dang làm viêc, nhu hình 4.13 và hình
4.14.



Hình 4.13 – Trình bày nút Show SQL







Hình 4.14 – Ðâu ra cúa môt phân trình bày vê nút Show SQL.

Khá nãng hiên thi lai nhüng câu lênh SQL và nhüng dòng lênh là rât có ích trong viêc
hoc cú pháp SQL, rút gon và tái sú dung nhüng lênh và nhüng dòng lênh trong môt têp
dê sú dung vê sau này. Ban cüng có thê xây dung các kich bán bãng viêc dùng lai
nhüng lênh và nhüng dòng lênh dã duoc tao ra này.

Bài tâp nhanh #2 - Tao môt CSDL mói vói Trung tâm diêu khiên

Muc dích
Trong bài tâp nhanh này, ban së tao ra môt CSDL mói sú dung trình huóng dân tao
CSDL trong Trung tâm diêu khiên.

Thú tuc thuc hiên:
1. Tù ô cây dôi tuong cúa Trung tâm diêu khiên, nhâp phái chuôt vào thu
muc All Databases, chon danh sách Create Database, và chon danh sách
Nhp môn H qun tr c s d liu DB2

41
With Automatic Maintenance. Bãt dâu chay Creat Database Wizard.

2. Ðãt tên cho CSDL và vi trí luu têp trong trang Name cúa trình huóng dân.
Sú dung các giá tri duói dây:
• Tên CSDL: EXPRESS
• Ó dïa mãc dinh (cúa Windows): C:
• Ðuòng dân mãc dinh (cúa Linux): /home/db2inst1
• Bí danh: Truòng hop này mãc dinh là EXPRESS nêu bên trái dê
trông.
• Ghi chú: Truòng hop này có thê tùy chon, bên trái có thê dê trông.
Nhâp chuôt vào CSDL có sãn Enable cho hôp chon XML, và sau dó nhâp
chuôt vào nút Next dê tiêp tuc trang kê cúa trình huóng dân.

3. Trong Specify cân chi rõ noi luu trang dü liêu, không thêm bât ky su thay
dôi nào, và nhâp Next.

4. Trong trang chon chiên luoc báo trì, lây giá tri mãc dinh (Yes, I can
specify an offiline…), và nhâp Next.

5. Chi dinh khe thòi gian báo trì trong trang Timing. Chi rõ hai hoãc hon 4
giò môt tuân khi DB2 có thê thuc hiên tu dông duy trì các công viêc dê
giü viêc hoat dông bình thuòng cúa CSDL. Bây giò, câu hình khe thòi
gian bãt dâu lúc 1 giò sáng tù thú hai tói thú nãm, kéo dài 6 tiêng. Nhâp
vào nút Next.

6. Câu hình thông diêp trên trang Mail Server cúa trình huóng dân. DB2 có
thê tu dông gúi môt email hay môt trang nêu có môt su cô hay môt diêu
kiên bât thuòng duoc phát hiên thây. Nêu ban muôn cài dãt lai diêu này,
hãy chi ra môt máy chú SMTP có sãn nào dó dê DB2 dùng trong viêc gúi
email. Vói bài tâp này, chúng ta không có môt máy chú SMTP nào, vì thê
cho phép dê trông phân này và nhâp nút Next.

7. Xem lai các tùy chon dã chon trong trang Summary trong trình huóng
dân. Nhâp vào nút Finish dê bãt dâu quá trình tao ra CSDL. CSDL duoc
tao ra thuòng phái mât môt vài phút, trong thòi gian này chi thi báo tiên
trình dang thuc hiên së hiên ra.

8. Bây giò môt CSDL dã duoc tao, nôi trú ngay trong nó là môt vài báng và
ít dü liêu duoc tao ra. Ðê tao cho ban su thuân loi, hai kich bán có tên là
quicklab2.db2 và quicklab2.dat dã sãn có dê giúp ban. Kich bán
quicklab2.db2 chúa nhüng lênh duoc dùng dê tao các báng và do dó
phái duoc chay dâu tiên. Kich bán quicklab2.dat chúa nhüng câu lênh
chèn dü liêu vào các báng. Cá hai kich bán này có thê tìm thây trong têp
nén ex-pressc_book_quicklabs.zip di cùng cuôn sách này. Ðê chay nhüng
kich bán này, sú dung cúa sô nhâp lênh.
a. Hãy chãc rãng CSDL mói ban dã tao duoc chon (bôi den) trong
danh sách thá xuông trong thanh công cu Command Editor. Nêu
CSDL mói không hiên lên trong danh sách, sú dung nút Add dê
thêm môt kêt nôi tói nó (xem gân hình 4.10)
b. Nhâp vào lênh Select -> Open hoãc nhân nút mó

trong
Command Editor và chuyên tói thu muc noi chúa các kich bán dã
duoc luu. Ðánh dâu têp quicklab2.db2 và nhâp nút OK. Các nôi
dung cúa têp bây giò duoc hiên thi trong vùng dâu vào dü liêu
cúa Command Editor. Chon nút Run dê chay kich bán. Xác
Nhp môn H qun tr c s d liu DB2

42
dinh không có lôi nào duoc tìm thây khi chay kich bán này.

9. Lãp lai buóc 8 cho têp quicklab2.dat.

CSDL mói này là môt ví du don gián cho môt cúa hàng sách trên Internet. Báng BOOKS
chúa tât cá thông tin vê nhüng cuôn sách duoc luu trü. Báng CUSTOMERS chúa thông
tin vê môi khách hàng cúa cúa hàng. Cuôi cùng báng SALES chúa dü liêu vê viêc bán
hàng. Bât ky lúc nào khách hàng dãt mua môt cuôn sách, môt bán ghi duoc tao ra trong
báng SALES. So dô duói dây trình bày thiêt kê và quan hê giüa các báng.



4.5 Tao kich bán
Nó rât hüu ích dê cho phép tao ra nhüng têp kich bán, nhüng têp thuc thi nhüng lênh
DB2 hoãc nhüng câu lênh SQL lãp lai nhiêu lân. Ví du, môt nguòi quán tri (DBA) có thê
muôn chay môt kich bán dua ra hàng ngày dê kiêm tra sô hàng cúa nhüng báng quan
trong.

Có hai dang kich bán thông thuòng:
1. Các kich bán SQL.
2. Các kich bán (vó) hê diêu hành.

4.5.1 Các kich bán SQL
Các kich bán SQL bao gôm các câu lênh truy vân và các lênh CSDL. Các kich bán này
là môi quan hê don gián dê hiêu và là nên dôc lâp. Tuy nhiên, các biên hay các tham sô
không duoc hô tro.

Cho ví du, các lênh duói dây duoc luu lai trong têp có tên script1.db2.

CONNECT TO EXPRESS;
CREATE TABLE user1.mytable
( col1 INTEGER NOT NULL,
col2 VARCHAR(40),
col3 DECIMAL(9,2));
SELECT * FROM user1.mytable FETCH FIRST 10 ROWS ONLY;
Nhp môn H qun tr c s d liu DB2

43
COMMIT;

Têp script1.db2

Trong phân kich bán trên, tât cá các câu lênh là các câu lênh SQL, và môi câu lênh
duoc cách nhau bói môt dâu phân cách và trong truòng hop này là dâu châm phây. Tên
têp không nhât thiêt sú dung duôi mó rông là “db2”. Bât ky phân mó rông nào cüng
dùng duoc.

Thuc thi các kich bán SQL:
Môt kich bán SQL có thê duoc thuc thi bãng nhiêu cách khác nhau có thê tú cúa sô
lênh hoãc DB2 Command Window trên Windows, hoãc thông qua Linux shell. Ðê chay
kich bán tù DB2 Command Window hoãc Linux shell, ban có thê dùng các lênh duói
dây:

db2 -t -v -f script1.db2 -z script1.log hoãc,
db2 –tvf script1.db2 –z script1.log

Trong câu lênh này:
-t Chi ra các câu lênh dùng dâu kêt thúc mãc dinh (dâu châm phây).
-v Chê dô “lãm lòi”, dê db2 hiên thi các lênh khi thuc hiên.
-f Chi ra rãng tên têp sau cò này là têp kich bán.
-z Chi ra rãng theo sau thông báo tên têp së duoc sú dung dê hiên giá tri dâu ra
cho viêc phân tích sau này (dây là chon, nhung nên làm).

Khi cò hiêu –t duoc dùng và không có dâu phân cách dòng nào duoc chi rõ, dâu châm
phây së duoc chon. Có môt sô hoàn cánh mà ta cân dên môt dâu phân cách khác. Ví du
môt kich bán chúa mã SQL PL cân dùng môt dâu phân cách câu lênh khác vói ký tu
mãc dinh (dâu châm phây), bói vì nhüng dâu châm phây này dã duoc dùng bên trong
các dinh nghïa dôi tuong SQL PL dê phân cách các câu lênh thuôc vê thú tuc.

Ví du, trong têp kich bán ó duói dây có tên “functions.db2”, nó chúa ngôn ngü dinh
nghïa dü liêu DDL dê tao môt hàm, môt dâu châm phây là cân thiêt ó cuôi cúa cú pháp
SELECT ó bên trong hàm. Vói câu lênh CREATE FUNCTION dâu phân cách chúng ta
phái sú dung môt dâu châm than (!). Nêu chúng ta lai dùng môt dâu châm phây vào viêc
ngãn cách câu lênh, khi chay së xáy ra xung dôt tù kich bán, kêt quá là có môt lôi trong
thông báo tù DB2.

CREATE FUNCTION f1() SELECT
… ;
… END!

Têp functions.db2

Ðê cho DB2 biêt rãng môt ký tu dâu phân cách khác duoc dùng, sú dung cò hiêu –d,
tiêp sau là ký tu phân cách mong muôn (dâu !) nhu trình bày duói dây:

db2 –td! –v –f functions.db2 –z functions.log

Ðê có các mô tá vê các cò hiêu khác bãng cách chay câu lênh duói dây trong
Command Window hoãc Linux shell:

db2 list command option
Nhp môn H qun tr c s d liu DB2

44

4.5.2 Các kich bán vói hê diêu hành
Các kich bán vói hê diêu hành cung câp dô linh hoat và tính nãng manh më hon, nhu
cho ta khá nãng thêm vào nhüng doan mã lâp trình có tính logic. Nhüng doan kich bán
này phu thuôc vào hê diêu hành nên, tuy nhiên chúng có hô tro các tham sô và các biên.
Duói dây là ví du cúa môt kich bán trong hê diêu hành Windows.

set DBPATH=c;
set DBNAME=PRODEXPR
set MEMORY=25
db2 CREATE DATABASE %DBNAME% ON %DBPATH% AUTOCONFIGURE USING
MEM_PERCENT %MEMORY% APPLY DB AND DBM
db2 CONNECT TO %DBNAME% USER %1 USING %2
del schema.log triggers.log app_objects.log
db2 set schema user1
db2 –t –v –f schema.db2 –z schema.log
db2 –td@ -v –f triggers.db2 –z triggers.log
db2 –td@ -v –f functions.db2 –z functions.log

Têp create_database.bat

Ðê thuc hiên kich bán vói hê diêu hành này tù dòng lênh, ban gõ lênh sau trong
Windows:

create_database.bat db2admin ibmdb2

Trong Windows sú dung phân mó rông “bat” dê nói cho hê diêu hành biêt rãng dây là
môt tâp tin thuc thi xú lý theo lô.

Trong Linux, ban cân thay dôi kiêu trên tâp tin dê chi dinh rãng tâp tin này là môt tâp tin
thuc thi bãng cách sú dung lênh nhu chmod +x. Sau dó, ban có thê chay tâp tin này vói
cách thúc giông nhu ó phân trên.




















Nhp môn H qun tr c s d liu DB2

45
Bài tâp nhanh #3 – Tao môt kich bán cài dåt cho co só dü liêu EXPRESS

Muc tiêu
Các kich bán là môt co chê manh më trong viêc thuc hiên nhüng công viêc có tính chât
lãp di lãp lai nhu tâp hop thông kê cho co só dü liêu, sao luu, và triên khai co só dü
liêu. Các kich bán hê diêu hành có loi diêm cúa viêc hô tro các tham sô kich bán, diêu
này giúp cho chúng linh hoat hon. Trong bài tâp nhanh này, ban së tao ra môt kich bán
hê diêu hành dê triên khai co só dü liêu EXPRESS. Các kich bán này së goi kich bán
vói SQL dã duoc tao ra truóc dó cho các dôi tuong co só dü liêu. Nhãm muc dích tiêt
kiêm không gian, bài tâp nhanh này chi hiên thi nhüng kich bán và câu lênh dành riêng
cho nên Windows. Nêu ban muôn làm viêc trên Linux, hãy dám báo rãng ban thuc hiên
nhüng thay dôi phù hop vói nhüng su huóng dân sau dây.

Thú tuc
1. Mó môt chuong trình soan tháo vãn bán, nhu Notepad hay Wordpad và nhâp vào
thông tin duoc hiên thi duói dây.



2. Luu lai tâp tin kich bán trong môt thu muc và dãt tên cho tâp tin này là
create_database.bat. Trong hôp thoai cúa sô Save As, dám bám rãng ban dã
chon muc tùy chon MS-DOS Format (trong Wordpad). Nêu ban luu tâp tin này duói môt
dinh dang khác, Wordpad có thê së tao thêm môt sô ký tu ân và viêc này có thê gây ra
nhüng vân dê trong khi quá trình thuc thi cúa kich bán. Thêm vào dó, hãy dãt dâu ngoãc
kép bao lây tên cúa tâp tin dê dám báo rãng Windows không tu dông thêm phân mó
rông .TXT cho tâp tin nhu hình vë duói dây.
Nhp môn H qun tr c s d liu DB2

46


3. Ðê chay kich bán tuong tác vói DB2, ban phái có môt môi truòng dòng lênh DB2. Ðê
mó cúa sô lênh DB2, hãy vào Start -> Program Files -> IBM DB2 -> DB2COPY1
(default) -> Command Line Tools -> Command Window.
Cách khác, ban có thê sú dung Start -> Run, gõ vào db2cmd và ân enter nhu hình vë
duói dây



4. Sau dó dê chay kich bán, nhâp vào các lênh sau:

cd C:\express
create_database.bat db2admin ibmdb2
Nhp môn H qun tr c s d liu DB2

47


5. Ban hãy dành chút thòi gian dê làm quen vói kich bán mà ban vùa tao xong. Ban có
hiêu nhüng gì dang xáy ra tai tùng dòng không?

6. Hãy cô gãng trá lòi nhüng câu hói sau dây:
a. Kêt nôi co só dü liêu duoc thiêt lâp ó dâu?
b. Các ký hiêu %1 và %2 nghïa là gì?
c. Dòng lênh sau dây dùng dê làm gì? Nó duoc sú dung khi nào? Cho muc dích gì?
SET DBPATH=C:
d. Dòng lênh sau dây duoc dùng dê làm gì?
del schema.log, triggers.log, app_objects.log
e. Ðiêu gì së xáy ra khi kich bán duoc goi mà lai không có bât cú tham sô nào?
f. Tai sao nhüng kich bán SQL duoc goi lai không chúa các câu lênh CONNECT
TO? Chúng kêt nôi dên co só dü liêu nhu thê nào?

Nhp môn H qun tr c s d liu DB2

48
4.6 Trung tâm tác vu (Task Center)
Công cu Trung tâm tác vu vói giao diên dô hoa nguòi dùng cho phép ban tao ra nhüng
tác vu: là môt tâp hop nhüng hoat dông nhu chay các lênh DB2, các lênh cúa hê diêu
hành, hay nhüng kich bán. Các hành dông ó phía sau có thê duoc thuc hiên ngay cá khi
tác vu truóc thât bai hay thành công. Ví du, nêu môt tác vu bao gôm công viêc sao luu
môt co só dü liêu quan trong vào lúc 3h sáng duoc thuc hiên thành công, môt email së
duoc gúi dên cho DBA dê cung câp thông tin này. Mãt khác, nêu tác vu sao luu thât bai
thì Trung tâm tác vu së dánh dâu trang (page) cho nguòi quán tri biêt. Hình 4.15 minh
hoa Trung tâm Tác vu


Hình 4.15 – Trung tâm Tác vu
4.6.1 Co só dü liêu Tools Catalog
Tât cá các thông tin chi tiêt vê các tác vu cúa ban và lich thuc hiên tác vu dó duoc luu
trü trong môt co só dü liêu DB2 riêng biêt goi là co só dü liêu Tools Catalog. Co só dü
liêu này phái duoc tôn tai sãn dê có thê lên lich cho các tác vu. Ðê tao môt co só dü liêu
Tools Catalog ban có thê sú dung lênh này:

CREATE TOOLS CATALOG systools CREATE NEW DATABASE toolsdb

Trong ví du ó trên, systools là tên so dô (schema name) cúa tât cá các báng trong co só
dü liêu, và tên cúa co só dü liêu là toolsdb. Chúng ta së nói nhiêu hon vê các so dô
(schemas) trong chuong 8 - Làm viêc vói các dôi tuong co só dü liêu.

Khói dông Trung tâm Tác vu
Ban có thê khói dông Trung tâm Tác vu tù Trung tâm Ðiêu khiên (Control Center) bãng
cách nhân vào Tools -> Task Center nhu minh hoa trong hình 4.16. Môt cách khác, ban
Nhp môn H qun tr c s d liu DB2

49
có thê bãt dâu công cu này tù menu Start cúa Windows: Start -> Programs ->IBM DB ->
DB2COPY1 -> General Administration Tools -> Task Center

Hình 4.16 – Khói dông Trung tâm Tác vu

Lên lich vói Trung tâm Tác vu
Bât cú loai kich bán nào cüng có thê duoc lên lich bãng cách sú dung Trung tâm Tác vu
(kich bán dó có thê duoc hay không duoc tao thông qua môt công cu cúa DB2 có giao
diên dô hoa nguòi dùng). Các tác vu duoc chay tai thòi diêm dã lên lich tù hê thông noi
mà ban dã tao co só dü liêu Tools Catalog. Chúng tôi khuyên khích ban tu mình khám
phá Trung tâm Tác vu. Viêc tao môt tác vu khá don gián.
4.7 Nhât ký
Công cu Nhât ký có giao diên dô hoa cúa DB2 cung câp cho nguòi quán tri co só dü
liêu môt nhât ký vê các hoat dông trên biêu mâu truc tuyên (online form). Hình 4.17 mô
tá vê Nhât ký trong DB2 và Báng 4.2 mô tá nhüng thông tin mà ban có thê thu duoc tù
Nhât ký.
Nhp môn H qun tr c s d liu DB2

50

Hình 4.17 – Nhât ký

Kiêu thông tin Mô tá
Lich sú tác vu
(Task History)
Tât cá các công viêc duoc lên lich dã duoc thuc hiên và
tình trang hoat dông cúa chúng
Lich sú cúa co só dü liêu
(Database History)
Bán ghi nhó vê các tác dông lên co só dü liêu (sao luu,
phuc hôi, tô chúc lai (REORG), v.v…)
Thông diêp Nhât ký cúa các thông diêp duoc phán hôi tù các công
cu cúa DB2. Ðiêu này rât hüu ích nêu ban muôn triêu
hôi và dôi chiêu các thông diêp lôi cü, hoãc nêu ban
dóng hôp thoai quá nhanh hay do truc trãc.
Bán ghi các thông báo Luu trü thông diêp câp hê thông. Các lôi nghiêm trong
duoc ghi lai ó dây
Báng 4.2 – Các thông tin duoc mô tá trong Nhât ký.

Khói chay Nhât ký
Ban có thê khói dông Nhât ký tù Trung tâm diêu khiên (Control Center) bãng cách bâm
chuôt vào Tools -> Journal, nhu duoc mô tá trong Hình 4.18. Bãng cách khác, ban có
thê chay công cu này tù trình don Start cúa Windows: Start -> Programs -> IBM DB2->
DB2COPY1 -> General Administration Tools -> Journal.

Nhp môn H qun tr c s d liu DB2

51

Hình 4.18 – Khói dông Nhât kí.
4.8 Giám sát tình trang (health)
Giám sát tình trang là môt tác nhân mãc dinh chay bên trong bô máy DB2, giám sát tât
cá các mãt cúa tình trang co só dü liêu (bô nhó, quán lý không gian, các hoat dông
duoc tu dông hóa dã duoc dinh rõ truóc…). Khi mà môt sô tính nãng cúa DB2 duoc
thuc thi bên ngoài các tham sô dã thiêt lâp, së xuât hiên ngoai lê, nguòi quán tri co só
dü liêu së duoc luu ý tói. Có 3 kiêu cánh báo:

» Chú ý: Tình trang không bình thuòng.
» Cánh báo: Tình trang chua nghiêm trong, không yêu câu su quan tâm
ngay lâp túc nhung có thê báo hiêu hê thông không còn trong tình trang
tôi uu.
» Báo dông: Tình trang nghiêm trong yêu câu có các hành dông can thiêp
ngay lâp túc.

Giám sát hê thông có thê bât hoãc tãt sú dung tham sô câu hình quán lý co só dü liêu
HEALTH_MON.
4.8.1 Trung tâm tình trang
Trung tâm tình trang là môt công cu dô hoa dê tuong tác vói tác nhân Giám sát tình
trang. Công cu Trung tâm tình trang phân tích cánh báo tình trang trong hê thông dôi vói
tùng thê hiên (instance), co só dü liêu, và không gian báng. Hình 4.19 mô tá vê công cu
Trung tâm tình trang.


Nhp môn H qun tr c s d liu DB2

52

Hình 4.19 – Công cu Trung tâm tình trang

Khói chay Trung tâm tình trang.
Ban có thê khói dông Trung tâm tình trang tù Control Center bãng cách nhân vào Tools
Menu và chon Health Center. Ðiêu này duoc biêu diên qua Hình 4.20. Ban cüng có thê
chay công cu này tù Start -> Programs -> IBM DB2 -> DB2COPY1 -> Monitoring Tools -
> Health Center.


Hình 4.20 – Khói chay Trung tâm súc khóe

Thiêt lâp cánh báo tình trang
Môt khi Trung tâm tình trang cúa ban dã duoc khói dông, ban có thê thiêt lâp các khai
báo cho lòi cánh báo (Alert notification) bãng cách nhân vào Health Center menu ->
Configure -> Alert Notification nhu trong Hình 4.21. Cánh báo tình trang cho phép ban
nhâp vào danh ba vói dia chi email hay sô máy nhãn tin cúa nhüng nguòi cân phái liên
lac nêu xuât hiên cánh báo.

Chon thòi gian
làm mói màn hình
Hiêu chinh các
thiêt lâp chi thi
tình trang
Lua chon kiêu
thông báo dê
sú dung
Nhâp dúp chuôt
vào bât cú lòi
cánh báo nào
thì các chi tiêt
vê thông báo
xuât hiên ó dây
Nhp môn H qun tr c s d liu DB2

53

Hình 4.21 – Khai báo cánh báo


Nhp môn H qun tr c s d liu DB2

54
5
Chuong 5 - Môi truòng cúa DB2

Trong chuong này, chúng ta së tháo luân vê Môi truòng DB2: các thê hiên, co só dü
liêu và các file câu hình. Hình 5.1 mô tá các vân dê bao bói e-líp màu dó së duoc chúng
ta tháo luân trong chuong này.



Hình 5.1 - Búc tranh tông thê vê DB2: Môi truòng DB2

Ðê mô tá môi truòng DB2, hãy mô tá dân dân tùng phân tú thành phân. Hình 5.2 cho
thây hình tuong vê máy chú dü liêu DB2 sau khi cài dãt DB2 Express-C 9
Nhp môn H qun tr c s d liu DB2

55

Hình 5.2 – Hình mâu vê máy chú dü liêu DB2 sau khi cài dåt DB2 Express-C 9

Ðây là môt phân cúa quá trình cài dãt trong môi truòng Windows, tao ra môt thê hiên
mãc dinh goi là DB2 (hay “db2inst1” trên môi truòng Linux). Ðiêu này duoc mô tá bãng
môt hôp màu xanh trong Hình 5.3. Thê hiên này don gián là môt môi truòng dôc lâp
trong dó có thê chay các úng dung và tao ra các co só dü liêu. Ban có thê tao nhiêu thê
hiên trên cùng môt máy chú dü liêu và sú dung chúng cho các muc dích khác nhau. Ví
du, môt thê hiên có thê duoc dùng dê luu trü co só dü liêu cho sán phâm, thê hiên khác
duoc dùng dê kiêm tra môi truòng co só dü liêu, và môt cái khác dùng cho môi truòng
phát triên. Tât cá các thê hiên này là dôc lâp vói nhau; nghïa là, các thao tác thuc hiên
trên môt thê hiên së không làm ánh huóng tói các thê hiên còn lai.


Hình 5.3 – Thê hiên måc dinh DB2 duoc tao ra.

Ðê tao môt thê hiên DB2 mói, sú dung câu lênh bd2icrt <instance name>, chô
<instance name> duoc thay thê bói bât cú tên nào gôm 8 kí tu. Ví du, dê tao ra thê
hiên myinst, ta sú dung câu lênh: bd2icrt myinst.

Hình 5.4 cho thây môt thê hiên mói tên myinst nhu môt hôp màu xanh riêng biêt
Nhp môn H qun tr c s d liu DB2

56

Hình 5.4 – Môt máy chú DB2 vói 2 thê hiên.

Chú ý rãng môi thê hiên có môt dia chi công (port) riêng. Ðiêu này giúp phân biêt giüa
các thê hiên khi mà ban muôn kêt nôi tói môt co só dü liêu trong môt thê hiên nhât dinh
tù môt máy khách ó xa. Nêu ban sú dung cúa sô dòng lênh DB2 (DB2 Command
Window), ban có thê làm bât cú thê hiên nào cúa DB2 tró thành môt thê hiên hoat dông
bãng cách sú dung môt lênh hê diêu hành trên môi truòng Windows:

set db2instance = myinst

Trong ví du này, nêu ban tao môt co só dü liêu tù Cúa sô dòng lênh, nó së duoc tao
trong thê hiên myinst.

Ðê liêt kê các thê hiên, gõ lênh:

db2ilist

Trên Linux, môt thê hiên phái gãn liên vói môt nguòi dùng trên Linux; do dó, dê chuyên
dôi giüa các thê hiên, ban chi cân chuyên dôi nguòi dùng (vói câu lênh su).
Báng 5.1 mô tá vài lênh hüu ích trên thê hiên

Câu lênh Mô tá
db2start Khói dông thê hiên hiên tai
db2stop Ngùng thê hiên hiên tai
db2icrt Tao môt thê hiên mói
db2idrop Loai bó môt thê hiên
db2ilist Liêt kê các thê hiên ban có trong hê thông
db2 get instance Liêt kê các thê hiên hoat dông hiên tai
Báng 5.1 – Các lênh DB2 hüu dung trên thê hiên.

Vài câu lênh ó trên có thê thuc hiên thay thê thông qua trung tâm diêu khiên (Control
Center). Ví du, trong cúa sô trung tâm diêu khiên, nêu ban mó rông thu muc Instances
và nhân chuôt phái vào thê hiên mong muôn, ban có thê chon Start cüng giông nhu sú
dung lênh db2start tù cúa sô dòng lênh cúa DB2, hay Stop, cüng nhu sú dung lênh
db2stop nhu trong hình 5.5

Nhp môn H qun tr c s d liu DB2

57

Hinh 5.5 – Các lênh trên thê hiên trong cúa sô Control Center

Ðê tao môt co só dü liêu trong môt thê hiên hoat dông, thuc hiên lênh này tù cúa sô
dòng lênh DB2:

db2 create database mydb1

Ðê liêt kê tât cá các co só dü liêu duoc tao, chay lênh:

db2 litst db directory

Bên trong bât kì thê hiên nào, ban có thê tao nhiêu co só dü liêu. Môt co só dü liêu là
môt tâp hop cúa các dôi tuong nhu là các báng, các khung nhìn, chi muc và nhiêu thú
khác. Các co só dü liêu là các chú thê dôc lâp, và do vây, không chia sé các dôi tuong
vói các co só dü liêu khác. Hình 5.6 mô tá môt cách hình tuong co só dü liêu “MYDB1”
duoc tao ra bên trong thê hiên “DB2”.

Nhp môn H qun tr c s d liu DB2

58


Hình 5.6 – Co só dü liêu “MYDB1” duoc tao trong thê hiên “DB2”.

Báng 5.2 Môt sô lênh ban có thê sú dung ó lóp co só dü liêu.

Lênh/ Câu lênh SQL Mô tá
db2 create database Tao môt co só dü liêu mói
db2 drop database Loai bó môt co só dü liêu
db2 connect to <database_name> Kêt nôi tói co só dü liêu
db2 create table / create view / create index Câu lênh SQL dê tao ra báng biêu,
khung nhìn, và chi muc tuong úng
Báng 5.2 – Các lênh/câu lênh SQL trên co só dü liêu.

Nêu muôn tao môt co só dü liêu khác cüng có trùng tên (MYDB1) nhung trong thê hiên
“myinst”, thuc hiên các lênh sau dây trên cúa sô dòng lênh cúa DB2

db2 list db directory
set db2instance = myinst
db2 create database mydb1
set db2instance = db2

Hình 5.7 mô tá co só dü liêu mói “MYDB1” duoc tao trong thê hiên “myinst”.

Nhp môn H qun tr c s d liu DB2

59

Hình 5.7 – Co só dü liêu “MYDB1” trong khung nhìn “myInst”.

Khi môt co só dü liêu duoc tao, môt vài dôi tuong cüng duoc tao ra theo mãc dinh:
không gian báng, báng, vùng dêm dü liêu và các tâp tin nhât ký (log file). Tao các dôi
tuong này së mât môt ít thòi gian, dó là lý do tai sao lênh create database yêu câu vài
phút dê xú lý. Hình 5.8 mô tá 3 không gian báng mãc dinh duoc tao. Không gian báng
së duoc tháo luân chi tiêt hon trong Chuong 6, Kiên trúc cúa DB2; nhung hiên tai, hãy
cú coi không gian báng nhu là các lóp theo logic giüa các báng logic (logical table), và
nhu tài nguyên hê thông nhu là các ô dïa và bô nhó-- vùng dêm dü liêu.


Hình 5.8 – Không gian báng duoc tao måc dinh khi môt Co só dü liêu duoc tao
ra.

Không gian báng SYSCATSPACE chúa các báng danh muc (Catalog). Báng danh muc
này cüng duoc biêt dên trong các hê thông quán lý co só dü liêu quan hê khác nhu là
tù diên dü liêu (data dictionary). Vê co bán, báng này chúa thông tin hê thông mà ban
Nhp môn H qun tr c s d liu DB2

60
không duoc súa dôi cüng nhu xóa di; nêu không co só dü liêu cúa ban së hoat dông
không chính xác. Không gian báng TEMPSPACE1 duoc DB2 sú dung khi mà cân thêm
không gian cho xú lý môt sô thao tác nhu là sãp xêp. Không gian báng USERSPACE1
thông thuòng duoc dùng dê luu trü các báng co só dü liêu nguòi dùng khi môt báng
duoc tao ra mà không có không gian báng riêng biêt dê luu trü nó.

Ban cüng có thê tao cho riêng mình các không gian báng khi sú dung câu lênh CREATE
TABLESPACE. Hình 5.9 mô tá cách tao không gian báng MYTBLS1 trong co só dü liêu
MYDB1 cúa thê hiên DB2. Khi ban tao ra môt không gian báng, ban cüng chi dinh các ô
dïa và vùng dêm dü liêu dê sú dung. Do dó, nêu ban có môt báng “nóng”, dó là môt
báng duoc sú dung thuòng xuyên, ban có thê dùng nhüng ô dïa nhanh nhât và phân
lón bô nhó thông qua viêc ân dinh các dãc tính này cho không gian báng.

Trong hình 5.9, ta thây có 2 dôi tuong khác duoc mãc dinh tao ra: môt vùng dêm dü liêu
IBMDEFAULTBP, và các têp nhât ký.

Vùng dêm dü liêu vê co bán là môt vùng nhó duoc sú dung bói co só dü liêu. Ban có
thê tao môt hay nhiêu vùng dêm, nhung luôn luôn phái có môt vùng dêm vói kích cõ môt
trang nhó ngang bãng kích thuóc trang nhó cúa không gian báng có sãn. Trang nhó và
kích thuóc trang nhó së duoc tháo luân chi tiêt hon vào Chuong 6, Kiên trúc cúa DB2.

Các têp nhât ký (log) dùng dê phuc hôi. Khi ban làm viêc trên môt co só dü liêu, các
thông tin không chi duoc luu trü trên các ô dïa dành cho co só dü liêu dó, mà trong khi
ban dang làm còn có cá các têp nhât ký luu trü tât cá thao tác xú lý trên dü liêu dây. Cú
coi các têp nhât ký nhu các têp luu tam mà trên dó lênh “autosave” duoc thi hành. Các
têp nhât ký së duoc nói kï hon ó Chuong 11: Sao luu và phuc hôi.


Hình 5.9 – Vùng dêm dü liêu và các têp nhât ký.

Phân truóc, chúng ta dã trao dôi rãng các thê hiên là các môi truòng dôc lâp, và do dó,
môt co só dü liêu trùng tên có thê duoc tao trong các thê hiên khác nhau. Cüng giông
nhu các thê hiên, các co só dü liêu cüng là các chú thê dôc lâp; do dó, các dôi tuong
trong môt môt co só dü liêu này không có liên hê nào vói các dôi tuong trong môt môt
co só dü liêu khác. Viêc tao môt không gian báng cùng tên “mytbls1” trong môt co só
dü liêu MYDB1 và môt co só dü liêu SAMPLE trong thê hiên DB2 duoc mô tá nhu trong
Nhp môn H qun tr c s d liu DB2

61
hình 5.10. Ðiêu này là hop lê bói vì các co só dü liêu là riêng biêt. Luu ý rãng hình 5.10
không mô tá các dôi tuong mãc dinh khác cúa môt co só dü liêu SAMPLE do giói han
không gian trong hình vë.


Hình 5.10 – Vùng báng có cùng tên trong các co só dü liêu khác nhau.

Môt khi ban tao ra môt không gian báng, ban cüng có thê tao các dôi tuong trong không
gian báng nhu báng biêu, khung nhìn và chi muc. Ðiêu này duoc mô phóng nhu trong
Hình 5.11.
Nhp môn H qun tr c s d liu DB2

62



Hình 5.11 – Báng, khung nhìn và chi muc duoc tao trong vùng báng.
5.1 Câu hình DB2
Ta có thê câu hình các tham sô cúa DB2 bãng cách sú dung công cu Configuration
Advisor Tool – công cu tro giúp câu hình. Ðê kêt nôi công cu tro giúp câu hình thông
qua trung tâm diêu khiên, nhân chuôt phái lên môt co só dü liêu và chon “Configuration
Advisor”. Dua trên cách trá lòi cúa ban vê môt sô câu hói liên quan dên tài nguyên hê
thông, khôi luong công viêc, công cu hô tro câu hình së cung câp môt danh sách các
tham sô cúa DB2 nên thay dôi úng vói các giá tri phù hop. Nêu ban muôn biêt chi tiêt
hon vê câu hình trên DB2, hãy doc tiêp; nêu không, sú dung công cu tro giúp câu hình
cüng giúp ban hoàn thành tôt công viêc trên DB2.

Môt máy chú DB2 có thê câu hình trên 4 câp dô:
- Các biên môi truòng.
- Têp câu hình quán tri co só dü liêu (dbm cfg).
- Têp câu hình co só dü liêu (db cfg).
- Ðãng kí lý lich DB2.

Ðiêu này duoc mô tá trong Hình 5.12. Trong hình, hãy chú ý vi trí cúa môi chiêc hôp. Ví
du, các biên môi truòng duoc thiêt lâp ó câp dô hê diêu hành cúa máy chú, trong khi
các tham sô têp câu hình quán lý co só dü liêu duoc thiêt lâp ó lóp thê hiên . Tham sô
câu hình co só dü liêu duoc quán lý ó lóp có só dü liêu, và dãng ký lý lich (profile DB2)
duoc thiêt lâp hoãc ó hê diêu hành hoãc lóp thê hiên.

Nhp môn H qun tr c s d liu DB2

63

Hình 5.12 – Câu hình DB2.
5.1.1 Các biên môi truòng
Các biên môi truòng là các biên duoc thiêt lâp ó hê diêu hành. Môt biên môi truòng
chính là DB2INSTANCE. Biên này cho biêt thê hiên dang hoat dông mà ban dang làm
viêc, và các lênh DB2 ban së áp dung dên. Ví du, dê thiêt lâp thê hiên hoat dông là
“myinst” trên Windows, ban có thê chay lênh hê diêu hành sau:

set db2instance = myinst
5.1.2 Têp câu hình quán tri co só dü liêu (dbm cfg)
Têp câu hình quán tri có só dü liêu (dbm cfg) bao gôm các tham sô ánh huóng tói thê
hiên và tât cá co só dü liêu chúa trong dó. Têp câu hình quán tri co só dü liêu có thê
duoc xem xét hay súa dôi bãng cách sú dung dòng lênh, hoãc thông qua Trung tâm
diêu khiên cúa DB2.

Ðê làm viêc vói DBM CFG tù Trung tâm diêu khiên, lua chon dôi tuong thê hiên tù thu
muc !nstance cúa trung tâm diêu khiên, nhân chuôt phái dê cho trình don bât lên và lua
chon Configuration Parameters. Công viêc này duoc mô tá trong Hình 5.13.


Nhp môn H qun tr c s d liu DB2

64

Hình 5.13 – Câu hình dbm tù Trung tâm diêu khiên.

Sau khi chon Configuration Parameters, môt màn hình së hiên thi lên nhu trong Hình
5.14 vói danh sách các tham sô dbm cfg.


Hình 5.14 – Danh sách dbm cfg.

Phân lón tham sô là dông, nghïa là các thay dôi së có hiêu luc ngay lâp túc; tuy nhiên,
thay dôi môt sô tham sô yêu câu phái khói dông lai thê hiên dê có hiêu luc. Tù công cu
dòng lênh, diêu này có thê thuc hiên thông qua các lênh db2stop và db2start.

Nhp môn H qun tr c s d liu DB2

65
Truóc khi môt thê hiên ngùng, tât cá các úng dung phái duoc ngãt kêt nôi, hay tam
dùng. Nêu ban muôn ngùng môt thê hiên ngay lâp túc, ban có thê dùng lênh db2stop
force.

Môt thê hiên cüng có thê ngùng bãng cách nhân chuôt lên dôi tuong thê hiên và lua
chon Stop hay Start thông qua Control Center.

Báng 5.3 Mô tá môt sô lênh hüu hiêu dê quán tri công cu dbm cfg tù dòng lênh.

Lênh Mô tá
db2 get dbm cfg Thu thâp thông tin vê dbm cfg
db2 update dbm cfg
using <parameter_name> <value>
Câp nhâp giá tri cúa tham sô dbm cfg.
Báng 5.3 – Các lênh diêu khiên dbm cfg.
5.1.3 Têp câu hình co só dü liêu (db cfg)
Têp câu hình co só dü liêu (db cfg) bao gôm các tham sô tác dông dên tùng co só dü
liêu. Têp câu hình co só dü liêu có thê xem xét hay súa dôi bãng dòng lênh, hay thông
qua Trung tâm diêu khiên cúa DB2.

Ðê làm viêc vói DB CFG tù Trung tâm diêu khiên, chon dôi tuong co só dü liêu tù thu
muc co só dü liêu cúa màn hình Trung tâm diêu khiên, nhân chuôt phái dê cho trình
don bât lên và lua chon Configuration Parameters. Viêc này duoc mô tá nhu trong Hình
5.15.



Hình 5.15 – Câu hình db cfg tù Trung tâm diêu khiên.

Sau khi chon Configuration Parameters, môt màn hình së hiên thi lên nhu trong Hình
5.16 vói danh sách các tham sô db cfg.

Nhp môn H qun tr c s d liu DB2

66

Hình 5.16 – Câu hình co só dü liêu.

Báng 5.4 Mô tá môt sô lênh hüu hiêu dê quán lý db cfg tù dòng lênh.

Lênh Mô tá
get db cfg for <database_name> Thu thâp thông tin vê db cfg cúa có só dü
liêu mong muôn.
update db cfg for <database_name>
using <parameter_name>
<value>
Câp nhâp giá tri cho môt tham sô cúa db
cfg.
Báng 5.4 – Lênh diêu khiên db cfg.
5.1.4 Ðång ký lý lich DB2 (profile).
Các biên dãng ký lý lich DB2 bao gôm các tham sô có thê trên môt nên cu thê và có thê
thiêt lâp thành toàn cuc (ánh huóng tói tât cá thê hiên), hay ó tùng lóp thê hiên (ánh
huóng riêng tùng thê hiên).

Báng 5.5 Mô tá môt sô lênh hüu hiêu dê diêu khiên các biên dãng ký lý lich DB2.

Lênh Mô tá
db2set –all Liêt kê tât cá các biên dãng ký lý lich DB2
hiên tai duoc thiêt lâp.
db2set –lr Liêt kê tât cá biên dãng ký lý lich DB2.
db2set <parameter>=<value> Thiêt lâp môt giá tri cho môt tham sô.
Báng 5.5 – Các lênh diêu khiên dång ký lí lich DB2.

Báng 5.6 Môt sô biên dãng ký DB2 hay duoc dùng nhât.
Nhp môn H qun tr c s d liu DB2

67

Biên dång ký Mô tá
DB2COMM Chi dinh nhüng quán tri giao tiêp së khói dông khi bãt
dâu công cu quán tri co só dü liêu.
DB2_EXTSECURITY Trên Windows, ngãn chãn nhüng nguòi chua duoc dinh
danh kêt nôi tói DB2 bãng cách khóa têp tin hê thông
DB2.
DB2_COPY_NAME Luu trü tên cúa bán sao DB2 hiên tai dang dùng.
Ðê chuyên sang môt bán sao DB2 dã cài khác, chay
dòng lênh path\bin\db2envars.bat. Biên này không
thê dùng cho muc dích này.
Báng 5.6 – Các biên dång ký DB2 hay duoc dùng.

Ví du, dê cho phép giao tiêp sú dung giao thúc TCP/IP, thiêt lâp biên dãng ký
DB2COMM thành TCPIP nhu ó duói:

db2set db2comm = tcpip
5.2 Máy chú quán tri DB2
Máy chú quán tri DB2 (DAS) là môt quá trình nên chay trên máy chú DB2 cho phép các
máy khách tù xa có thê quán tri máy chú DB2 thông qua công cu dô hoa. Ó dây chi có
môt DAS trên môi máy tính nhu trên Hình 5.16.


Hình 5.16 – Máy chú quán tri DB2 (DAS).
Nhp môn H qun tr c s d liu DB2

68
6
Phân II – Hoc DB2: Quán tri Co só dü liêu
Chuong 6 - Kiên trúc cúa DB2
Trong chuong này chúng ta së tháo luân nhüng nét chính vê
- Mô hình xú lý cúa DB2
- Mô hình bô nhó cúa DB2
- Mô hình luu trü cúa DB2
6.1 Mô hình xú lý cúa DB2
Hình 6.1 mô tá mô hình xú lý cúa DB2. Trong hình, bên trái duòng thãng dúng màu
xanh tuong trung cho môt máy tram tù xa (remote client machine), và bên phái tuong
trung cho máy chú (server machine). Khi môt úng dung trên máy tram kêt nôi dên máy
chú bãng lênh SQL CONNECT, các bô doi kêt nôi (listener) cho giao thúc truyên thông
së nhân duoc yêu câu này và liên lac vói môt tác nhân kêt hop DB2 (DB2 coordinator
agent). Tác nhân DB2 có chúc nãng thuc hiên các thao tác thay cho DB2. Nêu úng
dung dó là cuc bô (chay trên cùng máy chú vói DB2), các buóc rât giông nhau, chi có
tác nhân db2ipccm xú lý yêu câu thay cho db2tcpcm. Trong vài truòng hop, nhu khi xú
lý song song, môt tác nhân db2 có thê sinh ra các tác nhân khác (db2agntp). Các tác
nhân khác nhu db2pfchr, db2loggr, db2dlock cüng có thê duoc sú dung cho nhüng muc
dích khác nhau. Nhüng xú lý thông dung nhât duoc mô tá trong báng 6.1.





















Hình 6.1 – Mô hình xú lý cúa DB2
Nhp môn H qun tr c s d liu DB2

69

Tên xú lý Mô tá
db2sync Xú lý cúa thê hiên co só dü liêu (môt xú lý cho môt thê hiên).
db2tcpcm Truyên thông/listener TCP/IP.
db2agent Tác nhân kêt hop thuc thi nhüng thao tác co só dü liêu thay cho
các úng dung (ít nhât môt tiên trình trên môt kêt nôi, phu thuôc
vào bô tâp trung kêt nôi có duoc kích hoat không).
db2agntp Tác nhân con chú dông duoc sinh ra nêu truòng
INTRA_PARALLEL là YES. Së thuc thi các thao tác co só dü liêu
thay cho úng dung. db2agent së kêt hop công viêc cúa các tác
nhân con db2agntp.
db2pfchr Bô doc dü liêu nhâp/xuât bât dông bô (NUM_IOSERVERS).
db2pclnr Bô ghi dü liêu nhâp/xuât bât dông bô (NUM_IOCLEANERS).
Báng 6.1- Các xú lý thông dung cúa DB2
6.2 Mô hình bô nhó cúa DB2
Mô hình bô nhó DB2 gôm nhiêu vùng nhó khác nhau tai múc thê hiên, múc co só dü
liêu và múc úng dung và tác nhân (hình 6.2).

Nhp môn H qun tr c s d liu DB2

70
Hình 6.2 – Mô hình bô nhó cúa DB2

Khi bãt dâu môt thê hiên, vùng nhó chia sé quán lý co só dü liêu duoc câp phát.
Thuòng vùng nhó này không nhiêu. Lân dâu tiên kêt nôi dên co só dü liêu, vùng nhó
toàn cuc co só dü liêu së duoc câp phát. Trong khôi này, vùng dêm (buffer pool) là môt
trong nhüng thành phân quan trong nhât, dãc biêt khi cân cái thiên viêc thuc thi truy vân.
Kích thuóc cúa vùng dêm quyêt dinh dô lón cúa toàn bô vùng nhó toàn cuc co só dü
liêu.

Vùng nhó riêng tác nhân là vùng nhó duoc sú dung cho môi tác nhân DB2. Nêu không
dùng bô tâp trung kêt nôi thì môi kêt nôi cân môt tác nhân. Môt tác nhân sú dung khoáng
3–5MB. Nêu sú dung bô tâp trung kêt nôi, nhiêu kêt nôi có thê dùng chung môt tác
nhân, giám nhu câu sú dung bô nhó vât lý.
6.3 Mô hình luu trü cúa DB2
Trong muc này chúng ta së mô tá nhüng khái niêm sau:
- Trang và pham vi
- Vùng nhó dêm
- Không gian báng
6.3.1 Trang và pham vi
Trang là don vi luu trü nhó nhât cúa DB2, vói các kích thuóc 4K, 8K, 16K và 32K. Môt
pham vi là môt nhóm các trang. Tai môt thòi diêm nêu chi làm viêc vói môt trang thì lãng
phí khá nãng thuc thi, do vây DB2 làm viêc vói các pham vi tai môt thòi diêm. Kích
thuóc cúa trang và pham vi duoc dinh nghïa khi làm viêc vói vùng nhó dêm và các
không gian báng nhu trong phân tiêp theo.
6.3.2 Vùng nhó dêm
Môt vùng nhó dêm là vùng nhó thuc (real cache) cho dü liêu báng và chi muc. Nó cái
thiên thuc thi bãng cách giám nhâp/xuât tuân tu truc tiêp và nâng câp doc ghi không
dông bô. Có nghïa là DB2 doán truóc trang nào së cân dên, doc chúng tù dïa vào vùng
dêm, nên chúng sãn sàng duoc sú dung.

Vùng dêm duoc câp phát vói các don vi nhó là các trang 4K, 8K, 16K, và 32K. Nên có ít
nhât môt vùng dêm trên môt co só dü liêu, và ít nhât môt vùng dêm phù hop cho môt
không gian báng có kích thuóc trang dã biêt.

Tao môt vùng dêm
Có thê dùng lênh CREATE BUFFERPOOL dê tao vùng dêm. Cüng có thê vào trung tâm
diêu khiên, nhân chuôt phái lên thu muc Buffer pool trong co só dü liêu dã biêt và chon
Create nhu trong hình 6.3.

Nhp môn H qun tr c s d liu DB2

71

Hình 6.3 – Tao môt vùng dêm
Nhp môn H qun tr c s d liu DB2

72

Sau khi chon Create, hôp thoai Create Buffer Pool xuât hiên nhu trong hình 6.4.


Hình 6.4 - Hôp thoai tao vùng dêm

Phân lón các muc trong hình 6.4 duoc tu giái thích. Các truòng ‘Non-blocked’ và
‘Blocked’ chi dinh sô luong trang tôn tai là không dóng khôi (non-blocked) hay dóng khôi
(blocked). Vùng dêm dua trên khôi báo dám rãng các trang liên tuc trên dïa di chuyên
vào vùng dêm cüng liên tuc trong môt vùng dóng khôi. Cách này có thê cái thiên viêc
thuc thi. Sô luong trang không thê lón hon 98% sô luong trang cúa vùng dêm. Ðãc biêt,
giá tri 0 së vô hiêu hóa nhâp/xuât khôi.

Môi lân vùng dêm duoc tao ra, nó së duoc trình bày trong trung tâm diêu khiên nhu
trong hình 6.5.

Nhp môn H qun tr c s d liu DB2

73

Hình 6.5 – Trung tâm diêu khiên sau khi tao vùng dêm ‘SAMP16K’
6.3.3 Các không gian báng
Không gian báng là môt là môt giao diên logic giüa các báng logic và các vùng nhó cúa
hê thông (bao gôm vùng nhó dêm và các dïa). Ban có thê sú dung câu lênh CREATE
TABLESPACE dê tao môt không gian báng mà ban dãc tá:

• Kích thuóc trang cúa không gian báng (4KB, 8KB, 16KB, or 32KB). Kích thuóc
trang này phái tuong úng vói kích thuóc trang cúa vùng dêm.
• Tên cúa vùng dêm mà liên kêt vói không gian báng
• Kích thuóc cúa pham vi
• Kích thuóc nap truóc
Các loai không gian báng
Có ba loai không gian báng:

- Thông thuòng
Loai này dành cho các báng cúa nguòi dùng. Ví du nhu USERSPACE1 là môt
không gian báng thông thuòng vì nó duoc tao ra môt cách mãc dinh.

- Lón
Loai này duoc sú dung tùy chon dê phân chia các dü liêu LOB vê không gian
báng cúa nó. Nó cüng duoc sú dung dê luu trü các dü liêu XML dê tao ra các
CSDL có hô tro PureXML – sú dung UNICODE và XML làm kiêu cúa các côt.
Các không gian báng loai lón là mãc dinh.

- Tam thòi
Có hai loai không gian báng tam thòi:
Nhp môn H qun tr c s d liu DB2

74
Không gian báng tam thòi cúa hê thông
Ðây là loai không gian báng duoc sú dung bói DB2 cho các thao tác nôi
bô (hê thông) nhu sãp xêp. Ví du TEMPSPACE1 là không gian báng
duoc tao ra tu dông khi ban tao môt CSDL, nó là môt không gian báng
tam thòi cúa hê thông.

Không gian báng tam thòi cúa nguòi dùng
Ðây là loai không gian báng duoc sú dung dê tao ra các báng tam thòi
toàn cuc do nguòi dùng dinh nghïa. Chúng thuòng hay bi nhâm lân vói
các không gian báng tam thòi cúa hê thông.
Quán lý các không gian báng
Các không gian báng có thê duoc phân loai theo cách quán lý. Viêc này có thê duoc chi
dinh trong câu lênh CREATE TABLESPACE

Không gian báng duoc quán lý bói hê thông
Loai không gian báng này duoc goi là System Managed Storage (SMS). Ðiêu này có
nghïa là hê diêu hành së quán lý không gian nhó này. Chúng dê dàng duoc quán lý và
duoc chúa trong các thu muc hê thông têp. Không gian báng loai này không duoc câp
phát truóc, nhung dung luong các têp duoc tãng lên tu dông. Môt khi ban dã xác dinh
các chô chúa (thu muc), thì chúng së duoc cô dinh lúc tao ra và không thê thay dôi vê
sau, trù khi viêc phuc hôi tái dinh huóng duoc dùng. Khi sú dung các không gian báng
SMS, dü liêu, chi muc, dü liêu LOB không thê duoc trái trên các không gian báng khác
nhau.

Không gian báng duoc quán lý bói CSDL
Loai không gian báng này duoc goi là Database Managed Storage (DMS). Ðiêu này có
nghïa là DB2 së quán lý loai không gian luu trü này. Viêc quán lý dòi hói su can thiêp
cúa nguòi quán tri co só dü liêu. Các chô chúa (container) có thê là các têp duoc câp
phát truóc hoãc các thiêt bi thô (thiêt bi thô duoc hiêu nhu thiêt bi luu trü duoc ghi theo
dinh huóng ký tu, không cân hê thông têp cúa hê diêu hành). Vói các thiêt bi thô, dü liêu
duoc ghi truc tiêp mà không qua bô dêm cúa hê diêu hành.

Các chô chúa (hê thông têp) có thê duoc thêm, bó, thay dôi kích thuóc. DMS có hiêu
suât tôt nhât, vì dü liêu, chi muc hay dü liêu LOB có thê duoc nãm trên các không gian
báng khác nhau dê nâng cao hiêu suât.

Không gian báng duoc quán lý tu dông
Loai không gian báng này duoc quán lý bói bô nhó tu dông, ích loi cúa chúng là sú
dung tuong tu nhu các không gian báng SMS, nhung lai có hiêu suât tôt và tính linh
hoat cúa không gian báng DMS. Do dó trong DB2 9, dây là loai không gian báng mãc
dinh. Vói loai không gian báng này, nguòi dùng chi cân phái chi ra nhóm các thiêt bi luu
trü logic. Không phái dinh nghïa tuòng minh chô chúa. Các chô chúa duoc tao tu dông
theo các duòng dân. Viêc tãng kích thuóc hay bô sung thêm chô chúa mói hoàn toàn
do DB2 quán lý.

Ðê cho phép luu trü tu dông, dâu tiên ban cân tao môt CSDL vói chúc nãng luu trü tu
dông duoc kích hoat (mãc dinh) và liên kêt các duòng dân luu trü tói nó (CSDL). Sau
khi tao xong, nêu cân thiêt ban có thê tái dinh nghïa các duòng dân luu trü bãng cách
sú dung thao tác RESTORE co só dü liêu. Sau dó ban có thê tao các không gian báng
sú dung luu trü tu dông (dây là chê dô mãc dinh)

Ví du luu trü tu dông
Nhp môn H qun tr c s d liu DB2

75
Ðâu tiên, hãy tao môt CSDL vói luu trü tu dông duoc cho phép theo các ví du sau:

Luu trü tu dông duoc cho phép theo mãc dinh:
CREATE DATABASE DB1

Luu trü tu dông duoc chi dinh tuòng minh:
CREATE DATABASE DB1 AUTOMATIC STORAGE YES

Luu trü tu dông duoc cho phép theo mãc dinh nhung duòng dân duoc chi ra:
CREATE DATABASE DB1 ON /data/path1, /data/path2

Luu trü tu dông không duoc phép:
CREATE DATABASE DB1 AUTOMATIC STORAGE NO

Tiêp theo, chúng ta tao không gian báng vói luu trü tu dông duoc cho phép theo các ví
du sau:
Luu trü tu dông cho không gian báng duoc cho phép theo mãc dinh:
CREATE TEMPORARY TABLESPACE TEMPTS

Luu trü tu dông duoc chi dinh môt cách tuòng minh cho không gian báng:
CREATE TABLESPACE TS2 MANAGED BY AUTOMATIC STORAGE

Luu trü tu dông duoc chi dinh không tuòng minh, kích thuóc ban dâu duoc câp
phát, kích thuóc tãng theo tùng lân, và kích thuóc tôi da có thê tãng dên.

CREATE TABLESPACE TS1
INITIALSIZE 500 K
INCREASESIZE 100 K
MAXSIZE 100 M

Dü liêu duoc luu trü nhu thê nào trong không gian báng
Theo mãc dinh, DB2 së ghi vào các pham vi dïa (disk extent) tai thòi diêm chia bãng
(stripe) qua các chô chúa. Ví du nêu ban có môt không gian báng 4K vói kích thuóc mó
rông là 8, sú dung 3 chô chúa thô trong không gian báng DMS, diêu này có nghïa rãng
32K dü liêu (4K x 8 trang trên môt pham vi = 32K) së duoc ghi vào môt dïa truóc khi ghi
vào dïa tiêp theo. Ðiêu này duoc chi ra trong Hình 6.6. Chú ý rãng các báng không chia
sé các pham vi.


Hình 6.6 – Ghi dü liêu vào không gian báng

Nhp môn H qun tr c s d liu DB2

76
Tao không gian báng sú dung trung tâm diêu khiên
Ðê tao môt không gian báng tù trung tâm diêu khiên, kích chuôt phái vào thu muc Table
Spaces trong CSDL duoc chon và chon Create theo Hình 6.7. Tro giúp tùng buóc tao
không gian báng së xuât hiên nhu Hình 6.8.


Hình 6.7 – Tao không gian báng tù trung tâm diêu khiên



Hình 6.8 – Tao môt không gian báng sú dung tro giúp
Nhp môn H qun tr c s d liu DB2

77
7
Chuong 7 – Kêt nôi máy khách DB2
Chuong này trình bày các buóc thiêt lâp cân thiêt dê kêt nôi tù máy khách DB2 dên máy
chú DB2 sú dung giao thúc TCPIP. Chú ý rãng môt máy chú DB2 cüng duoc xem nhu
môt thành phân máy khách, vì thê máy chú DB2 cüng có hành vi cúa môt máy khách khi
kêt nôi dên môt máy chú DB2 khác. Hiên tai có môt sô cách khác nhau dê thiêt lâp kêt nôi
máy khách DB2; tuy nhiên, trong pham vi cúa chuong này chúng ta chi tháo luân môt
phuong thúc don gián nhât dó là sú dung công cu Tro giúp câu hình (Configuration
Assistant).
7.1 Tro giúp câu hình
Sú dung giao diên truc quan cúa công cu Tro giúp câu hình, ban có thê dê dàng câu hình
kêt nôi giüa môt máy khách DB2 và môt máy chú DB2.

Ðê thuc thi Tro giúp câu hình trên Windows, ban có thê chon: Start -> Programs -> IBM
DB2 -> DB2COPY1 -> Set-up Tools -> Configuration Assistant.

Nêu sú dung dòng lênh, ban có thê bãt dâu công cu này bãng cách sú dung lênh db2ca.
Hình 7.1 mô tá công cu tro giúp câu hình.


Hình 7.1 - Công cu tro giúp câu hình

7.1.1 Nhüng cài dåt båt buôc trên máy chú
Có hai viêc cân duoc thiêt lâp tai máy chú:

1) Biên DB2COMM
Nhp môn H qun tr c s d liu DB2

78
Biên dãng kí này xác dinh giao thúc truyên thông duoc sú dung dê lãng nghe các yêu câu
dên tù máy khách. Bô giao thúc TCPIP là bô các giao thúc truyên thông duoc sú dung
phô biên nhât. Khi thay dôi giá tri cúa tham sô này, hê thông cân duoc khói dông lai. Ðê
xem và thay dôi giá tri cúa biên DB2COMM trong tro giúp câu hình, chon Configure ->
DB2 Registry nhu duoc mô tá trong Hình 7.2 và Hình 7.3


Hình 7.2 – Truy câp DB2 Registry


Hình 7.3 – Kiêm chúng giá tri cúa biên DB2COMM trong DB2 Registry

2) Biên SVCENAME
Nhp môn H qun tr c s d liu DB2

79
Tham sô dbm cfg së duoc thiêt lâp dên tên dich vu (nhu duoc dinh nghïa trong têp dich
vu TCPIP) hoãc dên sô hiêu công giao tiêp dê sú dung khi ban muôn truy câp co só dü
liêu cúa thê hiên này. Tù công cu tro giúp câu hình, chon Configure -> DBM configuration
nhu duoc mô tá trong Hình 7.4
















Hình 7.4 – Xem xét dbm cfg tù Tro giúp câu hình

Môt khi ban dã vào trong cúa sô câu hình cúa DBM, tìm dên muc Communications, và
tìm kiêm tên SVCENAME. Ban có thê thay dôi giá tri cúa SVCENAME thành môt chuôi
hay thành sô hiêu công giao tiêp khi cân thiêt. Ðiêu này duoc mô tá trong Hình 7.5


Hình 7.5 – Xem xét tham sô dbm cfg cúa SVCENAME
7.1.2 Nhüng cài dåt cân thiêt trên máy khách
Tai máy khách, ban cân biêt nhüng thông tin sau:
1. Tên co só dü liêu mà ban muôn kêt nôi dên
2. Sô hiêu công giao tiêp cúa thê hiên DB2 tai máy chú noi co só dü liêu duoc cài
dãt. Ban cüng có thê sú dung tên cúa dich vu, miên là tôn tai môt thuc thê tuong
Nhp môn H qun tr c s d liu DB2

80
úng trong têp dich vu TCPIP
3. ID cúa nguòi dùng hê thông và mât khâu dê dãng nhâp vào co só dü liêu. ID
cúa nguòi sú dung này cân duoc dinh nghïa truóc tai máy chú

Nhüng thông tin trên có thê duoc nhâp vào tù máy khách DB2 sú dung Configuration
Assistant. Ðâu tiên, thuc hiên chúc nãng Add Database Wizard bãng cách kích chon
Selected -> Add Database Using Wizard, nhu duoc mô tá trong Hình 7.6


Hình 7.6 – Sú dung chúc nång Add Database Wizard

Ban cüng có thê thuc hiên chúc nãng này bãng cách nhâp chuôt phái vào vùng trông
trong cúa sô tro giúp câu hình và chon “Add Database Using Wizard”.

Hình 7.7 mô tá chúc nãng Add Database Wizard:


Hình 7.7 – Thêm CSDL (Add Database Wizard)

Trong Add Database Wizard, có ba tùy chon:
Nhp môn H qun tr c s d liu DB2

81

Sú dung lý lich (Profile)
Có thê xãy ra nhiêu tình huông khi ban cân dinh câu hình nhiêu máy khách kêt nôi dên
cùng môt máy chú DB2. Trong nhüng tình huông nhu vây, tùy chon này thuân tiên dê
thuc hiên tât cá các câu hình tù môt máy khách, và luu câu hình này vào trong môt têp
“lý lich”. Vói têp này, ban có thê nap tât cá thông tin truc tiêp dên nhüng máy khách
khác. Trong Hình 7.7, nêu ban chon “Use a Profile”, ban së nap thông tin tù môt “lý lich”
dang tôn tai. Chi tiêt cúa tùy chon duoc cung câp trong muc sau cúa chuong này së mô
tá cách tao lý lich cho máy khách và máy chú.

Tìm kiêm trong hê thông mang
Phuong pháp này cüng duoc biêt dên nhu “Su khám phá” (Discovery), yêu câu DB2 tìm
kiêm hê thông mang tuong úng vói môt máy chú, thê hiên và co só dü liêu cho truóc.
Ðê phuong pháp này hoat dông, DAS phái duoc chay trên môi máy chú DB2 noi mà co
só dü liêu duoc tìm thây. Vói phuong pháp này, có hai cách dê thuc hiên viêc tìm kiêm:

- Tìm kiêm (Search):
Tìm kiêm trên toàn bô hê thông mang. Phuong pháp này không duoc khuyên
khích sú dung nêu hê thông mang cúa ban lón và có nhiêu bô tâp trung mang
(Hub/Switch), vì nó së mât nhiêu thòi gian truy vân dü liêu tù môi hê thông
- Ðã biêt (Known):
Tìm kiêm trên hê thông mang cho môt máy chú dã biêt tai dia chi mà ban cung
câp.

Hai phuong pháp duoc minh hoa trong Hình 7.8

Hình 7.8 – Phuong pháp tìm kiêm Search và Known

Trong môt sô truòng hop, nguòi quán tri hê thông không muôn các máy khách duoc tìm
kiêm trên mang vói co só dü liêu luu trü nhüng thông tin cân báo mât. Ðiêu này có thê
duoc ngãn chãn tai câp dô DAS, câp dô thê hiên hay co só dü liêu. Hình 7.9 cung câp chi
tiêt vê vân dê này.
Nhp môn H qun tr c s d liu DB2

82

Hình 7.9 – Câu hình các tham sô cho phép dùng Su khám phá (discovery)

Hình 7.9 mô tá nhüng câp dô khác nhau trong dó ban có thê cho phép hay ngãn cán sú
dung Su khám phá. Tai câp dô DAS, ban có thê gán tham sô cho truóc DISCOVER môt
giá tri là SEARCH hay KNOWN. Tai câp dô thê hiên, tham sô dbm cfg là
DISCOVER_INST có thê duoc thiêt lâp thành DISABLE hay ENABLE. Cuôi cùng, tai câp
dô co só dü liêu, tham sô DISCOVER_DB cüng có thê duoc thiêt lâp là ENABLE hay
DISABLE. Viêc thiêt lâp nhüng tham sô này môt cách hop lý së cung câp cho ban cách
thúc tìm ra co só dü liêu.

Câu hình môt cách thú công kêt nôi dên co só dü liêu
Sú dung phuong pháp này, ban thuc hiên thú công viêc thêm tên máy chú, sô hiêu công
giao tiêp và thông tin vê co só dü liêu cho công cu Tro giúp câu hình, noi së phát sinh ra
“danh muc” câu lênh dê thuc thi viêc câu hình kêt nôi. Công cu Tro giúp câu hình së không
kiêm tra thông tin có chính xác không. Chính ban së biêt nó không dúng khi ban không kêt
nôi duoc dên máy chú. Tuong tu, ban phái chãc rãng ID và mât khâu ban cung câp dê kêt
nôi tù xa dên co só dü liêu là dúng. Quá trình xác minh thông tin duoc mãc dinh thuc hiên
trên máy chú DB2 mà ban dang cô gãng kêt nôi dên, vì vây, ban phái cung câp môt ID
nguòi dùng cùng vói mât khâu dã duoc dinh nghïa trên máy chú dó.
7.1.3 Tao lý lich cho máy khách và máy chú
Nêu ban dang câu hình cho môt sô luong lón máy chú hay máy khách, hon nüa viêc thiêt
lâp cho môi máy dôc lâp nhau, ban có thê chi cân thiêt lâp cho môt máy duy nhât, sau dó
xuât ra môt lý lich (xuât têp câu hình chãng han), khi dó áp dung lý lich này dên các máy
khách/ máy chú khác. Ðiêu này giúp tiêt kiêm rât nhiêu thòi gian cho nguòi quán tri hê
thông khi thiêt lâp môi truòng.

Ðê tao môt lý lich tùy chinh theo yêu câu, tù Tro giúp câu hình, kích vào trình don
Configure, sau dó chon Export Profile -> Customize, nhu duoc mô tá trong Hình 7.10

Nhp môn H qun tr c s d liu DB2

83



























Hình 7.10 – Xuât môt lý lich

Hình 7.11 mô tá nhüng truòng cân duoc hoàn thành dê xuât môt lý lich


Hình 7.11 – Hôp thoai tùy chinh xuât lý lich

Hình 7.12 mô tá kêt quá sau khi kích “Export” trong hôp thoai Customize Export Profile.

Nhp môn H qun tr c s d liu DB2

84

Hình 7.12 – Xuât kêt quá lý lich

Ðê nhâp môt lý lich dã duoc tùy chinh tù Tro giúp câu hình, kích vào trình don Configure,
sau dó chon Import Profile -> Customize, nhu duoc mô tá trong Hình 7.13

















Hình 7.13 – Nhâp môt lý lich

Hình 7.14 mô tá nhüng truòng cân duoc hoàn thành dê nhâp môt lý lich





Nhp môn H qun tr c s d liu DB2

85


Hình 7.14 – Nhâp lý lich duoc tùy chinh

Nhp môn H qun tr c s d liu DB2

86
Bài tâp nhanh #4 – Sú dung Tro giúp thiêt lâp câu hình

Muc tiêu
Chuong trình Tro giúp thiêt lâp câu hình có thê duoc sú dung dê câu hình các kêt nôi
co só dü liêu tù xa môt cách nhanh chóng và dê dàng. Trong bài tâp nhanh này, ban së
tao chi muc cho môt co só dü liêu nãm trên môt máy chú DB2 ó xa (remote DB2 server
- duoc thê hiên bãng máy tram cúa nguòi ngôi bên canh ban, sú dung cá hai cách Tìm
kiêm và Khám phá). Môt khi co só dü liêu dó dã duoc liêt kê, ban së có thê truy câp co
só dü liêu này giông nhu là nó dang ó ngay trên hê thông máy cúa mình. DB2 thuc hiên
tât cá các quá trình giao tiêp môt cách thâm lãng.

Ghi chú
Bài tâp nhanh này giá dinh rãng ban dang làm viêc trong 1 mang máy tính. Nêu không
phái nhu vây, ban luôn có thê sú dung chính máy tính cúa mình vùa làm máy chú vùa
làm máy khách và làm theo các chi dân cho công viêc câu hình duói dây dê kêt nôi dên
chính hê thông cúa ban.

Thú tuc
1. Hói nguòi bên canh (hay nguòi huóng dân ban) các thông tin sau dây :
Thông tin co só dü liêu tù xa:
(PR) Giao thúc _TCPIP__
(IP) Ðia chi IP hay tên máy chú _________
(PN) Sô công cúa thê hiên (instance) _________
(DB) Tên cúa co só dü liêu _SAMPLE_

Các meo :
- Trong môi truòng Windows, dê lây tên cúa máy ta gõ lênh hostname tù cúa sô
dòng lênh
- Trong môi truòng Windows, dê lây dia chi IP ta gõ lênh ipconfig tù cúa sô
dòng lênh

2. Mó chuong trình Tro giúp thiêt lâp câu hình (Meo: chuong trình này có thê truy
câp thông qua lênh Start)

3. Mó báng chon Selected và chon muc Add Database Using Wizard

4. Trong trang Source cúa trình tro giúp, chon muc Manually Configure a
Connection to a Database. Nhân nút Next dê di chuyên dên trang tiêp theo cúa
trình tro giúp.

5. Trong trang Protocol cúa trình tro giúp, chon muc TCP/IP. Nhân nút Next dê di
chuyên dên trang tiêp theo cúa trình tro giúp.

6. Trong trang TCP/IP cúa trình tro giúp, nhâp vào tên dây dú cúa máy chú hoãc là
dia chi IP mà ban dã ghi lai trong buóc 1. Nhâp vào sô công ban dã ghi trong
buóc 1. Nhân nút Next dê di chuyên dên trang tiêp theo cúa trình tro giúp.

Ghi chú: Tùy chon Service Name có thê duoc sú dung nêu ban có môt muc
(entry) trong tâp tin Services nôi bô vói môt công có sô duoc dinh nghïa dua trên
công mà máy chú tù xa dang lãng nghe. Khi ban sú dung tùy chon này, DB2 së
tìm kiêm trong tâp tin dich vu trên máy cúa ban chú không phái trên máy chú.
Ban cân phái thêm môt muc vào tâp tin này nêu ban muôn sú dung tùy chon
trên.
Nhp môn H qun tr c s d liu DB2

87

7. Trong trang Co só dü liêu cúa trình tro giúp, nhâp vào tên cúa co só dü liêu
duoc dinh nghïa trên máy chú tù xa mà ban dã ghi lai trong buóc 1 ó truòng
Database Name. Ðê ý viêc truòng Database Alias duoc diên môt cách tu dông
vói cùng giá tri dó nhu thê nào. Bí danh co só dü liêu (database alias) là môt cái
tên mà nhüng úng dung nôi bô trên máy cúa ban së sú dung dê kêt nôi dên co
só dü liêu này. Bói vì ban dã có môt co só dü liêu trên máy cúa mình duoc dinh
nghïa sãn vói tên là SAMPLE, DB2 së không cho phép ban tao tên môt co só dü
liêu khác có cùng tên. Vì thê ban phái sú dung môt tên bí danh khác. Trong ví du
này, hãy dôi bí danh co só dü liêu thành SAMPLE1. Ban có thê nhâp vào môt lòi
chú thích tùy ý vê co só dü liêu này nêu ban muôn. Nhân nút Next dê di chuyên
dên trang tiêp theo cúa trình tro giúp.

8. Trong trang Data source cúa trình tro giúp, ban có thê (không bãt buôc) dãng ký
co só dü liêu (nguôn dü liêu) mói này nhu môt nguôn dü liêu ODBC. Viêc này
së tu dông dãng ký co só dü liêu dó trong chuong trình quán lý ODBC cúa
Windows (Windows ODBC Manager) cho ban. Trong ví du này, bó dâu dánh ó
muc “Register this database for ODBC” tai vì ban së không sú dung ODBC. Nhân
nút Next dê di chuyên dên trang tiêp theo cúa trình tro giúp.

9. Trong trang Node Options cúa trình tro giúp, xác dinh hê diêu hành cúa máy chú
noi mà co só dü liêu tù xa dang nãm tai dó. Bói vì tât cá các máy tram trong
phòng máy này dêu sú dung Microsoft Windows, hãy dám báo rãng muc
Windows trong danh sách sô xuông duoc chon. Truòng Instance name nên
duoc dãt là DB2. Nêu truòng này chua duoc dãt thì hãy dãt giá tri cho nó là
DB2. Nhân nút Next dê di chuyên dên trang tiêp theo cúa trình tro giúp.

10. Trang System Options cúa trình tro giúp cho ban co hôi dê dám báo rãng hê
thông và tên máy chú dã duoc diên chính xác và xác nhân nhüng cài dãt cúa hê
thông. Nhân nút Next dê di chuyên dên trang tiêp theo cúa trình tro giúp.

11. Trang Security Options cúa trình tro giúp cho phép ban xác dinh noi ban muôn
viêc xác thuc nguòi dùng xáy ra và phuong thúc ban muôn sú dung. Chon muc
Use authentication value in server’s DBM Configuration. Cách làm này së sú
dung phuong thúc duoc xác lâp bói tham sô AUTHENTICATION trong tâp tin
câu hình cúa thê hiên (instance) ó xa. Nhân nút Finish dê tao danh muc co só
dü liêu tù xa và dóng trình tro giúp lai. Môt hôp thoai xác nhân së hiên ra. Nhân
nút Test Connection dê dám báo ban có thê kêt nôi thành công dên co só dü
liêu. Thêm vào dó, dê dám báo tên nguòi dùng và mât khâu mà ban cung câp là
hop lê trên máy chú ó xa (bói vì có thê tham sô AUTHENTICATION cúa máy chú
duoc dãt giá tri là SERVER). Nêu viêc thú kêt nôi thành công, ban dã tao danh
muc co só dü liêu ó xa môt cách thành công. Nêu viêc kêt nôi không thành công,
ban hãy quay tró lai trình tro giúp và dám báo rãng tât cá các giá tri dã duoc xác
lâp dúng (Nhân nút Change dê quay lai nhüng cài dãt trong trình tro giúp)

12. Mó trung tâm diêu khiên và thú xem nhüng báng khác nhau trong co só dü liêu
tù xa vùa mói duoc tao danh muc

13. Quay tró lai chuong trình Tro giúp thiêt lâp câu hình và thú tao danh muc vói
môt co só dü liêu khác, lân này sú dung tuy chon Search the Network. Làm tùng
buóc trong trình tro giúp giông nhu ban dã câu hình kêt nôi bãng tay. Luu ý
rãng, trên nhüng mang lón, viêc tìm kiêm có thê së tôn thòi gian dê trá vê các kêt
quá

Nhp môn H qun tr c s d liu DB2

88
8
Chuong 8 - Làm viêc vói các dôi tuong dü liêu

Chuong này tháo luân các dôi tuong dü liêu nhu là dang so dô (schemas), dang báng
(table), khung nhìn (view), chi muc (indexes), chuôi (sequences)… Môt sô các dôi tuong
dü liêu cao câp nhu là các bây su kiên (triggers), các hàm do nguòi dùng dinh nghïa
(UDFs) và nhüng thú tuc duoc luu trü së duoc tháo luân trong chuong 14, SQL PL luu
trü các thú tuc, và chuong 15, trong dòng SQL PL, UDFs, Triggers.
8.1 So dô
So dô là không gian tên (name spaces) cho tâp hop các dôi tuong dü liêu. Chúc nãng
chính cúa chúng nhu sau:

- Cung câp cho ban các chi dân cúa quyên só hüu các dôi tuong hay các môi
quan hê dôi vói môt úng dung.
- Gom nhóm các dôi tuong có môi quan hê vói nhau.
Tât cá các dôi tuong dü liêu trong DB2 có hai phân tên theo tiêu chuân; so dô là núa
phân dâu tiên cúa tên:

<tên_so dô>.<tên_dôi tuong>

Tên dôi tuong theo quy chuân phái là duy nhât. Khi ban kêt nôi co só dü liêu và tao hay
tham chiêu dên môt dôi tuong mà không dinh rõ tên so dô, DB2 së lây mã tài khoán mà
ban kêt nôi vói co só dü liêu làm tên so dô. Ví du, nêu ban kêt nôi dü liêu mâu vói tên
sú dung là “arfchong”, và tao môt báng bãng cách sú dung phát biêu CREATE TABLE

CREATE TABLE artist …

Tên theo quy chuân dây dú cúa báng duoc tao ra së là arfchong.artists.
8.2 Báng
Môt báng là môt tâp hop các dü liêu có môi quan hê vói nhau môt cách hop lý theo các
côt và hàng. Phát biêu bên duói cung câp cho ban ví du vê viêc làm cách nào dê tao ra
môt báng bãng cách sú dung phát biêu CREATE TABLE

CREATE TABLE artists
{
artno SMALLINT not null,
name VARCHAR (50) with default ‘abc’,
classification CHAR (1) not null,
bio CLOB (100K) logged,
picture BLOG (2M) not logged compact
}
Nhp môn H qun tr c s d liu DB2

89
In mytblsl

Trong các phân tiêp theo dây, chúng ta có thê mô tá các phân chính cúa phát biêu
CREATE TABLE này.
8.2.1 Kiêu dü liêu
Hình 8.1 Danh sách các kiêu dü liêu duoc hô tro trong DB2

Hình 8.1 – Các kiêu dü liêu cúa DB2

Các kiêu dü liêu dôi tuong lón (LOB)
Các kiêu dü liêu dôi tuong lón duoc dùng dê luu trü các chuôi lý tu lón, các chuôi nhi
phân lón, hay các tâp tin duoc chi ra trong hình 8.2
Nhp môn H qun tr c s d liu DB2

90

Hình 8.2 – Các kiêu dü liêu LOB

Các dôi tuong kiêu nhi phân lón này thuòng duoc viêt tãt dê cho dê hiêu: Môt dôi tuong
nhi phân lón phái là môt BLOB, môt dôi tuong ký tu lón là CLOB, và dôi tuong ký tu lón
2 byte cüng duoc biêt nhu là DBCLOB.

Các kiêu dü liêu duoc dinh nghïa bói nguòi dùng
DB2 cho phép ban có thê tu dinh nghïa kiêu dü liêu cúa chính mình, dua trên kiêu dü
liêu cúa hê thông. Ðiêu này duoc xem nhu là viêc có bô kiêu dü liêu do nguòi dùng tu
dinh nghïa (UDTs). UDTs duoc dùng khi:

- Có nhu câu thiêt lâp ngü cánh cho các giá tri
- Có nhu câu cân ép kiêu dü liêu DB2.
Các phát biêu theo sau dâu mô tá môt ví du vê viêc sú dung UDTs nhu thê nào và khi
nào

CREATE DISTINCT TYPE POUND AS INTEGER WITH COMPARISIONS
CREATE DISTINCT TYPE KILOGRAM AS INTEGER WITH COMPARISIONS
CREATE TABLE person
{
F_name VARCHAR (30),
Weight_p POUND NOT NULL,
Weight_k KILOGRAM NOT NULL
}

Trong ví du này, có 2 UDTs duoc tao ra là: POUND and KILOGRAM. Cá hai dêu duoc
xây dung dua trên kiêu dü liêu sãn có cúa hê thông INTEGER. Mênh dê WITH
COMPARISIONS duoc dinh nghïa nhu là phân cú pháp chi ra rãng viêc thay các hàm
vói cùng tên cüng giông nhu viêc các kiêu dü liêu së duoc tao ra.

Báng person dùng 2 UDTs mói trong côt weight_p và weight_k theo tuân tu. Nêu
bây giò chúng ta dua ra phát biêu sau:

SELECT F_NAME FROM PERSON
WHERE weight_p > weight_k
Nhp môn H qun tr c s d liu DB2

91

Ban së nhân duoc môt thông báo lôi vì viêc so sánh 2 côt vói kiêu dü liêu khác nhau.
Thâm chí weight_p và weight_k dùng dü liêu là POUND và KILOGRAM, theo thú tu, cá
hai truòng này dêu duoc dua trên kiêu dü liêu là INTEGER. Tuy nhiên bãng viêc tao
UDTs thì ban không thê thuc hiên loai so sánh này. Ðây chính là nhüng gì ban muôn,
bói vì trong cuôc sông thuc, làm thê nào dê so sánh giüa pound và kilogram? Nó së vô
lý.

Trong ví du kê tiêp, ban muôn so sánh côt weight_p vói kiêu dü liêu integer. Tuy nhiên
hai kiêu dü liêu này khác nhau, vì thê ban së nhân duoc thông báo lôi trù khi ban sú
dung môt hàm dã ép kiêu.

Nhu ban thây trong phát biêu bên duói, chúng tôi së dùng hàm ép kiêu POUND() dê
diêu so sánh này có thê thuc hiên duoc. Nhu dã nêu ó trên hàm ép kiêu POUND() duoc
tao ra vói UTD khi triêu goi WITH COMPARISIONS cúa phát biêu CREATE DISTINCT
TYPE.

SELECT F_NAME FROM PERSON
WHERE weight_p > POUND (30)

Các giá tri NULL
Môt giá tri null dai diên cho môt rang thái không xác dinh. Tuy nhiên, phát biêu CREATE
TABLE có thê dinh nghïa môt côt bãng cách sú dung mênh dê NOT NULL. Ðiêu này
dám báo rãng côt này së chúa giá tri dü liêu duoc biêt dên. Ban cüng có thê chi dinh giá
tri mãc dinh cho côt nêu NOT NULL duoc khai báo. Phát biêu kê tiêp cung câp ví du cho
diêu này:

CREATE TABLE Staff
{
ID SMALLINT NOT NULL,
NAM E VARCHAR (9),
DEPT SMALLINT NOT NULL with default 10,
JOB CHAR (5),
YEARS SMALLINT,
SALARY DECIMAL (7, 2),
COMM DECIMAL (7, 2) with default 15
}
8.2.2 Côt khoá chính (Identity columns)
Côt khoá chính này là môt con sô duoc tao ra tu dông, sô này là duy nhât cho môi dòng.
Chi có môt côt khoá chính cho môt báng.

Có hai cách tao ra giá tri cho côt khoá chính, diêu này phu thuôc vào viêc nó duoc dinh
nghïa nhu thê nào:

- Luôn luôn duoc sinh ra: nhüng giá tri luôn luôn duoc DB2 sinh ra. Các úng dung
thì không duoc phép cung câp nhüng giá tri cu thê.
- Sinh ra mãc dinh: giá tri có thê duoc cung câp cu thê bói môt úng dung hoãc,
nêu không có giá tri cho truóc, thì DB2 së sinh ra. DB2 không thê dám báo duoc
tính duy nhât. Tùy chon này duoc du dinh phuc vu cho viêc truyên dü liêu, và
cho viêc unload và reload cúa môt báng.
Hãy xem qua ví du sau:

Nhp môn H qun tr c s d liu DB2

92
CREATE TABLE subscriber (subscriberID INTEGER GENERATED ALWAYS AS
IDENTITY (START WITH 100 INCREMENT BY 100),
firstname VARCHAR (50),
lastname VARCHAR (50))

Trong ví du này, côt subscriberID là môt INTEGER duoc dinh nghïa nhu là môt côt khoá
chính thuôc loai luôn luôn duoc sinh ra tu dông. Giá tri duoc sinh ra së bãt dâu tù 100,
và nó së duoc tãng lên vói buóc là 100.
8.2.3 Các dô tuong tuân tu (Sequence object)
Các dôi tuong tuân tu sinh ra môt con sô duy nhât dua vào co só dü liêu. Không giông
nhu các côt khóa chính, các dôi tuong tuân tu này là nhüng báng dôc lâp, xem ví du
minh hoa ó phát biêu sau:

CREATE TABLE t1 (salary int)
CREATE SEQUENCE myseq
START WITH 10
INCREMENT BY 1
NO CYCLE
INSERT INTO t1 VALUES (nextval for myseq)
INSERT INTO t1 VALUES (nextval for myseq)
INSERT INTO t1 VALUES (nextval for myseq)
SELECT * FROM t1

SALARY
-----------------
10
11
12
3 record(s) selected

SELECT prevval for myseq FROM sysibm.sysdummy1

1
-----------------
12
1 record(s) selected

PREVVAL cung câp cho ban giá tri hiên tai cúa dãy tuân tu, trong khi NEXTVAL cung
câp giá tri kê tiêp.

Ví du bên trên cüng sú dung SYSIBM.SYSDUMMY1. dây là môt báng danh muc hê
thông mà nó chi có môt côt và môt hàng. Nó có thê duoc dùng trong tình huông nhu môt
câu truy vân yêu câu trá vê chi môt giá tri. Các báng danh muc hê thông duoc mô tá
trong phân kê tiêp.
8.2.4. Các báng danh sách hê thông
Môi co só dü liêu có các báng danh sách hê thông cúa riêng nó. Các báng này luu trü
siêu dü liêu vê các dôi tuong co só dü liêu. Ban có thê truy vân nhüng báng này nhu
bât ky báng co só dü liêu bình thuòng khác.

Ba so dô duoc sú dung dê nhân dang các báng danh sách hê thông:

• SYSIBM: các báng co só, tôi uu hóa sú dung DB2
• SYSCAT: khung nhìn (view) dua trên báng SYSIBM, tôi uu su dê sú dung.
Nhp môn H qun tr c s d liu DB2

93
• SYSSTAT: các sô liêu thông kê co só dü liêu

Sau dây là môt vài ví du vê các khung nhìn cúa danh muc:

• SYSCAT.TABLES
• SYSCAT.INDEXES
• SYSCAT.COLUMNS
• SYSCAT.FUNCTIONS
• SYSCAT.PROCEDURES
8.2.5. Khai báo các báng tam thòi
Khai báo báng tam thòi là các báng duoc tao ra trong bô nhó, duoc sú dung bói môt
úng dung và duoc tu dông xóa khi úng dung kêt thúc. Nhüng báng này chi có thê duoc
truy nhâp bói úng dung tao ra chúng. Không có bán ghi nào duoc sinh trong báng danh
sách cúa DB2. Truy nhâp nhüng báng này có hiêu quá rât cao bói vì không có su tranh
châp danh sách, các hàng không bi khóa, không ghi nhât ký (tùy chon), và không kiêm
tra quyên. Cüng có hô tro chi muc cho các báng tam thòi này, dó là, bât cú chi muc
chuân nào cüng có thê duoc tao trên môt báng tam thòi. Ban cüng có thê chay lênh
RUNSTATS vói các báng này.

Khai báo các báng tam thòi ó bên trong môt không gian sú dung cúa báng tam thòi, dây
là cái phái duoc dinh nghïa truóc khi tao ra bât cú báng tam thòi nào. Các phát biêu
duói dây cung câp môt ví du làm thê nào dê tao ba khai báo báng tam thòi:

CREATE USER TEMPORARY TABLESPACE apptemps
MANAGED BY SYSTEM USING ('apptemps');

DECLARE GLOBAL TEMPORARY TABLE temployees
LIKE employee NOT LOGGED;

DECLARE GLOBAL TEMPORARY TABLE tempdept
(deptid CHAR(6), deptname CHAR(20))
ON COMMIT DELETE ROWS NOT LOGGED;

DECLARE GLOBAL TEMPORARY TABLE tempprojects
AS (fullselect) DEFINITION ONLY
ON COMMIT PRESERVE ROWS NOT LOGGED
WITH REPLACE IN TABLESPACE apptemps;

Khi môt khai báo báng tam thòi duoc tao ra, so dô cúa nó là SESSION, và phái duoc
chi tuòng minh. ID nguòi dùng duoc sú dung dê tao môt báng tam thòi së có tât cá
quyên trên báng. Môi úng dung tao môt báng tam thòi së quyên dôc lâp cúa riêng nó
duoc chi ra trong Figure 8.5.

Nhp môn H qun tr c s d liu DB2

94

Figure 8.5 – Pham vi cúa các báng tam thòi toàn cuc công khai
Bài tâp nhanh #5 - Khói tao môt báng mói

Muc tiêu
Ðên dây, ban có thê sú dung nhüng báng có sãn trong co só dü liêu SAMPLE dê minh
hoa các khái niêm. Cuôi cùng, ban së cân tao môt co só dü liêu gôm các báng cúa riêng
mình. Trong phân bài tâp này, ban së sú dung tao báng theo huóng dân tùng buóc dê
tao hai báng mói trong co só dü liêu SAMPLE.

Thú tuc
1. Mó Create Table Wizard nhu dã chi ra ó trên trong phân giói thiêu.
(Control Center -> All Databases -> SAMPLE -> (nhân phái chuôt) Tables object
-> Create …)

2. Ðinh nghïa tên báng, dinh nghïa côt và các ràng buôc. Báng së duoc sú dung dê luu
trü thông tin vê cung câp vãn phòng phâm, duoc sú dung bói môt du án trong co só
dü liêu SAMPLE. Môi lân vãn phòng phâm duoc mua, môt hàng së duoc thêm vào
trong báng này. Báng së có sáu côt:

• product_id: nhân dang duy nhât cúa sán phâm dang duoc mua
• description: mô tá vê sán phâm
• quantity: sô luong mua
• cost: giá cúa sán phâm
• image: môt búc ánh cúa sán phâm (nêu dùng duoc)
• project_num: Mã sô cúa du án mua sán phâm này

3. Ó trang dâu tiên cúa huóng dân tùng buóc, dôi vói tên so dô, gõ vàp ID ban sú
dung dê dãng nhâp, và sú dung tên báng là SUPPLIES. Ban cüng có thê gõ vào môt
ghi chú tùy ý. Nhân vào nút Next dê tiêp tuc tói trang sau cúa huóng dân.

4. Tù trang này, ban có thê thêm các côt vào báng. Nhân nút ADD dê thêm các côt.

Nhp môn H qun tr c s d liu DB2

95


Gõ “product_id” vào Column name và chon kiêu là INTEGER. Bó dâu kiêm ó
Nullable, và nhân vào nút Apply dê dinh nghïa côt.

Lãp lai buóc này cho nhüng côt còn lai cúa báng sú dung các tùy chon duoc chi
trong báng ó trên. Khi tât cá các côt dã duoc thêm vào, nhân nút OK và danh sách
các côt ban vùa tao së duoc tông kêt. Nhâm nút Next dê tiêp tuc tói trang kê tiêp
cúa huóng dân.

Tên côt Thuôc tính
product_id (completed) INTEGER, NOT NULL
description VARCHAR, length 40, NOT NULL
quantity INTEGER, NOT NULL
cost DECIMAL, Precision 7, Scale 2, NOT NULL
image BLOB, 1MB, NULLABLE, NOT LOGGED
project_num CHAR, length 6, NOT NULL

Chú ý: Tùy chon NOT LOGGED có thê duoc chi rõ khi khai báo các côt LOB. Ðiêu
này là bãt buôc vói các côt có kích thuóc lón hon 1GB. Nó cüng duoc khuyên dùng
cho các côt LOB lón hon 10MB bói vì su thay dôi các côt lón có thê làm dây têp này
rât nhanh. Ngay cá nêu NOT LOGGED duoc sú dung, su thay dôi các têp LOB
trong quá trình giao dich xáy ra, vân có thê quay lui vê trang thái lúc dâu. Cüng chú ý
rãng môt mình côt hình ánh duoc dinh nghïa nhu môt côt “NULLABLE”. Ban có nghï
tai sao côt duoc dinh nghïa nhu thê?

5. Ó dây, tât cá thông tin bãt buôc cho viêc tao báng dêu duoc cung câp. Bãng cách
nháy sang các trang khác, ban coi nhu dang chon các giá tri mãc dinh cho nhüng tùy
chon dó. Ban có thê thêm các khóa và ràng buôc sau khi môt báng vùa duoc tao.
Nhp môn H qun tr c s d liu DB2

96

6. Thêm môt ràng buôc tói báng dê han chê các giá tri trên côt quantity. Trên trang
Constraint cúa cúa sô thao tác, nhân nút ADD. Trong truòng Check Name, gõ vào:
valid_quantities. Trong truòng Check Condition, gõ vào: quantity > 0.

Nhân nút OK. Ban nên nhìn môt tông kêt cúa ràng buôc ban vùa thêm vào trong
trang Constraint cúa cúa sô thao tác. Nhân nút Next dê tiêp tuc tói trang tiêp theo
cúa màn hình thao tác.

7. Ban có thê tiêp tuc hoàn thành thao tác, thay dôi các tham sô khác cúa báng. Hoãc,
ban có thê nháy dên trang Summary, hay don gián là nhân vào nút Finish dê tao
báng.

8. Tù trung tâm diêu khiên, nhân vào thu muc Tables duói co só dü liêu SAMPLE
trong khung cây dôi tuong. Báng ban vùa tao bây giò së xuât hiên trong danh sách.
Có thê phái làm tuoi cúa sô trung tâm diêu khiên dê thây duoc su thay dôi này.
8.3 Các khung nhìn (Views)
Các khung nhìn là su trình bày hay hiên thi cúa dü liêu trong báng. Dü liêu cúa các
khung nhìn không duoc chúa riêng biêt, nhung së duoc tôn tai khi duoc goi tói. Vói các
khung nhìn lông nhau, môt khung nhìn duoc tao làm nên cho các khung nhìn khác. Các
thông tin vê khung nhìn ó trong muc luc khung nhìn DB2: SYSCAT.VIEWS,
SYSCAT.VIEWDEP và SYSCAT.TABLES. Sau dây là cách tao và sú dung khung nhìn:

CONNECT TO MYDB1;
CREATE VIEW MYVIEW1 AS SELECT ARTNO, NAME, CLASSIFICATION
FROM ARTISTS;

SELECT * FROM MYVIEW1;

Kêt quá dâu ra:

Artno Name Classification
--------- ---------------- ------------------------------
10 HUMAN A
20 MY PLANT C
30 THE STORE E
8.4 Các chi muc (Index)
Chi muc là tâp các khóa duoc sãp xêp theo muc ó các dòng trong báng. Chi muc cho
phép trùng, và nó duoc phép thay dôi. Môt sô dãc diêm ban có thê dinh nghïa chi muc:

• Kiêu chi muc tãng hoãc giám.
• Khóa cúa chi muc có thê là duy nhât hoãc không duy nhât.
• Nhiêu côt có thê sú dung làm chi muc (duoc goi là các chi muc ghép).
• Nêu chi muc và các dü liêu vât lý hop lai giông nhu các chuôi chi muc, duoc goi
là các bó chi muc.

Ví du:

CREATE UNIQUE INDEX artno_ix ON artists (artno)
Nhp môn H qun tr c s d liu DB2

97
8.4.1 Tro giúp thiêt kê (Design Advisor)
Tro giúp thiêt kê là môt công cu khá tôt dê giúp ban tôi uu thiêt kê co só dü liêu cho môt
công viêc dã biêt. Tro giúp thiêt kê có thê giúp ban bãng cách thiêt kê các chi muc cho
ban, Materialized Query Tables (MQTs), Multi-demension clustering (MDC) và các tính
nãng phân tán co só dü liêu. Tro giúp thiêt kê duoc goi tù Trung tâm diêu khiên, bâm
chuôt phái trên co só dü liêu và chon “Design Advisor” nhu hình 8.6:


Hình 8.6 – Thuc hiên tro giúp thiêt kê tù Trung tâm diêu khiên

Hình 8.7 Cho thây tro giúp thiêt kê. Theo sau là các buóc huóng dân dat duoc cách
thiêt kê goi ý tù DB2.
Nhp môn H qun tr c s d liu DB2

98

Hình 8.7 – Tro giúp thiêt kê
8.5 Tính toàn ven tham chiêu
Toàn ven tham chiêu cho phép co só dü liêu quán lý duoc các quan hê giüa các báng.
Ban có thê thiêt lâp kiêu cha-con (parent-child) cúa các quan hê giüa các báng nhu hình
8.8. Trong hình có hai báng DEPARTMENT và EMPLOYEE duoc liên kêt bói mã sô cúa
phòng (department). Côt WORKDEPT trong báng EMPLOYEE chi có thê chúa mã sô
cúa phòng dã tôn tai trong báng DEPARTMENT. Ðó là lý do trong ví du này, báng
DEPARTMENT duoc goi là báng cha, báng EMPLOYEE duoc goi là báng con hoãc
báng phu thuôc. Hình sau trình bày cách dùng CREATE TABLE dê tao báng
EMPLOYEE cân cho thiêt lâp các quan hê.

DEPARTMENT table (Parent table)
DEPTNO
(Primary key)
Or unique constraint
DEPTNAME MGRNO


EMPLOYEE table (Dependent table)

create table employee (empno ………
primary key empno
foreign key workdept
reference department on delete no action)
in DMS01
Hình 8.8 - Ví du vê toàn ven tham chiêu giüa các báng.

Trong toàn ven tham chiêu, thuòng sú dung các khái niêm sau:
EMPNO
(Primary key)
FISTHNAME LASTNAME WORKDEPT
(Foreign key)
PHONENO
Nhp môn H qun tr c s d liu DB2

99

Khái niêm Mô tá
Báng cha (Parent table) Báng dü liêu diêu khiên chúa khóa chính
Báng phu thuôc
(Dependant table)
Báng dü liêu phu thuôc vào báng cha. Chúa khóa ngoai,
môi dòng tôn tai trong báng phu thuôc phái phù hop vói các
dòng trong báng cha.
Khóa chính (Primary key) Ðinh nghïa khóa chính cúa báng cha, nó không duoc có giá
tri NULL và phái là duy nhât. Khóa chính có thê là môt hoãc
nhiêu côt trong báng.
Khóa ngoai (Foreign key) Tham chiêu dên khóa ngoai cúa báng cha.

Dü liêu trong môt báng có thê liên kêt vói dü liêu cúa môt hoãc nhiêu báng thông qua
toàn ven tham chiêu. Các ràng buôc có thê duoc áp dãt dê dü liêu phù hop vói dãc tính
nào dó hoãc các quy tãc trong kinh doanh cúa dü liêu. Ví du, nêu môt côt cúa báng là
giói tính, nó có thê duoc ép dê chúa môt trong hai giá tri là “M” cho nam và “F” cho nü.

Nhp môn H qun tr c s d liu DB2

100
9
Chuong 9 – Công cu di chuyên dü liêu

Nhüng công cu hay câu lênh duoc mô tá trong phân này duoc sú dung dê di chuyên dü
liêu trong cùng môt co só dü liêu hay qua nhüng co só dü liêu khác nhau nãm trên
cùng môt nên (platform) hoãc có thê khác nên.

Hình 9.1 mô tá tông quan vê công cu di chuyên dü liêu

Hình 9.1 - Công cu di chuyên dü liêu.

Trong hình 9.1 có 2 co só dü liêu: A và B. Bãng cách sú dung công cu EXPORT, ta có
thê kêt xuât dü liêu tù môt báng sang môt têp. Têp có thê thuôc các dinh dang sau:

ASC = ASCII
DEL = Delimited ASCII – ASCII có dinh giói han.
WSF = Worksheet format – Ðinh dang kiêu báng tính.
IXF = Integrated Exchange Format – Ðinh dang trao dôi thông nhât.

Nhüng têp dang ASC hoãc DEL là nhüng têp vãn bán và có thê mó và xem lai bãng bât
ky trình soan tháo vãn bán nào. WSF là môt loai dinh dang mà có thê di chuyên dü liêu
sang báng tính chãng han Excel hay là Lotus® 1-2-3. IXF là môt dinh dang không chi
bao gôm dü liêu mà còn là môt ngôn ngü dinh nghïa dü liêu (Data Definition Language-
DDL). Ðiêu này rât tiên dung, vì khi môt báng cân duoc xây dung lai, ta có thê xây dung
môt cách truc tiêp tù têp có dinh dang IXF, còn nhüng têp ó dinh dang khác thì ta không
thê làm duoc viêc này.

Khi dü liêu duoc kêt xuât sang dang têp, công cu IMPORT có thê duoc dùng dê chuyên
dü liêu tù dang têp sang dang báng. Báng phái tôn tai sãn duói khuôn mâu ASC, DEL
và WSF, ngoai trù dinh dang IXF. Môt phuong thúc khác là công cu LOAD dùng dê
chuyên nap dü liêu vào trong báng. Công cu LOAD thì nhanh hon vì nó di truc tiêp dên
nhüng trang co só dü liêu mà không cân tuong tác dên hê thông DB2; tuy nhiên,
phuong thúc này không thê tao ra nhüng kiêm tra ràng buôc dôi vói dü liêu, và së
Nhp môn H qun tr c s d liu DB2

101
không thuc hiên duoc các bây su kiên (nêu có). Ðê dám báo môt cách kiên dinh viêc
nap dü liêu dùng công cu LOAD, lênh SET INTEGRITY thuòng duoc sú sung theo sau.

Nhüng phân tiêp theo sau dây së mô tá nhüng công cu EXPORT, IMPORT và LOAD
môt cách chi tiêt.
9.1 Công cu EXPORT (xuât)
Công cu EXPORT duoc dùng dê trích dü liêu tù báng thành môt têp nhu dã dê câp
truóc dây. Bên duói dây, môt thao tác SQL SELECT duoc goi thuc thi. Ví du duói dây
kêt xuât thành têp employee.ixf thuôc dinh dang IXF có 10 dòng tù báng employee.

EXPORT TO employee.ixf OF IXF
SELECT * FROM employee
FETCH FIRST 10 ROWS ONLY

Chúng tôi khuyên khích ban nên thú chay ví du trên. Báng employee là môt bô phân cúa
co só dü liêu SAMPLE, vì thê truóc hêt ban nên kêt nôi dên co so dü liêu này, nó dã
duoc tao ra trong chuong truóc.

Nêu ban thích làm viêc vói nhüng công cu có giao diên dô hoa (GUI), công cu EXPORT
cüng có thê duoc thuc hiênn tù Trung tâm diêu khiên (Control Center) nhu trong hình
9.2 bên duói.


Hình 9.2 - Hiên thi hôp thoai báng EXPORT

Nhu dã thây trên hình, truóc hêt ban phái chon báng employee bãng cách nhân vào nó
môt lân, và kê dó thì nhân chuôt phái trên báng dê mó môt báng chon con (popup menu)
tù dó ban có thê chon Export. Sau khi chon muc này, cúa sô huóng dân tùng buóc së
hiên lên. Chi cân don gián làm theo nhüng buóc cung câp sãn trong huóng dân này dê
hoàn thành quá trình thuc hiên.
Nhp môn H qun tr c s d liu DB2

102
9.2 Công cu IMPORT (nhâp)
Công cu IMPORT duoc dùng dê nap dü liêu tù môt têp sang môt báng nhu dã nói truóc
dây. Ðãng sau nó, môt thao tác SQL INSERT duoc thuc thi thuc su. Khi môt lênh
INSERT duoc thuc thi, các bây su kiên së duoc kích hoat, tât cá các ràng buôc së có
hiêu luc ngay lâp túc, và vùng nhó dêm cúa co só dü liêu së duoc sú dung. Ví du sau
dây nap tât cá dü liêu tù môt têp employee.ixf có dinh dang IXF vào trong báng
employee_copy. Lua chon REPLACE_CREATE là môt trong nhüng lua chon có sãn vói
công cu IMPORT. Lua chon này së thay thê nôi dung cúa báng employee_copy nêu nhu
nó dã tôn tai truóc khi công cu IMPORT duoc thuc thi, hoãc là nó së tao môt báng và
nap dü liêu nêu báng chua tôn tai truóc dó. Chúng tôi khuyên khích ban nên chay thú ví
du duói dây, nhung truóc hêt ban phái chay công cu EXPORT trong phân truóc.

IMPORT FROM employee.ixf OF IXF
REPLACE_CREATE
INTO employ_copy

Nêu ban thích làm viêc vói Trung tâm diêu khiên, ban có thê thuc hiên công cu IMPORT
bãng cách chon bât ky báng nào, nhân chuôt phái trên nó, và chon chúc nãng Import
nhu hình 9.3


Hình 9.3 – Hôp hôi thoai thuc hiên công cu IMPORT
9.3. LOAD (nap)
Công cu LOAD là môt cách nap dü liêu tù têp sang báng nhanh hon. Nhu dã tháo luân
truóc dây, công cu LOAD không di qua hê thông DB2, vì thê các bây su kiên không
duoc kích hoat, vùng dêm së không duoc dùng và các ràng buôc së không có hiêu luc.
Mãt khác, môt thao tác LOAD së nhanh hon IMPORT vì nó là môt công cu nap dü liêu
câp thâp truc tiêp truy xuât dên trang dü liêu trên dïa. Nó làm viêc theo 3 giai doan:
LOAD, BUILD và DELETE.

Ví du sau dây nap tât cá các dü liêu tù têp employee.ixf có dinh dang IXF vào trong
báng employee_copy. Lua chon REPLACE là môt trong nhüng lua chon có sãn trong
Nhp môn H qun tr c s d liu DB2

103
LOAD. Trong truòng hop này, nó duoc sú dung dê REPLACE tât cá các dü liêu có
trong báng employe_copy.

LOAD FROM employee.ixf OF IXF
REPLACE INTO employ_copy

Sau khi thuc thi câu lênh trên, không gian cúa báng, noi mà báng cúa ban trú ngu, có
thê duoc dua dên trang thái CHECK PENDING. Ðiêu này có nghïa là ban cân phái chay
câu lênh SET INTEGRITY dê kiêm tra tính chãc chãn dü liêu cúa ban. Ví du sau dây së
chi cho ban làm thê nào.

SET INTEGRITY FOR employee_copy
ALL IMMEDIATE UNCHECKED

Nêu ban thích làm viêc vói Trung tâm diêu khiên hon, ban có thê thuc hiên công cu
LOAD và SET INTEGRITY nhu trong hình 9.4 và 9.5 tuong úng.


Hình 9.4 - Thuc hiên công cu LOAD


Nhp môn H qun tr c s d liu DB2

104

Hình 9.5 - Thuc hiên công cu SET INTEGRITY
9.4 Công cu db2move
Tai môt thòi diêm, công cu EXPORT, IMPORT, và LOAD chi làm viêc trên môt báng.
Mãc dù ban có thê viêt môt kich bán dê phát sinh các lênh trên cho tùng báng trong co
só dü liêu, nhung công cu db2move së giúp ban làm diêu dó. Công cu db2move chi làm
viêc vói têp IXF, và tên têp së tu dông duoc phát sinh bói db2move. Ví du bên duói së
biêu diên chay db2move vói export, import nhu thê nào dê sú dung co só dü liêu
SAMPLE:

db2move sample export
db2move sample import

Trung tâm diêu khiên không có tùy chon cho db2move.
9.5 Công cu db2look
Trong khi các công cu EXPORT, IMPORT, LOAD và db2move cho phép ban di chuyên
dü liêu tù môt báng này tói môt báng khác, trong cùng môt co só dü liêu hay qua vài co
só dü liêu, công cu db2look có thê duoc sú dung dê rút trích các câu lênh DDL, các co
só dü liêu tïnh, các dãc tính không gian báng cho môt co só dü liêu, và luu trü chúng
trong môt têp kich bán mà có thê sau này duoc chay trên môt hê thông khác. Ví du, nêu
ban muôn sao chép môt co só dü liêu tù máy chú DB2 dang chay trên Linux sang môt
máy chú DB2 dang chay trên Windows; dâu tiên ban chay công cu db2look trên máy
chú DB2 Linux dê lây duoc câu trúc cúa co só dü liêu và luu câu trúc này trên môt têp
kich bán. Sau dó ban chép têp kich bán này sang máy chú DB Windows, và thuc thi kich
bán dó dê bãt dâu xây dung bán sao co só dü liêu. Tói dây, câu trúc cúa co só dü liêu
dó dã duoc sao chép. Buóc kê tiêp, së chay công cu db2move vói tùy chon export trong
máy chú DB2 Linux, và sau dó chép tât cá các têp duoc phát sinh sang máy chú DB2
Windows, sau dó thuc thi db2move vói tùy chon là import hoãc load. Hoàn thành buóc
này, co só dü liêu cúa ban së duoc sao chép toàn bô tù môt máy chú này sang môt
máy chú khác hoat dông trên môt nên táng khác.
Nhp môn H qun tr c s d liu DB2

105

Kich bán trên cân thiêt khi làm viêc vói co só dü liêu trên các nên táng khác nhau nhu
Linux và Windows. Nêu cá hai máy chú dêu hoat dông trên cùng môt nên táng, ban së
dùng nhüng lênh sao luu du phòng và khôi phuc së làm cho xú lý dê dàng hon và rõ
ràng hon. Nhüng lênh sao luu và khôi phuc së duoc mô tá chi tiêt hon trong chuong
sau cúa cuôn sách này.

Nhüng ví du sau së rút trích không gian báng và bô trí vùng dêm dü liêu, cùng vói
nhüng lênh DDL tù co só dü liêu SAMPLE, và luu trü chúng trong têp sample.ddl.
Chúng tôi khuyên khích ban chay lênh bên duói và xem lai têp kêt quá xuât (vãn bán)
“sample.ddl”.



Lênh db2look có quá nhiêu tùy chon không thê mô tá hêt trong cuôn sách này; tuy nhiên
ban có thê sú dung cò -h dê lây duoc phân mô tá tóm luoc các tùy chon sãn có:

db2look -h

Công cu db2look cüng có thê duoc goi tù trung tâm diêu khiên nhu biêu diên trong Hình
9.6


Nhp môn H qun tr c s d liu DB2

106

Trong Hình 9.6 chon co só dü liêu mà ban muôn lây DDL, nhân chuôt phái lên nó, và
chon “Generate DDL”. Cúa sô Generate DDL xuât hiên, hiên thi môt sô tùy chon rút
trích, thê hiên nhu trong hình 9.7.


Nhp môn H qun tr c s d liu DB2

107
Bài tâp nhanh #6 - Trích xuât DDL tù co só dü liêu EXPRESS

Muc tiêu:

Khi ban sao luu môt co só dü liêu, muc tiêu cúa ban là phái tao lai co só dü liêu bãng
cách don gián và hop lý. Thông thuòng sú dung kich bán SQL, nó có thê duoc thuc
hiên sau khi DB2 duoc cài dãt. Trong bài tâp nhanh này, ban së rút ra nhüng dinh nghïa
dôi tuong tù co só dü liêu EXPRESS (dã tao trong bài tâp nhanh #3) sú dung Trung
tâm diêu khiên.

Quy trình:

1. Mó Trung tâm diêu khiên.

2. Nhân chuôt phái vào co só dü liêu EXPRESS trên cây dôi tuong và chon muc
Generate DDL. Viêc này mó cúa sô hôp thoai Generate DDL.

3. Trong cúa sô Generate DDL, chi rõ nhüng tùy chon cho Generate DDL nhu duói
dây. Nêu ban tao ra thêm nhüng dôi tuong bô sung trong môi truòng cúa ban
nhu không gian bàng, bô dêm.., ban së chon chúng ó dây. Khi ban không tao ra
bât ky loai dôi tuong nào, dùng dánh dâu vào hôp kiêm. Thông kê co só dü liêu
không duoc thêm vào vì môi truòng sán xuât có khá nãng chúa môt tâp hop
thông kê khác hon môi truòng phát triên. Tuong tu, nhüng thông sô câu hình së
có khá nãng khác di môt chút. Trong môi truòng mà ban só hüu, nêu moi thú
câu hình chính xác theo cách nó duoc triên khai, ban có thê chon thêm vào cái
tùy chon bô sung.



4. Chuyên qua trang Object. Ban có thê chi dinh chon nhüng dôi tuong mà ban
muôn phát sinh ra DDL. Trong truòng hop này, chon nguòi dùng và gián dô mà
ban dùng dê tao ra tât cá các dôi tuong cúa ban và phát sinh ra DLL cho tât cá
các dôi tuong trong gián dô này. Nhân nút Generate dê bãt dâu tao DLL.
Nhp môn H qun tr c s d liu DB2

108




5. Xem lai kêt quá DDL. Kêt quá cúa buóc thuc hiên truóc là môt kich bán vói tât
cá các câu lênh SQL cho các dôi tuong duoc chon. Ban së tô chúc các kich bán
này vào trong nhüng nhóm hop lý.

6. Tao thu muc C:\express trong tâp tin hê thông và luu tâp tin phát sinh DDL vào
trong thu muc này vói vói tên là schema.ddl, Nhân nút “Save”.



7. Mó têp duoc luu gân dây nhât trong cúa sô nhâp lênh. (Goi ý: tù cúa sô nhâp
lênh, chon File -> Open)

8. Mãc dù chúng tôi chi thuc su muôn DDL cúa các báng, ban së thây các DDL cho
cá nhüng dôi tuong khác nüa cüng duoc sinh ra. Chuyên tât cá nhüng khai báo
CREATE TRIGGER tói môt têp mói riêng biêt duoc goi là triggers.ddl.
Thâm chí dù chúng tôi chi tao ra có môt bây su kiên cüng dê riêng ra, nó là môt
thói quen tôt dê phân biêt các dôi tuong theo kiêu cúa nó.

9. Bây giò chúng tôi cüng khuyên cáo loai bó:
Nhp môn H qun tr c s d liu DB2

109
• Các lênh co só dü liêu CONNECT TO.
• Các lênh DISCONNECT.

Ban phái có hai kich bán tai diêm này:
C:\express\schema.ddl DDL cho các báng, các cách hiên thi, các chi muc
và các ràng buôc.
C:\express\triggers.ddl DDL cho các bây su kiên

10. Chuân bi kich bán cho su triên khai:
• Xóa nhüng chú thích không cân thiêt (ví du: -- CONNECT TO…)
• Tách các hàm và các thú tuc vào nhüng têp tin riêng (rât hüu dung khi có
quá nhiêu hàm và thú tuc). Ban cüng có thê nhóm chúng lai theo chúc
nãng hay úng dung (ví du: stringfunc.ddl, billing.ddl,
math.ddl, , …)

11. Ban có thê phái chú ý dên nhüng kí tu dãc biêt duoc dùng dê giói han kêt thúc
các bây, các hàm và các thú tuc (@). Ðiêu dó là cân thiêt dê dãt giói han kêt thúc
cúa lênh CREATE <••i t••ng> khác vói kêt thúc cúa môt khai báo thú tuc
nãm bên trong dôi tuong.


Nhp môn H qun tr c s d liu DB2

110
10
Chuong 10 – Báo mât co só dü liêu

Chuong này bàn vê su báo mât duoc xú lý nhu thê nào trong DB2. Hình 10.1 cung câp
môt cái nhìn tông quan co bán


Hình 10.1 – Tông quan vê su báo mât trong DB2

Nhu trong hình 10.1, su báo mât DB2 có hai phân:

Ðinh danh
Nó là môt tiên trình qua dó kiêm tra tính hop lê cúa thông tin dãng nhâp cúa nguòi dùng.
Tiên trình dinh danh duoc thuc thi bói môt chuong trình báo mât bên ngoài DB2 (diên
hình là bói môt hê diêu hành, môt phuong thúc dinh danh cúa môt mang nào dó, hoãc
là môt phân mêm dinh danh duoc thiêt kê theo yêu câu). Tiên trình dinh danh cúa hê
diêu hành duoc xác lâp mãc dinh. Khi sú dung tiên trình dinh danh cúa hê diêu hành,
tên nguòi dùng (userid) và mât mã duoc chuyên tói co só dü liêu ó máy chú (nhu là
môt phân cúa câu lênh kêt nôi). Sau dó, co só dü liêu ó máy chú së goi tiên trình dinh
danh cúa hê diêu hành dê kiêm tra tính hop lê cúa tên nguòi dùng và mât mã.

Quyên han
Ó phân này, DB2 kiêm tra xem nguòi dùng, dã qua dinh danh ó trên, có thê thi hành
thao tác nguòi dó yêu câu hay không. Thông tin vê quyên han duoc luu trü trong môt
danh muc DB2 và môt tâp tin câu hình DBM.

Ví du, trong hình 10.1, nguòi dùng ‘bob’ kêt nôi vói co só dü liêu SAMPLE bãng câu
lênh :

CONNECT TO sample USER bob USING pwd

Cá “bob” và “pwd” duoc chuyên tói hê diêu hành hoãc môt chuong trình dinh danh bên
ngoài dê kiêm tra xem tên nguòi dùng “bob” dã duoc dinh nghïa chua và mât mã dó có
Nhp môn H qun tr c s d liu DB2

111
duoc nôi vói nguòi dùng này hay không. Nêu phân này thành công, hê diêu hành së trá
lai quyên kiêm soát báo mât cho DB2. Tiêp theo, khi nguòi dùng “bob” thi hành lênh sau:

SELECT * FROM mytable

Bây giò DB2 tiêp tuc dùng quyên kiêm soát báo mât dê thi hành viêc kiêm tra quyên han
và xác nhân nguòi dùng “bob” có quyên SELECT trên báng “mytable” hay không. Nêu
quyên dó không hop lê, DB2 së trá vê môt thông báo lôi, nguoc lai câu lênh së duoc
thuc thi dua trên báng “mytable”.
10.1 Ðinh danh
Mãc dù tiên trình dinh danh thuc su duoc thuc hiên bói hê diêu hành (hoãc môt chuong
trình báo mât khác bên ngoài), DB2 vân quyêt dinh tâng mà tiên trình dinh danh xáy ra.

Tham sô AUTHENTICATION trong DBM CFG, thiêt lâp ó máy chú DB2, có môt dãy các
giá tri hop lê. Ví du khi tham sô duoc thiêt lâp là SERVER (giá tri mãc dinh), tiên trình
dinh danh së duoc thuc thi bói hê diêu hành hoãc chuong trình báo mât bên ngoài ó
trên máy chú.Tuy nhiên, nêu AUTHENTICATION duoc thiêt lâp là CLIENT, tiên trình
dinh danh së duoc thuc thi bói hê diêu hành hoãc chuong trình báo mât bên ngoài ó
trên máy khách. Vân dê này duoc minh hoa ó hình 10.2


Hình 10.2 – Noi tiên trình dinh danh xáy ra

Tham sô AUTHENTICATION có thê duoc thiêt lâp bãng môt trong nhüng giá tri duoc
kiêt kê trong báng 10.1
Lênh Mô tá
SERVER (mãc dinh) tiên trình dinh danh diên ra ó máy chú
CLIENT tiên trình dinh danh diên ra ó máy
khách
SERVER_ENCRYPT tuong tu nhu SERVER nhung tên
cúa nguòi dùng và mât mã duoc mã
hóa
KERBEROS tiên trình dinh danh diên ra dùng co
chê báo mât Kerberos
SQL_AUTHENTICATION_DATAENC tiên trình dinh danh máy chú công
thêm su kêt nôi phái dùng su mã hóa
Nhp môn H qun tr c s d liu DB2

112
dü liêu
SQL_AUTHENTICATION_DATAENC_CMP giông nhu ó trên nhung su mã hóa
dü liêu chi dùng khi có sãn
GSSPLUGIN tiên trình dinh danh dùng co chê báo
mât bên ngoài dua trên GSS API
Báng 10.1 - Nhüng giá tri tham sô AUTHENTICATION hop lê
10.2 Quyên han
Quyên han bao gôm các dãc quyên và quyên duoc luu trü trong nhüng báng hê thông
DB2 và duoc DB2 quán lý.

Môt dãc quyên cho phép nguòi dùng thi hành môt loai thao tác don dua trên co só dü
liêu nhu là CREATE, UPDATE, DELETE, INSERT, ….

Môt quyên là môt hành dông duoc xác dinh truóc bao gôm nhiêu dãc quyên. Hình 10.3
minh hoa các quyên và dãc quyên khác nhau trong DB2.
Nhp môn H qun tr c s d liu DB2

113


Hình 10.3 - Nhüng quyên và dåc quyên

Báng 10.2 nêu ra nhüng hàm khác nhau mà môi quyên có thê thuc hiên. Nhu ban thây
SYSADM có hâu hêt các quyên trong khi SYSMON có ít quyên nhât.

Chúc nång SYSADM SYSCTRL SYSMAINT SYSMON DBADM LOAD
Câp nhât DBM
CFG
Y
Câp phép/Húy bó
DBADM
Y
Thiêt lâp/Thay
dôi SYSCTRL
Y
Thiêt lâp/Thay
dôi SYSMAINT
Y
Thiêt lâp/Thay
dôi SYSMON
Y
Buôc nguòi dùng
ra khói co só dü
liêu
Y Y
Nhp môn H qun tr c s d liu DB2

114
Tao/Bó co só dü
liêu
Y Y
Khôi phuc thành
co só dü liêu
mói
Y Y
Câp nhât DB CFG Y Y Y
Sao luu co só dü
liêu/không gian
báng
Y Y Y
Khôi phuc thành
co só dü liêu dã
tôn tai
Y Y Y
Khôi phuc tiên Y Y Y
Båt dâu/kêt thúc
môt thê hiên
Y Y Y
Phuc hôi không
gian báng
Y Y Y
Thuc hiên theo
vêt
Y Y Y Y
Lây hình ánh
màn hình
Y Y Y
Truy vân trang
thái không gian
báng
Y Y Y
Luoc bót tâp tin
nhât ký
Y Y Y
Quiesce không
gian báng
Y Y Y Y Y
Nap báng Y Y Y
Thíêt lâp/gõ bó
trang thái treo
Y Y
Tao/húy bó su
kiên màn hình
Y Y
Báng 10.2 – Các quyên và dåc quyên DB2

Ðê câp quyên SYSADM, SYSCTRL, hoãc SYSMAINT cho môt nhóm, nhüng tham sô
SYSADM_GROUP, SYSCTRL_GROUP, hoãc SYSMAINT_GROUP trong DBM CFG
phái duoc gán cho nhóm hê diêu hành

Ví du, dê câp quyên SYSADM cho nhóm hê diêu hành ‘db2admns’, ban có thê dùng câu
lênh này:

update dbm cfg using SYSADM_GROUP db2admns

Môi thê hiên DB2 có nhüng dinh nghïa vê nhóm quyên riêng.

Trên Windows, nhüng tham sô này duoc mãc dinh là rông, diêu dó có nghïa là nhóm
nhüng nguòi quán tri Windows là SYSADM. Trên Linux, nhóm nhüng nguòi só hüu thê
hiên duoc mãc dinh là nhóm SYSADM.
10.3 Quyên quán tri co só dü liêu DBADM
DBADM (DataBase ADMinistrator) là nguòi có quyên cao nhât vê quán tri co só dü liêu.
Ðây không phái là quyên ó câp dô cu thê; do dó không duoc nêu ra trong phân truóc.
Ðê gán quyên quán tri co só dü liêu DBADM, ta sú dung lênh GRANT, thí du:

connect to sample
grant DBADM on database to user <userid>
Nhp môn H qun tr c s d liu DB2

115

Trong thí du trên, truóc hêt ban cân kêt nôi dên co só dü liêu, ó dây co só dü liêu có
tên là “sample”, và sau dó gán quyên DBADM cho nguòi dùng. Ðê có thê gán quyên
quán tri co só dü liêu DBADM, ban phái là SYSADM.

Ghi chú: DBADM không có quyên tao các không gian báng, cho dù nhüng không gian
báng này là các dôi tuong bên trong co só dü liêu. Nguyên nhân là vì môt không gian
báng có liên quan dên các vùng chúa dü liêu (containers) nhu dïa và các vùng dêm (bô
nhó) dó là các tài nguyên vât lý cúa hê thông.
10.4 Nhóm PUBLIC
DB2 dinh nghïa môt nhóm bên trong duoc goi là PUBLIC. Bât cú nguòi dùng nào dã
duoc dinh danh bói hê diêu hành hoãc dich vu chúng thuc mang dêu duoc ngâm dinh
là thành viên cúa nhóm PUBLIC. Khi môt co só dü liêu duoc tao ra, môt sô quyên cu
thê së duoc gán môt cách tu dông cho nhóm PUBLIC:

• CONNECT,
• CREATETAB,
• IMPLICIT SCHEMA,
• BINDADD

Ðê thêm vào múc dô báo mât, chúng ta nên thu hôi, húy bó moi nguyên tù nhóm
PUBLIC nhu sau:

REVOKE CONNECT ON DATABASE FROM PUBLIC
REVOKE CREATETAB ON DATABASE FROM PUBLIC
REVOKE IMPLICIT_SCHEMA ON DATABASE FROM PUBLIC
REVOKE BINDADD ON DATABASE FROM PUBLIC
10.5 Lênh GRANT và REVOKE
Lênh GRANT và REVOKE là lênh SQL chuân, duoc dùng dê gán hoãc húy bó quyên
cúa môt nguòi dùng hoãc môt nhóm. Sau dây là môt sô ví du vê các câu lênh này:
Gán quyên SELECT trên báng T1 cho nguòi dùng USER1:

GRANT SELECT ON TABLE T1 TO USER user1

Gán tât cá các quyên trên báng T1 cho nhóm GROUP1:

GRANT ALL ON TABLE T1 TO GROUP group1

Húy bó tât cá các quyên trên báng T1 cúa GROUP1:

REVOKE ALL ON TABLE T1 FROM GROUP group1

Gán quyên EXECUTE trên thú tuc p1 cho nguòi dùng USER1:

GRANT EXECUTE ON PROCEDURE p1 TO USER user1

Húy bó quyên EXECUTE trên thú tuc p1 cúa nguòi dùng USER1:

REVOKE EXECUTE ON PROCEDURE p1 FROM USER user1
10.6 Kiêm tra viêc câp quyên và quyên
Cách tôt nhât dê kiêm tra viêc câp quyên và kiêm tra quyên là thông qua trung tâm diêu
Nhp môn H qun tr c s d liu DB2

116
khiên.

Hình 10.4 mô tá cách mó hôp thoai Table Privileges cho báng EMPLOYEE tù trung tâm
diêu khiên.


Hình 10.4 – Mó hôp thoai Privileges

Trong hình 10.4, ban chon báng mong muôn, nhâp phái chuôt vào báng này và chon
Privileges. Môt khi duoc chon, hôp thoai Privileges hiên thi nhu hình 10.5. Hình này có
mô tá các truòng và các thành phân cúa hôp thoai.

Hình 10.5 – Hôp thoai Privileges

Nhp môn H qun tr c s d liu DB2

117
Môt cách khác, ban có thê truy vân các thê hiên danh muc DB2 SYSCAT là noi chúa
các thông tin vê viêc câp quyên. Ví du, nêu ban muôn biêt nguòi dùng DB2ADMIN có
quyên SELECT trên báng T2 hay không, và muôn biêt ai dã gán quyên này, ban có thê
thuc hiên câu truy vân nhu sau:

SELECT grantor, grantee, selectauth
FROM syscat.tabauth
WHERE tabname = 'T2'

GRANTOR GRANTEE SELECTAUTH
-------------------------------------------------
ARFCHONG DB2ADMIN Y

Trong thí du trên, nguòi dùng ARFCHONG dã gán quyên SELECT cho nguòi dùng
DB2ADMIN.
10.7 Xem xét quyên trên nhóm
Ðê viêc quán tri DB2 dê dàng hon, ta nên dãt nhüng nguòi dùng vào các nhóm và gán
các quyên cân thiêt cho các nhóm này.

Khi môt nhóm duoc gán quyên, các thành viên cúa nhóm së duoc gán các quyên ngâm
dinh duoc kê thùa vói tu cách thành viên nhóm.

Khi môt nguòi dùng bi xóa khói nhóm, nguòi này së mât các quyên ngâm dinh cúa
nhóm, nhung vân còn giü các quyên duoc gán tuòng minh. Nói môt cách khác các
quyên duoc câp môt cách tuòng minh phái duoc húy bó môt cách tuòng minh.

Nhp môn H qun tr c s d liu DB2

118
Bài tâp nhanh # 7: Cho phép và húy bó (phân quyên) quyên nguòi sü dung.

Muc tiêu:

Cho dên lúc này, ban dã sú dung môt tài khoán cúa nguòi quán tri cho viêc sú dung các
lênh vói co só dü liêu.Tài khoán này có thê truy nhâp tói moi tiên ích, dü liêu và nhüng
dôi tuong co só dü liêu dây dú. Bói vây, diêu quan trong là cân báo vê tài khoán này dê
tránh su nhüng su cô hay mât mát dü liêu có chú tâm. Trong da sô nhüng truòng hop,
ban së muôn tao ra nhüng tài khoán nguòi dùng khác hoãc nhüng nhóm vói môt thiêt
lâp quyên han chê hon.Trong bài tâp này, ban së tao ra môt tài khoán nguòi sú dung
mói, rôi gán nó nhüng dãc quyên xác dinh.

Thú tuc:

1.Mó cúa sô Windows Computer Management bãng cách kích chuôt phái vào biêu
tuong My Computer trên máy tính, và chon Manage.

2. Chon muc Local Users and Group ó nhóm System Tools nãm bên trái cúa cúa sô
Computer Management, nhân chuôt phái lên User và chon muc New User.

3. Trong cúa sô New User , nhâp các thông tin sau dây: trong muc User name nhâp
“customer” và trong muc Full name nhâp “Customer1”. Trong truòng Description nhâp
“A typical book store customer”. Trong truòng Password và Confirm password nhâp
“ibmdb2”. Bó dâu dánh ó muc “nguòi dùng cân dôi mât mã ó lân dãng nhâp sau” (User
must change password on next logon) và nhân nút Create dê tao nguòi dùng mói





















4. Chon chê dô cao câp (Advanced) bãng cách chon muc Customize Control Center
trên thuc don Control Center Tool, chon tiêp tùy chon Advanced và nhân OK. Báo dám
khung nhìn làm viêc hiên tai ó chê dô Advanced.

5. Mó rông cây dôi tuong cúa Trung tâm diêu khiên ó bên trái cúa sô, chon All
Database -> EXPRESS -> Tables.

Nhp môn H qun tr c s d liu DB2

119
6. Phân nhüng quyên cân có cho nguòi dùng vùa mói tao ra: Tù danh sách các báng
trong có só dü liêu EXPRESS, nhân chuôt phái lên báng CUSTOMERS và chon muc
Privileges dê hiên thi cúa sô hôi thoai “Table Privileges”

7. Kích vào nút Add User và chon nguòi dùng “customer” vùa mói tao ra ó buóc 3. Kích
vào nút OK dê dóng hôp thoai Add User.

8. Ban chú ý rãng nguòi dùng “customer” dã duoc thêm vào danh sách nguòi dùng,
nhung chua duoc gán thêm các quyên. Ðê câp quyên cho nguòi dùng này, chon Yes
trong hôp thoai kéo xuông cúa tât cá các phân SELECT, INSERT, UPDATE và DELETE.
Môt nguòi dùng Internet cân phái có khá nãng thuc hiên add/update/delete dü liêu tài
khoán cúa ho. Chúng ta không câp cho nguòi sú dung nhüng quyên khác bói vì không
cân thiêt dôi vói ho. Nhân nút Ok dê dóng cüa sô hôp thoai Table Privileges và châp
nhân nhüng thay dôi vùa làm.





























9. Lãp lai tùng buóc tù 7-9 cho báng BOOKS và báng SALES. Ðôi vói báng BOOKS,
chi cung câp quyên SELECT bói vì nguòi dùng “customer” không nên có khá nãng dê
diêu chinh và phuc hôi dü liêu trong kho. Ðôi vói báng SALES, chi cho quyên SELECT
và INSERT. Nguòi dùng không nên có quyên DELETE hoãc UPDATE bói vì chi nhüng
nhân viên mói cân phái có su truy nhâp dê súa dôi nhüng giao dich bán hàng.

10. Thú kêt nôi dên co só dü liêu bãng tài khoán cúa nguòi dùng “customer” dã tao ó
trên. Thú dê SELECT vói báng khách hàng. Ðiêu gì xáy ra? Thú DELETE hay UPDATE
dü liêu trong báng SALES. Ðiêu gì xáy ra?

Trong bài tâp nhanh này, chúng ta chi tao môt nguòi dùng là “customer”, tuy nhiên, úng dung cúa
ban có thê chúa dung nhiêu kiêu nguòi dùng khác. Thü nghiêm tao ra nhüng nguòi dùng khác và

Nhp môn H qun tr c s d liu DB2

120
gán cho nó nhüng däc quyên. Ban cüng có thê tao ra nhüng nhóm cúa các nguòi dùng và phân
quyên cho các nhóm dó, hon là làm vói môi nguòi dùng riêng lé.
Nhp môn H qun tr c s d liu DB2

121
11
Chuong 11 – Sao luu và khôi phuc

Trong chuong này chúng ta tháo luân vê nhât ký co só dü liêu DB2, làm thê nào dê sao
luu toàn bô hay môt phân co só dü liêu sú dung công cu BACKUP và làm thê nào dê
khôi phuc dü liêu sú dung công cu RESTORE.
11.1 Nhât ký co só dü liêu
Nêu ban dang làm viêc vói môt trình soan tháo vãn bán, môi lân ban muôn luu tài liêu
phái nhân vào nút SAVE. Trong co só dü liêu, câu lênh COMMIT së làm diêu dó. Môi lân
câu lênh COMMIT duoc thuc hiên thì moi thay dôi tao thành dü liêu và duoc luu trong
nhât ký co só dü liêu.

Tuong tu, khi ban làm viêc vói môt tài liêu vãn bán, dôi khi ban thây ó duói góc phái
màn hình có môt thông diêp ngãn “auto-saving”. Trong co só dü liêu, diêu này duoc
thuc hiên bói lênh UPDATE, INSERT và DELETE.

Ó phân trên ta dã dê câp dên nhât ký co só dü liêu. Nhât ký co só dü liêu duoc luu trü
trên dïa cúng và duoc dùng ghi lai nhüng hành dông cúa nhüng giao dich. Nêu hê
thông hay co só dü liêu bi hu hai, chúng duoc dùng nó dê lây lai nhüng giao dich dã
duoc gúi di trong suôt quá trình khôi phuc dü liêu.

Hình 11.1 minh hoa luông xú lý khi làm viêc vói co só dü liêu trong nhüng mâu nhât ký












Hình 11.1 - Nhât ký co só dü liêu

Trong hình 11.1 ta thây không gian báng (tablespace) và nhât ký (logs), chúng dêu duoc
luu trü trên dïa cúng, mãc dù ta dê xuât rãng chúng không luu trü trên cùng dïa cúng.
Ví du, khi câu lênh UPDATE duoc thuc hiên, nhüng trang cho nhüng dòng trong câu
lênh së duoc luu trong vùng dêm dü liêu (bô nhó). Nhüng thay dôi, câp nhât së duoc
thê hiên trong vùng dêm dü liêu, nhüng giá tri cü và mói së duoc luu trü trong nhüng
tâp tin nhât ký co só dü liêu, dôi khi túc thòi, dôi khi môt vùng dêm nhât ký dây. Nêu câu
lênh COMMIT duoc thi hành sau câu lênh UPDATE thì nhüng giá tri cü và mói së duoc
Nhp môn H qun tr c s d liu DB2

122
cât trong nhüng tâp tin nhât ký ngay lâp túc. Xú lý này cüng duoc lãp lai tuong tu cho
câu lênh SQL khác truy xuât dên co só dü liêu. Khi diêu kiên duoc cu thê thóa mãn, nhu
là viêc dat dên nguõng cúa su thay dôi trong tham sô CHNGPGS_THRES thì nhüng
trang trong vùng dêm dü liêu së duoc “chi tiêt hóa” hay ghi lên thành không gian báng
trên dïa cúng. Tham sô CHNGPGS_THRES chi dinh ti lê phân trãm cúa vùng dêm dü
liêu vói nhüng trang “dirty” dó là nhüng trang chúa nhüng thay dôi.

Vê khía canh hiêu nãng, ta không có cám giác thuc hiên 2 lân ghi cho môi lênh
COMMIT: Môt là ghi dên nhât ký co só dü liêu và môt ghi dên không gian báng trên dïa
cúng, dó là lý do tai sao “su chi tiêt hóa” cúa dü liêu dên không gian báng trên dïa cúng
chi xáy ra khi tham sô “chngpgs_thres” dat nguõng.
11.2 Các kiêu nhât ký
Có hai kiêu nhât ký:

Nhât ký so câp:
Ðuoc câp phát sãn và sô nhât ký so câp sãn sàng duoc xác dinh bói tham biên db cfg
LOGPRIMARY

Nhât ký thú câp:
Phân nhât ký thú câp này duoc DB2câp phát dông khi cân. Sô nhât ký thú câp duoc
gán giá tri bói tham biên db cfg LOGSECOND. Viêc câp phát dông môt nhât ký së gây ra
su lãng phí vì vây nhât ký thú câp së duoc xóa khi tât cá kêt nôi dên co só dü liêu dã bi
ngãt
11.3 Các kiêu ghi nhât ký
Có hai kiêu ghi nhât ký: Ghi tuân tu quay vòng (mãc dinh) và ghi luu trü
11.3.1 Ghi tuân tu quay vòng
Hình 11.2 mô tá luông xú lý khi ghi tuân tu quay vòng













Hình 11.2 - Xú lý nhât ký so câp và thú câp

Trong hình 11.2 có 3 nhât ký so câp, vì vây chúng ta gán LOGPRIMARY bãng 3. Ðê cho
don gián trong ví du này chi có 1 giao dich. Khi giao dich duoc thuc hiên không gian sú
dung bãt dâu ghi vào tâp tin nhât ký P1 và tiêp theo sau là P2. Nêu có môt lênh COMMIT
duoc thuc hiên và thông tin sau dó duoc xuât dên không gian báng trên dïa cúng, sau
dó P1 và P2 có thê duoc ghi dè dü liêu khác vì thông tin cü không cân thiêt nüa. Nêu,
mãt khác, giao dich dã sú dung P1, P2, P3 và vân cân nhiêu không gian nhât ký hon
nüa bói vì giao dich chua duoc COMMIT, thì môt nhât ký thú câp duoc câp phát (S1
trên hình vë) môt cách tu dông. Nêu giao dich vân còn tiêp tuc, nhiêu nhât ký thú câp
duoc câp phát cho dên khi sô nhât ký thú câp duoc câp phát dat nguõng tôi da
Nhp môn H qun tr c s d liu DB2

123
LOGSECOND. Nêu vân chua dú, môt thông diêp lôi chi ra diêu kiên hêt khá nãng câp
phát nhât ký và giao dich së duoc quay lui (hôi xú).
11.3.2 Nhât ký luu trü
Nhât luu trü cüng duoc biêt dên nhu là ghi giü lai, nhüng tâp tin nhât ký không bi ghi dè
nhung chúng duoc luu trü truc tuyên hay ngoai tuyên. Nhüng nhât ký luu trü truc tuyên
duoc luu trü vói nhüng nhât ký dông cân cho khôi phuc khi hê thông bi su cô. Nhüng
nhât ký luu trü ngoai tuyên duoc luu trong bãng tù và có thê làm viêc vói thú tuc
USEREXIT. Ðê có thê ghi nhât ký luu trü cân gán tham sô db cfg LOGRETAIN là YES.

Cách ghi luu trü thuòng duoc dùng trong nhüng hê thông sán phâm. Nhüng nhât ký
duoc luu trü cho phép khôi phuc co só dü liêu sóm nhât có thê bói nhüng tâp tin nhât
ký cü nhât trong hâu hêt các tình huông. Vói cách ghi luu trü nguòi quán tri co só dü
liêu có thê khôi phuc nhüng lôi gây ra bói con nguòi. Môt ví du cu thê là khi môt nguòi
trong hê thông bãt dâu thuc hiên môt giao tác không dúng kéo dài hàng ngày, khi vân dê
duoc phát hiên thì nguòi quán tri co só dü liêu së khôi phuc lai hê thông cü vào thòi
diêm truóc khi vân dê duoc xáy ra. Tuy nhiên, vân còn có môt sô thao tác bãt buôc phái
làm bãng tay dê dám báo viêc khôi phuc duoc chính xác.

Cách ghi luu trü là cân thiêt dôi vói quá trình khôi phuc lai và khôi phuc truc tuyên.
Hình 11.3 mô tá luông xú lý cúa ghi luu trü
















Hình 11.3 - Ghi luu trü
11.4 Nhât ký co só dü liêu tù Trung tâm diêu khiên
Ban có thê câu hình nhât ký co só dü liêu tù trung tâm diêu khiên bãng cách nhân chuôt
phái trên co só dü liêu và chon “Configure Database Logging”
Nhp môn H qun tr c s d liu DB2

124
Hình 11.4 - Nhât ký co só dü liêu tù Trung tâm diêu khiên

Hình 11.5 thê hiên màn hình thiêt lâp câu hình nhât ký co só dü liêu, tai dây ta có thê
chon kiêu ghi nhât ký quay vòng (circular) hoãc ghi luu trü
Hình 11.5 - Ghi nhât ký co só dü liêu theo huóng dân tùng buóc
11.5 Các tham sô cúa nhât ký
Có nhüng tham sô DB CFG liên quan dên viêc tao bán ghi nhât ký. Báng 11.1 liêt kê
danh sách các tham sô chính.
Nhp môn H qun tr c s d liu DB2

125
Báng 11.1- Các tham sô nhât ký
11.6 Sao luu co só dü liêu
Lênh sao luu dü liêu DB2 cho phép ban tao môt bán sao chép co so dü liêu lúc lênh
duoc thuc thi. Cú pháp don gián nhât ban có thê sú dung dê chay lênh này là:

BACKUP DATABASE <dbname> [ TO <path> ]

Hâu hêt các lênh và công cu có thê duoc thuc hiên truc tuyên hay ngoai tuyên. Truc
tuyên nghïa là dê nguòi sú dung khác có thê duoc kêt nôi và thuc hiên các thao tác trên
co só dü liêu trong khi ban thuc thi lênh cúa mình. Ngoai tuyên là không nguòi nào
duoc kêt nôi dên co só dü liêu trong khi ban thuc hiên thao tác. Ðê cho phép môt thao
tác truc tuyên, thêm tù khóa ONLINE vào cú pháp lênh, nêu không thì ngâm dinh ban së
làm viêc trong chê dô ngoai tuyên.

Ví du, nêu muôn sao luu co só dü liêu sample dên duòng dân C:\BACKUPS ban có thê
dua ra lênh này tù trình don lênh DB2 cúa Window/Linux:
Tham sô Mô tá
logbufsz
Luong bô nhó duoc sú dung nhu môt bô dêm cho các bán ghi
nhât ký truóc khi ghi chúng vào dïa.
logfilsz Kích thuóc cúa môi nhât ký dã câu hình, có dung luong 4KB
logprimary Sô bán nhât ký chính vói kích thuóc logfilsz së duoc tao
logsecond
Sô têp nhât ký phu duoc tao và sú dung cho viêc khôi phuc nêu
cân thiêt
logpath/newlogpath Vi trí các nhât ký hoat dông hoãc luu trü tuong lai duoc dãt.
mirrologpath
Ðê báo vê các nhât ký trên duòng dân chính khói su cô hóng dïa
hay vô tình xóa, ban có thê chi dinh môt thiêt lâp dông nhât cho
các nhât ký duoc luu giü trên môt duòng dân phu (ánh cúa duòng
dân nhât ký chính)
loghead Tên têp nhât ký hoat dông hiên hành
userexit Cho phép chuong trình userexit sao chép nhât ký ngoai tuyên
softmax Giói han su mât mát cúa viêc khôi phuc hóng
logretain Cho phép chê dô ghi nhât ký luu trü
overflowlogpath
Tuong tu tùy chon OVERFLOW LOG PATH cúa lênh
ROLLFORWARD; tuy nhiên,thay vì chi dinh tùy chon OVERFLOW
LOG PATH cho môi lênh ROLLFORDWARD duoc dua ra, ban có
thê thiêt lâp tham sô câu hình này môt lân
blk_log_dsk_ful
Thiêt lâp tránh viêc tràn dïa phát sinh khi DB2 không thê tao ra môt
têp nhât ký mói trong duòng dân nhât ký dang hoat dông. Thay vì
dó, DB2 së cô gãng tao ra têp nhât ký môi nãm phút dên khi nó
thành công. Khi không còn tró ngai, SQL chi-doc có thê tiêp tuc.
maxlog Phân trãm sô nhât ký hoat dông tôi da cách nhau qua giao dich
num_log_span Sô têp nhât ký hoat dông cho môt UOW kích hoat
Nhp môn H qun tr c s d liu DB2

126

db2 BACKUP DB sample TO C:\BACKUPS

Chú ý rãng thu muc C:\BACKUPS phái tôn tai truóc khi thuc thi lênh. Cüng chãc chãn
là không có kêt nôi nào dên co só dü liêu khi ban thuc thi lênh trên, nêu không ban së
nhân môt thông báo lôi bói môt sao luu ngoai tuyên không thê duoc thuc hiên khi có
các kêt nôi.

Trong truòng hop dê tìm ra nhüng kêt nôi dên co só dü liêu, dua ra lênh DB2 này tù
trình don Window/Linux:

db2 list applications

Ðê buôc ngãt tât cá kêt nôi dên co só dü liêu, dua ra lênh tù trình don lênh DB2
Window hoãc cúa Linux:

db2 force application all

Ban có thê không cân chay lênh cuôi cùng trong môi truòng sán xuât vói nhiêu nguòi sú
dung, nêu không ban së nhân nhüng cuôc goi tù nhüng dông nghiêp nóng tính dây!
Cüng luu ý rãng lênh cuôi cùng chay theo cách thúc không dông bô. Nghïa là khi ban cô
gãng chay lênh sao luu ngay sau dó, nó có thê không làm viêc. Ðoi vài giây, và lãp lai
lênh sao luu nêu ban dã gãp lôi lúc dâu.

Sau khi thuc thi thành công lênh sao luu, môt têp mói chúa ánh co só dü liêu sao luu
duoc tao ra. Tên cúa têp này theo quy uóc duoc chi trong hình 11.6











Hình 11.6 - Quy uóc dåt tên ánh sao luu

Loai “0” có nghïa dó là bán sao luu dây dú. Loai “3” chãng han, nghïa là chi môt sao luu
báng biêu trông. Nút duoc cô dinh vói NODE0000 cho co só dü liêu không phân tán, là
truòng hop cho tât cá ân bán DB2 trù ân bán thuong mai DB2 Enterprise Edition vói
tính nãng DPF. Nút catalog cüng duoc cô dinh vói CAT0000. Tham kháo sách huóng
dân DB2 dê có chi tiêt hon

Khi có vài bán sao luu duoc ghi lai và luu trü trên cùng duòng dân thì môc thòi diêm ghi
lai ó cuôi tên têp duoc sú dung dê phân biêt giüa các ánh sao luu. Nhu chúng ta së
thây ó phân tiêp theo, lênh RESTORE có thê sú dung môc thòi diêm này dê phuc hôi
môt bán sao dã dinh.



Nhp môn H qun tr c s d liu DB2

127
Bài tâp nhanh #8 - Lâp lich sao luu

Muc dích:

Mãc dù DB2 có môt vài khá nãng tu dông duy trì co só dü liêu, nhung dôi khi ban cüng
muôn hiêu chinh chúng khi có môt hoat dông cu thê diên ra. Trong phân bài tâp nhanh
này, ban së hiêu chinh lich sao luu cho co só dü liêu EXPRESS.

Các thú tuc :

1. Tù cây dôi tuong ó Trung tâm diêu khiên, ban chon All Database. Nhâp chuôt
phái trên co só dü liêu EXPRESS và chon biêu tuong Backup. Công cu tùng
buóc Backup duoc khói dông.

2. Trong muc Introduction së tóm tãt trang thái hiên tai cúa co só dü liêu bao
gôm thòi diêm sao luu cuôi cùng và phuong thúc truy câp. Bâm Next dê chuyên
tói muc tiêp theo cúa công cu Backup.

3. Trong muc Image, chon dích dên cúa dü liêu së duoc sao luu. Thông thuòng,
ban nên chon môt ô dïa khác vói ô dïa dang luu co só dü liêu hiên hành. Bây
giò, tao môt thu muc mói trong hê thông có tên là C:\db2backup, dây së là thu
muc chúa co só dü liêu sao luu. Hãy chon biêu tuong File System trong danh
sách thá Media Type. Bâm nút Add, chon thu muc ban vùa tao ra, rôi bâm OK.
Sau dó bâm Next dê chuyên sang muc tiêp theo.

4. Ban có thê mó muc Options and Performance tuy nhiên ban nên dê chê dô
mãc dinh vì DB2 mãc dinh cho phép sao luu ó chê dô tôi uu nhât. Tiêp theo ban
chon chon muc Schedule.

5. Trong muc Schedule, nêu nhu trình lâp lich chua duoc kích hoat thì ban hãy
kích hoat chúng. Chon hê thông dê tao danh muc các công cu và thuc hiên
chúng. Chi ra môt gián dô cho danh muc công cu và chon dê tao nó trong co só
dü liêu EXPRESS hiên hành. Danh muc công cu së chúa dü liêu biên dôi vê tât
cá các tác vu lâp lich. Bâm nút OK dê tiêp tuc. Bâm Next dê chuyên sang muc
tiêp theo sau khi danh muc công cu dã duoc tao lâp.



Nhp môn H qun tr c s d liu DB2

128

6. Trong muc Schedule, tao ra môt muc luc cho viêc thi hành các tác vu. Lâp lich
sao luu môi ngày vào lúc 1 giò sáng. Bâm Next dê chuyên sang muc kê tiêp.







7. Trong muc Summary, ban së xem lai các tác vu së duoc tao ra. Sau dó bâm
Finish dê tao ra tác vu.

8. Chay Trung tâm tác vu (Task Center) dê xem hoãc súa chüa các tác vu sao
luu vùa mói tao ra.

Nhp môn H qun tr c s d liu DB2

129
11.7 Khôi phuc co só dü liêu
Khôi phuc co só dü liêu bao hàm viêc khôi phuc co só dü liêu tù các bán ghi du phòng
và nhât ký. Nêu nhu ban chi khôi phuc co só dü liêu tù bán ghi du phòng thì së tao ra
các co só dü liêu nhu dã tôn tai ó thòi diêm sao luu.

Nêu viêc luu trü bán ghi duoc cho phép truóc viêc sao luu, thì ban không chi khôi phuc
lai bãng cách sú dung ánh sao luu, mà còn tù các têp nhât ký. Ó phân tiêp theo ta së
thây cách khôi phuc dü liêu cuôn cho phép ban có thê khôi phuc tù các bán ghi du
phòng và sau dó ghép vào phân cuôi cùng cúa các têp nhât ký, hoãc môt diêm cu thê
theo thòi gian.

Chú ý rãng tù khôi phuc (recovery) duoc dùng nhiêu trong phân này, nhung lênh khôi
phuc lai là RESTORE.

11.7.1 Các kiêu khôi phuc dü liêu
Có ba loai khôi phuc dü liêu:

Khôi phuc dü liêu hóng:
Giá thiêt rãng ban dang làm viêc vói co só dü liêu DB2 trên máy tính thì dôt ngôt mât
diên, chuyên gì së xáy ra vói co só dü liêu cúa ban?

Khi ban khói dông lai máy tính và khói dông DB2, chuong trình khôi phuc dü liêu hóng
së duoc tu dông thuc thi. DB2 së tu dông chay lênh RESTART DATABASE và së doc
và phuc hôi các giao dich khi truóc ó trang thái kích hoat. Sau khi hoàn thành, ban së
duoc dám báo rãng, co só dü liêu cúa ban ó trang thái phù hop nhât.

Khôi phuc dü liêu phiên bán (hoåc khôi phuc ánh):
Có nghïa là, ban së phuc hôi co só dü liêu cúa ban tù ánh môt bán sao. Do dó co só dü
liêu cúa ban duoc trá vê trang thái ngay truóc khi nó duoc sao luu. Moi tác dông lên co
só dü liêu dó sau thòi diêm sao luu dêu bi mât.

Khôi phuc dü liêu theo thòi gian:
Kiêu khôi phuc dü liêu này vùa cho phép ban khôi phuc co só dü liêu tù môt bán sao,
vùa khôi phuc dü liêu tai môt thòi diêm xác dinh bãng lênh ROLLFORWARD. Khôi phuc
dü liêu kiêu này làm giám su mât mát dü liêu môt cách tôi da.
11.7.2 Khôi phuc co só dü liêu
Dùng lênh RESTORE dê khôi phuc dü liêu tù môt bán luu. Duói dây là câu trúc don
gián nhât cho câu lênh này:

RESTORE DATABASE <tên c• s• d• li•u> [from <•••ng d•n>] [taken
at <th•i-•i•m>]

Ví du: Nêu ban có môt têp sao luu có tên nhu sau:








Ban së gõ lênh nhu sau:


Nhp môn H qun tr c s d liu DB2

130

RESTORE DB sample FROM <•••ng d•n> TAKEN AT 2006314131259
11.8 Các hoat dông khác vói BACKUP và RESTORE
Duói dây là danh sách môt vài diêu ban nên biêt vê lênh BACKUP và RESTORE. Chúng
tôi khuyên ban nên doc lai cuôn huóng dân vê DB2 dê có thêm thông tin chi tiêt.

• Sao luu co só dü liêu ó chê dô 32 bit còn khôi phuc dü liêu ó chê dô 64 bit.
• Khôi phuc cá co só dü liêu dang tôn tai.
• Khôi phuc dü liêu tói môt ô dïa khác vói vùng cân khôi phuc.
• Khôi phuc hoãc sao luu dü liêu theo không gian báng, thay vi làm vói toàn bô co
só dü liêu.
• Cho phép sao luu nhüng thay dôi (Delta) và sao luu tãng dân (incremental).
Cách sao luu thay dôi chi sao luu nhüng thay dôi tiêp theo, trong khi dó cách sao
luu dân tãng thì ghi nhân toàn bô nhüng thay dôi và tích hop chúng vào môi ánh
sao luu.
• Sao luu các bán “chup” dü liêu (flash copy) (dòi hói vê phân cúng tuong thích)
• Khôi phuc báng dã mât (nêu tùy chon duoc lâp cho báng)
• Sao luu ó hê diêu hành này và khôi phuc ó hê diêu hành khác là không thê.
Dùng db2look và db2move cho truòng hop này.
Nhp môn H qun tr c s d liu DB2

131
12
Chuong 12 - Nhiêm vu báo trì

Trong chuong này chúng ta së bàn vê các nhiêm vu cân thiêt dê giü cho CSDL cúa ban
duy trì hoat dông duoc tôt. Tât cá moi thú trong DB2 dêu tu dông thuc hiên nhüng công
viêc này. Bán DB2 Express-C cüng giông nhu tât cá các bán DB2 hiên thòi dêu chúa
dung tât cá các khá nãng tu dông này. Khá nãng tu quán lý là môt loi ích lón làm nhó
gon và làm vùa phái sô luong nhân viên trong nhüng công ty, nhüng nguòi không cân
thuê làm liên tuc làm quán tri dê quán lý máy chú dü liêu. Khác vói viêc làm bãng tay,
nêu môt nguòi quán tri duoc thuê, anh ây hay cô ây së có nhiêu thòi gian ránh rôi dê
thuc hiên viêc nâng cao hoat dông làm gia tãng giá tri cho công ty.
12.1 REORG, RUNSTATS, REBIND
Có ba công viêc duy trì chính trong DB2, nhu hình 12.1 mô tá: REORG, RUNSTATS và
REBIND.



Hình 12.1 – Các công viêc duy trì: REORG, RUNSTATS, REBIND

Hình 12.1 trình bày nhüng công viêc duy trì duoc thuc hiên theo môt chu trình hình tròn.
Nêu môt REORG duoc thuc hiên, nó duoc khuyên là nên chay môt RUNSTATS, theo
sau là môt REBIND. Sau môt thòi gian, các báng trong môt co só dü liêu dã duoc thay
dôi theo các lênh nhu UPDATE, DELETE và INSERT. Tai thòi diêm dó, chu ky mói lai
duoc bãt dâu vói REORG.
12.1.1 Lênh REORG
Qua thòi gian, ban thuc hiên các tính toán INSERT, UPDATE, DELETE trên co só dü
liêu cúa ban, dü liêu cúa ban bãt dâu bi phân doan, chia nhó ra thành các trang co só
dü liêu. Lênh REORG së tái ghép nhüng mánh vun cüng nhu nhüng khoáng trông lai và
së tô chúc lai dü liêu dê làm cho viêc truy vân dü liêu tró nên hiêu quá hon. Các báng
hay thay dôi së có loi nhât khi dùng REORG. Ban có thê làm chi muc REORG nhu vói
Nhp môn H qun tr c s d liu DB2

132
các báng, và môt REORG có thê duoc thuc hiên truc tuyên hay không truc tuyên.

Lênh REORG không truc tuyên thuc hiên nhanh hon và hiêu quá hon, nhung không cho
phép truy nhâp tói báng, trong khi lênh REORG truc tuyên cho phép truy nhâp tói báng,
nhung có thê làm tiêu hao môt chút tài nguyên hê thông; dây là nhüng công viêc tôt nhât
cho nhüng báng nhó.

Cú pháp:
REORG TABLE <tablename>
Ví du:
REORG TABLE employee
Lênh REORGCHK có thê duoc dùng truóc môt REORG dê xác dinh báng hay chi sô
cân duoc súa.
12.1.2 Lênh RUNSTATS
Co chê tôi uu cúa DB2 (Optimizer) là “khôi óc” cúa DB2. Nó tìm nhüng duòng dân truy
nhâp hiêu quá nhât dê dinh vi và truy vân dü liêu. Co chê tôi uu là hê thông dánh giá tri
thúc, và sú dung phân tích thông kê các dôi tuong co só dü liêu duoc luu trong các
báng danh muc cho hiêu suât khai thác co só dü liêu lón nhât. Ví du, các báng danh
muc có các phân tích thông kê vê có bao nhiêu côt hiên diên trong môt báng, có bao
nhiêu hàng trong nó, có bao nhiêu và nhüng kiêu gì cúa chi sô sãn có vói môt báng, …

Thông tin vê phân tích thông kê không duoc câp nhât tu dông. Chính vì thiêt kê kiêu
này, nên ban không muôn DB2 câp nhât nhüng thông kê sau môi thao tác trên co só dü
liêu, nó së phán tác dung vói yêu câu vê hiêu nãng cúa hê thông. Thay vào dó, DB2
cung câp lênh RUNSTATS dê câp nhât nhüng thông kê này. Nó giü cho các thông kê
co só dü liêu luôn câp nhât. Co chê tôi uu cúa DB2 có thê tao ra nhüng thay dôi gôc rê
co bán trong duòng dân truy nhâp nêu báng chi có môt dòng so vói báng có môt triêu
dòng. Khi nhüng thông kê co só dü liêu duoc câp nhât, DB2 có thê chon môt phuong
án truy nhâp tôt hon. Tân suât cúa các thông kê tâp hop này së xác dinh duoc dü liêu
trong báng thay dôi nhu thê nào.

Cú pháp:
RUNSTATS ON TABLE <schema.tablename>
Ví d:
RUNSTATS ON TABLE myschema.employee
12.1.3 BIND/REBIND
Sau khi chay thành công lênh RUNSTATS, không phái tât cá các câu truy vân së duoc
dùng nhüng thông kê mói nhât. Nhüng so dô truy nhâp SQL tïnh duoc xác dinh khi ban
dua ra lênh BIND, vì các thông kê duoc dùng tai thòi diêm dó không giông nhau nhu
thòi diêm hiên tai. Hình 12.2 së giúp chúng ta hiêu ý tuóng này.

Nhp môn H qun tr c s d liu DB2

133

Hình 12.2 – Tiên trình kêt nôi SQL tïnh.
Trong hình 12.2 môt chuong trình nhúng viêt bãng C (duoc luu trü nhu môt têp vói
phân mó rông là “sqc”) duoc tiên biên dich. Sau khi tiên biên dich, hai têp duoc sinh ra,
môt têp “.c” chúa mã C vói tât cá chú thích SQL, và môt têp “.bnd” chúa tât cá các câu
lênh SQL. Têp C vói phân mó rông “.c” duoc biên dich nhu thuòng lê vói trình biên dich
C, tao môt “thu viên” nhu trình bày phía trên bên phái cúa hình. Têp “.bnd” giông nhu
vây, nó duoc dóng gói luu trong co só dü liêu. Ðóng gói thì tuong duong vói biên dich
các câu lênh SQL vói nhüng so dô truy nhâp tôt nhât duoc xác dinh trên các thông kê
dã có tai thòi diêm này, và sau dó luu chúng thành gói.

Bây giò, diêu gì së xáy ra nêu môt triêu dòng duoc chèn vào bên trong báng sú dung
trong chuong trình nhúng trên? Sau khi chèn, nêu môt lênh RUNSTATS duoc thuc thi,
nhüng thông kê së duoc câp nhât, tuy nhiên gói së không tu dông câp nhât dê tính toán
lai duòng dân co só trên nhüng thông kê mói nhât. Lênh db2rbind có thê duoc dùng dê
dóng gói lai các gói trên vói thông kê mói nhât.

Cú pháp:
db2rbind database_alias -l <logfile>
Ví du:
Ðê dóng gói lai tât cá các gói cúa co só dü liêu sample và luu nó trong nhât ký tai têp
mylog.txt, thuc hiên lênh sau:
db2rbind sample -l mylog.txt
12.1.4 Các công viêc duy trì tù Trung tâm diêu khiên
Tù Trung tâm diêu khiên ban có thê REORG và RUNSTATS. Hình 12.3 trình bày cách
thuc hiên.
Nhp môn H qun tr c s d liu DB2

134

Hình 12.3 – REORG và RUNSTATS tù Trung tâm diêu khiên

Ban chon báng mà ban muôn tô chúc lai, nhâp phái chuôt và chon tô chúc lai (cho
REORG) hay chay thông kê (cho RUNSTATS)

Hiên thi thông sô co só dü liêu:
Khi ban chon môt co só dü liêu, khung nhìn hoat dông co só dü liêu ó phía duói bên
phái cúa Trung tâm diêu khiên së cung câp thông tin vê co só dü liêu nhu là vê kích
thuóc, cúa lân sau cùng, dù nó có duoc báo trì tu dông hay không. Viêc hiên thi này cho
phép ban nhanh chóng xác dinh nhüng duy trì cân thiêt cho co só dü liêu cúa ban. Hình
12.4 hiên thi nhüng thông tin này.


Hình 12.4 – Hiên thi thông sô co só dü liêu tù Trung tâm diêu khiên
Nhp môn H qun tr c s d liu DB2

135
12.2 Các lua chon báo trì
Có 3 cách dê thuc hiên viêc báo trì hê thông.

1. Báo trì thú công
Ban thuc hiên hoat dông báo trì này môt cách thú công khi có nhu câu phát sinh.

2. Tao ra môt doan kich bán (script) dê thuc hiên viêc báo trì hê thông.
Ban có thê tao các kich bán vói nhüng lênh báo trì và lâp lich hop lý cho nó hoat dông.

3. Tu dông báo trì
DB2 tu dông giám sát công viêc báo trì cho ban (bãng lêch REORG, RUNSTATS,
BACKUP)

Trong phân này, chúng ta tâp trung chú yêu vào cách báo trì tu dông.

Hoat dông báo trì tu dông bao gôm nhüng buóc sau dây:
- Nguòi dùng dinh nghïa môt cúa sô báo trì (khung thòi gian) tai thòi diêm dó hê
thông së thuc hiên công viêc báo trì mà không gây ra su xáo trôn. Ví du, nêu hê
thông có ít nhât các hoat dông vào ngày chú nhât, tù 2h sáng tói 4h sáng, thì
khung thòi gian này së hoat dông nhu là môt cúa sô báo trì.
- Có 2 loai cúa sô báo trì chính: môt là dê thuc hiên truc tuyên, còn loai kia là dê
thuc hiên ngoai tuyên.
- DB2 chi thuc hiên báo trì môt cách tu dông khi cân thiêt và ó dang trong thòi gian
kích hoat cúa cúa sô báo trì.

Tù giao diên diêu khiên chính, ban có thê mó “Configure Automated Maintenance
Wizard” nhu hình minh hoa 12.5.


Hình 12.5 – Mó Configure Automated Maintenance Wizard

Hình 12.6 së hiên ra cúa sô “Câu hình dê báo trì hê thông môt cách tu dông theo huóng
dân”.

Nhp môn H qun tr c s d liu DB2

136

Hình 12.6 – Câu hình dê báo trì hê thông môt cách tu dông theo huóng dân
Nhp môn H qun tr c s d liu DB2

137
Bài tâp nhanh #9 – Câu hình viêc báo trì tu dông

Muc dích

Trong bài tâp nhanh này, vói vài thao tác don gián, ban së câu hình cho viêc tu dông
báo trì trên co só dü liêu mâu DB2.

Các thú tuc

1. Tù cây dôi tuong cúa Trung tâm diêu khiên, nhân chuôt phái vào co só
dü liêu SAMPLE và chon muc “Configure Automatic Maintenance”. Nó së
mó ra cúa sô dê thuc hiên viêc báo trì tu dông theo huóng dân.

2. Trang Introduction cúa “huóng dân” hiên thi nhüng cài dãt hiên thòi cúa
chúc nãng tu dông báo trì. Nêu ban tao ra co só dü liêu vói chúc nãng tu
dông báo trì, khi dó nó së tu dông duoc câu hình. Ban có thê dùng “huóng
dân” này dê câu hình lai chúc nãng tu dông báo trì. Bâm Next dê chuyên tói
trang tiêp theo cúa “huóng dân”.

3. Trang Type cúa “huóng dân” yêu câu ban chon giüa vô hiêu hóa tât cá các
tùy chon tu dông luu giü và thay dôi câu hình cúa viêc tu dông báo trì. Chon
môt chúc nãng dê thay dôi cài dãt hiên tai cúa tu dông luu giü. Bâm Next.

4. Trang Timing (thòi gian) cúa “huóng dân” së yêu câu ban chi rõ cúa sô
báo trì. Câu hình cho cúa sô ngoai tuyên së duoc thuc hiên vào môi tôi thú 7
và chú nhât tù giüa dêm tói 6h sáng nhu hình bên duói. Bâm nút Change
bên canh cúa sô báo trì ngoai tuyên và chon thòi gian nhu mong muôn. Sau
khi hoàn thành nhüng thông tin cân thiêt, bâm nút OK dê tró lai “huóng dân”.
Thoát khói cúa sô truc tuyên (báo trì truc tuyên có thê mó bât ky lúc nào).
Bâm nút Next.

Nhp môn H qun tr c s d liu DB2

138


5. Ðên trang Notification (cánh báo) cúa “huóng dân”, ban có thê cài dãt môt su
tuong tác trong truòng hop có môt hoat dông tu dông báo trì bi lôi. Bây giò
bó qua buóc dó. Bâm Next.

6. Ðên trang Actives cúa “huóng dân”, ban có thê chon là có tu dông hóa các
công viêc cá nhân hay không cüng nhu là duoc thông báo vê các hoat dông
cu thê khác.Trong ví du này, phái chãc rãng tât cá các hôp kiêm “Automate”
dêu duoc chon và các hôp kiêm “Notify” dêu không duoc chon. Bâm Next.

7. Truóc khi thuc hiên trang kê tiêp cúa “huóng dân”, ban nên câu hình vi trí
luu du phòng cúa co só dü liêu. Lý tuóng nhât là ban nên luu trü ó môt ô
dïa vât lý khác trong truòng hop dïa bi lôi. Tù trang Activies, chon chúc nãng
“Backup database”, sau dó bâm nút “Configure Settings”.

8. Trên trang Backup Criteria cúa cúa sô “Configure Settings”, chon chúc nãng
“Balance Database Recoverability with Performance”. Trên trang Backup
Location, chon vi trí luu du phòng và bâm nút “Change”. Chi ra môt vi trí khác
dê thuc hiên luu du phòng (phái báo dám là dú bô nhó trong ô dïa dó). Trên
trang Backup Mode, báo dám là “Offline Backup” dã duoc chon. Bâm OK dê
dóng trang Backup Criteria. Bâm nút Next.

9. Trang Summary (tóm tãt) cúa “huóng dân” chúa môt báng tóm tãt cúa nhüng
lua chon mà ban dã chon. Bâm nút Finish dê châp nhân và thi hành nhüng
thay dôi dó.
Nhp môn H qun tr c s d liu DB2

139
13
Chuong 13 – Truy câp dông thòi và khóa

Chuong này tâp trung tháo luân làm thê nào dê cho phép nhiêu nguòi dùng truy câp vào
cùng môt dü liêu giông nhau tai cùng môt thòi diêm mà không làm ánh huóng lân nhau,
và giü cho quá trình hoat dông cúa ho phù hop. Chúng ta së tháo luân vê khái niêm cúa
các giao dich, truy câp dông thòi và khóa.
13.1 Các giao dich
Môt giao dich hay môt don vi công viêc gôm có môt hay nhiêu dòng lênh SQL mà khi
thuc hiên cân phái duoc coi là môt don vi riêng lé. Có nghïa là nêu môt trong nhüng
dòng lênh trong giao dich thât bai thì toàn bô giao dich thât bai, và bât ky dòng lênh nào
duoc thi hành dên diêm thât bai thì së duoc quay lui (hôi xú), dua dü liêu vê giá tri,
trang thái truóc dó. Môt giao dich kêt thúc vói dòng lênh COMMIT, nó cüng có nghïa là
báo hiêu bãt dâu môt giao dich mói. Hình 13.1 cung câp cho chúng ta ví du cúa môt giao
dich

Hình 13.1 – Môt ví du vê giao dich

Trong hình 13.1, ví du ban muôn chuyên 100 dô la tù tài khoán tiêt kiêm (savings) cúa
ban sang tài khoán séc (checking). Viêc dó dòi hói phái thuc hiên công viêc này:

Trù 100 dô la ó tài khoán tiêt kiêm
Công 100 dô la vào tài khoán séc

Nhp môn H qun tr c s d liu DB2

140
Nêu dãy các viêc trên không duoc xem xét nhu là môt don vi công viêc - môt giao dich,
hình dung diêu gì së xáy ra nêu có lôi (xáy ra) sau khi trù tiên ó tài khoán tiêt kiêm,
nhung không công duoc tiên vào tài khoán séc. Ban së mât 100 dô la!
13.2 Truy câp dông thòi
Truy câp dông thòi ý nói rãng nhiêu nguòi có thê làm viêc ó cùng môt thòi diêm trên
cùng môt co só dü liêu. DB2 duoc thiêt kê nhu là môt co só dü liêu nhiêu nguòi dùng.
Viêc truy câp dü liêu phái duoc kêt hop chính xác và rõ rêt sú dung môt co chê dê báo
dám tính toàn ven và chãc chãn cúa dü liêu. Xem ví du 13.2



Hình 13.2 - Môt ví du cúa truy câp dông thòi và su cân thiêt cho viêc diêu khiên
truy câp dông thòi

Trong hình 13.2, có 4 úng dung, App A, App B, App C và App D dang cô gãng truy câp
dên cùng môt dòng (dòng 2) trong báng dü liêu. Không có diêu khiên truy câp dông thòi,
tât cá úng dung có thê thuc hiên các thao tác dôi vói dòng dü liêu này. Giá dinh rãng tât
cá úng dung dang câp nhât côt Age cho dòng 2 vói giá tri khác, úng dung thuc hiên câp
nhât sau cùng së là "nguòi chiên thãng" trong truòng hop này. Hiên nhiên trong ví du
này môt diêu khiên truy câp dông thòi nào dó duoc dòi hói dê dám báo chãc chãn cho
kêt quá. Ðiêu khiên truy câp dông thòi này dua vào viêc sú dung khóa bán ghi.

Khái niêm khóa và truy câp dông thòi có liên quan chãt chë vói nhau. Khóa dùng dê tam
thòi ngãn nhüng úng dung thao tác trên chúng cho dên khi môt thao tác kêt thúc. Nêu
chúng ta có nhiêu khóa hon trong môt hê thông thì viêc truy câp dông thòi së ít di. Nói
môt cách khác, nêu chúng ta có ít khóa hon trong hê thông thì së có nhiêu truy câp dông
thòi hon.

Nhüng khóa này së tu dông xuât hiên dê hô tro môt thao tác và së duoc giái phóng khi
thao tác kêt thúc (khi sú dung lênh COMMIT hoãc ROLLBACK). Các khóa có thê dãt
trên các báng hoãc các dòng. Có hai loai khóa co bán:

- Khóa chia sé (khóa S) - duoc sú dung khi úng dung muôn doc và ngãn cán câp
nhât tù nhüng dòng khác
- Khóa dành riêng (khóa X) – duoc sú dung khi môt úng dung câp nhât, thêm hay
xóa môt dòng

Bây giò chúng ta dê ý dên hình 13.3, nó có vé giông nhu hình 13.2 nhung bây giò nó
xuât hiên thêm môt khóa
Nhp môn H qun tr c s d liu DB2

141

Hình 13.3 – Môt ví du cúa truy câp dông thòi, và su cân thiêt cúa khóa

Trong ví du hình 13.3, nêu App B truy câp dòng thú 2 dâu tiên, và thuc hiên viêc
UPDATE, App B giü môt khóa dành riêng (khóa X) trên dòng dó. Khi App A, App C và
App D cô gãng truy câp vào dòng 2, chúng së không thê UPDATE dòng này bói vì khóa
X. Viêc kiêm tra này giúp báo dám tính toàn ven và chãc chãn cúa dü liêu.
13.3 Các vân dê khi không kiêm tra truy câp dông thòi
Khi không có diêu khiên truy câp dông thòi, chúng ta có thê gãp nhüng vân dê duói dây

• Mât dü liêu câp nhât
• Ðoc vói không cam kêt
• Ðoc không lãp lai
• Ðoc thùa

13.3.1 Mât dü liêu câp nhât
Mât dü liêu câp nhât là môt vân dê tuong tu nhu giái thích truóc trong muc này, khi úng
dung thuc hiên câp nhât sau cùng së là “nguòi chiên thãng”.


Hình 13.4 – Mât dü liêu câp nhât

Nhp môn H qun tr c s d liu DB2

142
Trong hình 13.4 có hai úng dung cô gãng câp nhât trên cùng môt dòng. Bên trái là App1,
và bên phái là App2. Và chuôi viêc sau dó là:

1. App1 câp nhât môt dòng
2. App2 câp nhât dòng tuong tu
3. App1 hoàn tât
4. App2 hoàn tât

Dü liêu câp nhât cúa App1 së bi mât khi App2 câp nhât lai nó, do dó xáy ra viêc “Mât dü
liêu”
13.3.2 Ðoc vói không cam kêt
Môt hành dông doc không cam kêt hoãc “doc có ý xâu” dê câp dên viêc môt úng dung
doc nhüng thông tin mà không duoc cam kêt, và tât nhiên viêc này thì không duoc dúng
dãn.


Hình 13.5 – Ðoc vói không cam kêt

Hình 13.5 kéo theo nhüng su viêc này:

1. App1 câp nhât môt dòng
2. App2 doc giá tri mói cúa dòng dó
3. App1 cuôn lai nhüng thay dôi trên dòng dó

App2 thì dang doc vói dü liêu không duoc cam kêt, và kê tù dó dü liêu không hop lê và
duoc goi là “doc vói không cam kêt”
13.3.3 Ðoc không låp lai
Ðoc không lãp lai ngu ý rãng ban không dat duoc kêt quá giông nhau sau khi thuc hiên
viêc doc giông nhau vói nhüng thao tác giông nhau.
Nhp môn H qun tr c s d liu DB2

143

Hình 13.6 – Ðoc không låp lai

Trong hình 13.6, duòng nhu nêu ban cô gãng ghi môt chuyên bay tù Dallas dên
Honolulu. Môt dãy các su viêc là:

1. App1 mó môt báng (duoc hiêu nhu báng kêt quá) hiên hành nhu ban thây trong
hình 13.6
2. App2 xóa môt dòng trong báng (ví du, dòng vói destination “San Jose”)
3. App2 hoàn tât nhüng thay dôi
4. App1 dóng và mó lai báng

Trong truòng hop này, tù lúc App1 không duoc cung câp dü liêu tuong tu dang doc lãp
lai, nó không thê sao chép lai báng dü liêu, dó chính là vân dê duoc goi là “doc không
lãp lai”
13.3.4 Ðoc thùa
Vân dê doc không có thuc giông nhu vân dê doc không lãp lai, nhung khác nhau là ó
nhüng lô trình kê tiêp, ban có thê thu duoc nhüng dòng vùa thêm vào mà dúng ra thì
chúng (dòng) ít hon.

Hình 13.7 cung câp cho chúng ta ví du cúa vân dê này

Hình 13.7 - Ðoc thùa

Nhp môn H qun tr c s d liu DB2

144
Hình 13.7 trình bày chuôi su kiên:

1. App1 mó môt báng
2. App2 thêm môt dòng vào co só dü liêu ó noi mà nó có dú tiêu chuân cúa báng
3. App2 hoàn tât nhüng thay dôi
4. App1 dóng và lai tiêp tuc mó báng

Trong truòng hop này, App1 së không thây dü liêu tuong tu nhu dang doc lãp lai, nó së
lây duoc nhiêu dòng hon. Vân dê này duoc goi là doc thùa
13.4 Các múc cô lâp
Ban có thê nghï các múc cô lâp nhu là noi giü các chính sách khóa, dua vào su lua
chon múc cô lâp, ban có thê có nhüng tác dông khác nhau cho co só dü liêu khóa môt
úng dung

DB2 cung câp nhüng múc dô báo vê khác nhau dê cô lâp dü liêu:

• Ðoc vói không cam kêt (UR)
• Ón dinh con tró (CS)
• Ðoc ôn dinh (RS)
• Ðoc lãp lai (RR)
13.4.1 Ðoc vói không cam kêt
Ðoc vói không cam kêt cüng duoc hiêu nhu doc có ý xâu. Ðó là múc dô cô lâp thâp
nhât, và cung câp múc dô truy câp dông thòi cao nhât. Không có su khóa dòng nào tôn
tai trên nhüng thao tác doc, nêu các úng dung khác không xâm nhâp dê xóa hoãc súa
môt báng, và thao tác câp nhât giü nhiêm vu nhu là nêu chúng ta dùng câp dô cô lâp ôn
dinh con tró.

Nhüng vân dê vân tôn tai vói câp dô cô lâp này:
• Ðoc vói không cam kêt
• Ðoc không lãp lai
• Ðoc thùa

Nhüng vân dê duoc ngãn ngùa vói câp dô cô lâp này là:
• Mât dü liêu khi câp nhât
13.4.2 On dinh con tró
Ón dinh con tró là câp dô cô lâp mãc dinh. Nó cung câp môt múc dô khóa tôi thiêu. Vê
co bán, vói múc cô lâp này thì dòng “hiên hành” cúa con tró (cursor) bi khóa. Nêu dó là
dòng chi doc, thì khóa së duoc giü cho dên khi môt dòng mói duoc nap hoãc don vi làm
viêc duoc kêt thúc. Nêu dòng duoc câp nhât, chiêc khóa së duoc giü cho dên khi don vi
làm viêc duoc kêt thúc

Nhüng vân dê vân tôn tai vói múc dô cô lâp này:
• Ðoc không lãp lai
• Ðoc thùa

Nhüng vân dê duoc ngãn ngùa vói múc dô cô lâp này
• Mât dü liêu câp nhât
• Ðoc không cam kêt
Nhp môn H qun tr c s d liu DB2

145
13.4.3 Ðoc ôn dinh
Vói doc ôn dinh, tât cá các dòng mà úng dung làm viêc trong môt pham vi dêu bi khóa.
Cho môt con tró, nó khóa tât cá các dòng dú tiêu chuân trong tâp hop kêt quá. Ví du nêu
ban có môt báng chúa 10.000 dòng và câu truy vân trá vê 10 dòng, sau dó chi có 10
dòng dó bi khóa. Co chê doc ôn dinh sú dung môt múc dô khóa vùa phái.

Vân dê vân tôn tai vói múc dô cô lâp này:
• Ðoc thùa

Nhüng vân dê duoc han chê vói múc dô cô lâp này là:
• Mât dü liêu câp nhât
• Ðoc vói không cam kêt
• Ðoc không lãp lai
13.4.4 Ðoc låp lai
Co chê doc lãp lai là múc dô cô lâp cao nhât. Nó cung câp câp dô khóa cao nhât, và truy
câp dông thòi tôi thiêu nhât. Khóa duoc giü trên tât cá các dòng, xú lý viêc xây dung
môt tâp hop kêt quá. Túc là nhüng dòng không cân thiêt trong tâp hop kêt quá cuôi
cùng có thê bi khóa. Không môt chuong trình nào khác có thê câp nhât, xóa, hoãc thêm
mói môt dòng mà có thê ánh huóng dên tâp hop kêt quá cho dên khi môt don vi công
viêc duoc hoàn tât. Co chê doc lãp lai báo dám rãng nhüng câu truy vân tuong tu nhau
duoc dua ra bói môt úng dung trong môt don vi làm viêc së nhân duoc kêt quá giông
nhau tai môi thòi diêm.

Vân dê vân còn tôn tai vói múc dô cô lâp này:
• không có

Nhüng vân dê duoc ngãn ngùa vói múc dô cô lâp này:
• Mât dü liêu khi câp nhât
• Ðoc không cam kêt
• Ðoc không lãp lai
• Ðoc thùa
13.4.5 So sánh các múc dô cô lâp dü liêu
Hình 13.8 so sánh su khác nhau mà các múc dô cô lâp mang lai. Trong hình, chúng ta
nhìn thây múc dô cô lâp “doc không cam kêt” không khóa gì cá. Múc dô cô lâp ôn dinh
con tró giü môt cái khóa dòng 1 khi nó dang lây dòng dó vê, nhung së giái phóng nó
sóm rôi nó lây dòng 2 vê,… Ðôi vói múc dô cô lâp doc ôn dinh hoãc doc lãp lai, bât cú
dòng nào lây vê së bi khóa, và khóa së không duoc giái phóng cho dên khi kêt thúc môt
giao tác (khi hoàn tât)

Nhp môn H qun tr c s d liu DB2

146

Hình 13.8 – So sánh các múc dô cô lâp
13.4.6 Ðåt múc cô lâp
Nhüng múc cô lâp có thê duoc chi rõ tai nhiêu múc :
• Phiên làm viêc trong úng dung
• Kêt nôi
• Câu lênh

Nhüng múc cô lâp bình thuòng duoc xác dinh tai phiên hoãc tai múc úng dung. Nêu
không chi rõ duoc múc cô lâp trong úng dung cúa các ban, nó mãc dinh tói con tró ôn
dinh. Chãng han, báng 13.1 cho thây nhüng múc cô lâp khá dï cho môt chuong trình
.NET hay JDBC và làm sao khi dãt nhüng thuôc tính này phái phù hop vói môt múc cô
lâp cúa DB2:













Múc cô lâp duoc phát biêu có thê dùng vói mênh dê WITH {múc cô lâp}. Chãng han
nhu:

SELECT … WITH {UR | CS | RS | RR}


Table 13.1 – Su so sánh cúa thuât ngü dåt múc cô lâp
Nhp môn H qun tr c s d liu DB2

147
Môt úng dung cân xác dinh “so bô” sô hàng trong môt báng. Hiêu suât rât là quan trong.
Con tró duoc yêu câu múc cô lâp ôn dinh vói ngoai lê cúa môt câu lênh SQL:

SELECT COUNT(*) FROM tab1 WITH UR

Vói SQL nhúng, các múc thiêt lâp duoc dãt tai thòi diêm dóng gói, còn vói SQL dông
các múc duoc dãt ó thòi gian chay.

Viêc chon sú dung múc cô lâp nào phu thuôc vào úng dung cúa các ban. Nêu úng dung
cúa các ban không yêu câu có nhüng giá tri nhu ó ví du, chon cô lâp UR. Nêu úng dung
cúa các ban yêu câu diêu khiên rât chãt trên dü liêu làm viêc vói nó, chon cô lâp RR.
13.5 Khóa leo thang
Môi khóa do DB2 tao ra së sú dung luong bô nhó nào dó. Khi bô tôi uu cho rãng nó tôt
hon là dê môt khóa trên toàn bô báng, thay vì khóa nhiêu hàng, su leo thang khóa xuât
hiên.

Hình 13.9 minh hoa cho diêu này:




















Hình 13.9 – Khóa leo thang

Có hai tham sô câu hình co só dü liêu chính liên quan dên khóa leo thang:

• LOCKIST - Sô luong cúa bô nhó (trong trang 4k) du trü dê quán lý nhüng khóa
cho moi úng dung duoc nôi. Su mãc dinh là nãm muoi lân trang 4K (200K) trên
Windows.
• MAXLOCKS - Phân trãm cuc dai cúa toàn bô danh sách khóa cho môt úng
dung. Mãc dinh là 22%.

Bói vây, nêu nhüng giá tri ngâm dinh duoc sú dung, khóa leo thang xuât hiên khi
môt úng dung don yêu câu hon 44K trong tông bô nhó khóa (200K * 22% = 44K).
Nêu su leo thang khóa xuât hiên thuòng xuyên vói su thiêt lâp này, tãng giá tri cúa
LOCKIST và MAXLOCKS. Khóa leo thang không tôt cho hiêu nãng nhung lai giám
su xung dôt. Têp nhât ký triêu chúng cúa DB2 có thê duoc dùng dê xác dinh liêu có
Nhp môn H qun tr c s d liu DB2

148
phái su leo thang khóa dang xuât hiên. (db2diag.log, thuòng têp này nãm trong thu
muc: C:\Program Files\IBM\SQLLIB\DB2)
13.6 Kiêm soát khóa
Ban có thê theo dõi nhüng su sú dung khóa bãng ánh chup nhanh khóa úng dung DB2.
Ðê bât nhüng ánh chup nhanh cho khóa, ta dùng lênh:

UPDATE MONITOR SWICTHES USING LOCK ON

Sau khi duoc cho phép, thông tin theo dõi së duoc tâp hop. Ðê thu duoc môt báo cáo
cúa khóa vào môt thòi gian nhât dinh, dùng lênh sau:

GET SNAPSHOT FOR LOCKS FOR APPLICATION AGENT ID <handle>

Hình 13.9: Ành chup nhanh kêt quá cúa môt ví du sú dung úng dung khóa


Figue 13.9 – Ành chup nhanh khóa cúa các úng dung
13.7 Chò khóa
Khi hai hoãc nhiêu các úng dung cân thuc hiên môt phép toán trên cùng môt dôi tuong,
môt trong sô dó có thê phái doi dê nhân duoc khóa. Theo mãc dinh môt úng dung së
Application Lock Snapshot

Snapshot timestamp = 11-
05-2002 00:09:08.672586

Application handle = 9
Application ID =
*LOCAL.DB2.00B9C5050843
Sequence number = 0001
Application name =
db2bp.exe
Authorization ID =
ADMINISTRATOR
Application status = UOW
Waiting
Status change time = Not
Collected
Application code page = 1252
Locks held = 4
Total wait time (ms) = 0

List Of Locks
Lock Name =
0x05000700048001000000000052
Lock Attributes = 0x00000000
Release Flags = 0x40000000
Lock Count = 255
Hold Count = 0
Lock Object Name = 98308
Object Type = Row
Tablespace Name = TEST4K
Table Schema = ADMINISTRATOR
Table Name = T2
Mode = X

Nhp môn H qun tr c s d liu DB2

149
doi vô han. Thòi gian chò doi môt úng dung cúa môt khóa duoc kiêm soát bói tham sô
câu hình co só dü liêu. Giá tri ngâm dinh cúa tham sô này là -1 (doi vô han).

Thanh ghi CURENT LOCK TIMEOUT cân duoc dùng dê dãt thòi gian chò khóa cho môt
kêt nôi dã cho. Theo mãc dinh, thanh ghi này duoc dãt giá tri cúa LOCKTIMEOUT. Sú
dung SET LOCK TIMEOUT dê thay dôi giá tri cúa nó. Môt khi giá tri cúa thanh ghi dã
duoc dãt cho môt kêt nôi, nó së tôn tai qua moi giao dich.
Ví du:

SET LOCK TIMEOUT=WAIT n
13.8 Vân dê khóa phu thuôc và phát hiên
Môt su bê tãc (deadlock) xuât hiên khi hai hoãc nhiêu các úng dung duoc nôi tói cùng
co só dü liêu. Su chò doi chua bao giò duoc giái quyêt bói vì môi úng dung dang giü
môt tài nguyên mà nó phuc vu cho nhüng nhu câu khác nhau. Trong thiêt kê úng dung,
nhüng su bê tãc luôn là môt vân dê chiêm nhiêu thòi gian.

Hình 13.10: Minh hoa môt tình huông bê tãc.














Hình 13.10 - Kich bán su bê tåc

Trong hình 13.10, nguòi A giü duoc bôt nho khô và giá sú së không cho phép nguòi
khác dùng cho dên khi ông ta có süa. Mãt khác, nguòi B giü duoc süa, và së không cho
phép nguòi khác cho dên khi ông ta có bôt nho khô. Bói vây, chúng ta có môt tình
huông bê tãc.

Ðê mô phóng môt tình huông bê tãc ó DB2, theo nhüng buóc sau dây:

1. Mó hai cúa sô soan tháo lênh cúa DB2 (chúng tôi së goi là "CLP1" và "CLP2"
tuong úng). Chúng dai diên cho hai úng dung khác nhau kêt nôi tói co só dü
liêu.

2. Tù CLP1 thuc hiên các lênh sau:

db2 connect to sample
db2 +c update employee set firstnme = ‘Mary’ where empno =
‘000050’

Ðâu tiên, chúng ta dang kêt nôi tói co só dü liêu có tên SAMPLE, và sau dó thuc
hiên môt lênh câp nhât hàng trên báng employee làm vói "empno= 50000". Lua

Nhp môn H qun tr c s d liu DB2

150
chon "+c " trong câu lênh chi ra rãng, chúng tôi không muôn cúa sô lênh cúa
DB2 tu dông cam kêt lênh này. Chúng tai dang cô ý làm diêu này sao cho chúng
ta giü duoc khóa.

3. Tù CLP2 thuc hiên nhüng lênh sau:

db2 connect to sample
db2 +c update employee set firstnme = ‘Tom’ where empno =
‘000030’

Ó cúa sô cúa CLP2, nó dai diên cho úng dung thú hai, chúng ta cüng nôi vào co
só dü liêu SAMPLE, nhung lai câp nhât môt hàng khác ó báng employee.

4. Lênh tù CLP1:

db2 +c select firstnme from employee where empno = ‘000030’

Sau khi nhân Enter thuc hiên câu lênh SELECT ó trên, câu lênh SELECT này có
vé së treo. Nó thât su là không phái là treo, mà là doi khóa cúa hàng này trá vê
do CLP2 dã giü trong buóc 3. Tai diêm này, nêu CLOCKTIMEOUT dã duoc dê
lai vói giá tri ngâm dinh cúa nó là -1, úng dung CLP1 doi mãi mãi.

5. Lênh tù CLP2:

db2 +c select firstnme from employee where empno = ‘000050’

Bãng viêc dánh lênh SELECT ó trên, bây giò chúng ta dang tao ra môt su bê
tãc. Phát biêu SELECT này cüng có vé treo, thuc ra nó dang doi khóa CLP1
dang giü trá vê.

Trong kich bán bê tãc trên, DB2 së kiêm tra tham sô câu hình co só dü liêu
DLCHKTIME. Tham sô này së dãt khoáng thòi gian kiêm tra cho nhüng su bê tãc.
Chãng han, giá tri cúa tham sô này duoc dãt tói 10 giây, DB2 së sú dung môt giái thuât
bên trong dê xác dinh giao dich nào cân phái quay lui (hôi xú), và môt giao dich nào së
duoc tiêp tuc.

Nêu ban dang gãp nhiêu tình huông bê tãc, ban cân phái tái kiêm tra nhüng giao dich
hiên hüu xem xem có thê tô chúc lai duoc không.
13.9 Truy câp dông thòi và thuc tiên khóa tôt nhât
Sau dây là môt sô meo nhó dê truy câp dông thòi và thuc tiên khóa tôt nhât:

1. Giü nhüng giao dich càng ngãn càng tôt. Ðiêu này có thê dat duoc bãng cách phát
hành thuòng xuyên nhüng lênh COMMIT (thâm chí cho nhüng giao dich chi doc)
khi úng dung cúa ban cho phép.
2. Chi ghi nhât ký thông tin giao dich khi có yêu câu.
3. Tây dü liêu dã sú dung nhanh chóng:

ALTER TABLE ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE

4. Thuc hiên nhüng thay dôi dü liêu theo lô/nhóm. Chãng han

DELETE FROM (
SELECT *FROM tedwas.t1 WHERE c1 = … FETCH FIRST s3000 ROWS
ONLY)
Nhp môn H qun tr c s d liu DB2

151

5. Sú dung nhüng dãc tính tuong tranh cúa nhüng công cu chuyên dôi dü liêu
trong DB2.
6. Ðãt tham sô ó múc LOCKTIMEOUT cho co só dü liêu (khoáng giüa 30-120
giây). Ban dùng nên cho giá tri ngâm dinh cúa nó là -1. Ban có thê cüng sú dung
khóa giói han thòi gian (timeout) trên trên tùng phiên làm viêc.
7. Không khôi phuc nhiêu dü liêu hon cân thiêt. Chãng han, sú dung mênh dê
FETCH FIRST n ROWS ONLY trong câu lênh SELECT.
Nhp môn H qun tr c s d liu DB2

152
PHÀN 3: HOC DB2 – PHÁT TRIEN ÚNG DUNG

Trong phân này, chúng ta së tháo luân vê các dôi tuong cúa co só dü liêu nãm ó tâng
duói cúa úng dung nhu thú tuc luu (stored procedure), hàm do nguòi dùng dinh nghïa
và bây su kiên (trigger). Rãng ban có thê hoc duoc cách lâp trình sú dung DB2 nhu môt
máy chú dü liêu bãng nhiêu ngôn ngü khác nhau bãng cách kháo sát các úng dung mâu
di kèm trong thu muc SQLLIB\samples khi chúng ta cài dãt máy chú DB2. Hình duói dây
là môt sô chuong trình mâu viêt bãng Java, sú dung DB2 trên nên Windows.


Môt sô chuong trình Java mâu di kèm DB2.
Nhp môn H qun tr c s d liu DB2

153
14
Chuong 14 – Các thú tuc SQL PL

Trong chuong này chúng ta së tháo luân vê “thú tuc luu” (stored procedure). Thú tuc luu
là môt dôi tuong úng dung co só dü liêu, có thê dóng gói các câu lênh SQL và các
nghiêp vu. Luu trü hop lí môt phân úng dung trong co só dü liêu cho phép cái tiên hiêu
suât thuc hiên nhu giám khá nãng ket duòng truyên mang. Hon nüa, các thú tuc cho
phép luu trü tâp trung tai môt noi nào dó dê các úng dung khác cüng có thê sú dung
duoc.

Thú tuc luu trong DB2 có thê viêt bãng SQL PL, C/C++, Java, Cobol, các ngôn ngü
duoc hô tro CLR (Common Language Runtime) và OLE. Trong chuong này, chúng ta
së tâp trung vào SQL PL vì tính phô biên và don gián cúa nó.

Hình 14.1 mô tá cách hoat dông cúa stored procedure.



Hình 14.1 - Giám ket duòng truyên mang bång thú tuc.

Ó góc trên bên trái cúa hình, ta thây môt vài câu lênh SQL duoc thuc thi lân luot hêt cái
này dên cái kia. Môi câu SQL duoc gúi tù máy khách dên máy chú, và máy chú trá kêt
quá vê lai máy khách. Nêu nhiêu câu SQL duoc thuc thi theo kiêu dó thì luong dü liêu
truyên trên mang së tãng lên. Tuy nhiên, ó góc duói phái, ta thây thú tuc luu “myproc”
duoc luu trên máy chú chúa nhüng câu SQL tuong tu trên; và sau dó tai máy khách
(bên phía trái), lênh CALL duoc dùng dê goi thuc hiên thú tuc. Cách thú hai goi thuc
Nhp môn H qun tr c s d liu DB2

154
hiên môt thú tuc hiêu quá hon vì chi có môt lênh goi duoc truyên trên mang và môt kêt
quá trá vê cho máy khách.

Thú tuc luu cüng rât hüu ích trong muc dích báo mât co só dü liêu vì nguòi sú dung së
duoc phân câp các quyên dê thuc thi hoãc chi duoc xem các thú tuc; diêu dó giúp cho
hê thông duoc che chãn và không cho nguòi dùng lây thông tin nêu ho không có quyên.
Khá nãng này là hoàn toàn khá thi vì nguòi dùng không dòi hói nhüng quyên tuòng
minh trên các báng hoãc khung nhìn (view) trong thú tuc mà ho thuc thi; ho chi cân
duoc câp dú quyên dê thuc hiên các thú tuc dó.
14.1 DB2 Developer Workbench
DB2 Developer Workbench (DWB) là công cu duoc xây dung trên nên táng Eclipse,
phuc vu cho viêc phát triên các thú tuc, hàm, truy vân XML, úng dung SQLJ,… DWB
dên nhu môt hình ánh riêng rë (nó không phái là môt phân trong gói cài dãt DB2) nhung
hoàn toàn miên phí. Có thê tái DWB vê tù trang “Download” trên dia chi
http://ibm.com/db2/express.

Hình 14.2 Giao diên cúa DWB.


Hình 14.2 – DB2 Developer Workbench
14.1.2 Tao môt thú tuc luu trong DWB
Ðê tao môt thú tuc bãng Java hay SQL PL, hãy làm theo các buóc sau. Luu ý rãng
không thê tao duoc các thú tuc duoc viêt bãng các ngôn ngü khác trong DWB.

Buóc 1: Tao môt du án DWB (project)
Tù menu, chon File -> New -> Project và chon Data Development Project. Xem hình
14.3 duói dây.

Nhp môn H qun tr c s d liu DB2

155

Hình 14.3 – Data development project

Tùng buóc làm theo huóng dân dê nhâp tên du án, chon co só dü liêu ban muôn sú
dung và xác dinh rõ thu muc JDK (cái nào mãc dinh thuòng là dúng).

Buóc 2: Tao môt thú tuc
Sau khi tao xong du án, phía bên phái cúa cúa sô (data perspective) së xuât hiên du án
mói vùa tao. Trong hình 14.4 ban së thây du án mói tao trong tình trang mó rông.

Nhp môn H qun tr c s d liu DB2

156

Hình 14.4 – Du án “myProject”

Hình 14.4 Cho thây các thu muc khác nhau trong du án cúa ban. Khi muôn tao môt thú
tuc, ban nhân chuôt phái vào thu muc thú tuc và chon New -> Stored Procedure. Hoàn
thành các thông tin duoc yêu câu trong tùng buóc tao mói môt thú tuc nhu: thú tuc dó
kêt hop vói du án nào, tên và ngôn ngü dê viêt thú tuc (luu ý rãng chi có SQL PL và
Java duoc hô tro trong DWB) và các câu lênh SQL dùng trong thú tuc. Mãc dinh, DWB
së cung câp cho ban câu lênh SQL mâu ví du. Tói dây ban có thê nhân Finish và thú tuc
së duoc tao ra và trong dó có sú dung doan mã mâu và các câu lênh SQL trong ví du
duoc cung câp ó trên. Xem hình 14.5

Nhp môn H qun tr c s d liu DB2

157

Hình 14.5 – Môt thú tuc mâu

Trong hình 14.5, doan mã mâu cho thú tuc “PROCEDURE1” duoc phát sinh. Ban có thê
thay thê doan mã dó bãng doan mã riêng cúa ban. Ðê don gián chúng ta së dùng các
doan mã mâu trên dê tiêp tuc kháo sát quyên sách này.

Buóc 3: Biên dich môt thú tuc
Khi môt thú tuc dã duoc tao, ban biên dich và triên khai bãng cách nhâp phái vào nó
trong khung bên trái và chon Deploy. Hình 14.6 minh hoa cho buóc này.

Nhp môn H qun tr c s d liu DB2

158

Hình 14.6 – Biên dich môt thú tuc

Buóc 4: Thuc thi môt thú tuc
Khi môt thú tuc dã duoc biên dich, ban có thê thuc thi nó bãng cách nhâp phái chuôt
vào nó và chon Run. Kêt quá së xuât hiên trong khung “Result” ó góc duói phái

Ðê thuc thi môt thú tuc bãng dòng lênh, ban có thê sú dung câu lênh CALL
<procedure name>
14.2 Môt sô khái niêm vê thú tuc SQL PL:
Nhüng thú tuc luu vói ngôn ngü thú tuc rât dê tao và hoc. Trong DB2 thú tuc có hiêu
suât tôt nhât. Thú tuc luu SQL PL (hay nói tãt là “Thú tuc SQL”) là tiêu diêm cúa chuong
này.
14.2.1 Câu trúc cúa thú tuc
Cú pháp cúa thú tuc

CREATE PROCEDURE proc_name [({tham sô tùy chon})]
[thuôc tính tùy chon cua thu tuc] <câu lênh>

Trong dó <câu lênh> là môt câu lênh hoãc môt tâp các câu lênh duoc nhóm bói câu
trúc BEGIN [ATOMIC]……………[END]
14.2.2 Nhüng thuôc tính tùy chon cúa thú tuc
Sau dây là 1 vài thuôc tính tùy chon cúa thú tuc:

• LANGUAGE SQL
Thuôc tính này chi ra ngôn ngü mà thú tuc së sú dung. LANGUAGE SQL là giá
tri mãc dinh. Vói nhüng ngôn ngü khác nhu JAVA hay C thì ta sú dung tuong
úng thuôc tính LANGUAGE JAVA hay LANGUAGE C
Nhp môn H qun tr c s d liu DB2

159

• RESULT SETS <n>
Thuôc tính này cân thiêt nêu thú tuc cúa ban së trá vê tâp hop kêt quá n

• SPECIFIC my_unique_name
Ðây là tên duy nhât duoc gán cho thú tuc. Môt thú tuc có thê duoc nap dè, nghïa
là, nhiêu thú tuc luu trü có thê có cùng môt tên, nhung vói sô luong tham sô
khác nhau. Bãng cách sú dung tù khóa SPECIFIC ban có thê gãn môt tên duy
nhât vói nhüng thú tuc này, và diêu này tao ra su dê dàng cho viêc quán lí các
thú tuc luu trü. Ví du, dê xóa môt thú tuc sú dung tù khóa SPECIFIC ban có thê
dung câu lênh: DROP SPECIFIC PROCEDURE. Nêu tù khóa SPECIFIC không
duoc sú dung thì vói câu lênh xóa thú tuc luu trü nhu trên, dê DB2 biêt duoc thú
tuc nào cân duoc xóa (vì có rât nhiêu thú tuc có tên giông nhau duoc ghi dè) thì
ban phái chi ra danh sách tham sô di kèm cúa thú tuc dó.
14.2.3 Các loai tham sô
Có 3 loai tham sô trong thú tuc luu trü SQL PL:

• IN - Tham sô vào
• OUT - Tham sô ra
• INOUT - Tham sô vùa vào và ra

Ví du:

CREATE PROCEDURE proc(IN p1 INT, OUT p2 INT, INOUT p3 INT)

Khi goi thú tuc, tât cá các tham sô cân phái duoc dua vào trong câu lênh CALL. Ví du,
dê goi thú tuc trên ban phái goi nhu sau:

CALL proc (10, ?, 4)

Dâu hói (?) duoc dùng cho các tham sô trá vê cúa câu lênh CALL.

Ðây là môt ví du khác cúa thú tuc luu mà ban có thê thú:

CREATE PROCEDURE P2 ( IN v_p1 INT,
INOUT v_p2 INT,
OUT v_p3 INT)
LANGUAGE SQL
SPECIFIC myP2
BEGIN
-- my second SQL procedure
SET v_p2 = v_p2 + v_p1;
SET v_p3 = v_p1;
END

Ðê goi thú tuc này tù dòng lênh, ta dùng câu lênh:

CALL P2 (3,4,?)
14.2.4 Chú thích trong thú tuc SQL PL
Có hai cách dê chú thích trong thú tuc SQL PL:

• Sú dung 2 dâu gach ngang (--), ví du:
-- Ðây là 1 chú thích theo kiêu SQL

Nhp môn H qun tr c s d liu DB2

160
• Sú dung dinh dang nhu ngôn ngü lâp trình C, ví du:
/* Ðây là 1 chú thích dang C */
14.2.5 Câu lênh ghép
Môt câu lênh ghép trong thú tuc là môt câu lênh trong dó chúa rât nhiêu lênh thú tuc và
các câu lênh SQL duoc bao bói tù khóa BEGIN và END. Khi tù khóa ATOMIC duoc sú
dung theo sau tù khóa BEGIN, câu lênh ghép duoc xem nhu là môt don vi, nghïa là, tât
cá các chi thi hay câu lênh trong câu lênh ghép phái hoàn thành dê câu lênh ghép duoc
hoàn thành. Nêu có môt câu lênh thât bai, tât cá së duoc trá vê trang thái ban dâu (roll
back). Hình 14.7 cho ta 1 minh hoa vê câu lênh ghép.



Hình 14.7 – Câu lênh ghép
14.2.6 Khai báo biên
Ðê khai báo biên, sú dung câu lênh DECLARE nhu sau:

DECLARE var_name <data type> [DEFAULT value];

Ðây là môt vài ví du:

DECLARE temp1 SMALLINT DEFAULT 0;
DECLARE temp2 INTEGER DEFAULT 10;
DECLARE temp3 DECIMAL(10,2) DEFAULT 100.10;
DECLARE temp4 REAL DEFAULT 10.1;
DECLARE temp5 DOUBLE DEFAULT 10000.1001;
DECLARE temp6 BIGINT DEFAULT 10000;
DECLARE temp7 CHAR(10) DEFAULT 'yes';
DECLARE temp8 VARCHAR(10) DEFAULT 'hello';
DECLARE temp9 DATE DEFAULT '1998-12-25';
DECLARE temp10 TIME DEFAULT '1:50 PM';
DECLARE temp11 TIMESTAMP DEFAULT '2001-01-05-12.00.00';
DECLARE temp12 CLOB(2G);
DECLARE temp13 BLOB(2G);
14.2.7 Câu lênh gán
Ðê gán môt giá tri cho môt biên, sú dung câu lênh SET. Ví du:

SET total = 100;

Nhp môn H qun tr c s d liu DB2

161
Câu lênh trên cüng tuong duong vói câu lênh:

VALUES(100) INTO total;

Ngoài ra, bât kì biên nào cüng có thê duoc gán vói giá tri NULL

SET total = NULL

Môt biêu thúc diêu kiên së duoc thiêt lâp nêu có nhiêu hon môt dòng thì chi lây dòng
dâu tiên trong báng

SET total = (select sum(c1) from T1);
SET first_val = (select c1 from T1 fetch first 1 row only)

Ban cüng có thê gán biên vói các thuôc tính ngoài cúa co só dü liêu

SET sch = CURRENT_SCHEMA;
14.3 Các con tró (cursor)
Môt con tró là môt tâp hop chúa kêt quá cúa câu lênh SELECT. Cú pháp dê khai báo,
mó, chuyên giá tri (fetch) và dóng con tró nhu sau:

DECLARE <tên con tro> CURSOR [WITH RETURN <dích tra vê>]
<câu lênh SELECT>;
OPEN <tên con tro>;
FETCH < tên con tro > INTO <các biên>;
CLOSE < tên con tro>;

Khi môt con tró duoc khai báo, mênh dê WITH RETURN có thê duoc sú dung vói
nhüng giá tri sau:

• CLIENT: Kêt quá së duoc trá vê cho úng dung máy khách
• CALLER: Kêt quá së duoc trá vê cho máy khách hoãc thú tuc luu dã goi nó.

Ðây là môt ví du cúa thú tuc sú dung con tró:

CREATE PROCEDURE set()
DYNAMIC RESULT SETS 1
LANGUAGE SQL
BEGIN
DECLARE cur CURSOR WITH RETURN TO CLIENT
FOR SELECT name, dept, job
FROM staff
WHERE salary > 20000;
OPEN cur;
END
14.4 Ðiêu khiên luông
Nhu trong rât nhiêu ngôn ngü khác, SQL PL có rât nhiêu câu lênh có thê duoc dùng dê
diêu khiên luông thuc hiên múc logic. Duói dây là môt vài câu lênh duoc hô tro:

CASE (chon ra môt nhánh thuc thi (tìm kiêm don gián))
IF
FOR (thuc thi môi dòng trong báng)
Nhp môn H qun tr c s d liu DB2

162
WHILE
ITERATE (buôc phái thuc hiên vòng lãp tiêp theo. Tuong tu vói câu lênh CONTINUE
trong C)
LEAVE (ròi khói môt khôi hay vòng lãp)
LOOP (lãp vô han dinh)
REPEAT
GOTO
RETURN
CALL (goi thú tuc)
14.5 Goi thú tuc
Nhüng doan mã sau dây së chi ra cách goi môt thú tuc bãng các ngôn ngü lâp trình
khác nhau.

Goi thú tuc tù úng dung CLI/ODBC

SQLCHAR *stmt = (SQLCHAR *)
“CALL MEDIAN_RESULT _SET( ? )” ;
SQLDOUBLE sal = 20000.0; /*Chi ra parameter marker trong stmt */
SQLINTEGER salind = 0; /*Chi dinh giá tri (variable) cho sal */

sqlrc = SQLPrepare(hstmt, stmt, SQL_NTS);
sqlrc = SQLBindParameter(hstmt, 1, SQL_PARAM_OUTPUT,
SQL_C_DOUBLE, SQL_DOUBLE, 0, 0, &sal, 0, &salind);
SQLExecute(hstmt);
if (salind == SQL_NULL_DATA)
printf(“Median Salary = NULL\n”);
else
printf(“Median Salary = %.2f\n\n”, sal);
/* Lây tâp kêt qua dâu tiên */
sqlrc = StmtResultPrint(hstmt);
if (sqlrc == SQL_SUCCESS) {
/* Có 1 kêt qua khác */
sqlrc = SQLMoreResult(hstmt);
}

Xem chi tiêt ó têp ví du cúa DB2: sqllib/samples/sqlproc/rsultset.c

Goi thú tuc tù úng dung VB.NET
Try
‘ Tao môt DB2 Command dê chay thu tuc
Dim procName As String = “TRUNC_DEMO”
Dim cmd As DB2Command = conn.CreateCommand()
Dim parm As DB2Parameter

cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = procName

‘ Ðang ký các tham sô dâu ra cho DB2Command
parm = cmd.Parameters.Add(“v_lastname”, DB2Type.VarChar)
parm.Direction = ParameterDirection.Output
parm = cmd.Parameter.Add(“v_msg”, DB2Type.VarChar)
parm.Direction = ParameterDirection.Output

‘ Goi lai thu tuc
Nhp môn H qun tr c s d liu DB2

163
Dim reader As DB2DataReader = cmd.ExecuteReader

Catch myException As DB2Exception
DB2ExceptionHandler(myException)
Catch
UnhandledExceptionHandler()
End Try

Goi thú tuc tù úng dung Java
try
{
// Kêt nôi CSDL mâu
String url = “jdbc:db2:sample”;
con = DriverManager.getConnection(url);
CallableStatement cs = con.prepareCall(“CALL
trunc_demo(?, ?)”);

// Ðang ký tham sô dâu ra
callStmt.registerOutParameter(1, Types.VARCHAR);
callStmt.registerOutParameter(2, Types.VARCHAR);

cs.execute();
con.close();
}
catch (Exception e)
{
/* xu lý ngoai lê o dây */
}
14.6 Lôi và xú lý diêu kiên
Trong DB2, các tù khóa SQLCODE và SQLSTATE duoc dùng dê xác dinh su thành
công hay thât bai trong viêc thuc thi môt câu lênh SQL. Nhüng tù khóa này cân duoc
khai báo tuòng minh trong phân ngoài cùng cúa thú tuc nhu sau:

DECLARE SQLSTATE CHAR[5];
DECLARE SQLCODE INT;

DB2 së thiêt lâp giá tri môt cách tu dông cho nhüng tù khóa trên sau môi thao tác trên
SQL (SQL operation). Ðôi vói SQLCODE, giá tri duoc thiêt lâp nhu sau:

• = 0, thành công
• > 0, thành công nhung có cánh báo
• < 0, không thành công
• = 100, không tìm thây dü liêu (ví du nhu: câu lênh FETCH không trá vê dü liêu)

Ðôi vói SQLSTATE, các giá tri cúa nó nhu sau:
• Thành công: SQLSTATE ‘00000’
• Không thây: SQLSTATE ‘02000’
• Cánh báo: SQLSTATE ‘01XXXX’
• Truòng hop dãc biêt: các giá tri khác

SQLCODE là môt dãc tá cho co só dü liêu, chi tiêt hon cá SQLSTATE. SQLSTATE là
tiêu chuân trong các hê quán tri cho co só dü liêu nhung tông quát hon. Nhiêu
Nhp môn H qun tr c s d liu DB2

164
SQLCODE có thê trùng vói SQLSTATE. SQLCODE và SQLSTATE së duoc nói rõ hon
ó Phu luc A, Xú lý su cô.

Môt diêu kiên có thê duoc tao ra bãng bât kì câu lênh SQL nào và së trùng vói môt
SQLSTATE. Ví du, môt diêu kiên cu thê nhu SQLSTATE ‘01004’ duoc tao ra khi có môt
giá tri duoc làm tròn sô trong quá trình thi hành câu lênh SQL. Thay vì dùng SQLSTATE
‘01004’ dê kiêm tra diêu kiên này, môt tên goi có thê duoc gán. Trong ví du cu thê này,
tên “trunc” có thê duoc gán cho diêu kiên SQLSTATE ‘01004’ nhu sau.

DECLARE trunc CONDITION FOR SQLSTATE ‘01004’

Các diêu kiên khác dã duoc dinh nghïa truóc:

• SQLWARNING
• SQLEXCEPTION
• NOT FOUND

Xú lý diêu kiên
Ðê xú lý môt diêu kiên, ban có thê tao ra môt trình xú lý diêu kiên, và phái chi rõ các yêu
tô sau:

• Ðiêu kiên mà nó phái xú lý
• Noi phuc hôi lai quá trình thuc thi (dua vào kiêu cúa trình xú lý: CONTINUE,
EXIT or UNDO)
• Hành dông duoc thi hành dê xú lý diêu kiên. Nhüng hành dông này có thê là
bât cú câu lênh nào, bao gôm cá các câu trúc diêu khiên.

Nêu môt diêu kiên SQLEXCEPTION duoc tao ra, và không có trình xú lý nào, thú tuc së
kêt thúc và trá vê cho máy khách môt thông báo lôi.

Các loai trình xú lý
Có 3 loai trình xú lý:

CONTINUE – Xú lý này dùng dê chi ra rãng, sau khi ngoai lê xáy ra, và trình xú lý dã xú
lý diêu kiên, dòng xú lý së TIÉP TUC di dên câu lênh tiêp theo sau câu lênh vùa duoc
tao ra.

EXIT – xú lý này dùng dê chi ra rãng, sau khi ngoai lê xáy ra, và trình xú lý dã xú lý diêu
kiên, dòng xú lý së di dên cuôi thú tuc.

UNDO – xú lý này duoc dùng dê chi ra rãng, sau khi ngoai lê xáy ra, và trình xú lý dã xú
lý diêu kiên, dòng xú lý së di dên cuôi thú tuc, và së không làm gì ai hoãc khôi phuc bât
kì câu lênh nào dã duoc thuc thi (roll back).

Hình 14.8 minh hoa su khác nhau giüa các trình xú lý diêu kiên và hành vi cúa nó

Nhp môn H qun tr c s d liu DB2

165

Hình 14.8 – Kiêu cúa các trình xú lý diêu kiên
14.7 SQL dông
Trong SQL dông, trái nguoc vói SQL tïnh, toàn bô câu lênh SQL không duoc nhân biêt
trong thòi gian chay. Ví du nêu col1 và tabname là các biên trong câu lênh này, chúng
ta së thuc hiên vói SQL dông nhu sau:

‘SELECT ‘ || col1 || ‘FROM ‘ || tabname;

SQL dông cüng duoc dê nghi dùng cho DDL dê tránh các vân dê phu thuôc và sai sót
khi dóng gói. Nó cüng duoc yêu câu khi thuc hiên dê quy.

SQL dông có thê duoc thuc thi theo hai cách:

• Dùng lênh EXECUTE IMMEDIATE – dây là ý tuóng cho viêc thuc thi thú tuc
SQL don.
• Dùng lênh PREPARE song song vói lênh EXECUTE – ý tuóng này duoc dùng
dê thuc thi da thú tuc SQL.

Ðoan mã sau dua ra môt ví du vê SQL dông sú dung cá hai cách trên. Ví du này giá sú
rãng có môt báng T2 dã duoc tao nhu sau:

CREATE TABLE T2 (c1 INT, c2 INT)

CREATE PROCEDURE dyn1 (IN value1 INT, INT value2 INT)
SPECIFIC dyn1
BEGIN
DECLARE stmt varchar(255);
DECLARE st STATEMENT;

SET stmt = ‘INSERT INTO T2 VALUE (?, ?)’;

PREPARE st FROM stmt;

EXECUTE st USING value1, value1;
EXECUTE st USING value2, value2;

SET stmt = INSERT INTO T2 VALUES (9, 9)’;
EXECUTE IMMEDIATE stmt;
END


Nhp môn H qun tr c s d liu DB2

166
15
Chuong 15 – Hàm nôi tuyên, hàm nguòi dùng dinh
nghïa, các hàm xú ký các su kiên bây (Inline SQL PL,
UDF, Triggers)
Trong chuong này, chúng ta së xem xét vê các hàm nôi tuyên SQL các dôi tuong khác
cúa CSDL nhu hàm do nguòi dùng dinh nghïa (UDF) và các bây su kiên.
15.1 Hàm nôi tuyên SQL
Trong chuong 14, chúng ta dã tháo luân vê viêc tao các thú tuc luu sú dung ngôn ngü
SQL PL. Ngôn ngü SQL PL này cüng có thê duoc sú dung nôi tuyên, nghïa là có có thê
dúng môt mình, không nãm trong môt thú tuc nào cá. Các lênh SQL PL duoc sú dung
trong các UDF và hàm bây su kiên cüng là nôi tuyên vì các mã lênh dã duoc thêm vào
mã lênh cúa các UDF và hàm bây su kiên, bán thân nó dã là các SQL dông. SQL PL nôi
tuyên chi hô tro môt tâp con trong toàn bô các lênh SQL PL, sau dây là các tù khóa cúa
SQL PL nôi tuyên:

DECLARE <variable>
SET
CASE
FOR
GET DIAGNOSTICS
GOTO
IF
RETURN
SIGNAL
WHILE
ITERATE
LEAVE

Ðây là nhüng tù khóa không nãm trong SQL PL nôi tuyên:

ALLOCATE CURSOR
ASSOCIATE LOCATORS
DECLARE <cursor>
DECLARE ...HANDLER
PREPARE
EXECUTE
EXECUTE IMMEDIATE
LOOP
REPEAT
RESIGNAL
CALL
COMMIT/ROLLBACK

Nhp môn H qun tr c s d liu DB2

167
Duói dây là ví du cúa SQL dông sú dung SQL PL nôi tuyên. Nêu các ban muôn thú nó,
bán các thê lây nó làm môt phân cúa cúa têp kich bán, và ban phái chãc chãn là dã tap
duoc các báng nhu sau:

CREATE TABLE T1 (c1 INT)
CREATE TABLE T3 (c1 INT)

BEGIN ATOMIC
DECLARE cnt INT DEFAULT 0;
DECLARE sumevens INT DEFAULT 0;
DECLARE err_msg VARCHAR(1000) DEFAULT '';
WHILE (cnt < 100) DO
IF mod(cnt,2) = 0 THEN
SET sumevens = sumevens + cnt;
END IF;
SET cnt=cnt+1;
END WHILE;
INSERT INTO T3 values (sumevens);
SET cnt = (SELECT 0 FROM SYSIBM.SYSDUMMY1);
FOR cur1 AS SELECT * FROM T1 DO
IF cur1.c1 > 100 THEN
SET cnt = cnt + 1;
END IF;
END FOR;

SET err_msg = 'Rows with values > 100 is:' ||
char(cnt);
SIGNAL SQLSTATE '80000' SET MESSAGE_TEXT = err_msg;
END!

Nêu ban luu doan chuong trình nôi tuyên trên vào têp kich bán tên là “myScript.txt” thì
ban có thê thuc hiên nó bãng lênh sau;

db2 -td! –vf myScript.txt
15.2 Bây su kiên (Triggers)
Bây su kiên là các dôi tuong co só dü liêu kêt hop vói môt báng duoc dinh nghïa bói
các thao tác duoc thuc hiên khi có môt trong các thao tác INSERT, UPDATE, hoãc
DELETE duoc thuc hiên trên báng dó. Chúng duoc thi hành môt cách tu dông. Các
thao tác là nguyên nhân dê các bây này duoc thuc thi, goi là triggering.
15.2.1 Các loai bây su kiên
Có 3 loai bây dó là: bây truóc (before), bây sau (after) và bây thay thê (instead of)

Bây truóc
Các bây truóc duoc kích hoat truóc khi môt dòng duoc thêm, súa hay xóa di. Các thao
tác duoc thuc hiên bói bây này thì không thê kích hoat duoc các bây khác (vì thê các
thao tác INSERT, UPDATE và DELETE không duoc phép có trong bây).

Môt ví du don gián vê bây truóc duoc chi ra trên hinh 15.1







Nhp môn H qun tr c s d liu DB2

168


















Hình 15.1 – Ví du vê bây truóc

Trong hình 15.1, bây “defalt_class_end” së bây truóc lênh khi INSERT SQL duoc thuc
hiên trong báng cl_sched. Báng này là môt phân cúa co só dü liêu SAMPLE, ban có thê
tao và thú kiêm tra bây này khi kêt nôi vói co só dü liêu này. Biên “n” trong dinh nghïa
cúa bây së dai diên cho giá tri mói cúa lênh INSERT, giá tri së chèn vào. Bây này së
kiêm tra su hop lê cúa các giá tri chèn vào. Nêu côt “ending” không có giá tri gì khi chèn,
thì bây này së dám báo chãc chãn là có giá tri cúa côt “starting” công 1 duoc chèn vào.

Các lênh sau giúp ta kiêm tra bây này

C:\Program Files\IBM\SQLLIB\BIN>db2 insert into cl_sched
(class_code, day, starting) values ('abc',1,current time)
DB20000I The SQL command completed successfully.

C:\Program Files\IBM\SQLLIB\BIN>db2 select * from cl_sched

CLASS_CODE DAY STARTING ENDING
---------- ------ -------- --------
042:BF 4 12:10:00 14:00:00
553:MJA 1 10:30:00 11:00:00
543:CWM 3 09:10:00 10:30:00
778:RES 2 12:10:00 14:00:00
044:HD 3 17:12:30 18:00:00
abc 1 11:06:53 12:06:53

6 record(s) selected.

Thú tuc bây “validate_sched” duói dây cho phép mó rông hàm bây “default_class_end”
dã mô tá truóc dây. Xin nhãc lai rãng, ban có thê tao ra nó và kiêm tra nó dua vào co só
dü liêu SAMPLE.

CREATE TRIGGER validate_sched
NO CASCADE BEFORE INSERT ON cl_sched
REFERENCING NEW AS n
FOR EACH ROW
MODE DB2SQL
BEGIN ATOMIC
-- supply default value for ending time if null
Nhp môn H qun tr c s d liu DB2

169
IF (n.ending IS NULL) THEN
SET n.ending = n.starting + 1 HOUR;
END IF;

-- ensure that class does not end beyond 9pm
IF (n.ending > '21:00') THEN
SIGNAL SQLSTATE '80000'
SET MESSAGE_TEXT='class ending time is beyond 9pm';
ELSEIF (n.DAY=1 or n.DAY=7) THEN
SIGNAL SQLSTATE '80001'
SET MESSAGE_TEXT='class cannot be scheduled on a
weekend';
END IF;
END

Bây sau
Bây sau duoc kích hoat sau khi các SQL triggering thuc hiên thành công. Các thao tác
trong bây này có thê kích hoat các bây khác (su nôi tâng duoc cho phép dên 16 múc).
Bây sau hô tro các thao tác INSERT, UPDATE và DELETE. Duói dây là ví du cúa môt
bây sau

CREATE TRIGGER audit_emp_sal
AFTER UPDATE OF salary ON employee
REFERENCING OLD AS o NEW AS n
FOR EACH ROW
MODE DB2SQL
INSERT INTO audit VALUES (
CURRENT TIMESTAMP, ' Employee ' || o.empno || ' sal-
ary changed from ' || CHAR(o.salary) || ' to ' ||
CHAR(n.salary) || ' by ' || USER)

Trong ví du này thì thú tuc bây audit_emp_sal duoc sú dung dê thuc hiên viêc kiêm
tra trên côt salary cúa báng employee. Khi môt ai dó tao su thay dôi trong côt này thì
doan mã này së thuc hiên viêc ghi thông tin vê viêc thay dôi liên quan dên báng Salary
vào trong bàng khácgoi là audit. Tai dòng “OLD as o NEW as n ” chi ra tiên tô “o” này
së duoc dùng dê dai diên giá tri cü hoãc giá trì tôn tai trong báng, và tiên tô “n” së duoc
sú dung dê dai diên giá tri mói sau dó tù câu lênh UPDATE. Nhu vây, “o.salary” miêu tá
giá tri cü hoãc giá tri tôn tai trong báng Salary còn “n.salary” miêu tá giá tri duoc câp
nhât mói vào côt dü liêu Salary.

Bây su kiên thay thê
Bây thay thê duoc dinh nghïa trên các khung nhìn (view). Ðinh nghïa môt cách logic bây
này së thuc hiên viêc câp nhât cho các lênh SQL triggering. Ví du nhu, nêu ban thuc
hiên môt thao tác câp nhât trên môt khung nhìn, bây thay thê së duoc thuc thi dê thuc
hiên viêc câp nhât các báng gôc mà các khung nhìn này thê hiên.

Các thú tuc bây không duoc tao tù DB2 Developer Workbench. Chúng có thê duoc tao
tù trung tâm diêu khiên hoãc tù các công cu dòng lênh khác (Command Window,
Command Line Processor, hoãc Command Editor)

Nhp môn H qun tr c s d liu DB2

170
Bài tâp nhanh #10 - Khói tao môt bây bång Trung tâm diêu khiên.

Muc tiêu

Bây là môt dôi tuong co só dü liêu duoc sú dung dê hoàn thành công viêc kinh doanh
môt cách chãt chë khi xáy ra thay dôi dü liêu trên báng (chèn, súa, xóa). Trong bài tâp
nhanh này, ban së tao môt bây bãng viêc sú dung Trung tâm diêu khiên. Cái bây này së
luu nhât ký bán hàng trong báng SALES (bán hàng) cho muc dích kiêm tra sô sách. Ban
së ghi vào nhât ký bán hàng mã cúa nguòi bán hàng (user ID) cùng vói thòi diêm bán.

Thú tuc:

1. Mó Trung tâm diêu khiên.
2. Vói bài tâp nhanh này, ban së cân khói tao môt báng phu duoc sú dung dê
ghi nhât ký bán hàng. Khói tao môt báng theo các thuôc tính sau:

Tên báng: saleslog (nhât ký bán hàng)

Côt dâu tiên:
Tên: userid (mã )
Kiêu dü liêu: VARCHAR(128)
Các thuôc tính khác: NOT NULL

Côt thú hai:
Tên: daytime (thòi diêm)
Kiêu dü liêu: TIMESTAMP
Các thuôc tính khác: NOT NULL

Goi ý: Khói tao báng này sú dung CREATE TABLE có trong cúa sô nhâp
lênh, hoãc sú dung Create table wizard tù Trung tâm diêu khiên.
3. Tù Trung tâm diêu khiên, mó rông tài liêu có só dü liêu EXPRESS. Nhâp
chuôt phái trong thu muc Trigger, và chon muc “Create”. Cúa sô dôi thoai
khói tao bây mó ra.
4. Ðiên dây dú theo thông tin trong cúa sô dôi thoai:

So dô bây (Trigger schema): User ID (mã) cúa nguòi bán dã duoc nhâp vào
(nên duoc cài dãt mãc dinh)

Tên bây (Trigger name): audit_sales (Kiêm tra bán hàng)

Báng hay so dô hiên thi: User ID (mã) cúa nguòi bán dã duoc nhâp vào (nên
duoc cài dãt mãc dinh)

Báng hay tên hiên thi (Table or view name): SALES (bán hàng)

Thòi gian dê bây hoat dông (Time to trigger action): After (sau)

Khi nào thì bây duoc thuc hiên (Operation that causes the trigger to be
executed): Update of columns (không liêt kê bât cú côt nào vì chúng ta muôn
bây thuc hiên khi bât cú côt nào trong sô các côt duoc câp nhât)

Chú thích (Comment): Logs all update actions on Sales table (Ghi nhât ký tât
cá các hoat dông câp nhât trong báng Sales)
Nhp môn H qun tr c s d liu DB2

171





5. Trong báng Triggerred action, chon STATEMENT trong muc tùy chon For
Each. Nhâp doan mã nguôn sau vào muc hành dông cúa bây:

WHEN (1=1)
BEGIN ATOMIC
INSERT INTO saleslog (userid, daytime) VALUES (CURRENT
USER, CURRENT TIMESTAMP);
END

(Ghi chú: doan bây së duoc thuc hiên môt lân sau khi bây duoc kích hoat và kêt thúc
hoàn toàn. Bây theo dòng nghïa là hoat dông cúa bây së thuc hiên môt khi SQL
triggering tác dông vào môt dòng.)


Nhp môn H qun tr c s d liu DB2

172


Kích chon nút OK dê khói tao bây.

6. Bây giò ban nên xem lai bây dã duoc khói tao trong tài liêu Triggers ó thu
muc Trung tâm diêu khiên.
7. Truy vân báng Saleslog dê dám báo chua có dü liêu trong báng này. Loai bó
nhüng hàng có dü liêu trong báng bãng lênh DELETE FROM saleslog.
8. Thú câp nhât môt bán ghi trong báng sales (Goi ý: sú dung Command Editor
hoãc SQL Assist Wizard).
9. Kiêm tra lai môt lân nüa nôi dung cúa báng saleslog. Xem có bao nhiêu hàng
trong dó.
15.3 Hàm nguòi dùng dinh nghïa (UDF)
Hàm nguòi dùng dinh nghïa là môt dôi tuong úng dung co só dü liêu, nó duoc sãp xêp
thành bô dü liêu nhâp và dü liêu xuât. Ví du: môt hàm có thê lây kích thuóc dü liêu vào
bãng inch, và trá lai kêt quá bãng centimetes.

DB2 hô tro tao nhüng hàm sú dung SQL PL, C/C++, Java, CLR (Common Language
Runtime), và OLE (Object Linking and Embedding). Trong cuôn sách này, chúng tôi nói
chú yêu vê hàm SQL PL bói tính don gián, phô biên và hiêu suât cúa chúng.

Có là 4 loai hàm: hàm vô huóng (Scalar Funcitons), hàm báng (Table Functions) , hàm
dòng (Row Functions), và hàm côt (Column Functions). Trong bài này chúng tôi chi tâp
trung vào hàm vô huóng và hàm báng.
15.3.1 Hàm vô huóng
Hàm vô huóng trá lai môt giá tri don. Nó không thê chúa các câu lênh SQL, các câu
lênh INSERT, UPDATE và DELETE së làm thay dôi trang thái cúa co só dü liêu thì
không duoc châp nhân. Môt vài hàm vô huóng duoc cài dãt sãn là SUM(), AVG(),
DIGITS(), COALESCE(), và SUBSTR().
Nhp môn H qun tr c s d liu DB2

173

DB2 cho phép ban tùy biên xây dung hàm nguòi dùng dinh nghïa, tù dó ban có thê
thuòng xuyên sú dung nó theo ý nghïa logic. Ví du, tính dên su chuyên dôi úng dung
cúa ban tù Oracle sang DB2. Trong úng dung này, ban goi hàm NVL() cúa Oracle ó
khãp noi. Hàm tuong duong cài dãt sãn trong DB2 duoc goi là COALESCE. Thay vì
ban phái dôi tên tât cá các hàm NVL trong úng dung thành COLALESCE, ban có thê tao
môt UDF trong DB2 goi nó là NVL, và nó së kích hoat hàm COLALESCE khi duoc goi;
ta së viêt hàm NLV nhu duói dây:

CREATE FUNCTION NVL (p_var1 VARCHAR(30) ,
p_var2 VARCHAR(30))
SPECIFIC nvlvarchar30
RETURNS VARCHAR(30)
RETURN COALESCE (p_var1 , p_var2)

Hàm COALESCE trong truòng hop này trá lai dôi sô dâu tiên là không rông (not NULL)

Duói dây là môt ví du khác cúa hàm vô huóng. Hàm duoc goi là “deptname”, và nó trá
lai mã sô cúa phòng/ban (department) cúa môt nhân viên dua trên các mã (ID) cúa ho:

CREATE FUNCTION deptname(p_empid VARCHAR(6))
RETURNS VARCHAR(30)
SPECIFIC deptname
BEGIN AUTOMIC
DECLARE v_department_name VARCHAR(30);
DECLARE v_err VARCHAR(70);
SET v_department_name =(
SELECT d.deptname FROM department d,employee e
WHERE e.workdept = d.deptno AND e.empno = p_empid);
SET v_err = ‘Error:employee’ || p_empid || ‘was not found’;
IF v_department_name IS NULL THEN
SIGNAL SQLSTATE ‘80000’ SET MESSAGE_TEXT = v_err;
END IF;
RETURN v_department_name;
END

Ðê kiêm tra lai hàm, thú lai trong Command Window hoãc Linux/UNIX vói lênh:

db2 “values (deptname(‘000300’))”

Goi hàm vô huóng
Hàm vô huóng cúa nguòi dùng có thê duoc goi trong câu lênh SQL, ó bât ky dâu giá tri
vô huóng duoc sú dung, hoãc trong mênh dê liên quan dên môt “Giá tri”. Ðây là hai ví
du biêu diên lòi goi hàm vô huóng COALESCE:

SELECT DEPTNAME, COALESCE(MGRNO,‘ABSENT’)FROM DEPARMENT
VALUES COALESCE(‘A’,‘B’)
15.3.2 Hàm báng
Hàm báng trá lai môt báng cúa các bán ghi. Ban có thê goi chúng trong mênh dê FROM
cúa môt truy vân. Hàm báng nguoc lai vói hàm vô huóng là có thê thay dôi trang thái co
só dü liêu, bói vây, các câu lênh INSERT, UPDATE và DELETE duoc châp nhân. Môt
vài hàm báng duoc cài dãt sãn là SNAPSHOT_DYN_SQL() và MQREADALL(). Hàm
báng cüng giông nhu khung nhìn (view), nhung ó dây nó cho phép các lênh làm thay dôi
Nhp môn H qun tr c s d liu DB2

174
dü liêu (chèn, súa, xóa) môt cách manh hon. Ðiên hình là chúng thuòng trá lai môt báng
hoãc giü lai môt bán ghi kiêm tra.

Duói dây là môt ví du cúa hàm báng dê liêt kê môt nóm nhân viên trong phòng:

CREATE FUNCTION getEnumEmployee(p_dept VARCHAR(3))
RETURNS TABLE
(empno CHAR(6),
lastname VARCHAR(15),
firstnme VARCHAR(12))
SPECIFIC getEnumEmployee
RETURN
SELECT e.empno, e.lastname, e.firstnme
FROM employee e
WHERE e.workdept = p_dept

Ðê kiêm tra hàm trên, thú lai vói câu lênh sau:

db2 “SELECT * FROM table(getEnumEmployee(‘D11’)) AS t”

Goi hàm báng
Môt hàm báng nguòi dùng dinh nghïa duoc goi trong mênh dê FROM cúa câu lênh
SQL. Hàm TABLE() cân sú dung và phâi có bí danh. Hình 15.2 minh hoa môt ví du cúa
cách goi hàm “getEnumEmployee” mà chúng tôi dã kiêm tra.



Hình 15.3 - Lòi goi môt hàm báng.

Nhp môn H qun tr c s d liu DB2

175
Bài tâp nhanh #11 - Khói tao UDF sú dung DB2 Developer Wordbench

Muc dích:

DB2 Developer Workbench (DWB) là môt công cu phát triên (IDE) dê viêt các thú tuc và
các hàm.Trong bài tâp nhanh này, các ban së phái tao môt hàm vô huóng do nguòi
dùng dinh nghïa trong DWB. Viêc này së dem lai cho ban nhiêu kinh nghiêm hon vói
DBW, tôt cho viêc trau dôi kiên thúc vói ngôn ngü SQL PL dê xây dung các hàm nguòi
dùng dinh nghïa.

Quy trình thuc hiên:

1. Mó DBW ( Goi ý: có sãn trong báng chon Start)
2. Tù cúa sô Data Project Explorer chon du án ban dã tao ó bài tâp nhanh truóc và
chon Open Project.
3. Kích chuôt phái vào thu muc User-Defined Functions. Chon muc New. Sau dó
chon muc SQL User-Defined Function. Ban có thê chon muc User-Defined
Function using Wizard nêu cân duoc huóng dân trong suôt quá trình sú dung.
4. Trình soan tháo mó vói hàm chính. Rôi súa dôi mã lênh nhu duói dây:

CREATE FUNCTION booktitle(p_bid INTEGER)
RETURNS VARCHAR(300)
-----------------------------------------------------------
SQL UDF (Scalar)
-----------------------------------------------------------
SPECIFIC booktitle
F1: BEGIN ATOMIC
DECLARE v_book_title VARCHAR(300);
DECLARE v_err VARCHAR(70);
SET v_book_title = (SELECT title FROM books WHERE
p_bid = book_id);
SET v_err = ‘Error: The book with ID ‘ || CHAR(p_bid) ||
‘was Not found.’;
IF v_book_title IS NULL THEN SIGNAL SQLSTATE ‘80000’
SET MESSAGE_TEXT = v_err;
END IF;
RETURN v_book_title;
END

5. Xây dung hàm bãng cách kích chuôt phái trên hàm và chon Deploy.
6. Cho chay hàm bãng cách kích chuôt vào nút Run trên thanh công cu.
7. Sau khi hàm châp nhân nhâp môt tham sô vào, môt cúa sô thông báo hiên ra yêu
câu ban diên giá tri cho tham sô.

Nhâp giá tri: 80002

Kêt quá là gì?

Thú lai vói giá tri: 1002

Ðiêu gì xáy ra lúc này? (goi ý: Nhìn vào doan Messages cúa Out-put view)
8. Ðóng DBW khi ban dã hoàn thành.


Nhp môn H qun tr c s d liu DB2

176
16
Chuong 16 – SQL/XML và XQuery

Trong chuong này chúng ta bàn vê pureXML, môt công nghê mói duoc cung câp trong
DB2 phiên bán 9 dê hô tro viêc luu trü thuân XML. Nhiêu ví du và khái niêm duoc bàn
luân trong chuong này duoc lây tù sách dó IBM: DB2 9: Tông quan và Bät dâu nhanh
vói pureXML (IBM Redbook: DB2 9: pureXML overview and fast start). Xem phân tài
nguyên dê biêt thêm thông tin. Hình 16.1 thê hiên phân kiên thúc trong búc tranh tông
quát cúa DB2 së duoc dê câp trong chuong này.


Hình 16.1 – Búc tranh tông quát DB2: các lênh DB2, SQL/XML và XQuery
16.1 Sú dung XML vói các co só dü liêu
Các tài liêu XML duoc luu duói dang tâp tin vãn bán, kho XML, hay co só dü liêu. Có
hai nguyên nhân chính là tai sao nhiêu công ty dê xuât luu trü XML bãng co só dü liêu:

Nhp môn H qun tr c s d liu DB2

177
• Quán lý luong lón hô so XML là môt vân dê vê co só dü liêu. XML là dü liêu
giông nhu các dü liêu khác, chi khác phân dinh dang. Nhüng nguyên nhân
tuong tu dê luu trü dü liêu quan hê trên co sõ dü liêu XML: các co só dü liêu
cung câp chúc nãng tìm kiêm và rút trích hiêu quá, hô tro tính bên vüng cúa dü
liêu môt cách tin cây, sao luu và phuc hôi, hô tro giao dich, tính hiêu quá và khá
nãng mó rông.

• Tính tích hop: bãng cách luu trü các tài liêu quan hê và XML cùng vói nhau, ban
có thê tích hop dü liêu XML mói cùng vói dü liêu quan hê dã có, và kêt hop SQL
vói XPath hay XQuery trong môt câu truy vân. Hon nüa, dü liêu quan hê có thê
duoc chuyên thành XML và nguoc lai. Thông qua viêc tích hop, các co só dü
liêu có thê hô tro các úng dung web (web applications), SOA (Service Oriented
Architecture) và các dich vu web (web services).
16.2 Co só dü liêu XML
Có hai loai co só dü liêu dê luu trü dü liêu, hô so XML:
Co só dü liêu hô tro XML
Co só dü liêu thuân XML
16.2.1 co só dü liêu hô tro XML
Môt co só dü liêu hô tro XML së sú dung mô hình quan hê là mô hình chính dê luu trü
dü liêu. Ðiêu này cân su ánh xa giüa mô hình dü liêu XML và mô hình dü liêu quan hê,
hoãc là luu trü dü liêu XML nhu là dôi tuong lón có thuôc tính. Trong khi xem xét viêc
này nhu là công nghê cü thì nhiêu nhà cung câp co só dü liêu vân sú dung cách nhu
trên. Hình 16.2 giái thích chi tiêt hon hai lua chon cho co só dü liêu hô tro XML.


Hình 16.2 – Hai lua chon dê luu trü dü liêu XML trong co só dü liêu hô tro XML

Bên trái hình 16.2 cho thây phuong thúc luu trü tài liêu XML trong co só dü liêu “CLOB
và Varchar”. Tài liêu XML dùng phuong thúc này duoc luu bãng cá ánh CLOB và côt
kiêu Varchar trong co só dü liêu. Phuong thúc này không linh hoat bói vì khó tìm duoc
các phân tú bên trong ánh. Hiêu nãng cúa nó cüng không cao vì các ánh XML thuòng
rât lón do dó tôn bô nhó. Nhiêu máy chú dü liêu, bao gôm máy chú DB2, không tái hình
ánh vào bô nhó, mà xú lý truc tiêp trên dïa. Sú dung hình ánh hiên nhiên së không dat
hiêu nãng tôt.
Nhp môn H qun tr c s d liu DB2

178

Lua chon còn lai cho co só dü liêu hô tro XML là phuong thúc phân rã, phuong thúc
này duoc minh hoa bên phái cúa hình 16.2. Toàn bô tài liêu XML dùng phuong thúc này
bi phân rã thành nhiêu phân (phân tú) rôi luu trong các báng. Sú dung phuong pháp
này mô hình phân câp cúa tài liêu XML bi chuyên thành mô hình quan hê. Phuong pháp
này cüng không linh hoat: môt thay dôi trong tài liêu XML không dê gì lan truyên dên các
báng tuong úng và có thê phái tao nhiêu báng khác khi cân thiêt. Phuong thúc này
cüng không hiêu quá: nêu ban cân lây lai tài liêu XML ban dâu, ban phái thuc hiên các
tác vu SQL vói chi phí cao, viêc này còn tôn chi phí khi sô luong báng duoc kêt nôi càng
nhiêu.
16.2.2 Co só dü liêu thuân XML
Co só dü liêu thuân XML sú dung mô hình phân câp cúa dü liêu XML dê luu trü và xú
lý XML bên trong. Ðinh dang luu trü thì giông nhu dinh dang xú lý: không có su ánh xa
dên mô hình quan hê, và không luu các tài liêu XML thành dang ánh. Khi sú dung các
câu lên XPath hay XQuery, môt co chê (engine) së xú lý các câu lênh dó chú không
chuyên sang SQL. Ðây là nguyên nhân tai sao goi các co só dü liêu này là co só dü
liêu thuân XML. Hiên tai, DB2 9 là máy chú thuong mai duy nhât cung câp tính nãng
này.
16.3 XML trong DB2
Hình 16.3 bên duói phác hoa cách thúc luu trü dü liêu quan hê và dü liêu phân câp
(các tài liêu XML) trong DB2 phiên bán 9. Trong hình, giá sú dinh nghïa báng dept nhu
sau :

CREATE TABLE dept (deptID char(8) ,…, deptdoc XML);


Hình 16.3 – XML trong DB2

Chú ý rãng khi dinh nghïa báng dept có sú dung kiêu dü liêu mói XML cho côt deptdoc.
Müi tên bên trái cúa hình trên cho thây côt deptID duoc luu trü bãng dinh dang quan
hê (dang báng), trong khi côt detdoc duoc luu bãng dinh dang phân câp dã duoc
phân rã. Hình 16.4 minh hoa bôn cách truy xuât dü liêu trong DB2 phiên bán 9:

Sú dung SQL truy xuât dü liêu quan hê.
Sú dung SQL vói XML mó rông dê truy xuât dü liêu XML
Sú dung XQuery dê truy xuât dü liêu XML
Sú dung XQuery dê truy xuât dü liêu quan hê
Nhp môn H qun tr c s d liu DB2

179

Hình 16.4 – Bôn cách truy xuât dü liêu trong DB2

Vì vây, trong khi môt nguòi sú dung SQL xem DB2 nhu là môt hê quán tri co só dü liêu
quan hê (RDBMS – Relational Database Management System) câp cao cüng có hô tro
XML, còn môt nguòi sú dung XML thì së xem DB2 nhu là kho trü XML câp cao có hô
tro SQL.

Chú ý rãng IBM dùng thuât ngü pureXML thay vì “native XML” dê mô tá công nghê này.
Trong khi các hãng khác vân dùng công nghê cü CLOB/Varchar hay phân rã dê luu trü
các tài liêu XML, ho goi nhüng công nghê cü dó là “native XML”. IBM quyêt dinh dùng
thuât ngü mói pureXML dê tránh su nhâm lân và dãt thuong hiêu tên này dê các hãng
khác vê co só dü liêu hay XML không sú dung trùng thuât ngü biêu thi cho các công
nghê khác. Chú ý, su hô tro pureXML chi duoc cung câp khi tao ra co só dü liêu
Unicode.
16.3.1 Uu diêm cúa công nghê pureXML trong DB2 9
Sú dung công nghê pureXML dem lai nhiêu uu diêm sau :

1. Ban có thê nâng cao khá nãng dùng dü liêu quan hê, bãng cách luu trü các tài
liêu XML trong các côt cúa báng có sú dung kiêu dü liêu mói XML.

2. Ban có thê giám dô phúc tap cúa mã. Ví du, trong hình 16.5 minh hoa môt doan
mã PHP duoc viêt vùa sú dung và không sú dung pureXML. Sú dung pureXML
(hôp màu xanh) giúp giám các dòng mã lênh. Ðiêu này không chi có nghïa là mã
lênh ít phúc tap mà hiêu nãng toàn thê duoc cái thiên vì sô dòng dê phân tích và
báo trì trong mã lênh ít hon.
Nhp môn H qun tr c s d liu DB2

180

Hình 16.5 - Ðô phúc tap khi sú dung hay không sú dung pureXML

3. Sú dung XML và công nghê pureXML thay dôi luoc dô (schema) cúa ban dê
dàng hon. Hình 16.6 minh hoa môt ví du vê su tãng tính linh dông. Trong hình,
giá sú rãng ban dã có co só dü liêu gôm các báng Employee và Department.
Mãc dinh là co só dü liêu không có XML, nêu nhà quán lí cúa ban yêu câu ban
luu trü không chi môi nhân viên môt sô diên thoai (sô diên thoai nhà) mà còn luu
thêm sô thú hai (sô di dông) thì ban có thê thêm môt côt trong báng Employee và
luu sô diên thoai di dông trong côt mói dó. Tuy nhiên, cách làm này không dúng
vói các luât chuân hóa trong co só dü liêu quan hê. Nêu ban muôn giü dúng các
luât này thì ban tao môt báng Phone mói và chuyên toàn bô thông tin sô diên
thoai qua báng này. Ban cüng có thê thêm nhiêu sô diên thoai di dông. Tao ra
báng Phone mói thì tôn chi phí, bói vì không nhüng luong dü liêu dã có cân
duoc chuyên lón mà còn tât cá các câu SQL trong các úng dung së phái thay dôi
diêm dên là báng mói.

Thay vào dó, chúng tôi dua ra cách thuc hiên viêc này sú dung XML ó bên trái
hình bên duói. Nêu nhân viên “Christine” cüng có môt sô diên thoai di dông, thì
thêm môt thé (tag) mói dê luu thông tin này. Nêu nhân viên “Michael” không có
sô diên thoai di dông thì dê trông.
Nhp môn H qun tr c s d liu DB2

181

Hình 16.6 – Tång su mêm déo khi sú dung XML

4. Ban có thê cái thiên hiêu nãng úng dung XML cúa mình. Thuc hiên các kiêm tra
dùng công nghê pureXML cho thây su cái thiên dáng kê cho nhiêu úng dung
XML. Hình 16.7 cho thây các kêt quá dánh giá cho viêc môt công ty chuyên sang
sú dung công nghê pureXML. Côt ó giüa cho thây kêt quá làm viêc vói XML
bãng phuong thúc cü, và côt thú ba là kêt quá sú dung pureXML trong DB2 9.

Hình 16.7 – Su tång hiêu nång khi sú dung công nghê pureXML
16.3.2 Khái niêm co bán vê XPath
XPath là môt ngôn ngü mà ta có thê dùng nó dê truy vân các tài liêu XML. Hình 16.8 mô
tá môt tài liêu XML và hình 16.9 cüng minh hoa tài liêu dó duoc trình bày vói dang "phân
tích phân câp" (cüng duoc goi là nút (node) hay lá (leaf)). Chúng ta së xú dung dinh
dang "phân tích phân câp" dê giái thích XPath hoat dông nhu thê nào.












Nhp môn H qun tr c s d liu DB2

182

Hình 16.8 - Môt tài liêu XML

Hình 16.9 - Trình bày tài liêu XML ó hình 16.8 theo dang “phân tích phân câp”

Môt cách nhanh chóng dê hoc XPath dó là so sánh nó vói câu lênh dôi thu muc (CD)
trong MS-DOS hay trong Linux/UNIX. Sú dung câu lênh CD ban di qua môt cây thu muc
nhu sau:

cd /directory1/directory2/....

Tuong tu, trong XPath ban sú dung nhüng dâu gach chéo (/) dê chuyên tù môt thành
phân này dên môt thành phân khác trong tài liêu XML. Ví du, bãng cách sú dung tài liêu
trong hình 16.9 vói XPath ban có thê lây ra tên cúa tât cá các nhân viên thông qua câu
truy vân sau:

/dept/employee/name

Các biêu thúc XPath
Các biêu thúc XPath sú dung duòng dân dây dú dê dinh ra các thành phân và/hay các
thuôc tính. Kí hiêu "@" dùng dê chi thuôc tính. Ðê chi lây giá tri (text node) cúa môt
thành phân, ta sú dung hàm "text()". Báng 16.1 minh hoa môt vài câu truy vân XPath và
kêt quá tuong úng khi áp dung trên tài liêu XML dã cho ó hình 16.9


Nhp môn H qun tr c s d liu DB2

183
XPath Kêt quá
/dept/@bldg 101
/dept/employee/@id 901
902
/dept/employee/name <name>Peter Pan</name>
<name>John Doe</name>
/dept/employee/name/text() Peter Pan
John Doe
Báng 16.1 – Các ví du vê biêu thúc XPath

Các kí tu dai diên
Có 2 kí tu dai diên chính trong XPath:
• "*" thay thê cho bât kì tên thé nào
• "//" là kí tu dai diên cho "tù dây tró xuông" (descendent-or-self)
Báng 16.2 cho ta thêm vài ví du dua trên tài liêu XML ó hình 16.9

XPath Kêt quá
/dept/employee/*/text() John Doe
408 555 1212
344
Peter Pan
408 555 9918
216
/dept/employee/@id 901
902
/dept/employee/name <name>Peter Pan</name>
<name>John Doe</name>
/dept/employee/name/text() Peter Pan
John Doe
/dept//phone <phone>408 555 1212</phone>
<phone>408 555 9918</phone>
Báng 16.2 - Các ví du vê kí tu dai diên trong XPath

Các vi tù cúa XPath
Các vi tù cúa XPath duoc dãt trong cãp dâu ngoãc vuông []. Môt cách tuong tu, ban có
thê nghï chúng nhu là môt thành phân tuong duong vói mênh dê WHERE trong SQL. Ví
du [@id="902"] có thê duoc hiêu là "vói diêu kiên thuôc tính id có giá tri bãng 902".
Trong môt biêu thúc XPath có thê có nhiêu vi tù. Ðê chi ra môt vi tù có vi trí, ta sú dung
[n] vói ý nghïa là thành phân con thú n së duoc chon. Ví du employee[2] nghïa là nguòi
công nhân thú 2 së duoc chon. Báng 16.3 së cho ta nhiêu ví du hon:

XPath Kêt quá
/dept/employee[@id=”902”]/name <name>Peter Pan</name>
/dept[@bldg=”101”]/employee[office
> “300”]/name
<name>John Doe</name>
//employee[office=”304” OR office=”216”]/@id 901
902
/dept/employee[2]/@id 902
Báng 16.3 - Các ví du vê vi tù XPath

Nhp môn H qun tr c s d liu DB2

184
Truc cha XPath:
Tuong tu vói MS-DOS hay Linux/UNIX, ban có thê dùng môt dâu châm (.) dê dinh ra
trong biêu thúc rãng ban tham chiêu dên vi trí hiên tai, và hai dâu châm (..) dê tham
chiêu dên ví trí trên nó môt câp (múc cha).

Báng 16.4 cho ta thêm vài ví du

XPath Kêt quá
/dept/employee/name[../@id=”902”] <name>Peter Pan</name>
/dept/employee/office[.>”300”] <office>344</office>
/dept/employee[office > “300”]/office <office>344</office>
/dept/employee[name = “John Doe”]/../@bldg 101
/dept/employee/name[.=”John Doe”]/../../@bldg 101
Báng 16.4 – Truc cha Xpath
16.3.3 Ðinh nghïa XQuery
XQuery là môt ngôn ngü truy vân duoc tao ra cho XML. XQuery hô tro các biêu thúc
duòng dân dê dinh vi trí trong câu trúc phân câp XML. Thuc tê XPath là môt tâp con cúa
XQuery, do dó, tât cá nhüng gì chúng ta dã hoc truóc dây vê XPath cüng duoc áp dung
vói XQuery. XQuery hô tro cá dü liêu có kiêu và dü liêu không có kiêu. XQuery không
chúa giá tri null vì tài liêu XML bó di nhüng dü liêu thiêu hay không xác dinh. XQuery trá
vê môt chuôi các dü liêu XML.

Môt chú ý quan trong là các biêu thúc XQuery và XPath phân biêt ký tu viêt hoa và viêt
thuòng.

XQuery hô tro biêu thúc FLWOR (doc nhu flower). Trong SQL nó së tuong úng vói biêu
thúc SELECT-FROM-WHERE. Phân tiêp theo së giái thích rõ hon vê FLWOR

XQuery: Biêu thúc FLWOR
FLWOR viêt tãt cho:
• FOR: lãp qua tât cá các phân tú cúa môt dãy các thành phân và gán môt biên
cho các thành phân.
• LET: Gán môt biên vói môt dãy.
• WHERE: loai ra các thành phân trong quá trình lãp
• ORDER: sãp xêp lai các thành phân trong khi lãp
• RETURN: tao ra giá tri trá vê cho câu truy vân.
Ðây là môt biêu thúc cho phép ta thao tác vói các tài liêu XML, cho phép ban trá vê
nhüng biêu thúc khác. Ví du, giá sú ban dã có 1 báng vói dinh nghïa nhu sau:

CREATE TABLE dept (deptID CHAR(8), deptdoc XML);

Và tài liêu XML sau duoc thêm vào trong các côt cúa deptdoc:

<dept bldg=”101”>
<employee id=”901”>
<name>John Doe</name>
Nhp môn H qun tr c s d liu DB2

185
<phone>408 555 1212</phone>
<office>344</office>
</employee>
<employee id=”902”>
<name>Peter Pan</name>
<phone>408 555 9918</phone>
<office>216</office>
</employee>
</dept>

Thì khi dó câu lênh XQuery sau sú dung FLWOR có thê duoc thuc hiên:

xquery
for $d in db2-fn:xmlcolumn(‘dept.deptdoc’)/dept
let $emp := $d//employee/name
where $d/@bldg > 95
order by $d/@bldg
return
<EmpList>
{$d/@bldg, @emp}
</EmpList>

Và së cho ta kêt quá sau:

<EmpList bldg=”101”>
<name>
John Doe
</name>
<name>
Peter Pan
</name>
</EmpList>
16.3.4 Chèn các tài liêu XML
Viêc chèn các tài liêu XML vào co só dü liêu DB2 có thê thuc hiên bãng câu lênh
INSERT SQL, hay công cu IMPORT. Không thê dùng XQuery dê chèn tài liêu XML khi
nó chua duoc dinh nghïa trong chuân.

Kiêm tra têp kich bán sau, nó có thê chay trong DB2 Command Window hoãc Linux shell
dùng lênh này.

db2 -tvf table_creation.txt

table_creation.txt
-- (1)
drop database mydb
;
-- (2)
create database mydb using codeset UTF-8 territory US
;
-- (3)
connect to mydb
;
-- (4)
create table items (
Nhp môn H qun tr c s d liu DB2

186
id int primary key not null,
brandname varchar(30),
itemname varchar(30),
sku int,
srp decimal(7,2),
comments xml
);
-- (5)
create table clients(
id int primary key not null,
name varchar(50),
status varchar(10),
contact xml
);
-- (6)
insert into clients values (77, 'John Smith', 'Gold',
'<addr>111 Main St., Dallas, TX, 00112</addr>')
;
-- (7)
IMPORT FROM "D:\Raul\clients.del" of del xml from "D:\Raul" INSERT INTO CLIENTS
(ID, NAME, STATUS, CONTACT)
;
-- (8)
IMPORT FROM "D:\Raul\items.del" of del xml from "D:\Raul" INSERT INTO ITEMS (ID,
BRANDNAME, ITEMNAME, SKU, SRP, COMMENTS)

Luu ý rãng têp kich bán này và nhüng têp liên quan duoc cung câp trong têp nén ex-
pressc_book_quicklabs.zip di kèm vói sách. Bên duói chúng ta mô tá tùng dòng lênh
trong têp kich bán.

1. Xóa co só dü liêu “mydb”. Thao tác này thuòng duoc thuc hiên trong các têp
kich bán dê làm nhiêm vu don dep. Nêu nhu truóc dó chua có “mydb”, ban së
nhân duoc duoc môt thông báo lôi, nhung nó không gây ánh huóng dên viêc ta
dang làm.

2. Tao co só dü liêu “mydb” sú dung bô mã UTF-8. Môt co só dü liêu UNICODE
duoc dòi hói hô tro pureXML, vì vây buóc này là cân thiêt dê tao môt co só dü
liêu thành môt co só dü liêu UNICODE.

3. Kêt nôi dên co só dü liêu “mydb” vùa mói duoc tao. Lênh này cân thiêt dê tao ra
các dôi tuong trong co só dü liêu.

4. Tao báng “items”. Ðê ý thây côt cuôi cùng trong báng (côt “comments”) duoc
dinh nghïa nhu là môt côt XML sú dung kiêu dü liêu XML mói.

5. Tao báng “clients”. Côt cuôi trong báng (côt “contact”) cüng duoc dinh nghïa vói
kiêu dü liêu XML mói.

6. Dùng lênh SQL INSERT này, dê chèn môt tài liêu XML vào môt côt XML. Trong
câu lênh INSERT ban truyên tài liêu XML vào nhu là môt chuôi bao bói dâu nháy
don.

7. Dùng lênh IMPORT, dê chèn hoãc nhâp nhiêu tài liêu XML cùng vói dü liêu quan
hê vào co só dü liêu. Lênh 7, ban nhâp dü liêu tù têp clients.del (môt têp ascii
Nhp môn H qun tr c s d liu DB2

187
duoc dâu phân cách), và ban cüng có thê chi ra noi mà dü liêu XML duoc tham
chiêu bói têp clients.del dó duoc dinh vi (trong ví du này là thu muc D:\Raul).

Chúng ta së tìm hiêu kÿ hon têp clients.del, nhung truóc hêt, hãy xem nôi dung cúa thu
muc D:\Raul (Hình 16.10)

Hình 16.10 – Nôi dung cúa thu muc D:\Raul vói các tài liêu XML

Ðây là nôi dung cúa têp clients.del

clients.del
3227,Ella Kimpton,Gold,<XDS FIL='Client3227.xml' />,
8877,Chris Bontempo,Gold,<XDS FIL='Client8877.xml'/>,
9077,Lisa Hansen,Silver,<XDS FIL='Client9077.xml' />
9177,Rita Gomez,Standard,<XDS FIL='Client9177.xml'/>,
5681,Paula Lipenski,Standard,<XDS FIL='Client5681.xml' />,
4309,Tina Wang,Standard,<XDS FIL='Client4309.xml'/>

Trong têp clients.del, “XDS FIL=” duoc dùng dê tró dên môt têp tài liêu XML cu thê. Hình
16.11 cho thây trung tâm diêu khiên sau khi chay têp kich bán ó trên.

Nhp môn H qun tr c s d liu DB2

188

Hình 16.11 – Trung tâm diêu khiên sau khi thuc hiên table_creation.txt

Trong hình là nôi dung cúa báng CLIENTS. Côt cuôi cùng “Contact” là môt côt XML. Khi
ban nhâp vào nút có ba dâu châm, môt cúa sô khác mó ra cho ban thây nôi dung tài liêu
XML. Cúa sô này nãm ó góc duói bên phái cúa hình 16.11
16.3.5 Truy vân dü liêu XML
Trong DB2, có 2 cách dê truy vân dü liêu XML:
• Sú dung SQL vói các lênh mó rông cho XML (SQL/XML)
• Sú dung XQuery
Trong cá 2 cách trên, DB2 dêu tuân theo chuân XML quôc tê.

Truy vân dü liêu XML vói SQL/XML
Sú dung nhüng câu lênh SQL thuân túy cho phép ban làm viêc vói cá dòng và côt. Môt
câu lênh SQL làm viêc duoc vói nguyên cá tài liêu XML; tuy nhiên nó lai không có khá
nãng làm viêc vói chi môt phân cúa tài liêu XML. Trong truòng hop này, ban cân sú
dung SQL vói các lênh mó rông cho XML (SQL/XML).

Báng 16.5 bên duói mô tá môt sô hàm SQL/XML có sãn vói chuân SQL 2006

Tên hàm Mô tá
XMLPARSE Tách (phân tích) thuôc tính hoãc dü liêu nhi phân trong 1 dôi
tuong lón, lây ra giá tri XML
XMLSERIALIZE Chuyên giá tri XML sang thuôc tính hoãc dü liêu nhi phân
trong 1 dôi tuong lón
XMLVALIDATE Ðánh giá giá tri cúa XML vói so dô XML (XML Schema) và
ghi chú kiêu các giá tri cúa XML
XMLEXISTS Xác dinh (kiêm tra) câu truy vân XQuery có giá tri trá vê không
(ví du môt dãy giá tri hay nhiêu hon)
Nhp môn H qun tr c s d liu DB2

189
XMLQUERY Thuc thi câu truy vân XQuery và trá vê dãy kêt quá
XMLTABLE Thuc thi câu truy vân XQuery và kêt quá trá vê (nêu có) së là
môt báng quan hê
XMLCAST Ép kiêu XML
Báng 16.5 - Các hàm SQL/XML
Nhüng ví du minh hoa sau sú dung co só dü liêu “mydb” mà ta dã tao ra tù truóc.

Ví du 1:
Giá sú ban cân xác dinh tên tât cá khách hàng sông ó môt vùng nào dó (có cùng mã
vùng – zip). Báng “clients” luu dia chi khách hàng, bao gôm mã vùng, trong môt côt
XML. Sú dung XMLEXISTS, ban tìm thây côt dü liêu XML phù hop vói mã vùng, sau dó
giói han lai kêt quá trá vê.

SELECT name FROM clients
WHERE xmlexists (
‘$c/Client/Address[zip=”95116”]’
passing clients.contact as “c”
)

Dòng dâu tiên cúa câu lênh SQL nói rãng ban muôn lây thông tin trong côt “name” cúa
báng “clients”.

Mênh dê WHERE goi hàm XMLEXISTS, chi dinh rõ biêu thúc XPath yêu câu DB2 tìm
phân tú “zip” có giá tri 95116.

Mênh dê “$c/Client/Address” xác dinh duòng dân bên trong cây câu trúc cúa tài
liêu XML dê DB2 có thê tìm ra phân tú “zip”. Ký tu $ duoc dùng dê khai báo “c” là môt
biên. Biên “c” này sau dó duoc dinh nghïa bãng câu lênh passing clients.contact as “c”.
Trong dó “clients” là tên báng và “contact” là tên côt có kiêu dü liêu XML. Nói cách khác,
chúng ta dang dua tài liêu XML vào biên “c”.

DB2 kiêm tra dü liêu XML trong côt “contact”, duyêt tù nút “Client” xuông nút “Address”,
cuôi cùng là nút “zip” và xác dinh xem khách hàng có sông ó vùng có mã vùng dó
không. Nêu thây, hàm XMLEXISTS trá vê “true” và DB2 lây ra tên khách hàng tuong
úng.

Ví du 2:
Chúng ta suy nghï xem làm cách nào tao ra duoc mâu báo cáo gôm danh sách dia chi
thu diên tú cúa nhüng khách hàng “Vàng” (có trang thái “Gold”). Câu truy vân duói dây
có thê giái quyêt vân dê này:

SELECT xmlquery(‘$c/Client/email’ passing contact as “c”)
FROM clients
WHERE status = “Gold”

Dòng dâu tiên nói rãng ta muôn lây ra phân tú là dia chi thu diên tú cúa tài liêu XML chú
không muôn lây ra côt dü liêu. Tuong tu ví du truóc, tài liêu XML duoc luu trong biên
“$c”. Trong ví du này, hàm XMLQUERY có thê duoc sú dung sau mênh dê SELECT,
trong khi hàm XMLEXISTS duoc sú dung sau mênh dê WHERE.

Ví du 3:
Có truòng hop ban muôn trình bày dü liêu XML theo dang báng, ta có thê làm duoc
diêu này bãng cách sú dung hàm XMLTABLE.

Nhp môn H qun tr c s d liu DB2

190
SELECT t.comment#, i.itemname, t.customerID, Message
FROM items I,
xmltable(‘$c/Comments/Comment’ passing i.comments as “c”
columns Comment# integer path ‘CommentID’,
CustomerID integer path ‘CustomerID’,
Message varchar(100) path ‘Message’) AS t

Dòng dâu tiên cho biêt nhüng côt nào së xuât hiên trong tâp hop kêt quá (results set).
Nhüng côt bãt dâu bãng “t” là co só trên các giá tri cúa phân tú XML.

Dòng tiêp theo goi hàm XMLTABLE dê xác dinh rõ côt XML cúa DB2 së chúa dü liêu mà
ta cân (“i.comments”) và duòng dân dên phân tú dó trong tài liêu XML, là nhüng phân tú
mong muôn.

Tù dòng 4 dên 6 là mênh dê “columns”, xác dinh nhüng phân tú XML cu thê nào së
duoc ánh xa tuong úng vói nhüng côt trong báng kêt quá cúa câu lênh SQL ó dòng 1.
Phân ánh xa này có su tham gia cúa kiêu dü liêu mà các giá tri cúa các phân tú XML së
chuyên dôi thành. Trong ví du này, tât cá dü liêu XML dêu duoc dôi thành kiêu dü liêu
vôn có cúa SQL.

Ví du 4:
Bây giò ta së thuc hiên môt ví du don gián có sú dung biêu thúc XQuery FLWOR bên
trong hàm XMLQUERY SQL/XML.

SELECT name, xmlquery(
‘for $e in $c/Client/email[1] return $e’
passing contact as “c”
)
FROM clients
WHERE status = ‘Gold’

Dòng thú nhât xác dinh rãng báng kêt quá cúa câu truy vân bao gôm tên khách hàng và
kêt quá trá vê tù hàm XMLQUERY. Dòng thú hai cho biêt phân tú “email” dâu tiên cúa
phân tú “Client” së duoc trá vê. Dòng thú ba chi nguôn dü liêu XML (côt “contact”).
Dòng thú tu cho ta biêt côt này ó báng “client”; và dòng nãm chi ra khách hàng “vàng” là
quan tâm cúa chúng ta.

Ví du 5:
Ví du này minh hoa lai hàm XMLQUERY có sú dung biêu thúc XQuery FLWOR, nhung
lân này ta không chi trá vê dü liêu XML mà còn cá HTML.

SELECT xmlquery (‘for $e in $c/Client/email[1]/text()
return <p>{$e}</p>’
passing contact as “c”
)
FROM clients
WHERE status = ‘Gold’

Mênh dê return cúa XQuery cho phép biên dôi dü liêu XML dâu ra theo yêu câu. Sú
dung hàm text() ó dòng dâu tiên chi ra rãng ta chi quan tâm dên biêu diên vãn bán
dia chi e-mail dâu tiên cúa nhóm khách thóa mãn yêu câu. Dòng thú hai cho biêt thông
tin này së duoc boc lai trong các thé HTML (trong truòng hop này là thé <p> và </p>).

Ví du 6:
Ví du duói dây minh hoa cách sú dung hàm XMLELEMENT dê tao ra môt dãy các phân
Nhp môn H qun tr c s d liu DB2

191
tú, môi phân tú này lai chúa trong nó các phân tú con (sub-element) có nôi dung vê ID,
tên hàng hóa và chi sô hàng hóa tôi thiêu trong kho (SKU) tuong úng vói các côt trong
báng “items”. Vê co bán, ta có thê dùng hàm XMLELEMENT khi muôn chuyên tù dü liêu
quan hê sang dü liêu XML.

SELECT
xmlelement (name “item”, itemname),
xmlelement (name “id”, id),
xmlelement (name “brand”, brandname),
xmlelement (name “sku”, sku)
FROM items
WHERE srp < 100

Kêt quá xuât ra cúa câu truy vân trên nhu sau:

<item>
<id>4272</id>
<brand>Classy</brand>
<sku>981140</sku>
</item>

<item>
<id>1193</id>
<brand>Natural</brand>
<sku>557813</sku>
</item>

Truy vân dü liêu XML vói XQuery
Trong phân truóc, ta dã thây duoc cách truy vân dü liêu XML vói câu SQL có phân mó
rông cho XML. Truòng hop này, SQL là phuong pháp truy vân chính, và XPath duoc
nhúng vào bên trong câu lênh SQL. Còn trong tiêp theo này, ta nói vê cách sú dung
XQuery dê truy vân dü liêu XML. Lúc này, XQuery là phuong pháp chính, và trong môt
sô truòng hop, ta së nhúng SQL vào bên trong XQuery (bãng cách sú dung hàm “db2-
fn:sqlquery”). Khi thuc hành vói XQuery , ta së goi vài hàm, sú dung cá biêu thúc
FLWOR.

Ví du 1:
Làm môt truy vân XQuery don gián là lây dü liêu liên lac cúa khách hàng.

xquery db2-fn:xmlcolumn(‘CLIENTS.CONTACT’)

Nhó luôn luôn thêm lênh “xquery” vào dâu biêu thúc XQuery dê cho DB2 biêt rãng nó
cân sú dung bô phân tích (parser) XQuery. Nêu không, DB2 së cho rãng ban dang cô
gãng thuc thi biêu thúc SQL. Hàm db2-fn:xmlcolumn lây côt ta chi dinh trong tài liêu
XML làm tham sô. Câu lênh trên tuong úng vói câu lênh SQL sau dây:

SELECT contact FROM clients

Ví du 2:
Ta sú dung biêu thúc FLWOR dê lây thông tin vê sô fax cúa khách hàng.

xquery
for $y in db2-fn:xmlcolumn(‘CLIENTS.CONTACT’)/Client/fax
return $y

Nhp môn H qun tr c s d liu DB2

192
Dòng dâu tiên goi bô phân tích XQuery. Dòng thú hai yêu câu DB2 lãp hêt các phân tú
con fax trong côt CLIENTS.CONTACT. Môi phân tú fax duoc luu trong biên $y. Dòng
cuôi cùng nói rãng giá tri cúa biên $y së duoc trá vê trong môi lân lãp.

Kêt quá xuât ra cúa câu truy vân trông giông nhu sau (mãc dinh có thê gôm dia chi cúa
không gian tên (namespace) nhung ó dây tôi không thê hiên ra, mãt khác thông tin xuât
có thê trái ra thành nhiêu dòng nên hoi khó doc):

<fax>4081112222</fax>
<fax>5559998888</fax>

Ví du 3:
Ví du này tiêp tuc truy vân dü liêu XML và trá vê kêt quá là HTML

xquery
<ul> {
for $y in db2-fn:xmlcolumn(‘CLIENTS.CONTACT’)/Client/Address
order by $y/zip
return <li>{$y}</li>
</ul>

Kêt quá HTML trá vê trông nhu sau:

<ul>
<li>
<address>
<street>9407 Los Gatos Blvd.</street>
<city>Los Gatos</city>
<state>ca</state>
<zip>95302</zip>
</address>
</li>
<li>
<address>
<street>4209 El Camino Real</street>
<city>Mountain View</city>
<state>CA</state>
<zip>95302</zip>
</address>
</li>

</ul>

Ví du 4:
Tiêp theo là cách nhúng SQL vào trong XQuery bãng viêc sú dung hàm db2-
fn:sqlquery. Hàm db2-fn:sqlquery thuc thi câu truy vân SQL và chi trá vê nhüng
dü liêu XML duoc chon. Chi nhüng câu truy vân SQL trá vê dü liêu XML mói duoc
truyên vào hàm db2-fn:sqlquery.

xquery
for $y in
db2-fn:sqlquery(
‘select comments from items where srp > 100’
)/Comments/Comment
where $y/ResponseRequested = ‘Yes’
Nhp môn H qun tr c s d liu DB2

193
return (
<action>
{$y/ProductID
$y/CustomerID
$y/Message}
</action>
)

Trong ví du trên, câu truy vân SQL loc nhüng dòng dü liêu thóa diêu kiên giá tri tai côt
“srp” phái lón hon 100. Tù các dòng dã loc này lây ra côt “comments”, là côt dü liêu
XML. Câu lênh XQuery (hoãc XPath) tiêp theo duoc áp dung cho nhüng phân tú con.







16.3.6 Nôi (join) vói SQL/XML
Phân này së mô tá cách thúc thuc hiên lênh JOIN giüa hai côt XML cúa hai báng khác
nhau, hoãc giüa môt côt XML và môt côt quan hê. Giá sú ta dã tao hai báng vói các
lênh sau:

CREATE TABLE dept (unitID CHAR (8), deptdoc XML)

CREATE TABLE unit (unitID CHAR(8) primary key not null,
name CHAR(20),
manager VARCHAR(20),
. . .
)

Ta có thê thuc hiên lênh JOIN theo môt trong hai cách

Phuong pháp 1:
SELECT u.unitID
FROM dept d, unit u
WHERE XMLEXITS(
‘$e//employee[name = $n]’
passing d.deptdoc as “e”, u.manager as “m”)

Trên dòng 3 cúa lênh này chi ra rãng lênh JOIN xuât hiên giüa phân tú “name” là phân
tú con cúa côt XML deptdoc cúa báng “dept”, và côt quan hê “manager” cúa báng
“unit”.

Phuong pháp 2:
SELECT u.unitID
FROM dept d, unit u
WHERE u.manager = XMLCAST(
XMLQUERY(‘$e//employee/name’
passing d.deptdoc as “e”)
AS char(20))

Ghi chú: DB2 không phân biêt chü in hoa và chü thuòng và giá dinh tât cá tên báng và
tên côt dêu là chü in hoa, trong khi dó XQuery lai phân biêt chü in hoa và chü thuòng.
Các hàm trên là hàm giao diên cúa XQuery (XQuery interface function) do dó tên báng
và tên côt truyên vào các hàm này nên là chü hoa. Truyên tên dôi tuong ó dang chü
thuòng có thê gây ra lôi “tên dôi tuong không xác dinh” (undefined object name)
Nhp môn H qun tr c s d liu DB2

194
Trong lua chon này, côt quan hê thì ó bên trái cúa lênh JOIN. Nêu côt có quan hê ó bên
trái dâu bãng, môt chi muc quan hê có thê duoc dùng thay cho môt chi muc XML.
16.3.7 Nôi (Join) vói XQuery
Giá sú có các báng sau duoc tao ra:

CREATE TABLE dept(unitID CHAR(8), deptdoc XML)
CREATE TABLE project(projectdoc XML)

Nêu ta sú dung SQL/XML, câu truy vân së nhu sau:

SELECT XMLQUERY (
‘$d/delp/employee’ passing d.deptdoc as “d”)
FROM dept d, project p
WHERE XMLEXISTS(
‘$e/dept[@deptID=$p/project/deptID]’
passing d.deptdoc as “e”, p.project as “p”)

Lênh tuong duong sú dung XQuery së là:

xquery
for $dept in db2-fn:xmlcolumn(“DEPT.DEPTDOC”)/dept
for $proj in db2-
fn:xmlcolumn(“PROJECT.PROJECTDOC”)/project
where $dept/@deptID = $proj/deptID
return $dept/employee

Phuong pháp thú 2 này dê phiên dich hon – biên “$dept” mang tài liêu XML cúa côt
XML “deptdoc” cúa báng “dept”. Biên “$proj” mang tài liêu XML cúa côt XML “projectdoc”
cúa báng “project”. Nhu vây dòng 4 thuc hiên lênh JOIN giüa môt thuôc tính cúa tài liêu
XML dâu tiên và môt phân tú cúa tài liêu XML thú hai.
16.3.8 Các lênh câp nhât và xóa
Các lênh câp nhât và xóa dü liêu XML có thê duoc thuc hiên bãng môt trong hai cách:
- Sú dung câu lênh SQL UPDATE và DELETE
- Goi thú tuc DB2XMLFUNCTION.XMLUPDATE

Trong cá hai truòng hop, câp nhât hoãc xóa tác dông ó múc tài liêu; thât vây, toàn bô
tài liêu XML duoc thay thê vói môt lân câp nhât. Ví du, nêu trong ví du duói dây ta muôn
thay thê phân tú <state>, toàn bô tài liêu XML trên thuc tê bi thay thê.

UPDATE clients SET contact=(
xmlparse (documment
‘<Client>
<address>
<street>5401 Julio ave.</street>
<city>San Jose</city>
<state>CA</state>
<zip>95116</zip>
</address>
<phone>
<work>4084633000</work>
<home>4081111111</home>
<cell>4082222222</cell>
</phone>
Nhp môn H qun tr c s d liu DB2

195
</Client>’)
)
WHERE id = 3227
16.3.9 Chi muc XML
Trong môt tài liêu XML, các chi muc có thê duoc tao ra theo các phân tú, thuôc tính
hoãc giá tri (vãn bán). Sau dây là môt sô ví du, giá sú báng sau dã duoc tao:

CREATE TABLE customer(info XML)

Và giá sú hô so sau dã duoc luu trong báng này:

<customerinfo Cid=”1004”>
<name>Matt Foreman</name>
<addr country=”Canada”>
<street>1596 Baseline</street>
<city>Toronto</city>
<state>Ontario</state>
<zip>M3Z-5H9</zip>
</addr>
<phone type=”work”>905-555-4789</phone>
<phone type=”home”>416-555-3376</phone>
<assistant>
<name>Peter Smith</name>
<phone type=”home”>416-555-3426</phone>
</assistant>
</customerinfo>

1) Lênh này tao môt chi muc thên thuôc tính “Cid”

CREATE UNIQUE INDEX idx1 ON customer(info)
GENERATE KEY USING
xmlpattern ‘/customerinfo/@Cid’
AS sql DOUBLE

2) Lênh này tao môt chi muc trên phân tú “name”

CREATE UNIQUE INDEX idx2 ON customer(info)
GENERATE KEY USING
xmlpattern ‘/customerinfo/name’
AS sql VARCHAR(40)


3) Lênh này tao môt chi muc trên moi phân tú “name”

CREATE UNIQUE INDEX idx3 ON customer(info)
GENERATE KEY USING
xmlpattern ‘//name’
AS sql VARCHAR(40)


4) Lênh này tao môt chi muc trên toàn bô vãn bán (tât cá các giá tri). Ðây là lênh không
nên dùng, nó quá tôn kém dê duy trì chi muc khi thuc hiên các lênh câp nhât, xóa
hoãc chèn, và chi muc së rât lón

Nhp môn H qun tr c s d liu DB2

196
CREATE UNIQUE INDEX idx4 ON customer(info)
GENERATE KEY USING
xmlpattern ‘//text()’
AS sql VARCHAR(40)
Nhp môn H qun tr c s d liu DB2

197
Bài tâp nhanh #12 – SQL/XML và XQuery

Muc dích

Ban dã thây nhiêu ví du vê cú pháp cúa SQL/XML và XQuery và dã duoc giói thiêu
trong DB2 Command Editor và công cu DB2 Developer Workbench. Trong bài tâp này,
ban hãy kiêm tra sú hiêu biêt cúa ban vê SQL/XML và XQuery bãng viêc thuc hành vói
các công cu này. Ta së sú dung co só dü liêu “mydb” duoc tao ra bãng viêc sú dung
têp kich bán table_creation.txt mà chúng ta dã giái thích trong các chuong truóc.

Thú tuc

1. Tao co só dü liêu “mydb” và nap dü liêu XML, nhu dã trình bày ó chuong truóc
2. Sú dung hoãc Cúa sô lênh hoãc DWB:
a. Tìm ra tât cá các nôi dung chú thích (comments) trong tài liêu XML trong
báng ITEMS bãng hai cách, chi sú dung XQuery
b. Tai sao khi ta sú dung lênh SQL sau lai không dua ra cùng kêt quá?

SELECT comments FROM items

c. Tìm ra ID và BRANDNAME cúa các bán ghi mà tài liêu XML cúa nó có giá
tri cúa truòng ResponseRequested là “No”

Lòi giái

2a)
xquery db2-fn:xmlcolumn(‘ITEMS.COMMENTS’)
xquery db2-fn:sqlquery(“select comments from items”)

2b)
Kêt quá khác nhau là vì SQL trá lai giá tri NULL khi không có giá tri, còn XQuery
không trá lai gì cá.

2c)
SELECT id, brandname FROM items WHERE
XMLEXISTS(‘$c/Comments/Comment[ResponseRequested=”No”
passing ITEMS.COMMENTS as “c”
Nhp môn H qun tr c s d liu DB2

198
17
Chuong 17 – Phát triên vói Java, PHP và Ruby

Chuong này së tháo luân nhüng vân dê co bán cúa viêc phát triên úng dung trong Java,
PHP và Ruby trên nên Rails sú dung môt máy chú DB2. Muc dích cúa chuong này
không nhãm huóng dân vê các ngôn ngü trên, nhung nó cung câp thông tin thích hop
trong viêc sú dung chúng vói DB2.
17.1 Phát triên úng dung bång Java
Trình diêu khiên IBM DB2 cho JDBC (duoc biêt dên nhu trình diêu khiên JCC) duoc
xem là tôi uu dôi vói các máy chú DB2 trên tât cá các nên táng. Têp db2jcc.jar
(com.ibm.db2.jcc) bao gôm trình diêu khiên kiêu 2 và kiêu 4. Têp db2jcc.jar cüng bao
gôm bât cú máy khách DB2 nào, hoãc nó có thê duoc thây (trình diêu khiên IBM DB2
cho JDBC và SQLJ) tù trang web DB2 Express-C (ibm.com/db2/express)
17.1.1 Trình diêu khiên JDBC kiêu 2 (type 2)
Trình diêu khiên JDBC kiêu 2 yêu câu môt máy khách DB2 dã duoc cài dãt noi mà úng
dung JDBC së thuc thi. Hình 17.1 minh hoa môt úng dung JDBC sú dung trình diêu
khiên kiêu 2.



Hình 17.1 – Trình diêu khiên JDBC kiêu 2

Hình 17.2 dua ra môt doan mã lênh cho ta thây làm thê nào dê thiêt lâp môt kêt nôi sú
dung trình diêu khiên JDBC kiêu 2. Luu ý là URL không bao gôm hostname hoãc thông
tin vê công bói vì diêu này duoc thuc hiên tù máy khách DB2.
Nhp môn H qun tr c s d liu DB2

199

Hình 17.2 – Thiêt lâp môt kêt nôi sú dung trình diêu khiên JDBC kiêu 2
17.1.2 Trình diêu khiên JDBC kiêu 4
Trình diêu khiên JDBC kiêu 4 không yêu câu môt máy khách phái kêt nôi dên môt máy
chú DB2. Hình 17.3 minh hoa môt úng dung JDBC sú dung trình diêu khiên kiêu 4.


Hình 17.3 – Trình diêu khiên JDBC kiêu 4

Hình 17.4 dua ra môt doan mã lênh cho ta thây làm thê nào dê thiêt lâp môt kêt nôi sú
dung trình diêu khiên JDBC kiêu 4. Luu ý là URL bao gôm cá hostname hoãc thông tin
vê công.

Nhp môn H qun tr c s d liu DB2

200
Hình 17.4 – Thiêt lâp môt kêt nôi sú dung trình diêu khiên JDBC kiêu 4
17.2 Phát triên úng dung bång PHP
PHP (PHP Hypertext Preprocessor) là môt nguôn mó, là ngôn ngü kich bán dôc lâp vê
nên táng duoc thiêt kê cho viêc phát triên úng dung Web. Ðó là môt trong nhüng ngôn
ngü web duoc triên khai rông rãi nhât trên thê giói hiên nay. Tính phô biên cúa PHP dua
trên các dãc trung cúa ngôn ngü:

- Nhanh, dê hoc tù thâp dên cao
- Manh, tính thuc thi cao và khá chuyên
- Ón dinh và an toàn
- Môt su lua chon dôi vói J2EE và .NET trên nên Web.
- Dê dàng tích hop vào các môi truòng/hê thông không thuân nhât.
- Ðuoc chúng tó thông qua triên khai rông rãi
- Tao nên môt công dông dây súc sông

PHP là bô phân cúa LAMP (viêt tãt cúa các tù Linux, Apache HTTP Server, MySQL,
PHP / Perl / Python). Ðây là môt nhóm công nghê web mã nguôn mó, thuòng sãn có
trên các nhà cung câp (ISP) vói giá hop lý.
17.2.1 Lua chon kêt nôi DB2 cho PHP
IBM hô tro truy xuât dên co só dü liêu DB2 tù các úng dung PHP thông qua hai phân
mó rông.

ibm_db2:
Phân mó rông ibm_db2 dua ra môt giao diên lâp trình thú tuc úng dung cho phép tao,
doc, câp nhât và ghi các thao tác co só dü liêu thêm vào dó mó rông truy xuât dên siêu
co só dü liêu. Nó có thê duoc biên dich dê làm viêc vói PHP 4 hoãc PHP 5. Phân mó
rông sãn có tù kho thu viên PECL duói su cho phép cúa Apache 2.0. Nó duoc IBM phát
triên và hô tro. Có dây dú các dãc tính hô tro cho các thú tuc luu trü và LOBs, nhanh, và
duoc tôi uu cho DB2.

PDO_ODBC:
PDO_ODBC là trình diêu khiên cho phân mó rông cúa Các dôi tuong dü liêu PHP (PHP
Data Objects - PDO), và sãn sàng truy câp dên co só dü liêu DB2 thông qua môt giao
diên co só dü liêu huóng dôi tuong dã duoc thú tuc hóa trong PHP 5.1. Nó có thê
tuong thích nguoc vói các thu viên cúa DB2 môt cách tu dông. Nó cung câp môt giao
diên truy xuât dü liêu tiêu chuân cho PHP. Nhanh chóng, nhe nhàng, và huóng dôi
tuong. Phân mó rông PDO_ODBC sú dung các thu viên DB2 dê truy xuât môt cách tu
nhiên, và nó dã duoc xây dung trong PHP 5.1. Có thê tham kháo thêm tai:

• http://pecl.php.net/package/pdo
• http://pecl.php.net/package/PDO_ODBC

Kêt nôi dên môt co só dü liêu DB2 chua phân loai (uncalalogued)
Ðoan mã 17.1 cho thây làm thê nào dê kêt nôi dên co só dü liêu DB2 sú dung môt trong
hai phân mó rông dã duoc mô tá ó trên.

Nhp môn H qun tr c s d liu DB2

201

Ðoan mã 17.1 – Kêt nôi dên môt co só dü liêu bên ngoài

Ðoan mã 17.2 cung câp môt ví du cho môt úng dung PHP don gián sú dung phân mó
rông ibm_db2


Ðoan mã 17.2 – Môt úng dung PHP don gián sú dung phân mó rông ibm_db2

Câu hình PHP cho jbm_db2
Trong Linux hoãc UNIX ban cân thay dôi têp php.ini nhu sau:

extension=ibm_db2.iso
ibm_db2.instance_name=<instance name>

Ðôi vói Windows, thay dôi têp php.ini nhu sau:

extension=php_ibm_db2.dll

Tiêp theo, ban có thê tái và cài dãt bô úng dung Zend Core for IBM së duoc mô tá
trong phân tiêp theo, và dùng ngai vê các vuóng mãc ó câu hình này.
17.2.2 Úng dung công nghê Zend Core dành cho IBM
Zend [Core] là bô công cu PHP hoàn chinh cho môi truòng phát triên và sán xuât các
úng dung web tôi quan trong cho doanh nghiêp. Zend [Core] thê hiên su tin cây, hiêu
quá và su linh hoat cân thiêt cho viêc vân hành nhüng úng dung PHP. Zend [Core] có
thê duoc tái vê tai dia chi sau: http://ibm.com/software/data/info/zendcore
Zend [Core] cho IBM bào gôm cài dãt DB2 và máy khách IDS, môt máy chú HTTP cúa
Apache (tùy chon), PHP5 và môt sô thu viên phô biên kèm theo bao gôm: ibm_db2,
PDO_INFOMIX. Zend [Core] cho IBM cüng có thê cài dãt máy chú DB2 Express-C, máy
chú IBM Cloudscape
TM
, bô huóng dân sú dung PHP, và môt sô úng dung ví du trên
DB2. Zend [Core] thê hiên su tiên dung và cài dãt môi truòng PHP môt cách dê dàng,
xem hình minh hoa 17.5, 17.6 và 17.7.
Nhp môn H qun tr c s d liu DB2

202

Hình 17.5 – Cúa sô quán lý và diêu khiên cúa Zend [Core]


Hình 17.6 – Cúa sô câu hình PHP cúa Zend [Core]
Nhp môn H qun tr c s d liu DB2

203

Hình 17.7 – Cúa sô câu hình PHP cúa Zend
17.3 Phát triên úng dung Ruby trên nên Rails
Ruby là môt ngôn ngü kich bán huóng dôi tuong, dông và da nên dua trên mã nguôn
mó. Ruby giúp cho phát triên các úng dung môt cách dê dàng, nhanh chóng và còn bao
gôm tâp hop các thu viên rât phong phú. Ruby là ngôn ngü lâp trình don gián, gon nhe
duoc phát triên bói Yukihiro Matsumoto (“Matz”) vào nãm 1995.

Rails là môt bô khung hoàn chinh cho viêc phát triên các úng dung web dua trên co só
dü liêu do Ruby phát triên. Rails cài dãt kiên trúc model-view-controller (MVC). Rails nôi
lên nhu là môt trong nhüng khung phát triên úng dung web manh nhât kê tù nãm 2004
do David Heinemeier Hansson phát triên.
17.3.1 Bô công cu phát triên DB2 trên nên Rails
IBM nhân ra duoc tâm quan trong cúa Ruby trên nên Rails trong công dông phát triên
úng dung web. Chính vì lý do dó mà IBM dã tao ra bô công cu phát triên DB2 trên nên
Rails (Startup Toolkit for DB2 on Rails). Ðây là bô cài dãt duoc tích hop lai dê tao nên
môt môi truòng phát triên DB2 bãng Ruby trên nên Rails. Bô công cu này có thê
download tai dia chi: http://www.alphaworks.ibm.com/tech/db2onrails

Bô công cu này bao gôm:

Bô cài dãt
Huóng dân cài dãt và câu hình Ruby và Rails
Bô cài dãt DB2 – Express C 9 và bô công cu kèm theo
Các trình diêu khiên (driver) cho DB2 Ruby và bô thích hop cho DB2 Rails
Ví du và bài tâp


Nhp môn H qun tr c s d liu DB2

204
A
Phu luc A – Gõ rôi

Trong phân này, chúng ta së nói vê cách làm thê nào dê giái quyêt (gõ rôi) nhüng vân
dê có thê gãp phái khi làm viêc vói DB2. Hình A.1 cung câp môt so dô tông quan vê
nhüng viêc chúng ta nên làm khi gãp su cô.





























Hình A.1 - Tông quan vê viêc gõ rôi
A.1 Thêm thông tin vê mã các lôi
Ðê thu thâp duoc nhiêu thông tin hon tù doan mã lôi mà chúng ta nhân duoc hãy nhâp
mã lôi mà ban nhân duoc vói dâu châm hói (?) vào vùng nhâp lênh và nhân vào nút
Execute, nhu trong hình A.2 duói dây

Nhp môn H qun tr c s d liu DB2

205


Hình A.2 - Tìm kiêm thông tin vê doan mã bi lôi

Dâu châm hói (?) së goi dên trình tro giúp (Help) cúa DB2. Duói dây là môt sô ví du vê
kích hoat trình help, ví du nhân duoc mã lôi SQL là “-104”. Tât cá nhüng ví du duói dây
là tuong duong

db2 ? SQL0104N
db2 ? SQL104N
db2 ? SQL – 0104
db2 ? SQL – 104
db2 ? SQL – 104N
A.2 SQLCODE and SQLSTATE
Môt SQLCODE là mã nhân duoc sau khi moi câu lênh SQL dã duoc chay. Ý nghïa cúa
các giá tri nhu sau:

SQLCODE = 0; lênh thành công
SQLCODE > 0; lênh thành công nhung chuong trình có cánh báo
SQLCODE < 0; lênh không thành công và trá vê môt lôi

SQLSTATE gôm 5 ký tu, chuôi này tuân theo chuân ISO/ANSI SQL92. Hai ký tu dâu
tiên cho ta biêt mã lóp SQLSTATE
00: lênh thành công
01: có cánh báo
02: không tìm thây diêu kiên
Tât cá các mã lóp khác duoc xem nhu có lôi
A.3 Nhât ký khai báo quán tri DB2
Nhât ký khai báo quán tri cung câp công cu dùng dê chân doán thông tin vê các lôi tai
các diêm phát sinh lôi. Ó hê diêu hành Linux/Unix thì nhât ký thông báo quán tri
(Administration Notification) là môt têp vãn bán <tên thê hiên>.nfy (ví du “db2inst.nfy”). Ó
hê diêu hành Windows, tât cá các khai báo quán tri dêu duoc ghi vào Windows Event
Log.
Nhp môn H qun tr c s d liu DB2

206

Tham sô câu hình DBM notifylevel cho phép nguòi quán tri chi ra múc dô thông tin
duoc ghi lai

0 - không có khai báo quán tri nào duoc giü lai (không khuyên khích)
1 - lôi nãng hoãc không thê phuc hôi
2 - hành dông cân duoc thuc hiên ngay lâp túc
3 - thông tin quan trong, không cân hành dông ngay lâp túc (mãc dinh)
4 - thông diêp
A.4 db2diag.log
Db2diag.log cung câp thông tin chi tiêt hon vê nhât ký khai báo quán tri DB2. Nó thuòng
chi duoc sú dung bói nhân viên hô tro kÿ thuât DB2 hay nguòi quán tri có kinh nghiêm.
Thông tin ó trong db2diag.log bao gôm:

- Vi trí cúa mã DB2 phát sinh lôi
- Môt chuong trình nhân dang, cho phép ban có thê so sánh nhüng dòng cúa
úng dung trên têp db2diag.log trên náy chú và máy khách.
- Môt thông diêp chân doán (bãt dâu bãng “DIA”) giái thích nguyên nhân cúa lôi
- Các dü liêu hô tro sãn có, nhu là câu trúc dü liêu SQLCA và con tró dên vi trí
cúa kêt xuât hoãc têp bây

Ó Windows, db2diag.log duoc chúa trong môt thu muc mãc dinh:

C:\Program Files\IBM\sqllig\<instance name>\db2diag.log

Ó Linux/Unix db2diag.log duoc chúa trong thu muc mãc dinh:

/home/<instance_ owner>/sqllid/db2trum/db2diag.log

Ý nghïa cúa chân doán duoc quyêt dinh bói tham sô câu hình dbm cfg DIAGLEVEL.
Câp dô tù 0 dên 4, 0 là ít ý nghïa nhât và 4 là cao nhât, mãc dinh là 3
A.5 Theo vêt CLI
Vói CLI và các úng dung Java, ban có thê bât tiên ích theo vêt CLI dê khãc phuc nhüng
su cô cho nó. Ðiêu này có thê duoc làm bãng cách súa dôi têp db2cli.ini ó máy chú, noi
mà úng dung cúa ban dang chay. Nhüng truòng dãc trung cúa db2cli.ini duoc chi ra
bên duói:



Theo vêt ó múc thâp cüng sãn có (db2trc), nhung nó thuòng duoc nhân viên hô tro kÿ
thuât sú dung.
A.6 Khåc phuc và súa lôi trong DB2
Ðôi khi môt lôi mà ban thình lình gãp phái lai là nguyên nhân cúa môt su cô (lôi) cúa
DB2. IBM së dêu dãn phát hành nhüng bán súa lôi (Fixpacks) dê súa chüa nhüng lôi dó
(APARs). Trong têp vãn bán cúa bán súa lôi có chúa danh sách nhüng lôi mà nó súa
chüa duoc. Khi phát triên môt úng dung mói chúng ta nên câp nhât nhüng bán súa lôi
mói nhât dê tránh nhüng vân dê có thê xáy ra trong khi làm viêc. Ðê xem phiên bán hiên
Nhp môn H qun tr c s d liu DB2

207
tai cúa bán súa lôi, chon About tù trình don Help, tù cúa sô lênh gõ “db2level”. Luu ý
rãng, bán súa lôi và su hô tro tù IBM chi có hiêu luc trong DB2 Express–C khi ban mua
bán quyên 12 tháng


Nguôn tài nguyên

Các trang web
1.1. Trang web chính thúc cúa DB2 Express-C:
www.ibm.com/db2/express
Website này cho phép ban download các file cài dãt cho máy chú DB2, máy khách
DB2, các driver dành cho DB2, ban cüng có thê tìm thây các huóng dân sú dung,
hoãc tìm doc blog cúa nhóm phát triên DB2, dãng ký dê nhân email tai dây.

1.2. Diên dàn DB2 Express:
http://www.ibm.com/developerworks/forums/dw_forum.jsp?forum=805&cat=19
Ban có thê sú dung Diên dàn này dê dãng tái các vân dê vê kÿ thuât môi khi ban
không thê tu mình tìm thây câu trá lòi cho các vân dê dó.

1.3. Trung tâm dü liêu DB2
http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp
Trung tâm dü liêu cung câp nguôn tài liêu huóng dân truc tuyên. Ðây là nguôn tài
nguyên duoc câp nhât môt cách thuòng xuyên nhât.

1.4. developerWorks
http://www-128.ibm.com/developerworks/db2
Website này là môt nguôn tài nguyên tuyêt vòi cho nhüng nguòi phát triên và
nhüng nguòi quán tri hê thông co só dü liêu tìm thây duoc nhiêu bài viêt, bài
huóng dân, v.v… hoàn toàn miên phí.

1.5. alphaWorks
http://www.alphaworks.ibm.com/
Website này cho phép ban truy xuât truc tiêp vào các công nghê nôi trôi cúa IBM.
Ðây là noi ban có thê tìm thây nhüng công nghê mói nhât tù Phòng Nghiên cúu cúa
IBM.

1.6. planetDB2
http://www.planetdb2.com/
Ðây là noi tâp hop nhiêu blog cúa nhüng nguòi phát triên DB2.

1.7. Hô tro kÿ thuât DB2
Nêu ban dã dãng ký hô tro kÿ thuât 12 tháng tù DB2 Express-C, ban có thê
download các bán vá lôi tù Website này:
http://www-306.ibm.com/software/data/db2/support/db2_9/
Nhp môn H qun tr c s d liu DB2

208
Sách
1. Free Redbook: DB2 Express-C: The Developer Handbook for XML, PHP, C/C++,
Java, and .NET
Whei-Jen Chen, John Chun, Naomi Ngan, Rakesh Ranjan, Manoj K. Sardana,
Tháng 8 nãm 2006 – SG24-7301-00
http://www.redbooks.ibm.com/abstracts/sg247301.html?Open

2. Understanding DB2 – Learning Visually with Examples V8.2
Raul F. Chong, Clara Liu, Sylvia Qi, Dwaine Snow.
Tháng 1 nãm 2005 – ISBN: 0-13-185916-1

3. DB2 9: pureXML overview and fast start
Cynthia M. Saracco, Don Chamberlin, Rav Ahuja
Tháng 1 nãm 2006 – SG24-7298

4. DB2® SQL PL: Essential Guide for DB2® UDB on Linux™, UNIX®, Windows™,
i5/OS™, and z/OS®, 2
nd
Edition
Zamil Janmohamed, Clara Liu, Drew Bradstock, Raul Chong, Michael Gao, Fraser
McArthur, Paul Yip
ISBN: 0-13-100772-6

5. Free Redbook: DB2 pureXML Guide
Whei-Jen Chen, Art Sammartino, Dobromir Goutev, Felicity Hendricks, Ippei Komi,
Ming-Pang Wei, Rav Ahuja, Matthias Nicola.
Tháng 8 nãm 2007.
http://www.redbooks.ibm.com/abstracts/sg247315.html?Open

6. Information on Demand – Introduction to DB2 9 New Features
Paul Zikopoulos, George Baklarz, Chris Eaton, Leon Katsnelson
ISBN-10: 0071487832
ISBN-13: 987-0071487832

7. Redbook: Developing PHP Applications for IBM Data Servers.
Whei-Jen Chen, Holger Kirstein, Daniel Krook, Kiran H Nair, Piotr Pietrzak
Tháng 5 nãm 2006 – SG24-7218-00
http://www.redbooks.ibm.com/abstracts/sg247218.html?Open

Email liên hê
Hôp thu DB2 Express-C: db2x@ca.ibm.com
Hôp thu DB2 dành cho các truòng Ðai hoc: db2univ@ca.ibm.com
Nhp môn H qun tr c s d liu DB2

209









Båt dâu vói DB2 không thê nào dê dàng hon. Ðoc cuôn sách này dê:

- Tìm thây tât cá nhüng diêu vê DB2 Express-C.
- Hiêu vê kiên trúc cúa DB2, các công cu và báo mât DB2.
- Hoc cách quán tri Co só dü liêu DB2.
- Viêt mã SQL, XQuery.
- Phát triên chuong trình úng dung sú dung co só dü liêu DB2.
- Luyên tâp bãng nhüng bài tâp thuc hành.
- Chuân bi cho ky thi DB2 trong truòng.

Su phát triên nhanh chóng cúa XML, Web 2.0, và SOA dã dân dên nhüng nhu câu vê
môt loai hê quán tri dü liêu lai mang tính cách tân. DB2 Express-C cúa IBM là môt hê
quán tri dü liêu miên phí, không giói han, và là co só dü liêu LAI có khá nãng quán tri cá
XML và dü liêu quan hê thuân túy môt cách dê dàng. Miên phí nghïa là DB2 Express-C
có thê duoc tu do tái vê, tu do dê ban xây dung úng dung, tu do triên khai sán phâm,
và tu do phân phôi lai các giái pháp cúa ban. Và, DB2 không dãt môt giói han nào cho
kích thuóc dü liêu, sô luong dü liêu, hoãc sô luong nguòi sú dung.

DB2 Express-C chay trên hê thông Windows và Linux và hô tro nhiêu ngôn ngü lâp trình
khác nhau, bao gôm cá C/C++, Java, .NET, PHP, Perl, và Ruby. Nhüng hô tro truc
tuyên cüng có thê duoc dãng ký vói giá thâp. Nêu ban muôn có nhiêu chúc nãng cao
câp hon nüa dôi vói môt hê quán tri co só dü liêu, ban có thê dê dàng triên khai nhüng
úng dung dã duoc xây dung bãng DB2 Express-C lên nhüng ân bán DB2 khác nhu
DB2 Enterprise.

Án bán DB2 miên phí này rât lý tuóng cho nhüng nguòi phát triên, nhüng nguòi tu vân,
nhüng nguòi bán phân mêm dôc lâp, các quán tri viên co só dü liêu, sinh viên, hoãc bât
ky ai có ý dinh phát triên, thú nghiêm, triên khai, hoãc phân phôi các úng dung vê co só
dü liêu. Hãy tham gia vào su phát triên cúa công dông nhüng nguòi sú dung DB2
Express-C ngay hôm nay. Ban së khám phá ra cách hoàn toàn mói dê tao ra chuong
trình úng dung, cüng nhu cách phát triên nhüng giái pháp dôt phá.

Nh p môn H qu n tr c s d li u DB2

1

Xu t b n l n

u (tháng 11 n m 2007) i u hành Linux,

Tài li u này s d ng cho IBM DB2 Express-C phiên b n 9.1 v i h UNIX và Windows B n quy n thu c công ty IBM

Nh p môn H qu n tr c s d li u DB2

2

M cL c

Thông cáo và Nhãn hi u hàng hóa...................................................................................7 Ai nên c cu n sách này?...............................................................................................8 C u trúc c a quy n sách này nh th nào? ......................................................................8 M t quy n sách do c ng ng làm và giành cho c ng ng ...........................................8 Tác gi và nh ng ng i óng góp ...................................................................................8 L i c m n .......................................................................................................................9 L i c m n b n ti ng Vi t .............................................................................................10 L i nói u .....................................................................................................................12 Ph n I – T ng quan và Cài t .......................................................................................13 Ch ng 1 - DB2 Express-C là gì?...................................................................................13 1.1 T do phát tri n, tri n khai và phân ph i…không có gi i h n!...............................13 1.2 H tr k thu t .........................................................................................................14 1.3 Các máy ch DB2 ....................................................................................................14 1.4 Máy khách DB2 .......................................................................................................15 1.5 T do phát tri n ph n m m ng d ng......................................................................16 1.6 Phiên b n và n b n DB2 (version and edition) ......................................................16 1.7 Chuy n sang n b n DB2 khác ................................................................................17 1.8 B o trì DB2 Express-C ............................................................................................17 1.9 M t s ph n m m mi n phí liên quan......................................................................17 1.9.1 DB2 Developer Workbench (công c phát tri n) .............................................17 1.9.2 DB2 9 Embedded Application Server (máy ch nhúng) .................................18 1.9.3 DB2 9 Net Search Extender (m r ng tìm ki m trên m ng) ............................18 1.9.4 B công c b t u Rails cho DB2 ...................................................................18 1.9.5 B công c b t u Web 2.0 dành cho DB2.....................................................18 Ch ng 2 – Các tính n ng liên quan và các s n ph m.................................................19 2.1 Các tính n ng bao hàm trong ng ký s d ng DB2 Express-C .............................20 2.1.1 Các ch ng trình s a l i ...................................................................................20 2.1.2 Tính s n sàng cao và khôi ph c sau s c (HADR) .........................................20 2.1.3 Kh n ng tái t o d li u (di trú d li u)............................................................20 2.2 Các tính n ng không có trong b n DB2 Express-C .................................................21 2.2.1 Phân vùng c s d li u....................................................................................21 2.2.2 B t p trung k t n i...........................................................................................21 2.2.3 B m r ng không gian !a lý ..........................................................................22 2.2.4 B ki m soát truy v n .......................................................................................22 2.3 Các s n ph"m có tr phí liên quan n DB2............................................................22 2.3.1 DB2 Connect.....................................................................................................22 2.3.2 WebSphere Federation Server ..........................................................................22 2.3.3 WebSphere Replication Server .........................................................................23 Ch ng 3 - Cài t DB2 ..................................................................................................24 3.1 Các i u ki n tr c khi cài #t ................................................................................24 3.2 Quy n cài #t h i u hành......................................................................................24 3.3 Cài #t theo h ng d$n t%ng b c...........................................................................25 3.4 Cài #t hàng lo t (Silent Install) ..............................................................................28 Bài t p nhanh #1: Cài #t DB2 Express-C và t o ra c s d li u m$u ........................30 Ch ng 4 - Các công c DB2 ..........................................................................................32 4.1 Trung tâm i u khi n (Control Center) ...................................................................33 4.2 Nh p l nh tr c ti p...................................................................................................36 4.3. Trình tr giúp SQL.................................................................................................38 4.4 Trình bày nút Show SQL .........................................................................................40

Nh p môn H qu n tr c s d li u DB2

3

Bài t p nhanh #2 - T o m t CSDL m i v i Trung tâm i u khi n ..............................40 4.5 T o k!ch b n.............................................................................................................42 4.5.1 Các k!ch b n SQL .............................................................................................42 4.5.2 Các k!ch b n v i h i u hành ..........................................................................44 Bài t p nhanh #3 – T o m t k!ch b n cài #t cho c s d li u EXPRESS ..................45 4.6 Trung tâm tác v (Task Center) ...............................................................................48 4.6.1 C s d li u Tools Catalog .............................................................................48 4.7 Nh t ký.....................................................................................................................49 4.8 Giám sát tình tr ng (health) .....................................................................................51 4.8.1 Trung tâm tình tr ng .........................................................................................51 Ch ng 5 - Môi tr ng c a DB2...................................................................................54 5.1 C u hình DB2 ..........................................................................................................62 5.1.1 Các bi n môi tr ng .........................................................................................63 5.1.2 T p c u hình qu n tr! c s d li u (dbm cfg)..................................................63 5.1.3 T p c u hình c s d li u (db cfg) ..................................................................65 5.1.4 & ng ký lý l!ch DB2 (profile)...........................................................................66 5.2 Máy ch qu n tr! DB2..............................................................................................67 Ph n II – H c DB2: Qu n tr C s d li u ..................................................................68 Ch ng 6 - Ki n trúc c a DB2 .......................................................................................68 6.1 Mô hình x lý c a DB2 ...........................................................................................68 6.2 Mô hình b nh c a DB2.........................................................................................69 6.3 Mô hình l u tr c a DB2.........................................................................................70 6.3.1 Trang và ph m vi ..............................................................................................70 6.3.2 Vùng nh m...................................................................................................70 6.3.3 Các không gian b ng.........................................................................................73 Ch ng 7 – K t n i máy khách DB2..............................................................................77 7.1 Tr giúp c u hình.....................................................................................................77 7.1.1 Nh ng cài #t b t bu c trên máy ch ...............................................................77 7.1.2 Nh ng cài #t c n thi t trên máy khách............................................................79 7.1.3 T o lý l!ch cho máy khách và máy ch .............................................................82 Bài t p nhanh #4 – S d ng Tr giúp thi t l p c u hình ...............................................86 Ch ng 8 - Làm vi c v i các i t ng d li u ............................................................88 8.1 S ........................................................................................................................88 8.2 B ng .........................................................................................................................88 8.2.1 Ki u d li u.......................................................................................................89 8.2.2 C t khoá chính (Identity columns) ...................................................................91 8.2.3 Các t ng tu n t (Sequence object) ...........................................................92 8.2.4. Các b ng danh sách h th ng...........................................................................92 8.2.5. Khai báo các b ng t m th i..............................................................................93 Bài t p nhanh #5 - Kh i t o m t b ng m i....................................................................94 8.3 Các khung nhìn (Views) ..........................................................................................96 8.4 Các ch' m c (Index).................................................................................................96 8.4.1 Tr giúp thi t k (Design Advisor)...................................................................97 8.5 Tính toàn v(n tham chi u.........................................................................................98 Ch ng 9 – Công c di chuy n d li u ........................................................................100 9.1 Công c EXPORT (xu t) .......................................................................................101 9.2 Công c IMPORT (nh p).......................................................................................102 9.3. LOAD (n p) ..........................................................................................................102 9.4 Công c db2move ..................................................................................................104 9.5 Công c db2look ....................................................................................................104

..........................................4 Nh t ký c s d li u t% Trung tâm i u khi n.2 *n !nh con tr) ................................118 Ch ng 11 – Sao l u và khôi ph c.....................2 Khôi ph c c s d li u .......................................121 11..........................141 13..4.7 Khôi ph c c s d li u .143 13....................2 Quy n h n ........140 13.......146 13....133 12.....137 Ch ng 13 – Truy c p ng th i và khóa ..............................................................3 Các v n khi không ki m tra truy c p ng th i .............2 L nh RUNSTATS...........................4 Các công vi c duy trì t% Trung tâm i u khi n......................6 Sao l u c s d li u.......................1 Nh t ký c s d li u ...............................148 13..................................122 11...........................................................................................117 Bài t p nhanh # 7: Cho phép và h y b) (phân quy n) quy n ng i s d ng............122 11.......................................3...........................129 11.....................................................................................................4....142 13....................................................................................115 10...................................................................132 12...4 Nhóm PUBLIC ......142 13....................................3....1.............................................................147 13....................................7.................1 &!nh danh.........Nhi m v b o trì .....145 13.................5 Các tham s c a nh t ký .....................................4 & c l#p l i......................................................................................................125 Bài t p nhanh #8 ...................................................139 13......129 11.........121 11.............................................. REBIND ...................................................................................8 Các ho t ng khác v i BACKUP và RESTORE...4....122 11..............................................2 Truy c p ng th i...............................................................................3 & c không l#p l i ............3..............................................................4 Các m c cô l p...............132 12................1......................129 11...1 Các giao d!ch.............................................................................................................6 Ki m soát khóa ...............................7.112 10....1 M t d li u c p nh t .......................................................144 13.....................................................................................................................................................114 10...................3 & c +n !nh........................................................Trích xu t DDL t% c s d li u EXPRESS .........................3 Quy n qu n tr! c s d li u DBADM.......4 & c th%a..1.........2 & c v i không cam k t ................................................................3...............................115 10........................................................................................................................................................................................6 Ki m tra vi c c p quy n và quy n..........................7 Xem xét quy n trên nhóm...107 Ch ng 10 – B o m t c s d li u....................5 L nh GRANT và REVOKE...............................................................................................139 13....................3 BIND/REBIND............................................................................. RUNSTATS.............................................................145 13.........................................................................5 Khóa leo thang .....................................................111 10...................................................144 13...131 12........................................................................124 11.......4..L p l!ch sao l u .........................................................................................3............................3 Các ki u ghi nh t ký............................1 & c v i không cam k t ................................................................................1 Ghi tu n t quay vòng........................4.148 ..................................................................1........131 12.1 Các ki u khôi ph c d li u ................................................................................127 11.............................................................2 Nh t ký l u tr .............................................................................................144 13..................1 REORG.............................141 13......................7 Ch khóa................4..115 10............................................................145 13...........123 11.............................................2 Các ki u nh t ký.................................................................................................................................123 11.................1 L nh REORG............3......................................6 &#t m c cô l p ..................................................................110 10..................130 Ch ng 12 .....131 12...2 Các l a ch n b o trì ............................................................Nh p môn H qu n tr c s d li u DB2 4 Bài t p nhanh #6 ....................5 So sánh các m c cô l p d li u............................................135 Bài t p nhanh #9 – C u hình vi c b o trì t ng ...................................................................

......................159 14..................178 16.....................................................................173 Bài t p nhanh #11 ..2.............................................200 ........175 Ch ng 16 – SQL/XML và XQuery ..7 Câu l nh gán ...........................................2.1 Hàm vô h ng .......154 14......3 Các con tr) (cursor) ..............................................158 14...........................................3........165 Ch ng 15 – Hàm n i tuy n.............2...153 14...............................................................2 Hàm b ng ...............................................3............181 16...........2 B$y s ki n (Triggers) ..159 14..........................1 C u trúc c a th t c ....................................1 Phát tri n ng d ng b.................2...................Nh p môn H qu n tr c s d li u DB2 5 13..........................166 15..3...............................2 C s d li u XML .................6 L i và x lý i u ki n .....................................................................160 14.......................................176 16............ng Trung tâm i u khi n...........................3............5 G i th t c......6 Khai báo bi n ................................149 13.....176 16..........................................................................................................................................................................................161 14.............6 N i (join) v i SQL/XML.....................................179 16.161 14..................................................................................................................... PHP và Ruby...........................150 PH N 3: H C DB2 – PHÁT TRI N NG D NG ..........................................................ng PHP.199 17..........2.........195 Bài t p nhanh #12 – SQL/XML và XQuery .......................198 17................5 Câu l nh ghép ...............................................................................................................158 14........154 14................1 ......................................................................................................................................1.....................172 15............158 14............................... Triggers).................................. UDF........................................................................4 Chèn các tài li u XML.........2 C s d li u thu n XML .......................................8 Các l nh c p nh t và xóa ..167 Bài t p nhanh #10 ................................170 15....................................................................................................................1......................197 Ch ng 17 – Phát tri n v i Java..........................7 N i (Join) v i XQuery .....177 16......................................2.......1 Hàm n i tuy n SQL ......................152 Ch ng 14 – Các th t c SQL PL.......................Kh i t o UDF s d ng DB2 Developer Wordbench ........3.................3 &!nh ngh-a XQuery.........................................188 16..........................162 14.......................4 Chú thích trong th t c SQL PL ............2...............172 15..............................................4 &i u khi n lu ng.....2............160 14.......194 16...............193 16.7 SQL ng ...........................................163 14............................................ng Java ..............................................2 M t s khái ni m v th t c SQL PL ............Kh i t o m t b$y b..........................198 17....................................................................................3 Các lo i tham s ........3................2 Trình i u khi n JDBC ki u 4 ..............2 Khái ni m c b n v XPath .....................................................................2.............................. hàm ng i dùng nh ngh a..........................1 Trình i u khi n JDBC ki u 2 (type 2)............................................177 16........5 Truy v n d li u XML.......3.........3 Hàm ng i dùng !nh ngh-a (UDF)........................................185 16.......................184 16.................1 S d ng XML v i các c s d li u......................................................9 Ch' m c XML ..........2 Nh ng thu c tính tùy ch n c a th t c....178 16.......................1 c s d li u h tr XML .......................u i m c a công ngh pureXML trong DB2 9 ............3............................................................................................3.....2..............................167 15......................................1 Các lo i b$y s ki n......................................................9 Truy c p ng th i và th c ti n khóa t t nh t .............2 Phát tri n ng d ng b..............................................1 DB2 Developer Workbench.......................................................................160 14...................................166 15.......................3...198 17.....3...........3 XML trong DB2........................................................................................................................................ các hàm x ký các s! ki n b"y (Inline SQL PL..........8 V n khóa ph thu c và phát hi n.....................1...........................................194 16................................................................................................................................................................................................2 T o m t th t c l u trong DWB ......

...205 A........................................................200 17.................................................................205 A.......................................................................1 Thêm thông tin v mã các l i.....................................................................................................4 db2diag........2 SQLCODE and SQLSTATE ......................................................................1 L a ch n k t n i DB2 cho PHP..................3 Phát tri n ng d ng Ruby trên n n Rails ...........206 Các trang web .................206 A........................................2....206 A.............203 A...............208 .......3 Nh t ký khai báo qu n tr! DB2 ............................Nh p môn H qu n tr c s d li u DB2 6 17...........................................................2...................................log...............................................203 17......................................207 Sách.......3............................201 17......................................................................................204 A........5 Theo v t CLI ..........2 /ng d ng công ngh Zend Core dành cho IBM..............................................1 B công c phát tri n DB2 trên n n Rails ..............6 Kh c ph c và s a l i trong DB2 ...............................................................................................

t i M$. i5/OS. ho c c hai. Linux là nhãn hi u ng ký c a Linus Torvalds t i M$. tính t ng thích ho c b t k th c m c nào liên quan n s n ph m không ph i c a IBM. ng ký c a h&. Các thông tin trong tài li u này liên quan n s n ph m không ph i c a IBM ã có c qua các nhà cung c p s n ph m ó. các n c khác. các n khác. IBM không cam k t nh ng thông tin trong tài li u này là m i nh t. ON L6G 1C7 Canada Không c sao chép ho c s d ng d i b t k d ng th c nào ho c d ch sang ngôn ng khác toàn b ho c b t c ph n nào c a tài li u này mà không c s cho phép tr c c a ng i gi b n quy n trên. ho c c hai. Inc. s n ph m. IBM giành quy n c thay i và không b t bu c ph i thông báo cho b t c ai v s thay i này. các n c khác. Java và t t c các nhãn hi u Java là nhãn hi u hàng hóa Microsystem. IBM không ki m tra các s n ph m ó và không kh!ng nh v tính chính xác khi th c hi n. a . và z/OS là nhãn hi u hàng hóa ã ng ký c a t#p oàn IBM t i M$. ho c c hai. ho c d ch v có th là nhãn hi u Trích d%n các s n ph m và d ch v c a IBM trong tài li u này không có ngh'a là IBM chúng n t t c các qu c gia mà IBM có ho t ng. DB2. IBM. Thông tin trong tài li u này có th thay i mà không c n báo tr c. Các câu h"i v kh n ng c a các s n ph m không ph i c a IBM c n c g i cho các nhà cung c p s n ph m ó. WebSphere. c nêu ra ây và không ch u IBM không m b o hay i di n cho nh ng n i dung trách nhi m v tính th ng m i ho c tính h p lý cho b t kì m c ích nào. IBM Canada 8200 Warden Avenue Markham. ng ký c a công ty Sun c Microsoft và Windows là nh%n hi u hàng hóa c a t#p oàn Microsoft t i M$. DB2 Universal Database. bi u t ng IBM. DB2 Connect.Nh p môn H qu n tr c s d li u DB2 7 V cu n sách này Thông cáo và Nhãn hi u hàng hóa Copyright IBM Corporation 2007 All right Reserved. pureXML. IBM cho r ng mình không có trách nhi m v i b t k l i nào trong tài li u này. Tên c a công ty khác. ho c c hai. các n c khác.

giúp ( cài t và t o m i c s d li u.db2x@ca. các i t ng d li u. 6 – 2007 Tháng 7-10 . ki n trúc. M t quy n sách do c ng ng làm và giành cho c ng ng / i ng. Ph n II. PHP và Ruby. phát tri n ng d ng b ng Java. c thi t k b n làm quen v i môi tr ng.ibm.ibm. T ng quan và Cài t.com/db2/express/students. ng i phát tri n ng d ng. truy c#p +ng th i và khóa c a DB2. giám c s n ph m.” Tác gi và nh ng ng i óng góp Nh ng ng i sau ây ã cung c p n i dung và có các óng góp có ý ngh'a cho cu n sách này Tên Raul F. an toàn. C u trúc c a quy n sách này nh th nào? Ph n I. óng góp nh ng n i dung m i nâng cao n i dung hi n t i ho c d ch cu n sách này sang ngôn ng khác. B n có th xem thêm thông tin v ch ng trình này trang DB2 Express-C. Ph l c có các thông tin c n thi t v s a l i. Vi t và ch-nh lý m t cu n sách là vi c làm khó kh n. gi i thích n b n DB2 Express-C là gì. tìm th y trang web c a IBM DB2 Express-C. ho c s. H&c DB2: Phát tri n ng d ng. nhà t v n. chuy n d li u (nh#p và xu t d li u). XQuery. a chwww. làm DB2 Express-C ã có sáng ki n làm quy n sách này cung c p mi0n phí cho c ng +ng.Nh p môn H qu n tr c s d li u DB2 8 Ai nên c cu n sách này? Quy n sách này giành cho b t k ai ang làm vi c ho c mu n làm vi c v i c s d li u. M c ích c a chúng tôi là n i dung cu n sách s. a chwww. t t c các t p c n thi t th c hi n bài t#p này có th tìm th y t p nén expressc_book_quicklabs. giáo viên và sinh viên. gi i thi u h& s n ph m DB2 và các ch c n ng.2007 . Ph n III. c duy trì và m r ng b ng vi c tham gia c a c ng +ng DB2 Express-C. N u b n mu n óng góp ý ki n. bao g+m th t c. k t n i t* xa.zip i kèm theo sách này.com/db2/express Tài li u c a cu n sách c. và khám phá các công c s)n có c a DB2. Cu n sách này c.ng giúp b n chu n b cho bài ki m tra c a ch ng trình “DB2 v i / i h&c”. ch ng trình y c a nó bài h&c v i 16 gi trên l p. hàm do ng i dùng nh ngh'a.ibm. và các công vi c b o trì thông th ng. SQL/XML. Chong Ian Hakes Rav Ahuja / nv IBM IBM IBM Ch c danh G/ ch ng trình “DB2 v i / i h&c” C ng +ng DB2 Express-C G/ s n ph m DB2 Tài li u óng góp B n th o t t c các ch ng Xem l i và s a ch a Xem l i. nh qu n tr h c s d li u (DBAs).ng c s d ng làm bài gi ng c a ch ng trình “DB2 v i / i h&c” (DB2 on Campus).html. các b%y s ki n. có h u h t các ch ng. ki n trúc ph n m m. Bài t#p ây là bài t#p nhanh.com v i tiêu “DB2 Express-C book changes. làm n g i k ho ch th c hi n v a ch. sao l u và khôi ph c. c#p nh#t và trình bày cu n sách Ngày Tháng 5 – 2007 Tháng 5. H&c DB2: Qu n tr c s d li u.

Ted Wasserman. và Matthía Nicola v i bài trình bày v pureXML. Clara Liu và Paul Yip phòng thí nghi m IBM Toronto.Susan Visser giúp ( xu t b n cu n sách này .Kevin Czap và Grant Hutchingson v i các tài li u k$ thu#t v phát tri n DB2 .Nh p môn H qu n tr c s d li u DB2 9 L ic m n Chúng tôi chân thành c m n các cá nhân sau ây v i s tr giúp .Katherine Boyachok v i thi t k bìa . ng i ã phát tri n ng d ng trong khuôn kh cu n sách này Don Chamberlin và Cindy Saracco v i các bài báo c a h& v XQuery ng trên developerWorks. .

Tp HCM /H Khoa h&c T nhiên. v i ch t l ng ch c ch n t t h n. Tp HCM /HBK /à N)mg /H Bách Khoa Hà N i /H S ph m K$ thu#t. Tp HCM /H Khoa h&c T nhiên. dù có th còn nhi u khi m khuy t. VNU Hà N i H&c Vi n công ngh BCVT /H Khoa H&c Tu Nhien. Vì trình và th i gian h n ch . Tp HCM /H Công ngh Thông tin.Nh p môn H qu n tr c s d li u DB2 10 L i c m n b n ti ng Vi t / có c b n d ch ti ng Vi t này. /à N)ng /H Khoa h&c Hu /H Bách Khoa Hà N i /H Công ngh Thông tin. Tp HCM /H Bách Khoa Hà N i Tru ng Ð i H&c Công Ngh . Tp HCM /H Bách khoa Hà N i /H S ph m K$ thu#t. nh ng r t mong các b n ón nh#n nó nhi t tình và óng góp ý ki n cho b n d ch hoàn thi n h n. HCM /H Bách khoa Hà N i / i h&c Duy Tân. /à N)ng /H Khoa h&c T nhiên. Tp HCM /H Công ngh Thông tin. Danh sách sinh viên tham gia d ch và hi u ính: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 H và tên Bùi Thanh S n Châu Uyên Minh / ng Chi n Công / Bá Lâm / Tu n Anh / Tu n Anh Hà Thúy H ng Hà Tu n Trung Hà Tu n Trung Hoàng Minh Hi n Hu nh H u Hi p Hu nh Minh Tân Lê Anh / c Lê Bá Tr&ng Lê Hu nh Công Th o Lê Nguy0n Thúy An Lê Thành Huy Ngô Phi Thành Nguy0n Anh Khoa Nguy0n Chi n Th ng Nguy0n H i Phong Nguy0n Hoàng Minh Qu c Nguy0n Hùng Thông Nguy0n H u Th& Nguy0n L ng S n Nguy0n Minh Châu Nguy0n Minh Tu n Nguy0n Minh Tu n Nguy0n Ng&c Duy Nguy0n Ng&c Trí Nguy0n Thành Trung Nguy0n Th Phúc Nguy0n Th Di u H ng Nguy0n Th H+ng Hà Nguy0n Th Kim Ph ng V. r t nhi u các b n sinh viên ã tham gia d ch và hi u ính. Tp HCM /H Bách Khoa Hà N i /H Khoa h&c T nhiên. /à N)ng /H Khoa h&c T nhiên. Tp. Th Lan Chi Nguy0n Trang Nguy0n Trung Hi u Nguy0n V n Nam Nguy0n V n Nam Tr ng /H Bách Khoa Hà N i H&c vi n Công ngh B u chính Vi0n thông TPHCM Coltech Hà N i /H Bách khoa Hà N i /H Khoa h&c T nhiên. Tp HCM /H C n Th / i h&c Duy Tân. Tp HCM /H Khoa h&c Hu /H Khoa h&c Hu . HCM /H Khoa h&c T nhiên. Chúng ta t hào r ng ây úng là m t quy n sách do c ng +ng và vì c ng +ng. Tp. Tp HCM / i h&c Duy Tân. ti p t c chuy n n c ng +ng nh ng n ph m m i. Hy v&ng r ng các b n sinh viên s. Tp HCM /H Công ngh Thông tin.

Nh p môn H qu n tr c s d li u DB2 11 41 42 43 44 45 46 47 48 49 50 51 52 53 Nguy0n Xuân Tr ng Ph m Ng&c Huy Ph m Th Minh Hi n Ph m V$ Tu n Quách Tiêu Thu#n Thái Quang Hòa Thái Tuy n Tr n Anh Huy Tr n Th Thúy Trinh Tr n V n T n Tr n V n T n Tr n V ng Trung Tu n Vi t /H Khoa h&c T nhiên. Tp HCM / i h&c Công ngh -/ i h&c qu c gia Hà n i /H Bách khoa /à N)ng Trung tâm Công ngh Ph n m m ./H C n Th /H Khoa h&c Hu / i h&c Nông Lâm tp. /à N)ng /H Bách Khoa /à N)ng /H Bách khoa Hà N i . HCM / i h&c Duy Tân.

chúng tôi ti p t c a ra nh ng sáng t o công ngh v qu n tr thông tin. K$ n ng và s hi u bi t nh#n c t* cu n sách này có liên quan r t nhi u n các b n DB2 tiên ti n h n trên Linus. Có r t nhi u sáng t o công ngh hi n di n trong DB2 Express-C. gi m chi phí h t ng. sáng t o ã tr thành c i Sáng t o là s ngu+n c a s phát tri n c s d li u. Chúng tôi s. C s d li u Ban Qu n tr thông tin. có l i t* s hi u bi t c a b n. giúp b n hi u các khái ni m c a DB2 và cho phép b n phát tri n k$ n ng qu n tr c. b cu n hút khi &c quy n sách này – chúng tôi ch. nó là c s d li u lai u tiên qu n lý c d li u quan h và d li u XML d i d ng b m sinh.Nh p môn H qu n tr c s d li u DB2 12 L i nói u t phá c a các ti n b công ngh . qu n tr nh ng d li u t i quan tr&ng c a h&. V i vi c a ra b n DB2 Express-C.ng nh phát tri n ng d ng DB2.c n nh n chu t vào nút Help. DB2 Express-C c xây d ng trên n n công ngh “Viper”. IBM chúng tôi v%n r t tin t ng vào s h tr và c v. kinh nghi m c a các b n. công ngh n i ti ng DB2 ã s)n sàng cho các doanh nghi p v*a và nh" . nó s. T i IBM. nh v#y nh ng ng i khác s. không trình bày chúng ây. Không gi ng v i h qu n tr c s d li u c a các hãng th ng m i khác. Tuy nhiên DB2 không ch. Tôi mong các b n c#p nh#t. M c dù DB2 Express-C không ph i là s n ph m mã ngu+n m . t* c ng +ng. n u b n c n tr giúp h tr t* IBM. /i u này làm cho DB2 tr nên r t lý t ng cho các xu h ng m i c a ng d ng SOA và Web 2. DB2 Express-C trao cho b n s c m nh duy nh t v t trên t t c các l a ch&n cùng lo i. m t s khác l i h ng t i gi m thi u gánh n ng qu n tr . Là ng i i tiên phong trong k$ thu#t qu n tr d li u trong nh ng n m 60 và 70. b n ch. bi u hi n b ng hàng nghìn ng ký phát minh v qu n tr d li u c a nh ng nhà công ngh c a IBM. Tôi vui m*ng c th y cu n sách này do các thành viên c a c ng +ng DB2 Express-C phát tri n và phát hành mi0n phí cho c ng +ng.xin mô t m t v n hóc búa nh t. K t qu là. Nhóm ph n m m IBM . M t s trong chúng nh m vào kh n ng tiên ti n m i. m t s các t ch c l n nh t hành tinh ngày nay ã tin t ng vào các s n ph m c a IBM nh DB2 v#n hành các gi i pháp có nhu c u cao nh t.dành cho các doanh nghi p l n. m t s khác n a l i c i thi n hi u n ng. và giúp d ch cu n sách này sang các ngôn ng khác. hy v&ng các b n s. Arvind Krishna Phó ch t ch. làm giàu thêm ki n th c c a cu n sách v i hi u bi t.và không b t bu c ph i m t chi phí! M c dù còn có các s n ph m mi0n phí hay các ph n m m ngu+n m khác. Cu n sách này dùng giúp nh ng ng i m i b t u s d ng DB2 Express-C. DB2 Express-C không gi i h n dung l ng d li u l u tr trong c s d li u hay s l ng c s d li u b n có th t o ra trong h th ng. UNIX và Windows.0 trong ó các lu+ng d li u XML là r t nhi u. Và t t nhiên.

DB2 Express-C là gì? DB2 Express-C là m t s n ph m thu c dòng IBM DB2 – ph n m m máy ch d li u qu n lý c d li u quan h và d li u XML. say mê tìm hi u công ngh mu n có m t máy ch d li u d0 s d ng xây d ng ng d ng Web 2. các nhà cho thuê ph n c ng. s d . tri n khai. pureXML là m t công ngh c tr ng c a DB2 dùng l u tr và x lý các v n b n XML b m sinh. b nh 4GB. hay s d ng các gi i pháp c s d li u nh : • • • • • • Các nhà phát tri n ng d ng có nhu c u v m t ph n m m c s d li u chu n m xây d ng các ng d ng c l#p.ng bao g+m pureXML. Ng i c v n. ánh giá ho c th nghi m. Nh ng ng i yêu thích c s d li u. mu n óng gói m t máy ch d li u v i y tính n ng nh là m t ph n trong các gi i pháp c a h&. không h n ch và d0 s d ng.1 T do phát tri n. DB2 Express-C có th ch y trên c h th ng 32-bit ho c 64-bit c a Linux hay Windows. UNIX và Windows. Nó c t i u cho các h th ng t i a 2 b x lý. phát tri n k$ n ng. DB2 Express-C là n b n DB2 c dùng mi0n phí. DB2 Express-C có y các tính n ng c b n nh các n b n DB2 th ng m i trên n n Linux. phát tri n. d ng khách-ch . ISVs – các nhà cung c p ph n m m c l#p. giáo viên hay nh ng h&c gi mu n có m t máy ch d li u linh ho t gi ng d y.0 hay các ng d ng th h sau. Sinh viên. tri n khai và phân ph i…không có gi i h n! Các t t ng c t lõi c a DB2 Express-C g+m: • T do phát tri n: N u b n là ng i phát tri n ng d ng và c n m t c li u cho ng d ng c a mình. Ngh'a là c ng +ng nh ng ng i s d ng DB2 Express-C k t h pl i h tr l%n nhau c tr c tuy n và không tr c tuy n. b n có th s d ng DB2 Express-C.Nh p môn H qu n tr c s d li u DB2 13 1 Ph n I – T ng quan và Cài Ch t ng 1 . Các công ty m i thành l#p. v*a và nh" c n m t máy ch d li u tin c#y cho công vi c và ng d ng c a h&. h&c t#p. và không yêu c u b t k m t b nh chuyên d ng hay các cài t h th ng nào khác. 1. c s h t ng hay nh ng ng i cung c p gi i pháp. nh ng ng i c n m t máy ch d li u m nh t h&c t#p. và ki n trúc s công ngh thông tin. C ng +ng DB2 Express-C bao g+m các cá nhân và các công ty thi t k . Ch C trong DB2 Express-C là vi t t t c a Community (C ng +ng). qu n tr d li u. DB2 Express-C c. nghiên c u. d ng n n web ho c các ng d ng l n.

Nh p môn H qu n tr c s d li u DB2

14

• •

T do tri n khai: N u b n ang làm vi c trong l'nh v c s n xu t và c n m t c s d li u l u tr các thông tin quan tr&ng, b n có th dùng DB2 Express-C. T do phân ph i: N u b n ang phát tri n m t ng d ng hay m t công c c n óng gói v i m t máy ch d li u, b n c.ng có th dùng DB2 Express-C. DB2 Express-C mi0n phí ngay c khi c óng gói vào trong ng d ng c a b n, c phân ph i m i khi b n bán ng d ng c a mình. B n ch- c n ng ký v i IBM tái phân ph i DB2 Express-C. T t nhiên vi c ng ký c.ng hoàn toàn mi0n phí. Không gi i h n: Trong khi các i th c nh tranh a ra các gi i h n v kích th c c s d li u, nh ng DB2 Express-C thì không t gi i h n nào c . C s d li u c a b n có th c ti p t c m r ng mà không h vi ph m i u kho n s d ng. C.ng không có gi i h n nào v s l ng k t n i hay s ng i s d ng trên m i máy ch .

1.2 H tr k thu t ng câu h"i N u b n có b t k th c m c k$ thu#t nào v DB2 Express-C, b n có th c a b n lên di0n àn c a DB2 Express-C. Di0n àn này c i u hành b i m t i DB2 Express-C, nh ng chính c ng +ng s, là nh ng ng i gi i áp trên c s t nguy n. IBM c.ng cho phép ng i dùng mua b n quy n theo n m v i giá th p (còn c g&i là B n quy n 12 tháng hay B n quy n th i h n c nh FTL (Fixed Term License)). Vi c mua này s, cho phép ng i dùng c h tr k$ thu#t 24×7 c.ng nh c#p nh#t ph n m m. V i kho n phí th p h ng n m ($2,995 trên m t máy ch m t n m M$ - có th thay i các n c khác) b n s, c h ng các quy n l i v h tr và b o trì ph n m m cho máy ch DB2 Express-C, b n c.ng có thêm hai tính n ng n a là: tính s)n sàng ph c h+i sau khi g p s c (HARD - High Availability Disaster Recovery) và di trú d li u truy v n (SQL replication tái t o l i d li u v i các máy ch DB2 khác). 1.3 Các máy ch DB2 c T t c các n b n máy ch DB2 u có chung các thành ph n lõi; Các n b n này óng gói thu#n ti n ng i s d ng có th l a ch&n các tính n ng c n thi t v i giá c h p lý. Hình 1.1 th hi n s khác nhau gi a các n b n c a DB2.

Hình 1.1 - Các máy ch DB2 Nh trên hình 1.1, n b n DB2 Express-C c.ng gi ng nh n b n DB2 Express ch- thi u i m t s thành ph n. DB2 Express-C là hoàn toàn mi0n phí. C.ng nh ã nói trên, ng i dùng luôn c s)n sàng h tr k$ thu#t t* di0n àn, ho c có th nh#n s h tr chính th c 24x7 c a IBM n u tr phí 12 tháng.

Nh p môn H qu n tr c s d li u DB2

15

Hình 1.1 c.ng cho th y kh n ng nâng c p t* DB2 Express-C lên b t kì n b n máy ch DB2 nào khác, vì t t c các máy ch DB2 u có chung thành ph n lõi. /i u này có ngh'a là t t c các ng d ng c phát tri n trên m t n b n v%n s, ho t ng trên các n b n khác mà không c n ph i ch-nh s a. Và b t kì k$ n ng nào b n h&c c t* m t n b n u áp d ng c cho các n b n khác. 1.4 Máy khách DB2 M t máy khách DB2 bao g+m các ch c n ng c n thi t k t n i v i máy ch DB2. Tuy nhiên, không ph i lúc nào c.ng c n cài t m t máy khách DB2. Ví d , m t ng d ng JDBC (Java DataBase Connectivity) ki u 4 có th n i th!ng t i máy ch DB2, ch- c n có trình i u khi n thích h p. Máy khách DB2 g+m nh ng lo i sau: • Máy khách DB2: y nh t, bao g+m các công c + h&a, các trình i u khi n. k t n i, c.ng bao • Máy khách DB2 runtime client: Có các ch c n ng c b n g+m các trình i u khi n. • Máy khách DB2 runtime k t h p Mô- un cho Windows: c s d ng ch y u trên máy khách DB2 runtime nh là m t ph n cài t cho các ng d ng c a Windows. Hình 1.2 cho ta th y các máy khách khác nhau và các trình i u khi n s)n có.

Hình 1.2 - Các máy khách DB2 và các trình i u khi n Trên ph n bên trái c a hình 1.2, t t c các máy khách DB2 và trình i u khi n c th hi n. M c dù t t c các máy khách DB2 u bao g+m trình i u khi n c n thi t, trong DB2 9 chúng tôi v%n cung c p nh ng trình i u khi n riêng bi t. Các máy khách DB2 và các trình i u khi n u mi0n phí và có th c t i v t* trang web DB2 Express-C. Các máy khách và các trình i u khi n có th c s d ng k t n i n máy ch DB2 trên n n Linux, Unix, ho c Windows. / k t n i n DB2 trên máy ch z/OS® ho c DB2 trên máy ch i5/OS®, b n c n ph i thông qua máy ch k t n i DB2 (DB2 Connect n m gi a hình 2). Chúng ta s, th o lu#n v ph n m m DB2 Connect trong Ch ng 2.

Nh p môn H qu n tr c s d li u DB2

16

1.5 T do phát tri n ph n m m ng d ng DB2 t o ra m t môi tr ng phát tri n ng d ng d a trên các chu n và trong su t i v i h& s n ph m DB2. Vi c s d ng SQL chu n trong các dòng s n ph m DB2 s, cung c p m t t#p các giao di n l#p trình ng d ng (API) thông d ng cho vi c truy nh#p c s d li u. Thêm vào ó, m i s n ph m DB2 cung c p các b ti n-d ch (pre-compiler) cho phép nhà phát tri n nhúng các câu l nh SQL t'nh và ng trong các ch ng trình ng d ng kh chuy n. DB2 còn có m t s)n công c qu n lý .NET có th tích h p v i các công c Microsoft® Visual Studio. Các ngôn ng và các chu n có th c s d ng v i DB2 là: • Ruby trên n n Rails • C/C++(ODBC và SQL nhúng) • JDBC và SQLJ • COBOL • Borland • Python • PHP • Perl • Ngôn ng .NET • OLE-DB • ADO • D ch v Web (Web Service) • SQL • Microsoft Office: Excel, Access, Word 1.6 Phiên b n và n b n DB2 (version and edition) N u b n m i làm quen v i DB2, b n có th b b i r i m t chút v s khác bi t gi a các phiên b n DB2 (version) và các n b n DB2 (edition). Vài n m m t l n, IBM công b m t phiên b n m i c a DB2. M t phiên b n bao g+m các a nh ng c i ti n áng k vào s n ph m. Hi n t i, phiên b n DB2 8 tính n ng m i và và DB2 9 c h tr chính th c b i IBM. M t phiên b n c.ng có th có m t vài l n rõ phát hành, có th bao g+m m t vài ch c n ng m i nh ng thông th ng không ràng nói r ng ây là m t phiên b n m i. Ví d 8.1 và 8.2 là các l n phát hành v i phiên b n DB2 8. Trong th i gian v*a qua, IBM th ng a ra m t l n phát hành m i c a DB2 m i n m m t l n, tuy nhiên nh ng phiên b n m i th ng c a ra cách nhau t* 2-3 n m. L n phát hành m i nh t n th i i m hi n t i, V9.1 (tr c ây c g&i là DB2 “Viper”) tr thành phiên b n chính th c vào mùa hè n m 2006. Khi cu n sách này c vi t (tháng 9/2007), l n phát hành ti p theo (có tên là DB2 “Viper 2”) ã có phiên b n beta. M i l n phát hành c.ng có th ch a nhi u m c ch-nh s a, th ng ch a nh ng ph n vá l i t c là t ng ng v i các ch ng trình s a l i (fixpack), và r t ít khi ch a nh ng tính n ng m i. T i th i i m này, phiên b n, phát hành, ch-nh s a (VersionRelease-Modification/ V-R-M) c a DB2 là 9.1.2 t ng ng v i phiên b n 9.1 cùng v i b ch ng trình s a l i 2. Trên m t n i dung khác, các n b n là nh ng l a ch&n ho c nhóm các gói tính n ng trong m i phiên b n. Nh ã c#p, m t n b n là m t gói nh ng ch c n ng khác nhau v i giá thành và b n quy n xác nh. DB2 phiên b n 9 (c.ng c bi t t i v i tên DB2 9) có nhi u n b n; ví d : DB2 express-C 9, DB2 Express 9, DB2 Workgroup 9, và DB2 Enterprise 9 (xem hình 1.1)

Nh p môn H qu n tr c s d li u DB2

17

1.7 Chuy n sang n b n DB2 khác Khi c s d li u c a b n c n m r ng, có th b n s, c n nâng c p n b n DB2 h tr c u hình ph n c ng l n h n. N u tr ng h p này x y ra, r t d0 dàng nâng c p lên m t n b n khác c a DB2: • N u b n nâng c p lên m t n b n DB2 khác trên cùng m t máy, cài t n b n DB2 m i è lên DB2 Express-C, cùng v i b n quy n t ng ng. C s d li u c a b n s, không b xóa (nh ng chúng ta v%n nên sao l u c s d li u tr c khi nâng c p). • N u b n nâng c p DB2 trên m t máy m i, l n h n và s d ng chung m t h i u hành v i máy c., hãy cài t n b n DB2 m i trên máy m i, sao l u d li u trên máy c. và khôi ph c l i nó trên máy m i. B n c.ng có th l u các c u hình trên máy c. (dbm cfg) và cài t c u hình này trên máy m i. Các l nh sao l u và c nói rõ h n trong Ch ng 11 Sao l u và Khôi ph c, dbm cfg khôi ph c s, s, c nói rõ h n trong Ch ng 5, Môi tr ng DB2. • Trong b t kì tr ng h p nào, ng d ng c a b n u không ph i s a ch a s d ng DB2. 1.8 B o trì DB2 Express-C Nh ã nói tr c ây, có hai l a ch&n h tr cho DB2 Express –C: 1. Mua m t b n quy n 12 tháng. /i u này s, cung c p cho b n h tr 24x7 t* b ph#n h tr k' thu#t c a IBM, +ng th i còn cho b n kh n ng cài t các c#p nh#t c a DB2 (còn c g&i là các ch ng trình s a l i fixpack). 2. S d ng di0n àn c ng +ng DB2 Express-C tr c tuy n. Cách này hoàn toàn mi0n phí, tuy nhiên b n s, không có c s h tr chính th c nào t* IBM. /+ng th i, v i cách này, IBM không cam k t cung c p nh ng ch c n ng m i và nh ng b n vá l i nh th i gian ã nh. / nh ngh'a v m t ch ng trình s a l i, c nói n trong Ch ng 2, c.ng s, không có ý ngh'a ây, thay vì v#y m t b n cài t c c.ng c p trên trang web cho các ng i dùng t i m i c a DB2 Express-C s, v . Khi IBM a ra b t kì s ch-nh s a m i nào trong DB2, b n có th tìm th y b n cài t m i này và thay th cho b n DB2 c. b n ang dùng. 1.9 M t s ph n m m mi n phí liên quan T t c các ph n m m có th c t i t* trang t i ph n m m c a DB2 Express-C (www.ibm.com/db2/express/download.html) u là ph n m m mi0n phí. Bên c nh nh ng b n DB2 Express-C (cho Linux và Windows, c ki n trúc 32 và 64 bit), còn có nh ng ph n m m h u d ng có th c t i và s d ng mi0n phí nh : • DB2 Developer Workbench • DB2 9 Embedded Application Server • DB2 9 Net Search Extender Ngoài ra b n có th t i v b công c kh i u d a trên DB2 Express-C t* trang web IBM Alphaworks (www.alphaworks.ibm.com/datamgmt). B công c này bao g+m: • Starter toolkit for DB2 on Rails • Web 2.0 Starter Toolkits for DB2 1.9.1 DB2 Developer Workbench (công c phát tri n) DB2 Developer Workbench (DBW) là m t môi tr ng phát tri n tích h p m nh (IDE) cho phép b n t o ra, s a ch a, g( r i, tri n khai và ki m tra các th t c c l u tr SQL PL và Java, c.ng nh các hàm do ng i dùng nh ngh'a (User defined function UDFs), các ng d ng SQLJ, kh i t o và th c thi các câu l nh SQL và các truy v n XML. Công

b thích nghi (adapter) DB2 v i Rails. Nó giúp cho b n tri n khai các yêu c u ph n m m. • DB2WebServer. m t ng d ng t ng tri n khai các d ch v web . PHP và Ruby. C hai ng d ng u d a trên Dojo h tr y kh n ng n i b#t c a Ajax và kh n ng m r ng. th o lu#n Ruby trên n n Rails Ch ng 17. nó kh i t o các Atom l y t* các b ng DB2. S phát tri n trong Java.NET t* Microsoft Visual Studio n DB2 Embedded Application Server.9. . 1. PHP và Dojo. Hai trong s các ng d ng trình di0n là Atom Feed Control Panel..4 B công c b t u Rails cho DB2 B công c b t u Rail cho DB2 là m t t#p các s n ph m và công ngh c óng gói ti n l i cho phép t o ra nhanh chóng m t môi tr ng xây d ng các ng d ng Web DB2 s d ng công ngh Ruby trên n n Rails. Các th t c l u tr SQL PL. và nh ng tài li u h&c t#p khác. cung c p cho b n các bài h ng d%n và các b n ng d ng trình di0n (demo).3 DB2 9 Net Search Extender (m r ng tìm ki m trên m ng) V i DB2 9 Net Search Extender b n có th th c thi nhanh và chi ti t các tìm ki m n i dung v n b n (full-text).9. và Web Services Control Panel t o ra các bao ph d ch v Web REST xung quanh các b ng DB2 c a b n.9. Chúng ta s.9.1 1. bên c nh ó là các h ng d%n.1 mà không yêu c u b n ph i mua thêm m t máy ch ng d ng riêng bi t.0 dành cho DB2 B công c b t u Web 2. ví d . bao g+m b t c tài li u XML nào c l u tr b m sinh trong DB 9. Các ng d ng Web c h tr v i DB2 phiên b n 9. trình i u khi n DB2 cho Ruby.Nh p môn H qu n tr c s d li u DB2 18 c này d a trên Eclipse IDE và thay th IBM Development Center c a các phiên b n DB2 tr c ây. Chúng ta s.5 B công c b t u Web 2.0 dành cho DB2 là m t cách d0 dàng b t u v i DB2. 1. 1.2 DB2 9 Embedded Application Server (máy ch nhúng) Embedded Application Server cho phép b n ch y các ng d ng Web c h tr v i DB2 phiên b n 9. th o lu#n DBW trong ch ng 14. T t c các ph n m m c yêu c u bao g+m: DB2 Express-C.1 bao g+m: • Các công c Web DB2 dành cho ng i qu n tr c s d li u n n web.

nh ng là m t ph n c a nh ng n b n DB2 khác.ng bao g+m nh ng tính n ng c thêm vào mi0n phí nh • Phân tán b ng (ph m vi) • Các b ng truy v n c c th hóa (Materializated Query Tables MQT) • K$ thu#t bó a chi u (Multi-dimensional Clustering . MDC. Nh ng tính n ng có trong DB2 Express-C có b n quy n 12 tháng • B ch ng trình s a l i (Fixpacks) • Tính s)n sàng cao và Khôi ph c sau s c (High Availability and Disaster Recovery.MDC) • Tính s)n sàng cao và kh n ng ph c h+i sau s c (HADR) • B t#p trung k t n i (Connection Concenstrator) Các tính n ng c a n b n DB2 Workgroup và Express có phí • Tính s)n sàng cao • Qu n lý công vi c (B t#p trung k t n i. truy v n song song) • S liên k t h p nh t d li u DB2 Các s • • • n ph m có phí có liên quan t i DB2: DB2 Connect WebSphere® Federation Server . chuyên nghi p trong th c thi) • Qu n lý d li u o c • S liên k t h p nh t d li u DB2 DB2 Enterprise c.Nh p môn H qu n tr c s d li u DB2 19 2 Ch ng 2 – Các tính n ng liên quan và các s n ph!m Ch ng này mô t các tính n ng c a DB2 i kèm trong vi c mua gi y phép s d ng 12 tháng c a DB2 Express-C.Máy ch nhóm WebSphere WebSphere Replication Server .HADR ) • Di trú d li u (SQL h p nh t) Nh ng tính n ng không có m t trong DB2 Express-C nh ng có m t trong các n b n DB2 khác là: Các tính n ng c a n b n DB2 Enterpirse có phí: • Tính n ng phân tán c s d li u (DPF) • Tính n ng t i u hóa l u tr d li u (k c nén) • /i u khi n truy nh#p m c cao (an toàn m c cao và c chia nh" t t) • T i u s th c thi (ki m soát các truy v n.Máy ch di trú WebSphere . Ngoài ra còn m t s tính n ng khác không có trong DB2 Express-C. b ki m soát truy v n) • T i u hi u n ng (MQT. trong tr ng h p có tr thêm phí.

nó cung c p m t Tính s)n sàng cao và khôi ph c sau s c là gi i pháp s)n sàng và khôi ph c sau s c cho s suy s p toàn ph n ho c m t ph n.com/software/data/db2/support/db2_9/ a ch- 2. các ch ng trình c t i xu ng và cài t mi0n phí. M t gi i pháp HADR h tr DB2 y cung c p cho b n: 1 Kh n ng ph c h+i c c nhanh. .3 Kh n ng tái t o d li u (di trú d li u) Tính n ng này cho phép tái t o d li u gi a máy ch ngu+n n i các thay i d li u c ghi l i. M t môi tr ng HADR thông th ng bao g+m hai máy ch d li u. Chúng th ng c a ra ba tháng s a l i có th m t l n. cung c p kh! n ng ph c h+i y cho a i mb s c 1 Qu n tr d0 dàng v i các công c + h&a c a DB2 1 T t c các kh n ng trên có nh h ng không áng k v i hi u n ng t ng th c a h th ng 2. / t i ch ng trình s a l i m i nh t.1. xem trang h tr k$ thu#t c a DB2 t i http://www. nh m m c tiêu s a các v n khác nhau c báo cáo sau khi s n ph m c phát hành. Khi các b n ghi nh#t ký d li u c nh#n v . 2.Nh p môn H qu n tr c s d li u DB2 20 2.1. c s d li u th hai c +ng b hóa v i c s d li u chính và có th thay th c s d li u chính n u có s c x y ra.2 Tính s#n sàng cao và khôi ph c sau s c (HADR) tin c#y c a d li u.1 Các tính n ng bao hàm trong ng ký s" d ng DB2 Express-C Ph n này i m qua các ch ng trình s a l i DB2. Trong khi các giao d ch c ti n hành trên c s d li u chính. Máy ch chính là n i c s d li u g c c l u tr và truy c#p b i các trình ng d ng t i máy khách. trong su t tuy t i v i khách hàng và các ng d ng t i máy tr m 1 Giao d ch y t*ng thành ph n nh" tránh m t mát d li u 1 Kh n ng n ng c p h th ng ho c nâng c p ng d ng mà không gây ng t quãng i v i d ch v 1 Kh n ng thay th h th ng t* xa.1 cung c p t ng quan v cách tái t o d li u. chúng c th c thi l i và áp d ng cho c s d li u th hai. và m t máy ch ích n i các thay i d li u c áp d ng. Máy ch th c p có m t b n sao c a c s d li u chính.1. các b n ghi nh#t ký d li u c chuy n t ng n máy ch th c p (máy ch ph ) thông qua h th ng m ng.1 Các ch ng trình s"a l i M t ch ng trình s a l i DB2 là m t t#p các s a l i c áp d ng cho m t s n ph m DB2 ã c cài t. th ng c t o ra b ng cách sao l u c s d li u chính và khôi ph c nó t i h th ng th c p.Thông qua vi c th c hi n l i các b n ghi nh#t ký này. s di trú HADR và SQL. Hình 2.ibm. V i m t ng ký s d ng có b n quy n. máy ch chính và ph (có th c t t i nh ng n i khác nhau).

2 B t p trung k t n i B t#p trung k t n i là tính n ng cho phép h tr m t l ng l n ng i dùng k t n i t i m t th i i m. n p d li u vào các kho ch a d li u hay các “ch ” d li u (data marts).1 Phân vùng c s d li u Tính n ng phân vùng c s d li u (DPF) ch. m t ch ng trình “ch p” ghi nh#n l i các thay i i v i c s d li u. DPF d a trên ki n trúc không chia s2 (share-nothing architecture). . 2. mang theo s c m nh x lý d li u v i CPU và b nh c a chúng. do c thêm vào nhóm phân vùng. m t ch ng trình “áp d ng” th c hi n các thay i cho c s d li u nh th#t.có trong n b n DB2 Enterprise v i m t m c phí ng ký b sung. bao g+m gi m t i dung l ng truy n. Tr c ây.2 Các tính n ng không có trong b n DB2 Express-C Ph n này miêu t m t vài tính n ng có trong các b n DB2 khác mà không trong DB2 Express-C 2. Trên máy ch ngu+n. b n có th tái t o d li u gi a DB2 Express-C và các máy ch DB2 khác. UNIX. Kh n ng tái t o d li u h u d ng cho r t nhi u m c ích c n n d li u c tái l#p.1 – Khôi ph c SQL Trong hình 2. M i máy tính. Các tác t c bàn n k$ h n trong ch ng 6. t trên nhi u máy tính.2. Trên máy ch ích. 2. cho phép m t tác t x lý nhi u k t n i. z/OS và i5/OS. DPF c bi t h u d ng trong môi tr ng máy ch c s d li u l n nh các kho ch a d li u n i mà các truy v n c a h tr giúp quy t nh (DSS) c th c thi. bao g+m c nh ng máy s d ng các h th ng khác nh Linux.Nh p môn H qu n tr c s d li u DB2 21 Hình 2. S d ng tính n ng tái t o d li u. B t#p trung k t n i gi i thi u khái ni m tác t lô-gic. m i k t n i c s d li u c n n m t tác t (agent) c s d li u.1 có hai máy ch . m t máy ch ngu+n và m t máy ch ích. Nó cho phép các c s d li u có th c tr i ra trên nhi u phân vùng khác nhau. ki n trúc DB2. và ki m tra l ch s thay i.2.

Ví d n u b n mua WebSphere Federation Server b n có th ch y truy v n d i ây: . 2. có th c chuy n i thành t&a kinh tuy n/v' tuy n nh b m r ng không gian c a DB2 (DB2 Spatial Extender) và các ch ng trình ng d ng doanh nghi p làm vi c t t h n khi chúng l u tr d li u theo nh d ng này. nh a ch-.3 B m r ng không gian $a lý B m r ng không gian a lý c a DB2 t+n t i nh m t l a ch&n có phí cho n b n DB2 Enterprise.1 DB2 Connect DB2 Connect là m t ph n m m d a trên vi c tr phí cho phép m t máy khách DB2 Linux. khi b n k t n i t* DB2 z/OS hay DB2 i5/OS d n m t máy ch DB2 Linux. DB2 Connect không c yêu c u trong quá trình liên k t theo chi u ng c l i.2 WebSphere Federation Server / c bi t n tr c ây là WebSphere Infomation Integrator (h tr tích h p thông tin).2.2.2. và có th c th hi n trong h kinh /v' . do ó các truy v n nh" và có m c u tiên cao có th ch y nhanh chóng.3 Các s n ph!m có tr phí liên quan n DB2. m b o các tài nguyên h th ng c s d ng hi u qu .3.Nh p môn H qu n tr c s d li u DB2 22 2. Các d li u kinh doanh. DB2 Connect có trong hai n b n chính tùy theo s k t n i mà b n c n: DB2 Connect Personal Edition và DB2 Connect Enterprise Edition. có th i u khi n lu+ng các truy v n t i c s d li u DB2 c a b n. nh h th ng nh v v tinh toàn c u (GPS). B m r ng không gian a lý c a DB2 có th c u thành m t th gi i a lý o v i b t k t3 l nào. WebSphere Federation Server cho phép s liên k t h p nh t các c s d li u. Hình 2. H u h t các thông tin v trí c thu th#p s d ng các h th ng toàn c u.2. 2. i u này ngh'a là b n có th ch y các truy v n c s d li u trên nhi u i t ng t* các h th ng c s d li u quan h khác nhau.3. 2.4 B ki m soát truy v n B ki m soát truy v n c a DB2 là m t h th ng qu n lý truy v n m nh. phép chi u t ng ng lên b n + c th ng nh t các ng d ng khác nhau: l p trình bày. Nó cho phép b n i u ch-nh l i kh i l ng công vi c c a truy v n d li u. UNIX hay Windows k t n i n m t máy ch DB2 z/OS hay DB2 i5/OS nh trong hình 2. DB2 Connect 2. hi n th và in các b n +. UNIX hay Windows. Ph n m r ng này làm vi c phát tri n cho các ng d ng chính ph i n t c d0 ho c các ng d ng có qui trình nghi p v yêu c u phân tích các v trí a lý dàng h n.

3 cung c p s gi i thi u v kh n ng s d ng c a WebSphere Federation Server Hình 2.Table3 C WHERE A.col5 = 1000 and C. Nó c.Table1 A DB2.Nh p môn H qu n tr c s d li u DB2 23 SELECT * FROM Oracle.3 WebSphere Replication Server / c bi t tr c ây là WebSphere Infomation Integrator (h tr tích h p thông tin). ho c gi a m t c s d li u DB2 và m t c s d li u Informix® (Infomix là m t ph n trong h& IBM).col1 < 100 And B.col2 = ’Test’ Hình 2. 2.WebSphere Federation Server / i v i các h th ng qu n lý c s d li u quan h thu c h& IBM. ví d khi b n mu n ch y m t truy v n gi a hai c s d li u DB2 khác nhau. WebSphere Replication Server cho phép s t o l i SQL trong các b n ghi c s d li u khi các máy ch không ph i c a IBM tham gia vào. .3 . /i u này ngh'a là WebSphere Federation Server không c n c òi h"i. s h tr liên k t h p nh t ã c xây d ng s)n trong DB2 Express-C.Table2 B SQLServer..3.ng bao g+m m t tính n ng c bi t n là Q-Replication cho s tái t o d li u s d ng các hàng i thông i p.

ibm. xác th c nh danh (ID) c a ng i dùng trên máy ch DB2. XP. Các i u ki n c a h i u hành tr c khi cài t cho t t c các n b n DB2 c.com/software/data/db2/udb/db2express/getstarted. http://www. Vista.com/software/data/db2/udb/sysregs. V i các tài kho n mi n (domain) Windows.ng c miêu t trong tài li u này. V i Linux: b n c n ph i là root (superuser) cài t DB2 Express-C. Tài kho n ng i dùng c. ví d trong các h th ng n CPU v i 1GB RAM. tài kho n ng i s d ng ph i thu c v nhóm Qu n tr trên máy mà b n s. 64 bít và hay Windows 2000. M t cách khác. N u b n c n ch y DB2 trên m t n n khác (gi ng nh UNIX).Cài t DB2 m b o r ng các h th ng / cài t n b n DB2 Express-C cho Linux hay Windows.2 Quy n cài t h i u hành / cài t DB2 Express-C trên Linux hay Windows. http://www. / có c nh ng thông tin m i nh t v các i u ki n c a ph n c ng tr DB2 Express-C. hãy xem trên trang web DB2 Express-C.ibm. b n nên mua m t trong nh ng n b n máy ch d li u khác ã c nói n tr c ây trong quy n sách này.ng ph i có quy n “Truy c#p máy tính này qua m ng” . DB2 Express-C c t i u hóa cho các h th ng lên t i 2 CPU v#t lý và 4GB RAM. th c hi n cài t.html Trong khía c nh v các tài nguyên ph n c ng. c khi cài t is d ng h V i Windows. Các h th ng này có th là các h th ng v#t lý hay các h th ng o c t o ra b i s phân tán ho c vi c ch y các ph n m m máy o. ID c a ng i ti n hành cài t ph i thu c nhóm Qu n tr t i mi n (domain) mà các tài kho n này s.html 3. b n ph i là m t ng i u hành có quy n. B n có th d' nhiên ch y nó trong các h th ng nh" h n n u b n mu n. Ki n trúc b x lý PowerPC (Linux).1 Các i u ki n tr c khi cài t 4 khía c nh phiên b n h i u hành. DB2 Express-C có th c s d ng trên Linux c yêu c u là 32 bít. 3. c t o. m t tài kho n ng i dùng không thu c nhóm Qu n tr có th c s d ng. Có th s d ng tài kho n s)n có (built-in) trên h th ng ti n hành cài t. v i i u ki n là m t thành viên thu c nhóm Qu n tr Windows u tiên c u hình các thi t l#p nâng quy n Windows cho phép m t tài kho n ng i dùng không thu c nhóm Qu n tr có th th c thi cài t. c a b n th"a mãn các i u ki n tr c khi cài t.Nh p môn H qu n tr c s d li u DB2 24 3 Ch ng 3 .

nh n liên t c nút “Next” r+i nh n “Finish”. b n có th ti n hành cài t nh sau : • Windows: ch y t p setup. u cài t DB2 (DB2 Setup Launchpad).vi c s d ng các thi t l#p m c nh. Thông th ng. Sau khi t i và gi i nén DB2 Express-C. • Linux: ch y l nh db2setup trong th m c exp/disk1.exe trong th m c EXP/image.3 Cài t theo h ng d%n t&ng b c Có r t nhi u cách ti n hành cài t DB2 Express-C. k t thúc sau vài phút và b n có th b t u s d ng DB2. b n ch.Nh p môn H qu n tr c s d li u DB2 25 3.1 – B t u cài t DB2 (DB2 Setup Launchpad) . vì v#y. Quá trình cài t s. Hình 3. Vi c cài t DB2 Express-C theo h ng d%n cài t t*ng b c r t n gi n. t t c các vi c c n làm là ch p nh#n i u kho n s d ng. b n nên ch&n Trên hình 3. nh ng n gi n nh t là s d ng cách cài t theo h ng d%n t*ng b c d a trên giao di n + h&a c a DB2.1 là c a s b t “Install New” cài t m t b n sao m i c a DB2 lên h th ng.

Cài t hàng lo t (Silent Install). t o m t t p biên b n (response file). b n có các l a ch&n cài t s n ph m.3.2 – Các ki u cài t Trong hình 3. Các t p biên b n s. c th o lu#n trong m c 3. . ho c c hai. ng b n nên ch&n ki u cài t Hình 3. thông th “Typical” (m c nh) nh trên hình 3.2.4.Nh p môn H qu n tr c s d li u DB2 26 Sau khi ch p nh#n i u kho n s d ng. S d ng tùy ch&n m c nh (Cài t IBM DB2 Express Edition trên máy tính này và l u các thi t l#p ra t p biên b n) là .

3 – L a ch n cài t Trong vài màn hình ti p theo. Trong màn hình này b n có th nh#p vào m t ng i dùng ã có làm vi c v i b n cài t DB2 này (instance) c. trong Linux là db2inst1. . m t ng i dùng m i s.ng nh các d ch v khác.Nh p môn H qu n tr c s d li u DB2 27 Hình 3. ID ng i dùng m c nh c t o ra trong windows là db2admin. Ng i dùng này ph i n m trong danh sách Qu n tr (Local Administrator) c a Windows. N u nh ID c a ng i dùng b n nh#p vào không t+n t i. B n có th tr ng “domain” n u nh ng i dùng b n nh#p vào không thu c vào m t mi n nào ó.4. c thêm vào nhóm Qu n tr . hãy ch&n giá tr m c nh cho n khi b n g p màn hình nh trong hình 3.

thi t l#p do b n nh#p vào.Nh p môn H qu n tr c s d li u DB2 28 Hình 3. Ho c máy ch d li u DB2 là m t ph n trong ng d ng b n xây d ng và b n . hi n th m t danh sách t ng k t nh ng ph n nào s.5.4 Cài t hàng lo t (Silent Install) Trong nhi u tr ng h p b n c n ph i cài t máy khách DB2 trên nhi u máy tính khác nhau.Danh sách t ng k t nh ng ph n s' c cài 3.Nh p thông tin ng i dùng cho b n DB2 m c $nh.ng nh m t vài thông tin. cài t theo h ng d%n t*ng b c s.5 . c cài t c.4 . Cu i cùng trong hình 3. quá trình cài t DB2 vào h th ng c a b n b t u. Hình 3. Khi b n nh n “Finish”.

b n dùng l nh: db2setup -r <Tên t p biên b n> . • Ch-nh s a t p biên b n m%u c óng gói kèm theo DB2. cài t hàng lo t là ph ng pháp phù h p cho b n. Khi ó. ng d ng DB2 h tr cài t hàng lo t nh t p biên b n (response file) ch a các thông tin c n thi t cho quá trình cài t.3 v ph ng pháp này. b n c. trong Windows b n dùng l nh: setup -u <Tên t p biên b n> • / i v i Linux.Nh p môn H qu n tr c s d li u DB2 29 mu n quá trình cài t DB2 là m t ph n c a quá trình cài t chung toàn b ó. M t trong các l a ch&n u tiên khi b n cài t theo ph ng pháp này cho phép b n ánh d u yêu c u DB2 l u l i các thông s b n nh#p vào trong quá trình cài t vào m t t p biên b n.. D i ây là m t trích o n c a m t t p biên b n m%u.ng có th dùng l nh t o t p biên b n: db2rspgn -d <th m c l u t p> • Sau khi b n ã có t p biên b n.rsp) n m trong th m c: db2/platform/samples/ directory • Trong Windows. Vì t p này là m t t p v n b n cho nên sau ó b n có th s a l i nó tùy ý. T p m%u này (có ph n m r ng là .. s d ng ph ng pháp cài t theo h ng d%n t*ng b c. c l u vào th m c và tên t p do b n nh#p vào. T p biên b n m%u: PROD = UDB_EXPRESS_EDITION LIC_AGREEMENT=ACCEPT FILE = C:\Program Files\IBM\SQLLIB\ INSTALL_TYPE = CUSTOM COMP=TCPIP_DB2_LISTENER_SUPPORT COMP=TCPIP_DB2_CLIENT_SUPPORT COMP=DB2_SAMPLE_DATABASE COMP=DB2_SAMPLE_APPLICATIONS COMP=OLE_DB_SUPPORT COMP=ODBC_SUPPORT COMP = JDBC_SUPPORT COMP = IBM_JRE . Khi k t thúc quá trình cài t t p biên b n s. B n có th xem l i Hình 3. Các ph ng pháp có th dùng t o ra t p biên b n: • Cài t DB2 Express-C tr c m t l n.

chú ý n dung l ng c a c ng. Nh n nút Next ti p t c. t o ra cho b n. / kích ho t ti n trình cài t. 6. DB2 s. b n nh n úp vào t p setup. Trong ví d này b n ch&n th m c m c nh cài t DB2 lên h th ng c a b n nh sau: ( cài t: C: Th m c cài Nh n nút Next t: C:\Program Files\IBM\SQLLIB ti p t c. Chú ý b n ph i t m#t kh u (password) cho tài kho n. Bài th c hành này s.1.2 ho c phiên b n cao h n.com/db2/express. c ch y d i t cách là các d ch v c a h th ng. sau ó t* c a s windows hi n ra b n nh n vào tùy tr&n Install Product phía bên trái c a c a s . L a ch&n th m c cài t. Nh#p vào thông tin c a ng i s d ng. 2. L a ch&n ki u cài t. B n ch&n th m c cài t DB2. / nh v th m c chính v th m c ch a các t p ã gi i nén 3. ch y ki m tra c u hình ph n c ng c a h th ng ti n hành chu n b cài t DB2 Express-C.http://www. Trong môi tr ng Window b n s d ng tài kho n m c nh c ngh là db2admin. 8. h ng b n t*ng b c cách cài t DB2 Express-C trên Window. n u tài kho n này ch a t+n t i.” và nh n nút Next ti p t c ti n trình cài t. Nh ng d ch v này òi h"i ph i c ng nh#p b ng m t tài kho n c a h th ng có th th c hi n. th y r ng ây là ki u cài t m c nh). n u b n + h&a c s d li u m%u có th c t o ra cho b n ch&n cài t thông qua ch m t cách t ng. 7. b n ph i cài nó trên h th ng c a mình. Ch y cài t DB2 theo t*ng b c (setup wizard).ng nh ki m tra xem b n ã cài DB2 tr c ó hay ch a. m t thành ph n tr giúp cài t g&i là “cài t t*ng b c” s. nh ng ti n trình DB2 s. Kích ho t ti n trình cài t. b n có th t i b cài d i d ng t p . c. Sau khi b n ch&n Install Product b c 3.exe. L y v nh c a DB2 Express-C. Các b c 1. 4. / có th cài t DB2. M t khi DB2 Express-C ã c cài t. Ki u Compact là ki u cài t c b n còn ki u Custom cho phép b n th c hi n m t s tùy tr&n trong quá trình cài t. M c ích Tr c khi b n có th b t u nghiên c u các tính n ng và công c có trong DB2 Express-C.zip t i a ch... Hai ki u cài t khác là Compact và Custom.ng có th s d ng m t tài kho n s)n có trong . Trong bài th c hành này b n hãy ch&n l a ki u cài t là Typical (b n s. b n hãy &c k$ các i u kho n trong gi y phép s d ng và l a ch&n “I Accept. Ch p nh#n các i u kho n ràng bu c. Sau khi ch ng trình ã ki m tra xong ti p t c cài t b n nh n vào nút Next 5.ibm.Nh p môn H qu n tr c s d li u DB2 30 Bài t p nhanh #1: Cài t DB2 Express-C và t o ra c s d li u m%u Chú ý: N u b n ang s d ng DB2 Express-C V9. Gi i nén các t p vào m t th m c do b n t tên. B n c.

và sau ó theo sau các h ng d%n c a ch ng trình t o ra c s d li u M%u. Sau khi quá trình cài t k t thúc. Nh n nút Next ti p t c. 14. Nh n nút Next ti p t c. /ây là m t Tùy ch&n. Sau khi b n nh n OK m t c a s window sau s. trong khi trong môi tr nh này là db2inst1. nh n nút OK và óng công c First Steps. t t c các c u hình và các t p c n thi t s. c hi n ra thông báo c s d li u m%u ang c t o ra cho b n. l a ch&n th2 “Database Creation”. 15. B t u cài t. c c 12.Tuy nhiên. First Step c. Chú ý c l a ch&n. C hai giao th c k t n i (TCP. ínstance DB2 5000. 9. c coi nh là m t “kho ch a cho t kì m t c s d li u nào c ng Window. 10. Trong First Steps. T o ra c s d li u M%u. c ch y và hi n th trên màn hình. m t công c h tr cài t khác g&i là First Steps s. s d ng s c u hình m c nh ã c cài t s)n và không thay i b t c c u hình thu c v giao th c k t n i hay c ng k t n i nào c . M c dù b c này là không b t bu c trong các tài li u h ng t DB2. và b n ph i m b o r ng tùy ch&n XML and SQL objects and data ph i nh n nút OK. . nh ng chúng tôi ngh b n nên kh i ng l i h th ng mb o các ti n trình c b t u m t cách hoàn h o và gi i phóng các tài nguyên ng ã b chi m d ng trong quá trình cài t DB2.ng có th kh i ch y b ng tay v i câu l nh db2fs trong c a s h i u hành DOS. First Steps. c cài t vào máy c a b n m t cách t ng. B n có th ph i làm m i l i Trung tâm i u khi n nh#n bi t c s thay i này. Chúng ta s. Ti n trình này có th m t m t vài phút. m t ínstance c ng Linux tên c a ínstance m c i t ng này trong các ch ng c c u hình l ng nghe k t n i TCP/IP trên c ng k t n i M c nh. C u hình DB2 ínstance. M t ínstance này ph i t+n t i tr c khi b t o ra và c “ t vào bên trong kho”. Trong môi tr g&i là DB2 t ng c t o ra. Kh i d%n cài r ng t t c c a h th ng l i máy tính.Nh p môn H qu n tr c s d li u DB2 31 h th ng thay vì nh DB2 t o ra m t tài kho n m i cho b n nh ng ph i ghi nh r ng có th ch y các d ch v DB2 tài kho n này ph i có quy n qu n tr (admin). gi i thích chi ti t các ti p theo c a cu n sách. Quay l i Trung tâm i u khi n (Control c t o ra trong khung Center) và ki m tra r ng m t c s d li u tên là SAMPLE ã c a s Object Tree (cây i t ng). trong ví d này chúng ta s. UDP) và c ng k t n i u có th c cài t l i khi b n nh n vào các nút Protocols và Startup. Khi vi c t o c s d li u ã hoàn t t. M t ínstance DB2 có th c s d li u”. 13. / b t u cài t b n nh n vào nút Install. Xác nh#n c s d li u m%u ã c t o ra. 11.

Các công c DB2 Trong ch ng này chúng tôi s.Nh p môn H qu n tr c s d li u DB2 32 4 Ch ng 4 . H u h t các công c này gi ng nhau trên c Linux và Windows. SQL/XML và các câu l nh XQuery có th c dùng t ng tác v i máy ch d li u DB2. Phía bên ph i trong hình v. gi i thi u m t s công c b n có th dùng v i DB2. SQL. Hình 4. là môi tr ng DB2 c b n bao g+m m t th hi n (instance) DB2. Trong hình 4. Ph n gi a c ánh d u b ng hình elip màu ") li t kê tên c a các công c khác nhau có th ( t ng tác v i máy ch d li u DB2. . m t c s d li u và các t p c u hình t ng ng.B c tranh t ng th DB2: Các công c DB2 Hình 4.1 . phía bên trái là các l nh DB2 khác nhau.2 li t kê t t c các công c DB2 s)n có trong IBM DB2 Start Menu.1.

1 .1 cung c p m t danh sách các l nh t t nh t trong c môi tr ng Linux và Windows.dành cho môi tr ng Windows) Control Center Trung tâm i u khi n Task Center Trung tâm tác v Health Center Trung tâm s c kh"e/tình tr ng Configuration Assistant Tr giúp c u hình First Steps B c kh i u B ng 4.Các công c DB2 trên IBM DB2 Start Menu B ng 4.Nh p môn H qu n tr c s d li u DB2 33 Hình 4.Các l nh t t cho m t s công c DB2 4.1 Trung tâm i u khi n (Control Center) Công c chính c a DB2 dùng trong vi c qu n tr c có giao di n nh trong hình 4. g&i m t s các công c DB2 ph bi n L nh db2ce db2 db2cmd db2cc db2tc db2hc db2ca db2fs Tên công c Command Editor C a s nh#p l nh Command Line processor B x lý dòng l nh Command Window C a s l nh (Ch.2 .3 s d li u là Trung tâm i u khi n .

b n có th xem và c#p nh#t t p c u hình cho c s d li u ó. khung trên cùng bên ph i s. .Trung tâm i u khi n c a DB2 Trung tâm i u khi n là m t công c qu n lý t#p trung cho phép b n: • Xem xét h th ng c a b n. b n c h"i và l a ch&n cách trung tâm i u khi n s. Môi tr ng DB2. n u b n nh n chu t ph i vào m t c s d li u và ch&n “Configure parameters”. hi n lên m t b ng ch&n thích h p v i th m c/ i t ng ó. L n u tiên ch y Trung tâm i u khi n. cung c p các thông tin chi ti t h n v b ng ó. các i t ng c s d li u s. • T o.3). v i các “th m c” i di n cho b ng (Tables). thì khung phía d i bên ph i s. li t kê t t c các i t ng liên quan. Hình 4. s a và qu n lý c s d li u và các i t ng c s d li u. T ng t . c nh c t i k$ h n ch ng 5. Ví d . các b n cài t DB2. Nh n chu t ph i vào các th m c/ i t ng khác nhau trong Cây i t ng (Object tree) s. trong tr ng h p này là t t các b ng liên quan n c s d li u SAMPLE. hi n th theo cách nào. nh trong hình 4. N u b n ch&n m t b ng nào ó khung trên bên ph i. Môi tr ng DB2 và các thông s c u hình s. các c s d li u và các t ng trong c s d li u. nh n ph i chu t lên m t cài t DB2 và ch&n “Configure parameters” cho phép b n xem và c#p nh#t t p c u hình cho ch ng trình qu n tr c s d li u.3 .Nh p môn H qu n tr c s d li u DB2 34 Hình 4. 5ng v i m i cách hi n th . c th hi n th theo ki u t ng ng. th hi n (Views)… Khi b n nh n úp vào m t th m c (ví d th m c Tables.4 là h p tho i dùng l a ch&n cách hi n th c a Trung tâm i u khi n. • Kh i ng các công c + h&a khác c a DB2 i Khung bên trái cung c p m t cây phân c p tr c quan ph n ánh c u trúc c a các i t ng c s d li u trong h th ng c a b n.

5 Hình 4. các l a ch&n và các i t ng theo b n mu n. b n ch&n “Customize Control Center” t* b ng ch&n Tools nh trong hình 4. Cách hi n th tùy ch&n (custom) cho phép b n tùy bi n các hình th c th hi n các ch c n ng.H p tho i ch n cách hi n th$ Trung tâm i u khi n Cách hi n th c b n (basic) cung c p các ch c n ng nòng c t c a DB2.Nh p môn H qu n tr c s d li u DB2 35 Hình 4.5 . / b#t l i h p tho i này. Cách hi n th nâng cao (advanced) th hi n nhi u l a ch&n và ch c n ng h n.4 .Tùy bi n Trung tâm i u khi n .

các câu l nh s.ng có th chèn câu l nh th c hi n k t n i vào o n l nh c a mình.8).7 . Hình 4.2 Nh p l nh tr c ti p S d ng c a s nh#p l nh c a DB2 (Command Center). M t k t n i t i c s d li u c n ph i c thi t l#p tr c khi th c hi n b t k câu l nh SQL nào. N u nh b n ánh d u m t câu l nh nào ó thì ch. c th c hi n l n l t.7 th hi n C a s nh#p l nh cùng v i mô t ng n g&n các thành ph n c a nó. SQL và các câu l nh XQuery. b n có th th c thi các l nh DB2. xem hay s a k t qu c a câu truy v n. . c th c hi n.C"a s nh p l nh c a DB2 Trong vùng nh#p l nh (input area). phân tích k ho ch th c hi n c a m t câu l nh. T* bi u t ng DB2 trên khay h th ng c a Windows nh trong hình 4.Kh i ng Trung tâm i u khi n DB2 t& khay h th ng c a Windows 4. b n có th nh#p nhi u câu l nh cùng lúc. Quay tr l i Trung tâm i u khi n /ang ch&n C a s nh#p l nh Thêm m t k t n i v i c s d li u C s d li u ang k t n i Vùng nh#p l nh Vùng k t qu Ký t c dùng xác nh k t thúc c a câu l nh Hình 4. Khi b n b m nút th c hi n (xem hình 4.6 .6 (Nh n ph i chu t vào bi u t ng DB2 và ch&n DB2 Trung tâm i u khi n) Hình 4. tuy nhiên b n c. nh ng c n m b o các câu l nh k t thúc v i ký t k t thúc do b n ch&n.Nh p môn H qu n tr c s d li u DB2 36 Kh i Có nhi • • • • ng Trung tâm i u khi n u cách kh i ng Trung tâm i u khi n: S d ng t* Menu Start c a Windows Ch y l nh db2cc t* d u nh c l nh Nh n úp vào bi u t ng Trung tâm i u khi n trên b t k thanh công c nào c a các công c giao di n + h&a DB2.mình câu l nh này s.

B t k khi nào m t i t ng mà b n có th truy v n. b ng.10 s.9 .9 trên Hình 4.). .8 . ..Bi u t ng C"a s nh p l nh trong Trung tâm i u khi n li u nh n vào nút Add. nh n ch&n bi u t ng C a s nh#p l nh thanh công c c a Trung tâm i u khi n nh trong hình 4. nói k$ h n ph n sau) Hình 4. M t h p tho i nh trong Thêm m t k t n i t i c s d li u / thêm m t k t n i t i m t c s d hình 4. b n có th kh i ng C a s nh#p l nh b ng cách nh n vào ng d%n Query trong khung thông tin chi ti t v i t ng c a Trung tâm i u khi n (khung d i bên tay ph i).Nh n ph i chu t vào bi u t ng c s d li u SAMPLE trong khung hi n th các i t ng c a Trung tâm i u khi n sau ó ch&n menu Query. xu t hi n.Nh p môn H qu n tr c s d li u DB2 37 Th c hi n câu l nh (Có th dùng t h p phím t t Ctrl+Enter) Th c hi n câu l nh và sinh ra m t k ho ch truy c#p (S. 1 T* Trung tâm i u khi n. c ch&n (c s d li u. gõ db2ce 1 T* menu Tools c a Trung tâm i u khi n 1 Nhúng trong Trung tâm i u khi n: . nói k$ h n ph n sau) Sinh ra m t k ho ch truy c#p mà không th c hi n câu l nh (S.C"a s nh p l nh – Th) L nh Kh i ng C"a s nh p l nh B n có th kh i ng c a s nh#p l nh b ng m t s cách: 1 T* Menu Start c a Windows: Start -> Programs -> IBM DB2 -> Command Line Tools -> Command Editor 1 T* m t c a s nh#p l nh (c a windows ho c linux).

11 bên d i. giúp b n gi i quy t. Trình tr giúp SQL N u b n không quen thu c v i ngôn ng SQL và thích s d ng m t trình h tr ho c h ng d%n t ng sinh mã SQL. b n có th tri u g&i nó t* Command Editor b ng vi c nh p chu t vào bi u t ng sau v i ký hi u SQL (n i lên trong hình v i vòng tròn "). lúc này trình tr giúp “SQL Assist Wizard” là m t công c s)n có t* trình so n th o dòng câu l nh (Command Editor) s. ID và m#t kh u c a m t ng i dùng c ah i u hành.3. Nh hình 4.Nh p môn H qu n tr c s d li u DB2 38 L a ch&n m t c s d li u trong h th ng Ch&n ô này n u b n mu n s d ng ID và m#t kh u c a ng i dùng ang ng nh#p vào h i u hành.Thêm m t k t n i c s d li u 4.10 . Hình 4. .

nhìn th y làm th nào câu l nh SQL c xây d ng nên gi ng nh b n ch&n nh ng l a ch&n khác trong trình h ng d%n. . DELETE). UPDATE. c hi n th ra. / u tiên ch. các tùy ch&n khác nhau s. Nó còn ph thu c vào câu l nh b n ch&n. Nó cho phép s d ng song hành +ng th i c hai ch . 4 ph n cu i cùng c a c a s b n s.ra ki u c a câu l nh SQL b n h tr v i (SELECT. Hình 4.Nh p môn H qu n tr c s d li u DB2 39 Hình 4.11 – G i trình tr giúp SQL Assist Wizard. INSERT.12 trình bày v trình tr giúp SQL Assist Wizard.

13 – Trình bày nút Show SQL Hình 4.13 và hình 4.Nh p môn H qu n tr c s d li u DB2 40 Hình 4. ch&n danh sách Create Database. T* ô cây i t ng c a Trung tâm i u khi n.14 – * u ra c a m t ph n trình bày v nút Show SQL. B n c. rút g&n và tái s d ng nh ng l nh và nh ng dòng l nh trong m t t p s d ng v sau này. Hình 4.12 – Trình tr giúp SQL Assist Wizard 4.T o m t CSDL m i v i Trung tâm i u khi n M c ích Trong bài t#p nhanh này. Bài t p nhanh #2 . nh p ph i chu t vào th m c All Databases.ng có th xây d ng các k ch b n b ng vi c dùng l i nh ng l nh và nh ng dòng l nh ã c t o ra này.4 Trình bày nút Show SQL H u h t các công c tr giúp + h&a (GUI) và các trình h ng d%n trong DB2 cho phép b n xem l i câu l nh hi n th i ho c câu l nh SQL ã c th c thi ra k t qu b ng vi c s d ng công c hay trình h ng d%n th c hi n m t công vi c. nh hình 4. và ch&n danh sách . Kh n ng hi n th l i nh ng câu l nh SQL và nh ng dòng l nh là r t có ích trong vi c h&c cú pháp SQL. nh p chu t vào nút Show SQL trong công c b n ang làm vi c. t o ra m t CSDL m i s CSDL trong Trung tâm i u khi n. / xem ph n này. b n s. d ng trình h ng d%n t o Th t c th c hi n: 1.14.

K ch b n quicklab2. c u hình khe th i gian b t u lúc 1 gi sáng t* th hai t i th n m. C hai k ch b n này có th tìm th y trong t p nén ex-pressc_book_quicklabs. Ch. Các n i dung c a t p bây gi c hi n th trong vùng u vào d li u c a Command Editor. tr ng. Hãy ch c r ng CSDL m i b n ã t o c ch&n (bôi en) trong danh sách th xu ng trong thanh công c Command Editor. Nh p vào l nh Select -> Open ho c nh n nút m trong Command Editor và chuy n t i th m c n i ch a các k ch b n ã c l u. 3. Bây gi m t CSDL ã c t o. kéo dài 6 ti ng. V i bài t#p này. vì th tr ng ph n này và nh p nút Next.th báo ti n trình ang th c hi n s. • Ghi chú: Tr ng h p này có th tùy ch&n.dat ch a nh ng câu l nh ph i chèn d li u vào các b ng. chúng ta không có m t máy ch SMTP nào. 6.ra m t máy ch SMTP có s)n nào ó DB2 dùng trong vi c g i email. hai k ch b n có tên là quicklab2.zip i cùng cu n sách này. 2. N u CSDL m i không hi n lên trong danh sách. cho phép 7. K ch b n quicklab2. s d ng nút Add thêm m t k t n i t i nó (xem g n hình 4. nh (Yes. / t o cho b n s thu#n l i. Trong Specify c n ch. a. Ch. / ch y nh ng kch b n này.10) b. và nh p Next. Nh p vào nút Next. / t tên cho CSDL và v trí l u t p trong trang Name c a trình h ng d%n. và sau ó nh p chu t vào nút Next ti p t c trang k c a trình h ng d%n.nh khe th i gian b o trì trong trang Timing.rõ n i l u trang d li u. bên trái có th Nh p chu t vào CSDL có s)n Enable cho h p ch&n XML.dat ã s)n có giúp b n. DB2 có th t ng g i m t email hay m t trang n u có m t s c hay m t i u ki n b t th ng c phát hi n th y. Xác . Ch&n nút Run ch y k ch b n. CSDL c t o ra th ng ph i m t m t vài phút. n i trú ngay trong nó là m t vài b ng và ít d li u c t o ra. Xem l i các tùy ch&n ã ch&n trong trang Summary trong trình h ng d%n. 8. S d ng các giá tr d i ây: • Tên CSDL: EXPRESS • 6 'a m c nh (c a Windows): C: • / ng d%n m c nh (c a Linux): /home/db2inst1 • Bí danh: Tr ng h p này m c nh là EXPRESS n u bên trái tr ng.db2 và quicklab2. hi n ra. s d ng c a s nh#p l nh. B t u ch y Creat Database Wizard. hãy ch.rõ hai ho c h n 4 gi m t tu n khi DB2 có th th c hi n t ng duy trì các công vi c gi vi c ho t ng bình th ng c a CSDL. I can 5. Bây gi . Nh p vào nút Finish b t u quá trình t o ra CSDL. không thêm b t k s thay i nào. 4.db2 và nh p nút OK.Nh p môn H qu n tr c s d li u DB2 41 With Automatic Maintenance. trong th i gian này ch. C u hình thông i p trên trang Mail Server c a trình h ng d%n. l y giá tr m c specify an offiline…).db2 ch a nh ng l nh c dùng t o các b ng và do ó c ch y u tiên. /ánh d u t p quicklab2. Trong trang ch&n chi n l c b o trì. N u b n mu n cài t l i i u này. và nh p Next.

Các k ch b n SQL. 2.2)). các bi n hay các tham s không c h tr . 4. m t b n ghi c t o ra trong b ng SALES. c 8 cho t p quicklab2. Cu i cùng b ng SALES ch a d li u v vi c bán hàng. nh ng t p th c thi nh ng l nh DB2 ho c nh ng câu l nh SQL l p l i nhi u l n. col3 DECIMAL(9. SELECT * FROM user1. CREATE TABLE user1. L p l i b c tìm th y khi ch y k ch b n này. 4. CONNECT TO EXPRESS.dat. col2 VARCHAR(40).5 T o k$ch b n Nó r t h u ích cho phép t o ra nh ng t p k ch b n. S + d i ây trình bày thi t k và quan h gi a các b ng. Có hai d ng k ch b n thông th ng: 1. Cho ví d . B ng CUSTOMERS ch a thông tin v m i khách hàng c a c a hàng.Nh p môn H qu n tr c s d li u DB2 42 nh không có l i nào 9. Ví d .5. m t ng i qu n tr (DBA) có th mu n ch y m t k ch b n a ra hàng ngày ki m tra s hàng c a nh ng b ng quan tr&ng. các l nh d i ây c l u l i trong t p có tên script1.db2. Các k ch b n (v") h i u hành. . B t k lúc nào khách hàng t mua m t cu n sách.mytable ( col1 INTEGER NOT NULL.mytable FETCH FIRST 10 ROWS ONLY. CSDL m i này là m t ví d n gi n cho m t c a hàng sách trên Internet.1 Các k$ch b n SQL Các k ch b n SQL bao g+m các câu l nh truy v n và các l nh CSDL. B ng BOOKS ch a t t c thông tin v nh ng cu n sách c l u tr . Các k ch b n này là m i quan h n gi n hi u và là n n c l#p. Tuy nhiên.

u ra Khi c hi u –t c dùng và không có d u phân cách dòng nào c ch. b i vì nh ng d u ch m ph y này ã c dùng bên trong các nh ngh'a i t ng SQL PL phân cách các câu l nh thu c v th t c.ra các câu l nh dùng d u k t thúc m c nh (d u ch m ph y). Có m t s hoàn c nh mà ta c n n m t u phân cách khác.rõ.db2 / cho DB2 bi t r ng m t ký t d u phân cách khác c dùng. B t k ph n m r ng nào c.db2 -z script1. b n có th dùng các l nh d i ây: db2 -t -v -f script1. Ví d ph y s.log / có các mô t v các c hi u khác b ng cách ch y câu l nh d Command Window ho c Linux shell: db2 list command option i ây trong hi u –d. -v Ch “l m l i”. và m i câu l nh c cách nhau b i m t d u phân cách và trong tr ng h p này là d u ch m ph y.db2 –z functions. k t qu là có m t l i trong thông báo t* DB2. ho c thông qua Linux shell. trong t p k ch b n ngh'a d li u DDL t o m t hàm. V i câu l nh CREATE FUNCTION d u phân cách chúng ta ph i s d ng m t d u ch m than (!). d u ch m c ch&n. m t k ch b n ch a mã SQL PL c n dùng m t d u phân cách câu l nh khác v i ký t m c nh (d u ch m ph y). t t c các câu l nh là các câu l nh SQL. . d i ây có tên “functions. Th c thi các k$ch b n SQL: M t k ch b n SQL có th c th c thi b ng nhi u cách khác nhau có th t c a s l nh ho c DB2 Command Window trên Windows. c s d ng hi n giá tr cho vi c phân tích sau này ( ây là ch&n. s d ng c ti p sau là ký t phân cách mong mu n (d u !) nh trình bày d i ây: db2 –td! –v –f functions. N u chúng ta l i dùng m t d u ch m ph y vào vi c ng n cách câu l nh. khi ch y s. -z Ch. nó ch a ngôn ng nh Ví d . T p script1.ra r ng theo sau thông báo tên t p s.Nh p môn H qu n tr c s d li u DB2 43 COMMIT.log Trong câu l nh này: -t Ch. db2 –tvf script1. -f Ch. m t d u ch m ph y là c n thi t cu i c a cú pháp SELECT bên trong hàm.log ho c. x y ra xung t t* k ch b n.db2 Trong ph n k ch b n trên. … END! T p functions. Tên t p không nh t thi t s d ng uôi m r ng là “db2”.ra r ng tên t p sau c này là t p k ch b n.ng dùng c.db2 –z script1. CREATE FUNCTION f1() SELECT … .db2”. / ch y k ch b n t* DB2 Command Window ho c Linux shell. nh ng nên làm). db2 hi n th các l nh khi th c hi n.

log db2 –td@ -v –f triggers. Sau ó.db2 –z triggers.db2 –z schema. r ng “bat” nói cho h i u hành bi t r ng ây là Trong Linux.2 Các k$ch b n v i h i u hành Các k ch b n v i h i u hành cung c p linh ho t và tính n ng m nh m.5.bat db2admin ibmdb2 Trong Windows s d ng ph n m m t t#p tin th c thi x lý theo lô. tuy nhiên chúng có h tr các tham s và các bi n. set DBNAME=PRODEXPR set MEMORY=25 db2 CREATE DATABASE %DBNAME% ON %DBPATH% AUTOCONFIGURE MEM_PERCENT %MEMORY% APPLY DB AND DBM db2 CONNECT TO %DBNAME% USER %1 USING %2 del schema. . Nh ng o n k ch b n này ph thu c vào h i u hành n n. nh cho ta kh n ng thêm vào nh ng o n mã l#p trình có tính logic.db2 –z functions. set DBPATH=c.log db2 set schema user1 db2 –t –v –f schema. b n c n thay i ki u trên t#p tin ch. b n có th ch y t#p tin này v i cách th c gi ng nh ph n trên.bat / th c hi n k ch b n v i h Windows: i u hành này t* dòng l nh. D i ây là ví d c a m t k ch b n trong h i u hành Windows.nh r ng t#p tin này là m t t#p tin th c thi b ng cách s d ng l nh nh chmod +x.Nh p môn H qu n tr c s d li u DB2 44 4.log T p create_database.log db2 –td@ -v –f functions.log triggers. b n gõ l nh sau trong USING create_database. h n.log app_objects.

t o ra m t k ch b n h i u hành tri n khai c s d li u EXPRESS. L u l i t#p tin k ch b n trong m t th m c và t tên cho t#p tin này là create_database. i u này giúp cho chúng linh ho t h n. g&i k ch b n v i SQL ã c t o ra tr c ó cho các i t ng c s d li u. hãy m b o r ng b n th c hi n nh ng thay i phù h p v i nh ng s h ng d%n sau ây. bài t#p nhanh này ch. Wordpad có th s. t o thêm m t s ký t n và vi c này có th gây ra nh ng v n trong khi quá trình th c thi c a k ch b n. nh thông tin c hi n th d i ây. m b m r ng b n ã ch&n m c tùy ch&n MS-DOS Format (trong Wordpad). . Trong h p tho i c a s Save As.bat. Nh m m c ích ti t ki m không gian. N u b n l u t#p tin này d i m t nh d ng khác. Các k ch b n h i u hành có l i i m c a vi c h tr các tham s k ch b n. Trong bài t#p nhanh này. hãy t d u ngo c kép bao l y tên c a t#p tin m b o r ng Windows không t ng thêm ph n m r ng . d i ây. Các k ch b n này s. trong vi c th c hi n nh ng công vi c có tính ch t l p i l p l i nh t#p h p th ng kê cho c s d li u.Nh p môn H qu n tr c s d li u DB2 45 Bài t p nhanh #3 – T o m t k$ch b n cài t cho c s d li u EXPRESS M c tiêu Các k ch b n là m t c ch m nh m. sao l u. M m t ch ng trình so n th o v n b n. Th t c 1. b n s. và tri n khai c s d li u. Thêm vào ó.hi n th nh ng k ch b n và câu l nh dành riêng cho n n Windows.TXT cho t#p tin nh hình v. N u b n mu n làm vi c trên Linux. Notepad hay Wordpad và nh#p vào 2.

Cách khác.bat db2admin ibmdb2 . nh#p vào các l nh sau: cd C:\express create_database. b n ph i có m t môi tr ng dòng l nh DB2. gõ vào db2cmd và n enter nh hình v.Nh p môn H qu n tr c s d li u DB2 46 3. / ch y k ch b n t ng tác v i DB2. / m c a s l nh DB2. b n có th s d ng Start -> Run. hãy vào Start -> Program Files -> IBM DB2 -> DB2COPY1 (default) -> Command Line Tools -> Command Window. Sau ó ch y k ch b n. d i ây 4.

Dòng l nh sau ây c dùng làm gì? del schema.log.log.log e. x y ra khi k ch b n c g&i mà l i không có b t c tham s nào? f. app_objects. /i u gì s. triggers. Hãy c g ng tr l i nh ng câu h"i sau ây: a. Dòng l nh sau ây dùng làm gì? Nó c s d ng khi nào? Cho m c ích gì? SET DBPATH=C: d. T i sao nh ng k ch b n SQL c g&i l i không ch a các câu l nh CONNECT TO? Chúng k t n i n c s d li u nh th nào? .Nh p môn H qu n tr c s d li u DB2 47 5. B n có hi u nh ng gì ang x y ra t i t*ng dòng không? 6. Các ký hi u %1 và %2 ngh'a là gì? c. K t n i c s d li u c thi t l#p âu? b. B n hãy dành chút th i gian làm quen v i k ch b n mà b n v*a t o xong.

Ví d .6. Chúng ta s.15 – Trung tâm Tác v 4. các l nh c a h i u hành. n u m t tác v bao g+m công vi c sao l u m t c s d li u quan tr&ng vào lúc 3h sáng c th c hi n thành công. m t email s. n u tác v sao l u th t b i thì Trung tâm tác v s. Hình 4. c g i n cho DBA cung c p thông tin này.15 minh ho Trung tâm Tác v Hình 4. systools là tên s + (schema name) c a t t c các b ng trong c s d li u.1 C s d li u Tools Catalog T t c các thông tin chi ti t v các tác v c a b n và l ch th c hi n tác v ó cl u tr trong m t c s d li u DB2 riêng bi t g&i là c s d li u Tools Catalog.Làm vi c v i các i t ng c s d li u. b n . Kh i ng Trung tâm Tác v B n có th kh i ng Trung tâm Tác v t* Trung tâm /i u khi n (Control Center) b ng cách nh n vào Tools -> Task Center nh minh ho trong hình 4. nói nhi u h n v các s + (schemas) trong ch ng 8 . Các hành ng phía sau có th c th c hi n ngay c khi tác v tr c th t b i hay thành công. ánh d u trang (page) cho ng i qu n tr bi t. và tên c a c s d li u là toolsdb.6 Trung tâm tác v (Task Center) Công c Trung tâm tác v v i giao di n + h&a ng i dùng cho phép b n t o ra nh ng tác v : là m t t#p h p nh ng ho t ng nh ch y các l nh DB2. / t o m t c s d li u Tools Catalog b n có th s d ng l nh này: CREATE TOOLS CATALOG systools CREATE NEW DATABASE toolsdb Trong ví d trên. hay nh ng k ch b n. M t cách khác. C s d li u này ph i c t+n t i s)n có th lên l ch cho các tác v . M t khác.Nh p môn H qu n tr c s d li u DB2 48 4.16.

17 mô t v Nh#t ký trong DB2 và B ng 4. Chúng tôi khuy n khích b n t mình khám phá Trung tâm Tác v .ng có th c lên l ch b ng cách s d ng Trung tâm Tác v (k ch b n ó có th c hay không c t o thông qua m t công c c a DB2 có giao di n + ho ng i dùng). Các tác v c ch y t i th i i m ã lên l ch t* h th ng n i mà b n ã t o c s d li u Tools Catalog.2 mô t nh ng thông tin mà b n có th thu c t* Nh#t ký.7 Nh t ký Công c Nh#t ký có giao di n + h&a c a DB2 cung c p cho ng i qu n tr c s d li u m t nh#t ký v các ho t ng trên bi u m%u tr c tuy n (online form). .Nh p môn H qu n tr c s d li u DB2 49 có th b t u công c này t* menu Start c a Windows: Start -> Programs ->IBM DB -> DB2COPY1 -> General Administration Tools -> Task Center Hình 4.16 – Kh i ng Trung tâm Tác v Lên l$ch v i Trung tâm Tác v B t c lo i k ch b n nào c. Vi c t o m t tác v khá n gi n. Hình 4. 4.

v.. Các l i nghiêm tr&ng B n ghi các thông báo c ghi l i ây B ng 4. Ki u thông tin L ch s tác v (Task History) L ch s c a c s (Database History) Thông i p . L u tr thông i p c p h th ng. ph c h+i.v…) Nh#t ký c a các thông i p c ph n h+i t* các công c c a DB2.2 – Các thông tin c mô t trong Nh t ký.17 – Nh t ký Mô t T t c các công vi c c lên l ch ã c th c hi n và tình tr ng ho t ng c a chúng d li u B n ghi nh v các tác ng lên c s d li u (sao l u. ho c n u b n óng h p tho i quá nhanh hay do tr c tr c. b n có th ch y công c này t* trình n Start c a Windows: Start -> Programs -> IBM DB2-> DB2COPY1 -> General Administration Tools -> Journal. B ng cách khác. t ch c l i (REORG).18. /i u này r t h u ích n u b n mu n tri u h+i và i chi u các thông i p l i c.Nh p môn H qu n tr c s d li u DB2 50 Hình 4. nh c mô t trong Hình 4. Kh i ch y Nh t ký B n có th kh i ng Nh#t ký t* Trung tâm i u khi n (Control Center) b ng cách b m chu t vào Tools -> Journal.

c s d li u. ng i qu n tr c s d li u s. các ho t ng ct ng hóa ã c nh rõ tr c…). Công c Trung tâm tình tr ng phân tích c nh báo tình tr ng trong h thông i v i t*ng th hi n (instance). s.18 – Kh i ng Nh t kí.8. xu t hi n ngo i l . qu n lý không gian.19 mô t v công c Trung tâm tình tr ng. không yêu c u s quan tâm ngay l#p t c nh ng có th báo hi u h th ng không còn trong tình tr ng t i u.Nh p môn H qu n tr c s d li u DB2 51 Hình 4. Báo ng: Tình tr ng nghiêm tr&ng yêu c u có các hành ng can thi p ngay l#p t c. 4.1 Trung tâm tình tr ng Trung tâm tình tr ng là m t công c + h&a t ng tác v i tác nhân Giám sát tình tr ng.8 Giám sát tình tr ng (health) Giám sát tình tr ng là m t tác nhân m c nh ch y bên trong b máy DB2. và không gian b ng. c l u ý t i. d ng tham s c u hình qu n lý c s d li u Giám sát h thông có th b#t ho c t t s HEALTH_MON. Có 3 ki u c nh báo: 1 1 1 Chú ý: Tình tr ng không bình th ng. 4. giám sát t t c các m t c a tình tr ng c s d li u (b nh . Hình 4. . Khi mà m t s tính n ng c a DB2 c th c thi bên ngoài các tham s ã thi t l#p. C nh báo: Tình tr ng ch a nghiêm tr&ng.

19 – Công c Trung tâm tình tr ng Kh i ch y Trung tâm tình tr ng.ng có th ch y công c này t* Start -> Programs -> IBM DB2 -> DB2COPY1 -> Monitoring Tools > Health Center. /i u này c bi u di0n qua Hình 4.20.20 – Kh i ch y Trung tâm s c kh+e Thi t l p c nh báo tình tr ng Môt khi Trung tâm tình tr ng c a b n ã c kh i ng.th tình tr ng L a ch&n ki u thông báo s d ng 52 Nh p úp chu t vào b t c l i c nh báo nào thì các chi ti t v thông báo xu t hi n ây Hình 4. Hình 4.Nh p môn H qu n tr c s d li u DB2 Ch&n th i gian làm m i màn hình Hi u ch-nh các thi t l#p ch. . B n có th kh i ng Trung tâm tình tr ng t* Control Center b ng cách nh n vào Tools Menu và ch&n Health Center. B n c.email hay s máy nh n tin c a nh ng ng i c n ph i liên l c n u xu t hi n c nh báo. b n có th thi t l#p các khai báo cho l i c nh báo (Alert notification) b ng cách nh n vào Health Center menu -> Configure -> Alert Notification nh trong Hình 4.21. C nh báo tình tr ng cho phép b n nh#p vào danh b v i a ch.

21 – Khai báo c nh báo .Nh p môn H qu n tr c s d li u DB2 53 Hình 4.

chúng ta s.Môi tr ng c a DB2 Trong ch ng này. hãy mô t d n d n t*ng ph n t thành ph n.1 mô t các v n bao b i e-líp màu " s. c chúng ta th o lu#n trong ch ng này.2 cho th y hình t ng v máy ch d li u DB2 sau khi cài t DB2 Express-C 9 . Hình 5. th o lu#n v Môi tr ng DB2: các th hi n.Nh p môn H qu n tr c s d li u DB2 54 5 Ch ng 5 .1 . Hình 5. Hình 5.B c tranh t ng th v DB2: Môi tr ng DB2 / mô t môi tr ng DB2. c s d li u và các file c u hình.

m t th hi n có th c dùng l u tr c s d li u cho s n ph m. Hình 5. không làm nh h ng t i các th hi n còn l i. Ví d .Nh p môn H qu n tr c s d li u DB2 55 Hình 5. ngh'a là. Th hi n này n gi n là m t môi tr ng c l#p trong ó có th ch y các ng d ng và t o ra các c s d li u. t o ra th hi n myinst. / t o m t th hi n DB2 m i.3 – Th hi n m c $nh DB2 c t o ra. s d ng câu l nh bd2icrt <instance name>. th hi n khác c dùng ki m tra môi tr ng c s d li u. ta s d ng câu l nh: bd2icrt myinst Hình 5. t o ra m t th hi n ” trên môi tr ng Linux).2 – Hình m%u v máy ch d li u DB2 sau khi cài t DB2 Express-C 9 /ây là m t ph n c a quá trình cài t trong môi tr ng Windows. Ví d .3. ch <instance name> c thay th b i b t c tên nào g+m 8 kí t . các thao tác th c hi n trên m t th hi n s. /i u này c mô t b ng m c nh g&i là DB2 (hay “ m t h p màu xanh trong Hình 5. và m t cái khác dùng cho môi tr ng phát tri n. B n có th t o nhi u th hi n trên cùng m t máy ch d li u và s d ng chúng cho các m c ích khác nhau. T t c các th hi n này là c l#p v i nhau.4 cho th y m t th hi n m i tên myinst nh m t h p màu xanh riêng bi t .

ng gi ng nh s d ng l nh db2start t* c a s dòng l nh c a DB2. b n có th ch&n Start c. N u b n s d ng c a s dòng l nh DB2 (DB2 Command Window). n u b n t o m t c trong th hi n myinst.Nh p môn H qu n tr c s d li u DB2 56 Hình 5. Chú ý r ng m i th hi n có m t a ch. Ví d .c ng (port) riêng. gõ l nh: db2ilist Trên Linux. chuy n Câu l nh Mô t db2start Kh i ng th hi n hi n t i db2stop Ng*ng th hi n hi n t i db2icrt T o m t th hi n m i db2idrop Lo i b" m t th hi n db2ilist Li t kê các th hi n b n có trong h th ng db2 get instance Li t kê các th hi n ho t ng hi n t i B ng 5. b n ch. / li t kê các th hi n. n u b n m r ng th m c Instances và nh n chu t ph i vào th hi n mong mu n. i dùng (v i câu l nh su). c. do ó. /i u này giúp phân bi t gi a các th hi n khi mà b n mu n k t n i t i m t c s d li u trong m t th hi n nh t nh t* m t máy khách xa. hay Stop. b n có th làm b t c th hi n nào c a DB2 tr thành m t th hi n ho t ng b ng cách s d ng m t l nh h i u hành trên môi tr ng Windows: set db2instance = myinst s d li u t* C a s dòng l nh.4 – M t máy ch DB2 v i 2 th hi n.ng nh s d ng l nh db2stop nh trong hình 5. Vài câu l nh trên có th th c hi n thay th thông qua trung tâm i u khi n (Control Center). ct o Trong ví d này.1 – Các l nh DB2 h u d ng trên th hi n. m t th hi n ph i g n li n v i m t ng i gi a các th hi n. trong c a s trung tâm i u khi n. nó s.c n chuy n i ng B ng 5.1 mô t vài l nh h u ích trên th hi n i dùng trên Linux.5 .

m c và nhi u th khác.5 – Các l nh trên th hi n trong c"a s Control Center / t om tc s dòng l nh DB2: d li u trong m t th hi n ho t ng. Hình 5. b n có th t o nhi u c s d li u. Các c s d li u là các ch th c l#p. c t o. M t c s d li u là m t t#p h p c a các i t ng nh là các b ng.6 mô t m t cách hình t ng c s d li u “MYDB1” c t o ra bên trong th hi n “DB2”. th c hi n l nh này t* c a s db2 create database mydb1 / li t kê t t c các c s d li u db2 litst db directory Bên trong b t kì th hi n nào. ch. các khung nhìn. không chia s2 các i t ng v i các c s d li u khác. ch y l nh: .Nh p môn H qu n tr c s d li u DB2 57 Hinh 5. và do v#y.

6 – C s d li u “MYDB1” B ng 5.2 M t s l nh b n có th s d ng L nh/ Câu l nh SQL c t o trong th hi n “DB2”. khung nhìn.ng có trùng tên (MYDB1) nh ng trong th hi n “ ”. và ch. Mô t T o m t c s d li u m i Lo i b" m t c s d li u K t n i t i c s d li u Câu l nh SQL t o ra b ng bi u. th c hi n các l nh sau ây trên c a s dòng l nh c a DB2 db2 set db2 set list db directory db2instance = myinst create database mydb1 db2instance = db2 c t o trong th hi n “ ”.m c t ng ng B ng 5. Hình 5.7 mô t c s d li u m i “MYDB1” . l p c s d li u. N u mu n t o m t c s d li u khác c.Nh p môn H qu n tr c s d li u DB2 58 Hình 5.2 – Các l nh/câu l nh SQL trên c s d li u.

vùng m d li u. Khi m t c s d li u c t o.ng c t o ra theo m c nh: không gian b ng.7 – C s d li u “MYDB1” trong khung nhìn “ ”. m t m t ít th i gian. B ng danh m c này c. ó là lý do t i sao l nh create database yêu c u vài phút x lý. c t o m c $nh khi m t C s d li u ct o Không gian b ng SYSCATSPACE ch a các b ng danh m c (Catalog). b ng này ch a thông tin h th ng mà b n . c th o lu#n chi ti t h n trong Ch ng 6. T o các i t ng này s. và nh tài nguyên h th ng nh là các 'a và b nh -. hãy c coi không gian b ng nh là các l p theo logic gi a các b ng logic (logical table).Nh p môn H qu n tr c s d li u DB2 59 Hình 5.8 – Không gian b ng ra. Hình 5. vùng m d li u và các t#p tin nh#t ký (log file). b ng. V c b n. Hình 5.8 mô t 3 không gian b ng m c nh c t o. Ki n trúc c a DB2. Không gian b ng s.ng c bi t n trong các h th ng qu n lý c s d li u quan h khác nh là t* i n d li u (data dictionary). nh ng hi n t i. m t vài i t ng c.

Không gian b ng USERSPACE1 thông th ng c dùng l u tr các b ng c s d li u ng i dùng khi m t b ng c t o ra mà không có không gian b ng riêng bi t l u tr nó.ng gi ng ó. C coi các t p nh#t ký nh các t p l u t m mà trên ó l nh “autosave” c thi hành. Trong hình 5. ta th y có 2 i t ng khác IBMDEFAULTBP. Ki n trúc c a DB2. Hình 5. Không gian b ng TEMPSPACE1 c DB2 s d ng khi mà c n thêm không gian cho x lý m t s thao tác nh là s p x p. Các t p nh#t ký s. b n c.9 mô t cách t o không gian b ng MYTBLS1 trong c s d li u MYDB1 c a th hi n DB2. C. mà trong khi b n ang làm còn có c các t p nh#t ký l u tr t t c thao tác x lý trên d li u y.nh các 'a và vùng m d li u s d ng. các c s d li u c. c l#p. các i t ng ng trong m t m t ” trong m t c s c mô t nh trong Ph n tr c. b n có th dùng nh ng 'a nhanh nh t và ph n l n b nh thông qua vi c n nh các c tính này cho không gian b ng. và các t p nh#t ký.9. và do ó.9 – Vùng m d li u và các t p nh t ký. c th o lu#n chi ti t h n vào Ch ng 6. B n có th t o m t hay nhi u vùng m.Nh p môn H qu n tr c s d li u DB2 60 không c s a i c. Vi c t o m t không gian b ng cùng tên “ d li u MYDB1 và m t c s d li u SAMPLE trong th hi n DB2 .ng nh xóa i. các thông tin không chc l u tr trên các 'a dành cho c s d li u ó. Do ó. ó là m t b ng c s d ng th ng xuyên. n u không c s d li u c a b n s. chúng ta ã trao i r ng các th hi n là các môi tr ng m t c s d li u trùng tên có th c t o trong các th hi n khác nh các th hi n. Hình 5. cm c nh t o ra: m t vùng m d li u Vùng m d li u v c b n là m t vùng nh c s d ng b i c s d li u.ng ch.ng là các ch th c l#p. n u b n có m t b ng “nóng”. do trong m t m t c s d li u này không có liên h nào v i các i t c s d li u khác. B n c. ho t ng không chính xác. c nói k' h n Ch ng 11: Sao l u và ph c h+i. Khi b n làm vi c trên m t c s d li u. Các t p nh#t ký (log) dùng ph c h+i. nhau. Khi b n t o ra m t không gian b ng.ng có th t o cho riêng mình các không gian b ng khi s d ng câu l nh CREATE TABLESPACE. nh ng luôn luôn ph i có m t vùng m v i kích c( m t trang nh ngang b ng kích th c trang nh c a không gian b ng có s)n. Trang nh và kích th c trang nh s.

/i u này là h p l b i vì các c s d li u là riêng bi t. L u ý r ng hình 5. b n c. M t khi b n t o ra m t không gian b ng.Nh p môn H qu n tr c s d li u DB2 61 hình 5. /i u này c mô ph"ng nh trong Hình 5.. Hình 5.11. .10 không mô t các i t ng m c nh khác c a m t c s d li u SAMPLE do gi i h n không gian trong hình v.10.m c. khung nhìn và ch.ng có th t o các i t ng trong không gian b ng nh b ng bi u.10 – Vùng b ng có cùng tên trong các c s d li u khác nhau.

công c h tr c u hình s. / k t n i công c tr giúp c u hình thông qua trung tâm i u khi n.T p c u hình qu n tr c s d li u (dbm cfg). khung nhìn và ch. kh i l ng công vi c. . Trong hình.ng giúp b n hoàn thành t t công vi c trên DB2. nh n chu t ph i lên m t c s d li u và ch&n “Configuration Advisor”. M t máy ch DB2 có th c u hình trên 4 c p : ./ ng kí lý l ch DB2. các bi n môi tr ng c thi t l#p c p h i u hành c a máy ch . n u không. . Ví d . hãy chú ý v trí c a m i chi c h p.11 – B ng. N u b n mu n bi t chi ti t h n v c u hình trên DB2. Tham s c qu n lý l p c s d li u. D a trên cách tr l i c a b n v m t s câu h"i liên quan n tài nguyên h th ng. m c c t o trong vùng b ng.Các bi n môi tr ng. hãy &c ti p. cung c p m t danh sách các tham s c a DB2 nên thay i ng v i các giá tr phù h p. /i u này c mô t trong Hình 5. . và ng ký lý l ch (profile DB2) c u hình c s d li u c thi t l#p ho c h i u hành ho c l p th hi n. 5. .Nh p môn H qu n tr c s d li u DB2 62 Hình 5. trong khi các tham s t p c u hình qu n lý c s d li u c thi t l#p l p th hi n .T p c u hình c s d li u (db cfg).12. s d ng công c tr giúp c u hình c.1 C u hình DB2 Ta có th c u hình các tham s c a DB2 b ng cách s d ng công c Configuration Advisor Tool – công c tr giúp c u hình.

nh n chu t ph i cho trình n b#t lên và l a ch&n Configuration Parameters.1. . l a ch&n i t ng th hi n t* th m c c a trung tâm i u khi n.12 – C u hình DB2. Công vi c này c mô t trong Hình 5. / làm vi c v i DBM CFG t* Trung tâm i u khi n. 5. áp d ng n. và các l nh DB2 b n s. T p c u hình qu n tr c s d li u có th c xem xét hay s a i b ng cách s d ng dòng l nh. thi t l#p th hi n ho t ng là “ ” trên Windows. ho c thông qua Trung tâm i u khi n c a DB2.Nh p môn H qu n tr c s d li u DB2 63 Hình 5.13. b n có th ch y l nh h i u hành sau: set db2instance = myinst 5.1. Bi n này cho bi t th hi n ang ho t ng mà b n ang làm vi c. M t bi n môi tr ng chính là DB2INSTANCE.2 T p c u hình qu n tr$ c s d li u (dbm cfg) T p c u hình qu n tr c s d li u (dbm cfg) bao g+m các tham s nh h ng t i th hi n và t t c c s d li u ch a trong ó.1 Các bi n môi tr ng Các bi n môi tr ng là các bi n c thi t l#p h i u hành. Ví d .

m t màn hình s. i u này có th th c hi n thông qua các l nh db2stop và db2start. trong Hình Hình 5.14 – Danh sách dbm cfg.Nh p môn H qu n tr c s d li u DB2 64 Hình 5. Sau khi ch&n Configuration Parameters.14 v i danh sách các tham s dbm cfg. Ph n l n tham s là ng. T* công c dòng l nh.13 – C u hình dbm t& Trung tâm i u khi n. thay i m t s tham s yêu c u ph i kh i ng l i th hi n có hi u l c. tuy nhiên. ngh'a là các thay i s. . hi n th lên nh 5. có hi u l c ngay l#p t c.

b n có th dùng l nh db2stop force. trong Hình .Nh p môn H qu n tr c s d li u DB2 65 Tr c khi m t th hi n ng*ng. M t th hi n c. t t c các ng d ng ph i c ng t k t n i.15 – C u hình db cfg t& Trung tâm i u khi n. / làm vi c v i DB CFG t* Trung tâm i u khi n.16 v i danh sách các tham s db cfg. Sau khi ch&n Configuration Parameters. Vi c này c mô t nh trong Hình 5. nh n chu t ph i cho trình n b#t lên và l a ch&n Configuration Parameters. ch&n i t ng c s d li u t* th m c c s d li u c a màn hình Trung tâm i u khi n.3 T p c u hình c s d li u (db cfg) T p c u hình c s d li u (db cfg) bao g+m các tham s tác ng n t*ng c s d li u. B ng 5. hay thông qua Trung tâm i u khi n c a DB2.ng có th ng*ng b ng cách nh n chu t lên ch&n Stop hay Start thông qua Control Center. 5. L nh Mô t db2 get dbm cfg Thu th#p thông tin v dbm cfg db2 update dbm cfg C#p nh#p giá tr c a tham s dbm cfg.3 Mô t m t s l nh h u hi u it ng th hi n và l a qu n tr công c dbm cfg t* dòng l nh. m t màn hình s.3 – Các l nh i u khi n dbm cfg. Hình 5.1. hay t m d*ng. hi n th lên nh 5. T p c u hình c s d li u có th xem xét hay s a i b ng dòng l nh. using <parameter_name> <value> B ng 5.15. N u b n mu n ng*ng m t th hi n ngay l#p t c.

Li t kê t t c bi n ng ký lý l ch DB2. ng ký DB2 hay . B ng 5. qu n lý db cfg t* dòng l nh.1.5 Mô t m t s l nh h u hi u db2set –all L nh i u khi n các bi n ng ký lý l ch DB2.6 M t s bi n Mô t Li t kê t t c các bi n ng ký lý l ch DB2 hi n t i c thi t l#p.4 Mô t m t s l nh h u hi u L nh get db cfg for <database_name> update db cfg for <database_name> using <parameter_name> <value> B ng 5. C#p nh#p giá tr cho m t tham s c a db cfg. c dùng nh t. Mô t Thu th#p thông tin v db cfg c a c s d li u mong mu n. Thi t l#p m t giá tr cho m t tham s . hay t*ng l p th hi n ( nh h ng riêng t*ng th hi n). B ng 5. 5. db2set –lr db2set <parameter>=<value> B ng 5.4 – L nh i u khi n db cfg. ng ký lí l$ch DB2.5 – Các l nh i u khi n B ng 5. Các bi n ng ký lý l ch DB2 bao g+m các tham s có th trên m t n n c th và có th thi t l#p thành toàn c c ( nh h ng t i t t c th hi n).4 * ng ký lý l$ch DB2 (profile).Nh p môn H qu n tr c s d li u DB2 66 Hình 5.16 – C u hình c s d li u.

kh i ng khi b t u công c qu n tr c s d li u. ng ký DB2 hay c dùng.2 Máy ch qu n tr$ DB2 Máy ch qu n tr DB2 (DAS) là m t quá trình n n ch y trên máy ch DB2 cho phép các máy khách t* xa có th qu n tr máy ch DB2 thông qua công c + h&a.Nh p môn H qu n tr c s d li u DB2 67 Bi n ng ký DB2COMM DB2_EXTSECURITY DB2_COPY_NAME B ng 5. cho phép giao ti p s d ng giao th c TCP/IP. / chuy n sang m t b n sao DB2 ã cài khác.16 – Máy ch qu n tr$ DB2 (DAS). Hình 5.có m t DAS trên m i máy tính nh trên Hình 5.nh nh ng qu n tr giao ti p s.bat. ch y dòng l nh path\bin\db2envars. . Bi n này không th dùng cho m c ích này. L u tr tên c a b n sao DB2 hi n t i ang dùng.16.6 – Các bi n Mô t Ch. Trên Windows. ng n ch n nh ng ng i ch a c nh danh k t n i t i DB2 b ng cách khóa t p tin h th ng DB2. ng ký Ví d . thi t l#p bi n DB2COMM thành TCPIP nh d i: db2set db2comm = tcpip 5. 4 ây ch.

các b c r t gi ng nhau. Trong vài tr ng h p. và bên ph i t ng tr ng cho máy ch (server machine). bên trái ng th!ng ng màu xanh t ng tr ng cho m t máy tr m t* xa (remote client machine).Mô hình l u tr c a DB2 6.1 mô t mô hình x lý c a DB2. db2loggr. Khi m t ng d ng trên máy tr m k t n i n máy ch b ng l nh SQL CONNECT. nh khi x lý song song. các b i k t n i (listener) cho giao th c truy n thông s. N u ng d ng ó là c c b (ch y trên cùng máy ch v i DB2).1. ch. Nh ng x lý thông d ng nh t c mô t trong b ng 6.Ki n trúc c a DB2 li u Trong ch ng này chúng ta s. Các tác nhân khác nh db2pfchr.có tác nhân db2ipccm x lý yêu c u thay cho db2tcpcm.Mô hình b nh c a DB2 . m t tác nhân db2 có th sinh ra các tác nhân khác (db2agntp).ng có th c s d ng cho nh ng m c ích khác nhau. nh#n c yêu c u này và liên l c v i m t tác nhân k t h p DB2 (DB2 coordinator agent). Hình 6.1 Mô hình x" lý c a DB2 Hình 6.Mô hình x lý c a DB2 .1 – Mô hình x" lý c a DB2 .Nh p môn H qu n tr c s d li u DB2 68 6 Ph n II – H c DB2: Qu n tr$ C s d Ch ng 6 . db2dlock c. Tác nhân DB2 có ch c n ng th c hi n các thao tác thay cho DB2. Trong hình. th o lu#n nh ng nét chính v .

Nh p môn H qu n tr c s d li u DB2 69 Mô t X lý c a th hi n c s d li u (m t x lý cho m t th hi n). k t h p công vi c c a các tác nhân con db2agntp. m c c li u và m c ng d ng và tác nhân (hình 6.Các x" lý thông d ng c a DB2 6. db2agent s.2). th c thi các thao tác c s d li u thay cho ng d ng.1. Tác nhân k t h p th c thi nh ng thao tác c s d li u thay cho các ng d ng (ít nh t m t ti n trình trên m t k t n i. Truy n thông/listener TCP/IP. db2pclnr B ghi d li u nh#p/xu t b t +ng b (NUM_IOCLEANERS). db2pfchr B &c d li u nh#p/xu t b t +ng b (NUM_IOSERVERS). s d Tên x" lý db2sync db2tcpcm db2agent .2 Mô hình b nh c a DB2 Mô hình b nh DB2 g+m nhi u vùng nh khác nhau t i m c th hi n. ph thu c vào b t#p trung k t n i có c kích ho t không). db2agntp ng c sinh ra n u tr ng Tác nhân con ch INTRA_PARALLEL là YES. B ng 6. S.

Trong kh i này. 8K. T i m t th i i m n u ch. 16K. 6. C.2 – Mô hình b nh c a DB2 Khi b t u m t th hi n. Vùng m c c p phát v i các n v nh là các trang 4K.Vùng nh m .Nh p môn H qu n tr c s d li u DB2 70 Hình 6. 8K. Có ngh'a là DB2 oán tr c trang nào s. nên chúng s)n sàng c s d ng.2 Vùng nh m M t vùng nh m là vùng nh th c (real cache) cho d li u b ng và ch. .3.3.Trang và ph m vi . Nên có ít nh t m t vùng m trên m t c s d li u.Không gian b ng 6. 16K và 32K. vùng nh toàn c c c s d li u s. c c p phát. Nó c i thi n th c thi b ng cách gi m nh#p/xu t tu n t tr c ti p và nâng c p &c ghi không +ng b .làm vi c v i m t trang thì lãng phí kh n ng th c thi. Th ng vùng nh này không nhi u.ng có th vào trung tâm i u khi n.3 Mô hình l u tr c a DB2 Trong m c này chúng ta s.1 Trang và ph m vi Trang là n v l u tr nh" nh t c a DB2. N u không dùng b t#p trung k t n i thì m i k t n i c n m t tác nhân. và 32K. N u s d ng b t#p trung k t n i. &c chúng t* 'a vào vùng m. 6. c n n. nhi u k t n i có th dùng chung m t tác nhân. vùng nh chia s2 qu n lý c s d li u c c p phát. do v#y DB2 làm vi c v i các ph m vi t i m t th i i m. và ít nh t m t vùng m phù h p cho m t không gian b ng có kích th c trang ã bi t. nh n chu t ph i lên th m c Buffer pool trong c s d li u ã bi t và ch&n Create nh trong hình 6. Kích th c c a trang và ph m vi c nh ngh'a khi làm vi c v i vùng nh m và các không gian b ng nh trong ph n ti p theo. Vùng nh riêng tác nhân là vùng nh c s d ng cho m i tác nhân DB2. c bi t khi c n c i thi n vi c th c thi truy v n.3. M t ph m vi là m t nhóm các trang. T o m t vùng m Có th dùng l nh CREATE BUFFERPOOL t o vùng m. Kích th c c a vùng m quy t nh l n c a toàn b vùng nh toàn c c c s d li u. L n u tiên k t n i n c s d li u. M t tác nhân s d ng kho ng 3–5MB. gi m nhu c u s d ng b nh v#t lý.m c. vùng m (buffer pool) là m t trong nh ng thành ph n quan tr&ng nh t. mô t nh ng khái ni m sau: . v i các kích th c 4K.

3 – T o m t vùng m .Nh p môn H qu n tr c s d li u DB2 71 Hình 6.

Nh p môn H qu n tr c s d li u DB2 72 Sau khi ch&n Create.H p tho i t o vùng m Ph n l n các m c trong hình 6.5. vô hi u hóa nh#p/xu t kh i. / c bi t. nó s.4. h p tho i Create Buffer Pool xu t hi n nh trong hình 6. M i l n vùng trong hình 6. c trình bày trong trung tâm i u khi n nh . Các tr ng ‘Non-blocked’ và ‘Blocked’ ch. Cách này có th c i thi n vi c th c thi.ng liên t c trong m t vùng óng kh i.4 . giá tr 0 s. Hình 6.nh s l ng trang t+n t i là không óng kh i (non-blocked) hay óng kh i (blocked). Vùng m d a trên kh i b o m r ng các trang liên t c trên 'a di chuy n vào vùng m c.4 c t gi i thích. S l ng trang không th l n h n 98% s l ng trang c a vùng m. m c t o ra.

Tên c a vùng m mà liên k t v i không gian b ng Kích th c c a ph m vi Kích th c n p tr c c Các lo i không gian b ng Có ba lo i không gian b ng: Thông th ng Lo i này dành cho các b ng c a ng không gian b ng thông th ng vì nó i dùng. 8KB.ng c s d ng l u tr các d li u XML t o ra các CSDL có h tr PureXML – s d ng UNICODE và XML làm ki u c a các c t. Nó c. Kích th trang này ph i t ng ng v i kích th c trang c a vùng m. B n có th s d ng câu l nh CREATE TABLESPACE t o m t không gian b ng mà b n c t : • • • • Kích th c trang c a không gian b ng (4KB. T m th i Có hai lo i không gian b ng t m th i: - .3. - L n Lo i này c s d ng tùy ch&n phân chia các d li u LOB v không gian b ng c a nó. Ví d nh USERSPACE1 là m t c t o ra m t cách m c nh.Nh p môn H qu n tr c s d li u DB2 73 Hình 6. 16KB. or 32KB).3 Các không gian b ng Không gian b ng là m t là m t giao di n logic gi a các b ng logic và các vùng nh c a h th ng (bao g+m vùng nh m và các 'a).5 – Trung tâm i u khi n sau khi t o vùng m ‘SAMP16K’ 6. Các không gian b ng lo i l n là m c nh.

Chúng d0 dàng c qu n lý và c ch a trong các th m c h th ng t p. Không gian b ng lo i này không cc p phát tr c. Không gian b ng c qu n lý b i CSDL Lo i không gian b ng này c g&i là Database Managed Storage (DMS). / cho phép l u tr t ng. thay su t t t nh t. /i u này có ngh'a là h i u hành s. d li u LOB không th c tr i trên các không gian b ng khác nhau.Nh p môn H qu n tr c s d li u DB2 74 Không gian b ng t m th i c a h th ng /ây là lo i không gian b ng c s d ng b i DB2 cho các thao tác n i b (h th ng) nh s p x p. Vi c qu n lý òi h"i s can thi p c a ng i qu n tr c s d li u. i kích th c. Các ch ch a (container) có th là các t p cc p phát tr c ho c các thi t b thô (thi t b thô c hi u nh thi t b l u tr c ghi theo nh h ng ký t . Không gian b ng t m th i c a ng i dùng /ây là lo i không gian b ng c s d ng t o ra các b ng t m th i toàn c c do ng i dùng nh ngh'a. ch. thì chúng s. ích l i c a chúng là s d ng t ng t nh các không gian b ng SMS. Ví d TEMPSPACE1 là không gian b ng c t o ra t ng khi b n t o m t CSDL. không c n h th ng t p c a h i u hành). vì d li u. Sau ó b n có th t o các không gian b ng s d ng l u tr t ng ( ây là ch m c nh) Ví d l u tr t ng . nh ng l i có hi u su t t t và tính linh ho t c a không gian b ng DMS. nó là m t không gian b ng t m th i c a h th ng. Sau khi t o xong. qu n lý không gian nh này. u tiên b n c n t o m t CSDL v i ch c n ng l u tr t ng c kích ho t (m c nh) và liên k t các ng d%n l u tr t i nó (CSDL). tr* khi vi c ph c h+i tái nh h ng u c dùng. qu n lý lo i không gian l u tr này. b". /i u này có ngh'a là DB2 s. ây là lo i không gian b ng m c nh. M t khi b n ã xác nh cc nh lúc t o ra và không th thay i v các ch ch a (th m c). V i lo i không gian b ng này. Vi c này có th nh trong câu l nh CREATE TABLESPACE c ch- Không gian b ng c qu n lý b i h th ng Lo i không gian b ng này c g&i là System Managed Storage (SMS). V i các thi t b thô.ra nhóm các thi t b l u tr logic. ng i dùng ch.m c hay d li u LOB có th b ng khác nhau nâng cao hi u su t.m c. DMS có hi u c n m trên các không gian Không gian b ng c qu n lý t ng Lo i không gian b ng này c qu n lý b i b nh t ng. Các ch ch a (h th ng t p) có th c thêm. n u c n thi t b n có th tái nh ngh'a các ng d%n l u tr b ng cách s d ng thao tác RESTORE c s d li u.c n ph i ch. Chúng th ng hay b nh m l%n v i các không gian b ng t m th i c a h th ng. Khi s d ng các không gian b ng SMS. nh ng dung l ng các t p c t ng lên t ng. d li u c ghi tr c ti p mà không qua b m c a h i u hành. sau. Các ch ch a ct ot ng theo các ng d%n. Qu n lý các không gian b ng Các không gian b ng có th c phân lo i theo cách qu n lý. Do ó trong DB2 9. ch. Không ph i nh ngh'a t ng minh ch ch a. d li u. Vi c t ng kích th c hay b sung thêm ch ch a m i hoàn toàn do DB2 qu n lý.

chúng ta t o không gian b ng v i l u tr t ng c cho phép theo các ví d sau: L u tr t ng cho không gian b ng c cho phép theo m c nh: CREATE TEMPORARY TABLESPACE TEMPTS L u tr t ng c ch. Ví d n u b n có m t không gian b ng 4K v i kích th c m r ng là 8.nh m t cách t ng minh cho không gian b ng: CREATE TABLESPACE TS2 MANAGED BY AUTOMATIC STORAGE L u tr t ng c ch. và kích th c t i a có th t ng n.ra: Hình 6. kích th c ban u phát. s d ng 3 ch ch a thô trong không gian b ng DMS. /i u này c ch. kích th c t ng theo t*ng l n. DB2 s.Nh p môn H qu n tr c s d li u DB2 75 / u tiên. /data/path2 L u tr t ng không c phép: CREATE DATABASE DB1 AUTOMATIC STORAGE NO Ti p theo.nh t ng minh: CREATE DATABASE DB1 AUTOMATIC STORAGE YES ng c cho phép theo m c nh nh ng ng d%n L u tr t CREATE DATABASE DB1 ON /data/path1. Chú ý r ng các b ng không chia s2 các ph m vi.6. CREATE TABLESPACE TS1 INITIALSIZE 500 K INCREASESIZE 100 K MAXSIZE 100 M D li u c l u tr nh th nào trong không gian b ng Theo m c nh.nh không t ng minh.6 – Ghi d li u vào không gian b ng .ra trong Hình 6. i u này có ngh'a r ng 32K d li u (4K x 8 trang trên m t ph m vi = 32K) s. c ghi vào m t 'a tr c khi ghi vào 'a ti p theo. cc p c ch. ghi vào các ph m vi 'a (disk extent) t i th i i m chia b ng (stripe) qua các ch ch a. hãy t o m t CSDL v i l u tr t ng c cho phép theo các ví d sau: nh: L u tr t ng c cho phép theo m c CREATE DATABASE DB1 L u tr t ng c ch.

7 – T o không gian b ng t& trung tâm i u khi n Hình 6.8 – T o m t không gian b ng s" d ng tr giúp . kích chu t ph i vào th m c Table Spaces trong CSDL c ch&n và ch&n Create theo Hình 6.8.7. Tr giúp t*ng b c t o không gian b ng s. xu t hi n nh Hình 6.Nh p môn H qu n tr c s d li u DB2 76 T o không gian b ng s" d ng trung tâm i u khi n / t o m t không gian b ng t* trung tâm i u khi n. Hình 6.

th o lu#n m t ph ng th c n gi n nh t ó là s d ng công c Tr giúp c u hình (Configuration Assistant). / th c thi Tr giúp c u hình trên Windows. b n có th b t u công c này b ng cách s d ng l nh db2ca. vì th máy ch DB2 c.1 .ng c xem nh m t thành ph n máy khách.Công c tr giúp c u hình 7.1. trong ph m vi c a ch ng này chúng ta ch.1 mô t công c tr giúp c u hình. b n có th ch&n: Start -> Programs -> IBM DB2 -> DB2COPY1 -> Set-up Tools -> Configuration Assistant.1 Nh ng cài Có hai vi c c n 1) Bi n DB2COMM t b t bu c trên máy ch c thi t l#p t i máy ch : . Hi n t i có m t s cách khác nhau thi t l#p k t n i máy khách DB2. N u s d ng dòng l nh. 7. tuy nhiên.Nh p môn H qu n tr c s d li u DB2 77 7 Ch ng 7 – K t n i máy khách DB2 Ch ng này trình bày các b c thi t l#p c n thi t k t n i t* máy khách DB2 n máy ch DB2 s d ng giao th c TCPIP. Hình 7. Chú ý r ng m t máy ch DB2 c. b n có th d0 dàng c u hình k t n i gi a m t máy khách DB2 và m t máy ch DB2.ng có hành vi c a m t máy khách khi k t n i n m t máy ch DB2 khác. Hình 7.1 Tr giúp c u hình S d ng giao di n tr c quan c a công c Tr giúp c u hình.

3 Hình 7. B giao th c TCPIP là b các giao th c truy n thông c s d ng ph bi n nh t.2 và Hình 7.Nh p môn H qu n tr c s d li u DB2 78 Bi n ng kí này xác nh giao th c truy n thông c s d ng l ng nghe các yêu c u n t* máy khách.3 – Ki m ch ng giá tr$ c a bi n DB2COMM trong DB2 Registry 2) Bi n SVCENAME .2 – Truy c p DB2 Registry Hình 7. h th ng c n c kh i ng l i. ch&n Configure -> DB2 Registry nh c mô t trong Hình 7. Khi thay i giá tr c a tham s này. / xem và thay i giá tr c a bi n DB2COMM trong tr giúp c u hình.

mi0n là t+n t i m t th c th t ng .Nh p môn H qu n tr c s d li u DB2 79 Tham s dbm cfg s.2 Nh ng cài t c n thi t trên máy khách T i máy khách. S hi u c ng giao ti p c a th hi n DB2 t i máy ch n i c s d li u c cài t. c thi t l#p n tên d ch v (nh c nh ngh'a trong t p d ch v TCPIP) ho c n s hi u c ng giao ti p s d ng khi b n mu n truy c#p c s d li u c a th hi n này. T* công c tr giúp c u hình.4 – Xem xét dbm cfg t& Tr giúp c u hình M t khi b n ã vào trong c a s c u hình c a DBM.5 – Xem xét tham s dbm cfg c a SVCENAME 7.5 Hình 7. Tên c s d li u mà b n mu n k t n i n 2.4 Hình 7. B n có th thay i giá tr c a SVCENAME thành m t chu i hay thành s hi u c ng giao ti p khi c n thi t. /i u này c mô t trong Hình 7. ch&n Configure -> DBM configuration nh c mô t trong Hình 7.1. và tìm ki m tên SVCENAME. tìm n m c Communications. B n c. b n c n bi t nh ng thông tin sau: 1.ng có th s d ng tên c a d ch v .

Hình 7. / u tiên.6 – S" d ng ch c n ng Add Database Wizard B n c. ID c a ng i dùng h th ng và m#t kh u c a ng i s d ng này c n c nh ngh'a tr ng nh#p vào c c t i máy ch s d li u. có ba tùy ch&n: . nh c mô t trong Hình 7. th c hi n ch c n ng Add Database Wizard b ng cách kích ch&n Selected -> Add Database Using Wizard.7 mô t ch c n ng Add Database Wizard: Hình 7.7 – Thêm CSDL (Add Database Wizard) Trong Add Database Wizard.ng có th th c hi n ch c n ng này b ng cách nh p chu t ph i vào vùng tr ng trong c a s tr giúp c u hình và ch&n “Add Database Using Wizard”.6 Hình 7. ID Nh ng thông tin trên có th c nh#p vào t* máy khách DB2 s d ng Configuration Assistant.Nh p môn H qu n tr c s d li u DB2 80 ng trong t p d ch v TCPIP 3.

9 cung c p chi ti t v v n này. .7. DAS ph i c ch y trên m i máy ch DB2 n i mà c s d li u c tìm th y. b n có th n p t t c thông tin tr c ti p n nh ng máy khách khác.mà b n cung c p. có hai cách th c hi n vi c tìm ki m: Tìm ki m (Search): Tìm ki m trên toàn b h th ng m ng. / ph ng pháp này ho t ng.Nh p môn H qu n tr c s d li u DB2 81 S" d ng lý l$ch (Profile) Có th xãy ra nhi u tình hu ng khi b n c n nh c u hình nhi u máy khách k t n i n cùng m t máy ch DB2. m t nhi u th i gian truy v n d li u t* m i h th ng /ã bi t (Known): Tìm ki m trên h th ng m ng cho m t máy ch ã bi t t i a ch. tùy ch&n này thu#n ti n th c hi n t t c các c u hình t* m t máy khách. Trong Hình 7.ng c bi t n nh “S khám phá” (Discovery). ng i qu n tr h th ng không mu n các máy khách c tìm ki m trên m ng v i c s d li u l u tr nh ng thông tin c n b o m#t. V i t p này. Ph ng pháp này không c khuy n khích s d ng n u h th ng m ng c a b n l n và có nhi u b t#p trung m ng (Hub/Switch). Tìm ki m trong h th ng m ng Ph ng pháp này c. n p thông tin t* m t “lý l ch” ang t+n t i. V i ph ng pháp này. ng pháp c minh h&a trong Hình 7. b n s. mô t cách t o lý l ch cho máy khách và máy ch . n u b n ch&n “Use a Profile”. /i u này có th c ng n ch n t i c p DAS. c p th hi n hay c s d li u. Hình 7. th hi n và c s d li u cho tr c. vì nó s. yêu c u DB2 tìm ki m h th ng m ng t ng ng v i m t máy ch .8 - Hai ph Hình 7.8 – Ph ng pháp tìm ki m Search và Known Trong m t s tr ng h p. và l u c u hình này vào trong m t t p “lý l ch”. Chi ti t c a tùy ch&n c cung c p trong m c sau c a ch ng này s. Trong nh ng tình hu ng nh v#y.

/i u này giúp ti t ki m r t nhi u th i gian cho ng i qu n tr h th ng khi thi t l#p môi tr ng. vì v#y. b n có th ch. T ng t . Vi c thi t l#p nh ng tham s này m t cách h p lý s. b n ph i ch c r ng ID và m#t kh u b n cung c p k t n i n i t* xa n c s d li u là úng.Nh p môn H qu n tr c s d li u DB2 82 Hình 7. Chính b n s.ng có th c thi t l#p là ENABLE hay DISABLE.9 mô t nh ng c p khác nhau trong ó b n có th cho phép hay ng n c n s DAS. 7. t* Tr giúp c u hình. b n có th gán tham s cho tr c DISCOVER m t d ng S khám phá. phát sinh ra “danh m c” câu l nh th c thi vi c c u hình k t n i. không ki m tra thông tin có chính xác không. bi t nó không úng khi b n không k t c n máy ch . b n ph i cung c p m t ID ng i dùng cùng v i m#t kh u ã c nh ngh'a trên máy ch ó. b n th c hi n th công vi c thêm tên máy ch . sau ó ch&n Export Profile -> Customize. s hi u c ng giao ti p và thông tin v c s d li u cho công c Tr giúp c u hình. T i c p giá tr là SEARCH hay KNOWN. kích vào trình Configure. n i s. h n n a vi c thi t l#p cho m i máy c l#p nhau. tham s DISCOVER_DB c. C u hình m t cách th công k t n i n c s d li u S d ng ph ng pháp này. nh c mô t trong Hình 7. t i c p c s d li u. tham s dbm cfg là DISCOVER_INST có th c thi t l#p thành DISABLE hay ENABLE. Cu i cùng.10 n . Quá trình xác minh thông tin c m c nh th c hi n trên máy ch DB2 mà b n ang c g ng k t n i n. Công c Tr giúp c u hình s. khi ó áp d ng lý l ch này n các máy khách/ máy ch khác.9 – C u hình các tham s cho phép dùng S khám phá (discovery) Hình 7. T i c p th hi n.c n thi t l#p cho m t máy duy nh t.3 T o lý l$ch cho máy khách và máy ch N u b n ang c u hình cho m t s l ng l n máy ch hay máy khách. / t o m t lý l ch tùy ch-nh theo yêu c u.1. sau ó xu t ra m t lý l ch (xu t t p c u hình ch!ng h n). cung c p cho b n cách th c tìm ra c s d li u.

11 mô t nh ng tr ng c n c hoàn thành xu t m t lý l ch Hình 7.10 – Xu t m t lý l$ch Hình 7. .nh xu t lý l$ch Hình 7.12 mô t k t qu sau khi kích “Export” trong h p tho i Customize Export Profile.Nh p môn H qu n tr c s d li u DB2 83 Hình 7.11 – H p tho i tùy ch.

13 n Configure.13 – Nh#p m t lý l ch Hình 7.12 – Xu t k t qu lý l$ch / nh#p m t lý l ch ã c tùy ch-nh t* Tr giúp c u hình. Hình 7.14 mô t nh ng tr ng c n c hoàn thành nh#p m t lý l ch . nh c mô t trong Hình 7.Nh p môn H qu n tr c s d li u DB2 84 Hình 7. kích vào trình sau ó ch&n Import Profile -> Customize.

14 – Nh p lý l$ch c tùy ch.Nh p môn H qu n tr c s d li u DB2 85 Hình 7.nh .

t o ch.Trong môi tr dòng l nh ng Windows. M b ng ch&n Selected và ch&n m c Add Database Using Wizard 4. B n c n ph i thêm m t m c vào t#p tin này n u b n mu n s d ng tùy ch&n trên. DB2 th c hi n t t c các quá trình giao ti p m t cách th m l ng. nh#p vào tên y a ch. l y tên c a máy ta gõ l nh hostname t* c a s l y a ch. Ghi chú: Tùy ch&n Service Name có th c s d ng n u b n có m t m c (entry) trong t#p tin Services n i b v i m t c ng có s c nh ngh'a d a trên c ng mà máy ch t* xa ang l ng nghe.IP ta gõ l nh ipconfig t* c a s ng trình này có th truy 2.m c cho m t c s d li u n m trên m t máy ch DB2 xa (remote DB2 server c th hi n b ng máy tr m c a ng i ng+i bên c nh b n. tìm ki m trong t#p tin d ch v trên máy c a b n ch không ph i trên máy ch . Nh n nút Next di chuy n n trang ti p theo c a trình tr giúp.Trong môi tr dòng l nh . Trong trang Source c a trình tr giúp. . s d ng c hai cách Tìm ki m và Khám phá). có th truy c#p c s d li u này gi ng nh là nó ang ngay trên h th ng máy c a mình. b n luôn có th s d ng chính máy tính c a mình v*a làm máy ch v*a làm máy khách và làm theo các ch. ch&n m c TCP/IP. DB2 s. ng Windows.IP mà b n ã ghi l i trong b c 1.Nh p môn H qu n tr c s d li u DB2 86 Bài t p nhanh #4 – S" d ng Tr giúp thi t l p c u hình M c tiêu Ch ng trình Tr giúp thi t l#p c u hình có th c s d ng c u hình các k t n i c s d li u t* xa m t cách nhanh chóng và d0 dàng. Nh n nút Next chuy n n trang ti p theo c a trình tr giúp. Nh#p vào s c ng b n ã ghi trong b c 1. N u không ph i nh v#y. di c a máy ch ho c là 6. Trong trang TCP/IP c a trình tr giúp. Ghi chú Bài t#p nhanh này gi nh r ng b n ang làm vi c trong 1 m ng máy tính. b n s. M t khi c s d li u ó ã c li t kê. 5.d%n cho công vi c c u hình d i ây k tn i n chính h th ng c a b n.IP hay tên máy ch _________ (PN) S c ng c a th hi n (instance) _________ (DB) Tên c a c s d li u _SAMPLE_ Các m7o : . Trong bài t#p nhanh này. Th t c 1. b n s. Khi b n s d ng tùy ch&n này. Trong trang Protocol c a trình tr giúp. ch&n m c Manually Configure a Connection to a Database. M ch ng trình Tr giúp thi t l#p c u hình (M7o: ch c#p thông qua l nh Start) 3. Nh n nút Next di chuy n n trang ti p theo c a trình tr giúp. H"i ng i bên c nh (hay ng i h ng d%n b n) các thông tin sau ây : Thông tin c s d li u t* xa: (PR) Giao th c _TCPIP__ (IP) / a ch.

hãy m b o r ng m c Windows trong danh sách s xu ng c ch&n. Tr ng Instance name nên c t là DB2. Bí danh c s d li u (database alias) là m t cái k tn i nc tên mà nh ng ng d ng n i b trên máy c a b n s. m b o tên ng i dùng và m#t kh u mà b n cung c p là h p l trên máy ch xa (b i vì có th tham s AUTHENTICATION c a máy ch c t giá tr là SERVER). hi n ra. nh#p vào tên c a c s d li u c nh ngh'a trên máy ch t* xa mà b n ã ghi l i trong b c 1 tr ng Database Name. vi c tìm ki m có th s. b n có th (không b t bu c) ng ký c s d li u (ngu+n d li u) m i này nh m t ngu+n d li u ODBC.Nh p môn H qu n tr c s d li u DB2 87 7. b" d u ánh m c “Register this database for ODBC” t i vì b n s. Vì th b n ph i s d ng m t tên bí danh khác. không s d ng ODBC. trên nh ng m ng l n. M trung tâm i u khi n và th xem nh ng b ng khác nhau trong c s d li u t* xa v*a m i c t o danh m c 13. 10. Nh n nút Next di chuy n n trang ti p theo c a trình tr giúp. Nh n nút Next di chuy n n trang ti p theo c a trình tr giúp. Cách làm này s. M t h p tho i xác nh#n s. b n hãy quay tr l i trình tr giúp và m b o r ng t t c các giá tr ã c xác l#p úng (Nh n nút Change quay l i nh ng cài t trong trình tr giúp) 12. B i vì b n ã có m t c s d li u trên máy c a mình c nh ngh'a s)n v i tên là SAMPLE. Trang System Options c a trình tr giúp cho b n c h i m b o r ng h th ng và tên máy ch ã c i n chính xác và xác nh#n nh ng cài t c a h th ng. xác nh h i u hành c a máy ch n i mà c s d li u t* xa ang n m t i ó. Trong trang Data source c a trình tr giúp. 8. t ng ng ký c s d li u ó trong ch ng trình qu n lý ODBC c a Windows (Windows ODBC Manager) cho b n. N u vi c k t n i không thành công. hãy i bí danh c s d li u thành SAMPLE1. / ý vi c tr ng Database Alias c i n m t cách t ng v i cùng giá tr ó nh th nào. Trong trang Node Options c a trình tr giúp. Trong trang C s d li u c a trình tr giúp. DB2 s. N u vi c th k t n i thành công. Vi c này s. Trang Security Options c a trình tr giúp cho phép b n xác nh n i b n mu n vi c xác th c ng i dùng x y ra và ph ng th c b n mu n s d ng. l n này s d ng tu ch&n Search the Network. t n th i gian tr v các k t qu . L u ý r ng. B n có th nh#p vào m t l i chú thích tùy ý v c s d li u này n u b n mu n. Ch&n m c Use authentication value in server’s DBM Configuration. Làm t*ng b c trong trình tr giúp gi ng nh b n ã c u hình k t n i b ng tay. Nh n nút Test Connection m b o b n có th k t n i thành công n c s d li u. 9. Nh n nút Next di chuy n n trang ti p theo c a trình tr giúp. Trong ví d này. s c xác l#p b i tham s AUTHENTICATION trong t#p tin d ng ph ng th c c u hình c a th hi n (instance) xa. N u tr ng này ch a c t thì hãy t giá tr cho nó là DB2. Thêm vào ó. b n ã t o danh m c c s d li u xa m t cách thành công. không cho phép b n t o tên m t c s d li u khác có cùng tên. Quay tr l i ch ng trình Tr giúp thi t l#p c u hình và th t o danh m c v i m t c s d li u khác. s d ng s d li u này. Trong ví d này. 11. Nh n nút Next di chuy n n trang ti p theo c a trình tr giúp. Nh n nút Finish t o danh m c c s d li u t* xa và óng trình tr giúp l i. B i vì t t c các máy tr m trong phòng máy này u s d ng Microsoft Windows.

T t c các i t ng d li u trong DB2 có hai ph n tên theo tiêu chu n. SQL PL l u tr các th t c. Ch c n ng it ng hay các m i Cung c p cho b n các ch.<tên_ i t ng> + là n a Tên i t ng theo quy chu n ph i là duy nh t. UDFs. s ph n u tiên c a tên: <tên_s >. trong dòng SQL PL. Ví d . l y mã tài kho n mà b n k t n i v i c s d li u làm tên s +. và ch ng 15. ch.Làm vi c v i các it ng d li u Ch ng này th o lu#n các i t ng d li u nh là d ng s + (schemas). BLOG (2M) not logged compact . 8.d%n c a quy n s h u các quan h i v i m t ng d ng. d ng b ng (table). là arfchong.m c (indexes).1 S S + là không gian tên (name spaces) cho t#p h p các chính c a chúng nh sau: it ng d li u. 8.Nh p môn H qu n tr c s d li u DB2 88 8 Ch ng 8 . c th o lu#n trong ch ng 14. Gom nhóm các i t ng có m i quan h v i nhau. n u b n k t n i d li u m%u v i tên s d ng là “arfchong”. chu i (sequences)… M t s các i t ng d li u cao c p nh là các b%y s ki n (triggers). CHAR (1) not null. Phát bi u bên d i cung c p cho b n ví d v vi c làm cách nào t o ra m t b ng b ng cách s d ng phát bi u CREATE TABLE CREATE TABLE artists { artno name classification bio picture } SMALLINT not null. Khi b n k t n i c s d li u và t o hay tham chi u n m t i t ng mà không nh rõ tên s +.2 B ng M t b ng là m t t#p h p các d li u có m i quan h v i nhau m t cách h p lý theo các c t và hàng. khung nhìn (view). các hàm do ng i dùng nh ngh'a (UDFs) và nh ng th t c c l u tr s. CLOB (100K) logged. và t o m t b ng b ng cách s d ng phát bi u CREATE TABLE CREATE TABLE artist … Tên theo quy chu n y c a b ng c t o ra s. Triggers. DB2 s. VARCHAR (50) with default ‘abc’.artists.

chúng ta có th mô t các ph n chính c a phát bi u CREATE TABLE này.Nh p môn H qu n tr c s d li u DB2 89 In mytblsl Trong các ph n ti p theo ây. các chu i nh phân l n.1 – Các ki u d li u c a DB2 Các ki u d li u i t ng l n (LOB) Các ki u d li u i t ng l n c dùng l u tr các chu i lý t l n.1 Danh sách các ki u d li u c h tr trong DB2 Hình 8.1 Ki u d li u Hình 8.2 . 8.2. hay các t#p tin c ch.ra trong hình 8.

UDTs c dùng khi: Có nhu c u thi t l#p ng c nh cho các giá tr Có nhu c u c n ép ki u d li u DB2. Weight_p POUND NOT NULL.ng c bi t nh là DBCLOB. C hai u c xây ng d a trên ki u d li u s)n có c a h th ng INTEGER. Các ki u d li u c $nh ngh-a b i ng i dùng DB2 cho phép b n có th t nh ngh'a ki u d li u c a chính mình. có 2 UDTs c t o ra là: POUND and KILOGRAM. d a trên ki u d li u c a h th ng. c t o ra.ra r ng vi c thay các hàm v i cùng tên c. và i t ng ký t l n 2 byte c. B ng person dùng 2 UDTs m i trong c t weight_p và weight_k theo tu n t .ng gi ng nh vi c các ki u d li u s. M nh WITH COMPARISIONS c nh ngh'a nh là ph n cú pháp ch. Weight_k KILOGRAM NOT NULL } Trong ví d này.2 – Các ki u d li u LOB Các i t ng ki u nh phân l n này th ng c vi t t t cho d0 hi u: M t i t ng nh phân l n ph i là m t BLOB. N u bây gi chúng ta a ra phát bi u sau: SELECT F_NAME FROM PERSON WHERE weight_p > weight_k . m t i t ng ký t l n là CLOB. /i u này c xem nh là vi c có b ki u d li u do ng i dùng t nh ngh'a (UDTs). Các phát bi u theo sau âu mô t m t ví d v vi c s d ng UDTs nh th nào và khi nào CREATE DISTINCT TYPE POUND AS INTEGER WITH COMPARISIONS CREATE DISTINCT TYPE KILOGRAM AS INTEGER WITH COMPARISIONS CREATE TABLE person { F_name VARCHAR (30).Nh p môn H qu n tr c s d li u DB2 90 Hình 8.

có m t c t khoá chính cho m t b ng. 2). SELECT F_NAME FROM PERSON WHERE weight_p > POUND (30) Các giá tr$ NULL M t giá tr null i di n cho m t r ng thái không xác nh.2 C t khoá chính (Identity columns) C t khoá chính này là m t con s c t o ra t Ch. phát bi u CREATE TABLE có th nh ngh'a m t c t b ng cách s d ng m nh NOT NULL. sinh ra. Phát bi u k ti p cung c p ví d cho i u này: CREATE TABLE Staff { ID SMALLINT NOT NULL. /i u này m b o r ng c t này s. 2) with default 15 } 8. JOB CHAR (5).2. Các ng d ng thì không c phép cung c p nh ng giá tr c th . B n c. chúng tôi s. i u này ph thu c vào vi c nó ngh'a nh th nào: - Luôn luôn c sinh ra: nh ng giá tr luôn luôn c DB2 sinh ra. Nh b n th y trong phát bi u bên d i. Tuy nhiên. c hai tr ng này u c d a trên ki u d li u là INTEGER. ch a giá tr d li u c bi t n. nh#n c m t thông báo l i vì vi c so sánh 2 c t v i ki u d li u khác nhau. n u không có giá tr cho tr c. YEARS SMALLINT. làm th nào lý.nh giá tr m c nh cho c t n u NOT NULL c khai báo. /ây chính là nh ng gì b n mu n. Nh ã nêu trên hàm ép ki u POUND() c t o ra v i UTD khi tri u g&i WITH COMPARISIONS c a phát bi u CREATE DISTINCT TYPE. Th#m chí weight_p và weight_k dùng d li u là POUND và KILOGRAM. c nh Có hai cách t o ra giá tr cho c t khoá chính. COMM DECIMAL (7. Tuy nhiên b ng vi c t o UDTs thì b n không th th c hi n lo i so sánh này.ng có th ch. Trong ví d k ti p. SALARY DECIMAL (7. nh#n c thông báo l i tr* khi b n s d ng m t hàm ã ép ki u. DB2 không th mb o c tính duy nh t. Sinh ra m c nh: giá tr có th c cung c p c th b i m t ng d ng ho c.Nh p môn H qu n tr c s d li u DB2 91 B n s. s này là duy nh t cho m i dòng. Hãy xem qua ví d sau: . NAM E VARCHAR (9). ng. vì th b n s. thì DB2 s. so sánh gi a pound và kilogram? Nó s. b n mu n so sánh c t weight_p v i ki u d li u integer. vô b i vì trong cu c s ng th c. Tùy ch&n này cd nh ph c v cho vi c truy n d li u. Tuy nhiên hai ki u d li u này khác nhau. và cho vi c unload và reload c a m t b ng. dùng hàm ép ki u POUND() i u so sánh này có th th c hi n c. DEPT SMALLINT NOT NULL with default 10. theo th t .

sysdummy1 1 ----------------12 1 record(s) selected PREVVAL cung c p cho b n giá tr hi n t i c a dãy tu n t . lastname VARCHAR (50)) c Trong ví d này.2. firstname VARCHAR (50). . Ba s • • + c s d ng nh#n d ng các b ng danh sách h th ng: SYSIBM: các b ng c s . Các b ng danh m c h th ng c mô t trong ph n k ti p.SYSDUMMY1. Giá tr và nó s. Ví d bên trên c. c t subscriberID là m t INTEGER chính thu c lo i luôn luôn c sinh ra t ng. Không gi ng nh các c t khóa chính. c t ng lên v i b c là 100.có m t c t và m t hàng. nh ngh'a nh là m t c t khoá c sinh ra s. B n có th truy v n nh ng b ng này nh b t k b ng c s d li u bình th ng khác.m t giá tr . Các b ng danh sách h th ng M i c s d li u có các b ng danh sách h th ng c a riêng nó. trong khi NEXTVAL cung c p giá tr k ti p. t i u hóa s d ng DB2 SYSCAT: khung nhìn (view) d a trên b ng SYSIBM. t i u s d0 s d ng. 8. 8.2. Các b ng này l u tr siêu d li u v các i t ng c s d li u.3 Các t ng tu n t (Sequence object) Các i t ng tu n t sinh ra m t con s duy nh t d a vào c s d li u. Nó có th câu truy v n yêu c u tr v ch. b t u t* 100.4. xem ví d minh h&a phát bi u sau: CREATE TABLE t1 (salary int) CREATE SEQUENCE myseq START WITH 10 INCREMENT BY 1 NO CYCLE INSERT INTO t1 VALUES (nextval for myseq) INSERT INTO t1 VALUES (nextval for myseq) INSERT INTO t1 VALUES (nextval for myseq) SELECT * FROM t1 SALARY ----------------10 11 12 3 record(s) selected SELECT prevval for myseq FROM sysibm.Nh p môn H qu n tr c s d li u DB2 92 CREATE TABLE subscriber (subscriberID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 100 INCREMENT BY 100). ây là m t b ng danh m c h c dùng trong tình hu ng nh m t th ng mà nó ch.ng s d ng SYSIBM. các i t ng tu n t này là nh ng b ng c l#p.

5. B n c. ID ng i dùng c s d ng t o m t b ng t m th i s. Nh ng b ng này ch. Khai báo các b ng t m th i Khai báo b ng t m th i là các b ng c t o ra trong b nh .ng có th c t o trên m t b ng t m th i.ng có h tr ch. b t c ch. không ghi nh#t ký (tùy ch&n).Nh p môn H qu n tr c s d li u DB2 93 • SYSSTAT: các s li u th ng kê c s d li u Sau ây là m t vài ví d v các khung nhìn c a danh m c: • • • • • SYSCAT. có t t c quy n trên b ng. DECLARE GLOBAL TEMPORARY TABLE temployees LIKE employee NOT LOGGED.PROCEDURES 8.có th c truy nh#p b i ng d ng t o ra chúng. quy n c l#p c a riêng nó c ch. Truy nh#p nh ng b ng này có hi u qu r t cao b i vì không có s tranh ch p danh sách.m c chu n nào c. C. các hàng không b khóa. ó là. Không có b n ghi nào c sinh trong b ng danh sách c a DB2.ng có th ch y l nh RUNSTATS v i các b ng này. Khi m t khai báo b ng t m th i c t o ra.ra trong Figure 8. M i ng d ng t o m t b ng t m th i s.COLUMNS SYSCAT. ây là cái ph i c nh ngh'a tr c khi t o ra b t c b ng t m th i nào. Các phát bi u d i ây cung c p m t ví d làm th nào t o ba khai báo b ng t m th i: CREATE USER TEMPORARY TABLESPACE apptemps MANAGED BY SYSTEM USING ('apptemps'). deptname CHAR(20)) ON COMMIT DELETE ROWS NOT LOGGED. .m c cho các b ng t m th i này.t ng minh.INDEXES SYSCAT.2.TABLES SYSCAT. DECLARE GLOBAL TEMPORARY TABLE tempprojects AS (fullselect) DEFINITION ONLY ON COMMIT PRESERVE ROWS NOT LOGGED WITH REPLACE IN TABLESPACE apptemps.FUNCTIONS SYSCAT.5. và không ki m tra quy n. DECLARE GLOBAL TEMPORARY TABLE tempdept (deptid CHAR(6). và ph i c ch. s + c a nó là SESSION. Khai báo các b ng t m th i bên trong m t không gian s d ng c a b ng t m th i. c s d ng b i m t ng d ng và ct ng xóa khi ng d ng k t thúc.

(Control Center -> All Databases -> SAMPLE -> (nh n ph i chu t) Tables object -> Create …) 2.ra trên trong ph n gi i thi u. B ng s. c thêm vào trong b ng này.Nh p môn H qu n tr c s d li u DB2 94 Figure 8. Nh n vào nút Next ti p t c t i trang sau c a h ng d%n. 4 trang u tiên c a h ng d%n t*ng b c. . b n có th thêm các c t vào b ng.5 – Ph m vi c a các b ng t m th i toàn c c công khai Bài t p nhanh #5 . Th t c 1. B n c. có sáu c t: • • • • • • product_id: nh#n d ng duy nh t c a s n ph m ang description: mô t v s n ph m quantity: s l ng mua cost: giá c a s n ph m image: m t b c nh c a s n ph m (n u dùng c) project_num: Mã s c a d án mua s n ph m này c mua 3. c s d ng l u tr thông tin v cung c p v n phòng ph m. s d ng t o b ng theo h ng d%n t*ng b c t o hai b ng m i trong c s d li u SAMPLE. M i l n v n phòng ph m c mua. / nh ngh'a tên b ng.ng có th gõ vào m t ghi chú tùy ý. b n s. T* trang này. b n s. c n t o m t c s d li u g+m các b ng c a riêng mình. Nh n nút ADD thêm các c t. i v i tên s +. Trong ph n bài t#p này. 4. và s d ng tên b ng là SUPPLIES. B ng s. nh ngh'a c t và các ràng bu c. M Create Table Wizard nh ã ch. c s d ng b i m t d án trong c s d li u SAMPLE. gõ vàp ID b n s d ng ng nh#p. m t hàng s. b n có th s d ng nh ng b ng có s)n trong c s d li u SAMPLE minh h&a các khái ni m. Cu i cùng.Kh i t o m t b ng m i M c tiêu / n ây.

ng c khuyên dùng cho các c t LOB l n h n 10MB b i vì s thay i các c t l n có th làm y t p này r t nhanh. length 40. NULLABLE. c t ng k t. NOT NULL BLOB. Tên c t product_id (completed) description quantity cost image project_num Thu c tính INTEGER.rõ khi khai báo các c t LOB. Khi t t c các c t ã các c t b n v*a t o s. B" d u ki m Nullable. Nh m nút Next ti p t c t i trang k ti p c a h ng d%n. 1MB. v%n có th quay lui v trang thái lúc u. C. Nó c.Nh p môn H qu n tr c s d li u DB2 95 Gõ “product_id” vào Column name và ch&n ki u là INTEGER. NOT NULL VARCHAR. NOT LOGGED CHAR.ng chú ý r ng m t mình c t hình nh c nh ngh'a nh m t c t “NULLABLE”. NOT NULL INTEGER. B n có th thêm các khóa và ràng bu c sau khi m t b ng v*a c t o. s thay i các t p LOB trong quá trình giao d ch x y ra. Scale 2. Precision 7. NOT NULL DECIMAL. và nh n vào nút Apply nh ngh'a c t. nh n nút OK và danh sách trong b ng trên. NOT NULL c ch. L p l i b c này cho nh ng c t còn l i c a b ng s d ng các tùy ch&n c chc thêm vào. t t c thông tin b t bu c cho vi c t o b ng u c cung c p. . /i u Chú ý: Tùy ch&n NOT LOGGED có th này là b t bu c v i các c t có kích th c l n h n 1GB. B n có ngh' t i sao c t c nh ngh'a nh th ? 5. length 6. 4 ây. Ngay c n u NOT LOGGED c s d ng. b n coi nh ang ch&n các giá tr m c nh cho nh ng tùy ch&n ó. B ng cách nh y sang các trang khác.

Nh p môn H qu n tr c s d li u DB2 96 6.m c: • • • • Ví d : CREATE UNIQUE INDEX artno_ix ON artists (artno) Ki u ch. B n có th ti p t c hoàn thành thao tác. SYSCAT. Trên trang Constraint c a c a s thao tác. K t qu Artno --------10 20 30 u ra: Name ---------------HUMAN MY PLANT THE STORE Classification -----------------------------A C E 8. Trong tr ng Check Name. xu t hi n trong danh sách.4 Các ch. Có th ph i làm t i c a s trung tâm i u khi n th y c s thay i này. gõ vào: quantity > 0. Các thông tin v khung nhìn trong m c l c khung nhìn DB2: SYSCAT. 7.m c t ng ho c gi m. b n có th nh y n trang Summary.3 Các khung nhìn (Views) Các khung nhìn là s trình bày hay hi n th c a d li u trong b ng. M t s c i m b n có th nh ngh'a ch.VIEWDEP và SYSCAT. hay n gi n là nh n vào nút Finish t o b ng. B ng b n v*a t o bây gi s. Ch. m c (Index) Ch. Khóa c a ch. Nh n nút Next ti p t c t i trang ti p theo c a màn hình thao tác. Ho c. m t khung nhìn c t o làm n n cho các khung nhìn khác.m c là t#p các khóa c s p x p theo m c các dòng trong b ng. T* trung tâm i u khi n.m c có th là duy nh t ho c không duy nh t. nh ng s. Nh n nút OK. D li u c a các khung nhìn không c ch a riêng bi t.m c ghép). là các bó ch. c t+n t i khi c g&i t i. CLASSIFICATION FROM ARTISTS. N u ch. Sau ây là cách t o và s d ng khung nhìn: CONNECT TO MYDB1. nh n vào th m c Tables d i c s d li u SAMPLE trong khung cây i t ng.m c và các d li u v#t lý h p l i gi ng nh các chu i ch. và nó c phép thay i. V i các khung nhìn l+ng nhau. 8.VIEWS. SELECT * FROM MYVIEW1. CREATE VIEW MYVIEW1 AS SELECT ARTNO. c g&i .m c. thay i các tham s khác c a b ng. 8. gõ vào: valid_quantities.TABLES. Trong tr ng Check Condition.m c cho phép trùng. nh n nút ADD. Thêm m t ràng bu c t i b ng h n ch các giá tr trên c t quantity.m c ( c g&i là các ch. NAME. Nhi u c t có th s d ng làm ch.m c. B n nên nhìn m t t ng k t c a ràng bu c b n v*a thêm vào trong trang Constraint c a c a s thao tác.

Theo sau là các b thi t k g i ý t* DB2.1 Tr giúp thi t k (Design Advisor) Tr giúp thi t k là m t công c khá t t giúp b n t i u thi t k c s d li u cho m t công vi c ã bi t. Tr giúp thi t k có th giúp b n b ng cách thi t k các ch. Tr giúp thi t k c g&i t* Trung tâm i u khi n. Materialized Query Tables (MQTs).6: Hình 8.7 Cho th y tr giúp thi t k .6 – Th c hi n tr giúp thi t k t& Trung tâm i u khi n Hình 8. b m chu t ph i trên c s d li u và ch&n “Design Advisor” nh hình 8.Nh p môn H qu n tr c s d li u DB2 97 8. Multi-demension clustering (MDC) và các tính n ng phân tán c s d li u.4.m c cho b n. ch ng d%n t c cách .

/ó là lý do trong ví d này. Hình sau trình bày cách dùng CREATE TABLE t o b ng EMPLOYEE c n cho thi t l#p các quan h . B n có th thi t l#p ki u cha-con (parent-child) c a các quan h gi a các b ng nh hình 8. Trong hình có hai b ng DEPARTMENT và EMPLOYEE c liên k t b i mã s c a phòng (department). C t WORKDEPT trong b ng EMPLOYEE ch.Ví d v toàn v. th ng s d ng các khái ni m sau: .Nh p môn H qu n tr c s d li u DB2 98 Hình 8. b ng EMPLOYEE c g&i là b ng con ho c b ng ph thu c.n tham chi u Toàn v7n tham chi u cho phép c s d li u qu n lý c các quan h gi a các b ng.có th ch a mã s c a phòng ã t+n t i trong b ng DEPARTMENT. b ng DEPARTMENT c g&i là b ng cha.n tham chi u gi a các b ng. DEPARTMENT table (Parent table) DEPTNO DEPTNAME (Primary key) Or unique constraint EMPLOYEE table (Dependent table) EMPNO (Primary key) FISTHNAME LASTNAME WORKDEPT (Foreign key) PHONENO MGRNO create table employee (empno ……… primary key empno foreign key workdept reference department on delete no action) in DMS01 Hình 8. Trong toàn v7n tham chi u.8.8 .5 Tính toàn v.7 – Tr giúp thi t k 8.

Các ràng bu c có th c áp t d li u phù h p v i c tính nào ó ho c các quy t c trong kinh doanh c a d li u. n u m t c t c a b ng là gi i tính. . nó có th c ép ch a m t trong hai giá tr là “M” cho nam và “F” cho n . Ch a khóa ngo i. D li u trong m t b ng có th liên k t v i d li u c a m t ho c nhi u b ng thông qua toàn v7n tham chi u. Tham chi u n khóa ngo i c a b ng cha. m i dòng t+n t i trong b ng ph thu c ph i phù h p v i các dòng trong b ng cha. nó không c có giá tr NULL và ph i là duy nh t. / nh ngh'a khóa chính c a b ng cha.Nh p môn H qu n tr c s d li u DB2 99 Khái ni m B ng cha (Parent table) B ng ph thu c (Dependant table) Khóa chính (Primary key) Khóa ngo i (Foreign key) Mô t B ng d li u i u khi n ch a khóa chính B ng d li u ph thu c vào b ng cha. Ví d . Khóa chính có th là m t ho c nhi u c t trong b ng.

1 mô t t ng quan v công c di chuy n d li u Hình 9.Nh p môn H qu n tr c s d li u DB2 100 9 Ch ng 9 – Công c di chuy n d li u Nh ng công c hay câu l nh c mô t trong ph n này c s d ng di chuy n d li u trong cùng m t c s d li u hay qua nh ng c s d li u khác nhau n m trên cùng m t n n (platform) ho c có th khác n n. B ng cách s d ng công c EXPORT.Công c di chuy n d li u. . /i u này r t ti n d ng. ph ng th c này không th t o ra nh ng ki m tra ràng bu c i v i d li u. Công c LOAD thì nhanh h n vì nó i tr c ti p n nh ng trang c s d li u mà không c n t ng tác n h th ng DB2. WSF là m t lo i nh d ng mà có th di chuy n d li u sang b ng tính ch!ng h n Excel hay là Lotus® 1-2-3. IXF là m t nh d ng không chbao g+m d li u mà còn là m t ngôn ng nh ngh'a d li u (Data Definition LanguageDDL). và s. Nh ng t p d ng ASC ho c DEL là nh ng t p v n b n và có th m và xem l i b ng b t k trình so n th o v n b n nào. Trong hình 9. IXF = Integrated Exchange Format – / nh d ng trao i th ng nh t. ta có th k t xu t d li u t* m t b ng sang m t t p. vì khi m t b ng c n c xây d ng l i. B ng ph i t+n t i s)n d i khuôn m%u ASC. WSF = Worksheet format – / nh d ng ki u b ng tính. DEL và WSF. còn nh ng t p nh d ng khác thì ta không th làm c vi c này. tuy nhiên. Khi d li u c k t xu t sang d ng t p. T p có th thu c các nh d ng sau: ASC = ASCII DEL = Delimited ASCII – ASCII có nh gi i h n.1 có 2 c s d li u: A và B. ta có th xây d ng m t cách tr c ti p t* t p có nh d ng IXF. M t ph ng th c khác là công c LOAD dùng chuy n n p d li u vào trong b ng. công c IMPORT có th c dùng chuy n d li u t* d ng t p sang d ng b ng. ngo i tr* nh d ng IXF.1 . Hình 9.

IMPORT và LOAD m t cách chi ti t. Sau khi ch&n m c này.2 bên d i. công c EXPORT c. và k ó thì nh n chu t ph i trên b ng m m t b ng ch&n con (popup menu) t* ó b n có th ch&n Export. B ng employee là m t b ph#n c a c s d li u SAMPLE.Hi n th$ h p tho i b ng EXPORT Nh ã th y trên hình. m t thao tác SQL SELECT c g&i th c thi. l nh SET INTEGRITY th ng c s s ng theo sau. nó ã c t o ra trong ch ng tr c. mô t nh ng công c EXPORT. Hình 9. tr c h t b n ph i ch&n b ng employee b ng cách nh n vào nó m t l n.1 Công c EXPORT (xu t) Công c EXPORT c dùng trích d li u t* b ng thành m t t p nh ã c#p tr c ây. Nh ng ph n ti p theo sau ây s.2 . Ch.ixf thu c nh d ng IXF có 10 dòng t* b ng employee. hi n lên. . N u b n thích làm vi c v i nh ng công c có giao di n + h&a (GUI). Bên d i ây. 9. c a s h ng d%n t*ng b c s.ixf OF IXF SELECT * FROM employee FETCH FIRST 10 ROWS ONLY Chúng tôi khuy n khích b n nên th ch y ví d trên. vì th tr c h t b n nên k t n i n c s d li u này. Ví d d i ây k t xu t thành t p employee. / m b o m t cách kiên nh vi c n p d li u dùng công c LOAD.Nh p môn H qu n tr c s d li u DB2 101 không th c hi n c các b%y s ki n (n u có).c n n gi n làm theo nh ng b c cung c p s)n trong h ng d%n này hoàn thành quá trình th c hi n. EXPORT TO employee.ng có th c th c hi nn t* Trung tâm i u khi n (Control Center) nh trong hình 9.

thay th n i dung c a b ng employee_copy n u nh nó ã t+n t i tr c khi công c IMPORT c th c thi. và vùng nh m c a c s d li u s. b n có th th c hi n công c IMPORT b ng cách ch&n b t k b ng nào. Nh ã th o lu#n tr c ây. vì th các b%y s ki n không c kích ho t. nhanh h n IMPORT vì nó là m t công c n p d li u c p th p tr c ti p truy xu t n trang d li u trên 'a. không có hi u l c. Ví d sau ây n p t t c các d li u t* t p employee. và ch&n ch c n ng Import nh hình 9. Khi m t l nh c th c thi. nh n chu t ph i trên nó. các b%y s ki n s. công c LOAD không i qua h th ng DB2. Nó làm vi c theo 3 giai o n: LOAD.ixf có nh d ng IXF vào trong b ng employee_copy. không c dùng và các ràng bu c s. / ng sau nó. IMPORT FROM employee. có INSERT hi u l c ngay l#p t c.ixf có nh d ng IXF vào trong b ng employee_copy.3 – H p h i tho i th c hi n công c IMPORT 9. LOAD (n p) Công c LOAD là m t cách n p d li u t* t p sang b ng nhanh h n. ho c là nó s. Chúng tôi khuy n khích b n nên ch y th ví d d i ây. m t thao tác SQL INSERT c th c thi th c s .3. L a ch&n này s. c s d ng. m t thao tác LOAD s.Nh p môn H qu n tr c s d li u DB2 102 9.3 Hình 9. BUILD và DELETE.2 Công c IMPORT (nh p) Công c IMPORT c dùng n p d li u t* m t t p sang m t b ng nh ã nói tr c ây.ixf OF IXF REPLACE_CREATE INTO employ_copy N u b n thích làm vi c v i Trung tâm i u khi n. Ví d sau ây n p t t c d li u t* m t t p employee. L a ch&n REPLACE_CREATE là m t trong nh ng l a ch&n có s)n v i công c IMPORT. t t c các ràng bu c s. M t khác. c kích ho t. L a ch&n REPLACE là m t trong nh ng l a ch&n có s)n trong . vùng m s. t o m t b ng và n p d li u n u b ng ch a t+n t i tr c ó. nh ng tr c h t b n ph i ch y công c EXPORT trong ph n tr c.

Trong tr ng h p này. c s d ng REPLACE t t c các d li u có LOAD FROM employee.4 . có th c a n tr ng thái CHECK PENDING.Th c hi n công c LOAD . /i u này có ngh'a là b n c n ph i ch y ki m tra tính ch c ch n d li u c a b n.Nh p môn H qu n tr c s d li u DB2 103 LOAD. nó trong b ng employe_copy.ixf OF IXF REPLACE INTO employ_copy Sau khi th c thi câu l nh trên. b n có th th c hi n công c LOAD và SET INTEGRITY nh trong hình 9.5 t ng ng. Hình 9.cho b n làm th nào. n i mà b ng c a b n trú ng . câu l nh SET INTEGRITY ch. không gian c a b ng. Ví d sau ây s.4 và 9. SET INTEGRITY FOR employee_copy ALL IMMEDIATE UNCHECKED N u b n thích làm vi c v i Trung tâm i u khi n h n.

Ví d . Sau ó b n chép t p k ch b n này sang máy ch DB Windows. và l u tr chúng trong m t t p k ch b n mà có th sau này c ch y trên m t h th ng khác. Hoàn thành b c này. .Th c hi n công c SET INTEGRITY 9.làm vi c trên m t b ng. c u trúc c a c s d li u ó ã c sao chép. t ng c phát sinh b i db2move. nh ng công c db2move s. các c s d li u t'nh. 9. c s d li u c a b n s. và tên t p s. sau ó th c thi db2move v i tùy ch&n là import ho c load. LOAD và db2move cho phép b n di chuy n d li u t* m t b ng này t i m t b ng khác.làm vi c v i t p IXF. trong cùng m t c s d li u hay qua vài c s d li u. và sau ó chép t t c các t p c phát sinh sang máy ch DB2 Windows. u tiên b n ch y công c db2look trên máy ch DB2 Linux l y c c u trúc c a c s d li u và l u c u trúc này trên m t t p k ch b n. M c dù b n có th vi t m t k ch b n phát sinh các l nh trên cho t*ng b ng trong c s d li u. công c EXPORT. giúp b n làm i u ó. c sao chép toàn b t* m t máy ch này sang m t máy ch khác ho t ng trên m t n n t ng khác. và th c thi k ch b n ó b t u xây d ng b n sao c s d li u.Nh p môn H qu n tr c s d li u DB2 104 Hình 9. các c tính không gian b ng cho m t c s d li u. và LOAD ch. IMPORT. ch y công c db2move v i tùy ch&n export trong máy ch DB2 Linux.5 Công c db2look Trong khi các công c EXPORT.4 Công c db2move T i m t th i i m. B c k ti p. n u b n mu n sao chép m t c s d li u t* máy ch DB2 ang ch y trên Linux sang m t máy ch DB2 ang ch y trên Windows. công c db2look có th c s d ng rút trích các câu l nh DDL. s. Công c db2move ch.5 . bi u di0n ch y db2move v i export. IMPORT. import nh th nào s d ng c s d li u SAMPLE: db2move db2move sample sample export import Trung tâm i u khi n không có tùy ch&n cho db2move. Ví d bên d i s. T i ây.

tuy nhiên b n có th s d ng c -h l y c ph n mô t tóm l c các tùy ch&n s)n có: db2look -h c g&i t* trung tâm i u khi n nh bi u di0n trong Hình Công c db2look c.ddl. Chúng tôi khuy n khích b n ch y l nh bên d i và xem l i t p k t qu xu t (v n b n) “sample. rút trích không gian b ng và b trí vùng m d li u.ng có th 9. làm cho x lý d0 dàng h n và rõ ràng h n. b n s.ddl”. và l u tr chúng trong t p sample. L nh db2look có quá nhi u tùy ch&n không th mô t h t trong cu n sách này. N u c hai máy ch u ho t ng trên cùng m t n n t ng.Nh p môn H qu n tr c s d li u DB2 105 K ch b n trên c n thi t khi làm vi c v i c s d li u trên các n n t ng khác nhau nh Linux và Windows. Nh ng ví d sau s.6 . Nh ng l nh sao l u và khôi ph c s. dùng nh ng l nh sao l u d phòng và khôi ph c s. cùng v i nh ng l nh DDL t* c s d li u SAMPLE. c mô t chi ti t h n trong ch ng sau c a cu n sách này.

nh n chu t ph i lên nó.7. th hi n nh trong hình 9.6 ch&n c s d li u mà b n mu n l y DDL. và ch&n “Generate DDL”. hi n th m t s tùy ch&n rút trích. . C a s Generate DDL xu t hi n.Nh p môn H qu n tr c s d li u DB2 106 Trong Hình 9.

Nh p môn H qu n tr c s d li u DB2

107

Bài t p nhanh #6 - Trích xu t DDL t& c s d li u EXPRESS M c tiêu: Khi b n sao l u m t c s d li u, m c tiêu c a b n là ph i t o l i c s d li u b ng cách n gi n và h p lý. Thông th ng s d ng k ch b n SQL, nó có th c th c hi n sau khi DB2 c cài t. Trong bài t#p nhanh này, b n s, rút ra nh ng nh ngh'a i t ng t* c s d li u EXPRESS ( ã t o trong bài t#p nhanh #3) s d ng Trung tâm i u khi n. Quy trình: 1. M Trung tâm i u khi n. 2. Nh n chu t ph i vào c s d li u EXPRESS trên cây i t Generate DDL. Vi c này m c a s h p tho i Generate DDL. ng và ch&n m c

3. Trong c a s Generate DDL, ch- rõ nh ng tùy ch&n cho Generate DDL nh d i ây. N u b n t o ra thêm nh ng i t ng b sung trong môi tr ng c a b n nh không gian bàng, b m.., b n s, ch&n chúng ây. Khi b n không t o ra b t k lo i i t ng nào, *ng ánh d u vào h p ki m. Th ng kê c s d li u không c thêm vào vì môi tr ng s n xu t có kh n ng ch a m t t#p h p th ng kê khác h n môi tr ng phát tri n. T ng t , nh ng thông s c u hình s, có kh n ng khác i m t chút. Trong môi tr ng mà b n s h u, n u m&i th c u hình chính xác theo cách nó c tri n khai, b n có th ch&n thêm vào cái tùy ch&n b sung.

4. Chuy n qua trang Object. B n có th ch- nh ch&n nh ng i t ng mà b n mu n phát sinh ra DDL. Trong tr ng h p này, ch&n ng i dùng và gi n + mà b n dùng t o ra t t c các i t ng c a b n và phát sinh ra DLL cho t t c b t u t o DLL. các i t ng trong gi n + này. Nh n nút Generate

Nh p môn H qu n tr c s d li u DB2

108

5. Xem l i k t qu DDL. K t qu c a b c th c hi n tr c là m t k ch b n v i t t c các câu lênh SQL cho các i t ng c ch&n. B n s, t ch c các k ch b n này vào trong nh ng nhóm h p lý. 6. T o th m c C:\express trong t#p tin h th ng và l u t#p tin phát sinh DDL vào trong th m c này v i v i tên là schema.ddl, Nh n nút “Save”.

7. M t p c l u g n ây nh t trong c a s nh#p l nh. (G i ý: t* c a s nh#p l nh, ch&n File -> Open) 8. M c dù chúng tôi ch- th c s mu n DDL c a các b ng, b n s, th y các DDL cho c nh ng i t ng khác n a c.ng c sinh ra. Chuy n t t c nh ng khai báo CREATE TRIGGER t i m t t p m i riêng bi t c g&i là triggers.ddl. Th#m chí dù chúng tôi ch- t o ra có m t b%y s ki n c.ng riêng ra, nó là m t thói quen t t phân bi t các i t ng theo ki u c a nó. 9. Bây gi chúng tôi c.ng khuy n cáo lo i b":

Nh p môn H qu n tr c s d li u DB2

109

• •

Các l nh c s d li u CONNECT TO. Các l nh DISCONNECT.

B n ph i có hai k ch b n t i i m này: C:\express\schema.ddl DDL cho các b ng, các cách hi n th , các ch- m c và các ràng bu c. C:\express\triggers.ddl DDL cho các b%y s ki n 10. Chu n b k ch b n cho s tri n khai: • Xóa nh ng chú thích không c n thi t (ví d : -- CONNECT TO…) • Tách các hàm và các th t c vào nh ng t p tin riêng (r t h u d ng khi có quá nhi u hàm và th t c). B n c.ng có th nhóm chúng l i theo ch c n ng hay ng d ng (ví d : stringfunc.ddl, billing.ddl, math.ddl, , …) 11. B n có th ph i chú ý n nh ng kí t c bi t c dùng gi i h n k t thúc t gi i h n k t thúc các b%y, các hàm và các th t c (@). /i u ó là c n thi t c a l nh CREATE <••i t••ng> khác v i k t thúc c a m t khai báo th t c n m bên trong i t ng.

Nh p môn H qu n tr c s d li u DB2

110

10
Ch ng 10 – B o m t c s d li u
Ch ng này bàn v s b o m#t m t cái nhìn t ng quan c b n c x lý nh th nào trong DB2. Hình 10.1 cung c p Hình 10.1 – T ng quan v s b o m t trong DB2 Nh trong hình 10.1, s b o m#t DB2 có hai ph n: *$nh danh Nó là m t ti n trình qua ó ki m tra tính h p l c a thông tin ng nh#p c a ng i dùng. Ti n trình nh danh c th c thi b i m t ch ng trình b o m#t bên ngoài DB2 ( i n hình là b i m t h i u hành, m t ph ng th c nh danh c a m t m ng nào ó, ho c là m t ph n m m nh danh c thi t k theo yêu c u). Ti n trình nh danh c a h i u hành c xác l#p m c nh. Khi s d ng ti n trình nh danh c a h i u hành, tên ng i dùng (userid) và m#t mã c chuy n t i c s d li u máy ch (nh là m t ph n c a câu l nh k t n i). Sau ó, c s d li u máy ch s, g&i ti n trình nh danh c a h i u hành ki m tra tính h p l c a tên ng i dùng và m#t mã. Quy n h n 4 ph n này, DB2 ki m tra xem ng i dùng, ã qua nh danh thao tác ng i ó yêu c u hay không. Thông tin v quy n h n danh m c DB2 và m t t#p tin c u hình DBM. Ví d , trong hình 10.1, ng l nh : trên, có th thi hành c l u tr trong m t

i dùng ‘bob’ k t n i v i c s d li u SAMPLE b ng câu

CONNECT TO sample USER bob USING pwd C “bob” và “pwd” c chuy n t i h i u hành ho c m t ch ng trình nh danh bên ngoài ki m tra xem tên ng i dùng “bob” ã c nh ngh'a ch a và m#t mã ó có

ng c l i câu l nh s. N u ph n này thành công. 10. c th c thi b i h i u hành ho c ch ng trình b o m#t bên ngoài trên máy khách.Tuy nhiên. n u AUTHENTICATION c thi t l#p là CLIENT. Ti p theo. Ví d khi tham s c thi t l#p là SERVER (giá tr m c nh).1 L nh SERVER (m c CLIENT SERVER_ENCRYPT nh) c thi t l#p b ng m t trong nh ng giá tr Mô t ti n trình ti n trình khách nh danh di0n ra nh danh di0n ra máy ch máy c t ng t nh SERVER nh ng tên c a ng i dùng và m#t mã c mã hóa ti n trình nh danh di0n ra dùng c ch b o m#t Kerberos ti n trình nh danh máy ch c ng thêm s k t n i ph i dùng s mã hóa KERBEROS SQL_AUTHENTICATION_DATAENC .Nh p môn H qu n tr c s d li u DB2 111 c n i v i ng i dùng này hay không.2 Hình 10. Tham s AUTHENTICATION trong DBM CFG. DB2 s. h i u hành s. ti n trình nh danh s. DB2 v%n quy t nh t ng mà ti n trình nh danh x y ra. có m t dãy các giá tr h p l . N u quy n ó không h p l .2 – N i ti n trình $nh danh x y ra Tham s AUTHENTICATION có th ki t kê trong b ng 10. tr l i quy n ki m soát b o m#t cho DB2. ti n trình nh danh s. c th c thi d a trên b ng “mytable”. thi t l#p máy ch DB2. V n này c minh h&a hình 10. tr v m t thông báo l i.1 *$nh danh M c dù ti n trình nh danh th c s c th c hi n b i h i u hành (ho c m t ch ng trình b o m#t khác bên ngoài). c th c thi b i h i u hành ho c ch ng trình b o m#t bên ngoài trên máy ch . khi ng i dùng “bob” thi hành l nh sau: SELECT * FROM mytable B y gi DB2 ti p t c dùng quy n ki m soát b o m#t thi hành vi c ki m tra quy n h n và xác nh#n ng i dùng “bob” có quy n SELECT trên b ng “mytable” hay không.

….3 M t c quy n cho phép ng i dùng thi hành m t lo i thao tác li u nh là CREATE.dùng khi có s)n ti n trình nh danh dùng c ch b o m#t bên ngoài d a trên GSS API B ng 10.Nh p môn H qu n tr c s d li u DB2 112 d li u SQL_AUTHENTICATION_DATAENC_CMP gi ng nh GSSPLUGIN trên nh ng s mã hóa d li u ch.Nh ng giá tr$ tham s AUTHENTICATION h p l 10. INSERT.2 Quy n h n Quy n h n bao g+m các c quy n và quy n DB2 và c DB2 qu n lý. .1 . M t quy n là m t hành minh h&a các quy n và ng c xác nh tr c bao g+m nhi u c quy n khác nhau trong DB2. Hình 10. c l u tr trong nh ng b ng h th ng n d a trên c s d c quy n. UPDATE. DELETE.

2 nêu ra nh ng hàm khác nhau mà m i quy n có th th c hi n.Nh p môn H qu n tr c s d li u DB2 113 Hình 10.Nh ng quy n và c quy n B ng 10.3 . Ch c n ng C p nh t DBM CFG C p phép/H y b+ DBADM Thi t l p/Thay i SYSCTRL Thi t l p/Thay i SYSMAINT Thi t l p/Thay i SYSMON Bu c ng i dùng ra kh+i c s d li u SYSADM Y Y Y Y Y Y Y SYSCTRL SYSMAINT SYSMON DBADM LOAD . Nh b n th y SYSADM có h u h t các quy n trong khi SYSMON có ít quy n nh t.

ta s d ng l nh GRANT. c p quy n SYSADM cho nhóm h l nh này: i u hành ‘db2admns’. thí d : connect to sample grant DBADM on database to user <userid> . c m c nh là r ng. Trên Linux. 10. SYSCTRL. nhóm nh ng ng i s h u th hi n c m c nh là nhóm SYSADM. nh ng tham s SYSADM_GROUP. /ây không ph i là quy n c p c th .Nh p môn H qu n tr c s d li u DB2 114 T o/B+ c s d li u Khôi ph c thành c s d li u m i C p nh t DB CFG Sao l u c s d li u/không gian b ng Khôi ph c thành c s d li u ã t nt i Khôi ph c ti n B t u/k t thúc m t th hi n Ph c h i không gian b ng Th c hi n theo v t L y hình nh màn hình Truy v n tr ng thái không gian b ng L c b t t p tin nh t ký Quiesce không gian b ng N p b ng Thíêt l p/g/ b+ tr ng thái treo T o/h y b+ s ki n màn hình Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y B ng 10. / gán quy n qu n tr c s d li u DBADM. nh ng tham s này nh ng ng i qu n tr Windows là SYSADM.2 – Các quy n và c quy n DB2 / c p quy n SYSADM. b n có th dùng câu update dbm cfg using SYSADM_GROUP db2admns M i th hi n DB2 có nh ng nh ngh'a v nhóm quy n riêng. ho c SYSMAINT cho m t nhóm. do ó không c nêu ra trong ph n tr c. ho c SYSMAINT_GROUP trong DBM CFG ph i c gán cho nhóm h i u hành Ví d .3 Quy n qu n tr$ c s d li u DBADM DBADM (DataBase ADMinistrator) là ng i có quy n cao nh t v qu n tr c s d li u. i u ó có ngh'a là nhóm Trên Windows. SYSCTRL_GROUP.

c gán m t cách t ng cho nhóm PUBLIC: • • • • CONNECT. CREATETAB. cho dù nh ng không gian b ng này là các i t ng bên trong c s d li u.5 L nh GRANT và REVOKE L nh GRANT và REVOKE là l nh SQL chu n. BINDADD b o m#t.6 Ki m tra vi c c p quy n và quy n Cách t t nh t ki m tra vi c c p quy n và ki m tra quy n là thông qua trung tâm i u . Sau ây là m t s ví d v các câu l nh này: Gán quy n SELECT trên b ng T1 cho ng i dùng USER1: GRANT SELECT ON TABLE T1 TO USER user1 Gán t t c các quy n trên b ng T1 cho nhóm GROUP1: GRANT ALL ON TABLE T1 TO GROUP group1 H y b" t t c các quy n trên b ng T1 c a GROUP1: REVOKE ALL ON TABLE T1 FROM GROUP group1 Gán quy n EXECUTE trên th t c p1 cho ng i dùng USER1: GRANT EXECUTE ON PROCEDURE p1 TO USER user1 H y b" quy n EXECUTE trên th t c p1 c a ng i dùng USER1: REVOKE EXECUTE ON PROCEDURE p1 FROM USER user1 10. B t c ng i dùng nào ã c nh danh b i h i u hành ho c d ch v ch ng th c m ng u c ng m nh là thành viên c a nhóm PUBLIC.4 Nhóm PUBLIC DB2 nh ngh'a m t nhóm bên trong c g&i là PUBLIC. và sau ó gán quy n DBADM cho ng i dùng. IMPLICIT SCHEMA. chúng ta nên thu h+i.Nh p môn H qu n tr c s d li u DB2 115 Trong thí d trên. Nguyên nhân là vì m t không gian b ng có liên quan n các vùng ch a d li u (containers) nh 'a và các vùng m (b nh ) ó là các tài nguyên v#t lý c a h th ng. m t s quy n c th s. ây c s d li u có tên là “sample”. Ghi chú: DBADM không có quy n t o các không gian b ng. b n ph i là SYSADM. 10. h y b" m&i nguy n t* nhóm / thêm vào m c PUBLIC nh sau: REVOKE REVOKE REVOKE REVOKE CONNECT ON DATABASE FROM PUBLIC CREATETAB ON DATABASE FROM PUBLIC IMPLICIT_SCHEMA ON DATABASE FROM PUBLIC BINDADD ON DATABASE FROM PUBLIC 10. / có th gán quy n qu n tr c s d li u DBADM. tr c h t b n c n k t n i n c s d li u. Khi m t c s d li u c t o ra. c dùng gán ho c h y b" quy n c a m t ng i dùng ho c m t nhóm.

nh p ph i chu t vào b ng này và ch&n Privileges. Hình này có mô t các tr ng và các thành ph n c a h p tho i.5. b n ch&n b ng mong mu n.4.Nh p môn H qu n tr c s d li u DB2 116 khi n. h p tho i Privileges hi n th nh hình 10.5 – H p tho i Privileges . M t khi c ch&n. Hình 10.4 – M h p tho i Privileges Trong hình 10. Hình 10. Hình 10.4 mô t cách m h p tho i Table Privileges cho b ng EMPLOYEE t* trung tâm i u khi n.

b n có th th c hi n câu truy v n nh sau: SELECT grantor.Nh p môn H qu n tr c s d li u DB2 117 M t cách khác. b n có th truy v n các th hi n danh m c DB2 SYSCAT là n i ch a các thông tin v vi c c p quy n.tabauth WHERE tabname = 'T2' GRANTOR GRANTEE SELECTAUTH ------------------------------------------------ARFCHONG DB2ADMIN Y Trong thí d trên. ng DB2ADMIN. . t nh ng ng i dùng vào các nhóm và gán c gán các quy n ng m Khi m t nhóm c gán quy n. ta nên các quy n c n thi t cho các nhóm này. i dùng ARFCHONG ã gán quy n SELECT cho ng i dùng 10. ng i này s. n u b n mu n bi t ng i dùng DB2ADMIN có quy n SELECT trên b ng T2 hay không. m t các quy n ng m nh c a nhóm. nh ng v%n còn gi các quy n c gán t ng minh. selectauth FROM syscat. và mu n bi t ai ã gán quy n này. nh c k th*a v i t cách thành viên nhóm.7 Xem xét quy n trên nhóm / vi c qu n tr DB2 d0 dàng h n. các thành viên c a nhóm s. grantee. Ví d . Khi m t ng i dùng b xóa kh"i nhóm. Nói m t cách khác các quy n c c p m t cách t ng minh ph i c h y b" m t cách t ng minh.

M c a s Windows Computer Management b ng cách kích chu t ph i vào bi u t ng My Computer trên máy tính. Trong tr ng Description nh#p “A typical book store customer”. Ch&n m c Local Users and Group nhóm System Tools n m bên trái c a c a s Computer Management. B" d u ánh m c “ng i dùng c n i m#t mã l n ng nh#p sau” (User must change password on next logon) và nh n nút Create t o ng i dùng m i 4. b n s. nh n chu t ph i lên User và ch&n m c New User. bên trái c a s . Cho n lúc này. Ch&n ch cao c p (Advanced) b ng cách ch&n m c Customize Control Center trên th c n Control Center Tool. b n ã s d ng m t tài kho n c a ng i qu n tr cho vi c s d ng các l nh v i c s d li u. mu n t o ra nh ng tài kho n ng i dùng khác ho c nh ng nhóm v i m t thi t l#p quy n h n ch h n.Tài kho n này có th truy nh#p t i m&i ti n ích. ch&n All . M r ng cây i t ng c a Trung tâm i u khi n Database -> EXPRESS -> Tables. 2. r+i gán nó nh ng c quy n xác nh. nh#p các thông tin sau ây: trong m c User name nh#p “customer” và trong m c Full name nh#p “Customer1”. 3. d li u và nh ng i t ng c s d li u y . i u quan tr&ng là c n b o v tài kho n này tránh s nh ng s c hay m t mát d li u có ch tâm. Trong c a s New User . B i v#y. Trong tr ng Password và Confirm password nh#p “ibmdb2”. ch&n ti p tùy ch&n Advanced và nh n OK. t o ra m t tài kho n ng i s d ng m i. b n s. 5.Trong bài t#p này.Nh p môn H qu n tr c s d li u DB2 118 Bài t p nhanh # 7: Cho phép và h y b+ (phân quy n) quy n ng M c tiêu: is d ng. và ch&n Manage. B o m khung nhìn làm vi c hi n t i ch Advanced. Th t c: 1. Trong a s nh ng tr ng h p.

chúng ta ch t o m t ng i dùng là “customer”.cho quy n SELECT và INSERT. /i u gì x y ra? Th DELETE hay UPDATE d li u trong b ng SALES. Kích vào nút Add User và ch&n ng i dùng “customer” v*a m i t o ra óng h p tho i Add User. ng d ng c a b n có th ch a ng nhi u ki u ng i dùng khác. 10. / c p quy n cho ng i dùng này. INSERT. Th SELECT v i b ng khách hàng. /i u gì x y ra? Trong bài t p nhanh này. ch&n Yes trong h p tho i kéo xu ng c a t t c các ph n SELECT.Nh p môn H qu n tr c s d li u DB2 119 6. Phân nh ng quy n c n có cho ng i dùng v*a m i t o ra: T* danh sách các b ng trong c s d li u EXPRESS. / i v i b ng SALES. vào nút OK b c 3.cung c p quy n SELECT b i vì ng i dùng “customer” không nên có kh n ng i u ch-nh và ph c h+i d li u trong kho. / i v i b ng BOOKS. Th k t n i n c s d li u b ng tài kho n c a ng i dùng “customer” ã t o trên. tuy nhiên. Nh n nút Ok óng c a s h p tho i Table Privileges và ch p nh#n nh ng thay i v*a làm. UPDATE và DELETE. Ng i dùng không nên có quy n DELETE ho c UPDATE b i vì ch. ch. nh n chu t ph i lên b ng CUSTOMERS và ch&n m c Privileges hi n th c a s h i tho i “Table Privileges” 7. M t ng i dùng Internet c n ph i có kh n ng th c hi n add/update/delete d li u tài kho n c a h&. L p l i t*ng b c t* 7-9 cho b ng BOOKS và b ng SALES. 9.nh ng nhân viên m i c n ph i có s truy nh#p s a i nh ng giao d ch bán hàng. nh ng ch a c gán thêm các quy n. ch. Chúng ta không c p cho ng i s d ng nh ng quy n khác b i vì không c n thi t i v i h&. Kích 8. B n chú ý r ng ng i dùng “customer” ã c thêm vào danh sách ng i dùng. Th nghi m t o ra nh ng ng i dùng khác và .

i dùng và phân .Nh p môn H qu n tr c s d li u DB2 120 gán cho nó nh ng c quy n. h n là làm v i m i ng i dùng riêng l . B n c ng có th t o ra nh ng nhóm c a các ng quy n cho các nhóm ó.

làm i u ó. T ng t . và m i s. câu l nh COMMIT s. ôi khi m t vùng m nh#t ký y. Trong c s d li u. m i l n b n mu n l u tài li u ph i nh n vào nút SAVE. Trong c s d li u. và m i s. Ví d . chúng u c l u tr trên 'a c ng. M i l n câu l nh COMMIT c th c hi n thì m&i thay i t o thành d li u và c l u trong nh#t ký c s d li u. c l u tr trong nh ng t#p tin nh#t ký c s d li u. nh ng trang cho nh ng dòng trong câu l nh s.1 ta th y không gian b ng (tablespace) và nh#t ký (logs).1 minh h&a lu+ng x lý khi làm vi c v i c s d li u trong nh ng m%u nh#t ký Hình 11. i u này c th c hi n b i l nh UPDATE. nh ng giá tr c.Nh p môn H qu n tr c s d li u DB2 121 11 Ch ng 11 – Sao l u và khôi ph c Trong ch ng này chúng ta th o lu#n v nh#t ký c s d li u DB2. N u câu l nh COMMIT c thi hành sau câu l nh UPDATE thì nh ng giá tr c. khi câu l nh UPDATE c th c hi n. làm th nào sao l u toàn b hay m t ph n c s d li u s d ng công c BACKUP và làm th nào khôi ph c d li u s d ng công c RESTORE.1 Nh t ký c s d li u N u b n ang làm vi c v i m t trình so n th o v n b n. chúng c dùng nó l y l i nh ng giao d ch ã c g i i trong su t quá trình khôi ph c d li u. Nh#t ký c s d li u c l u tr c dùng ghi l i nh ng hành ng c a nh ng giao d ch.Nh t ký c s d li u Trong hình 11. m c dù ta xu t r ng chúng không l u tr trên cùng 'a c ng. 11. Hình 11. 4 ph n trên ta ã c#p n nh#t ký c s d li u.1 . c#p nh#t s. c l u trong vùng m d li u (b nh ). c th hi n trong vùng m d li u. INSERT và DELETE. c . ôi khi t c th i. Nh ng thay i. ôi khi b n th y d i góc ph i màn hình có m t thông i p ng n “auto-saving”. N u h trên 'a c ng và th ng hay c s d li u b h h i. khi b n làm vi c v i m t tài li u v n b n.

2 mô t lu+ng x lý khi ghi tu n t quay vòng Hình 11. c xóa khi t t c k t n i n c s d li u ã b ng t 11. giao d ch ã s d ng P1.x y ra khi tham s “chngpgs_thres” t ng (ng. sau ó P1 và P2 có th c ghi è d li u khác vì thông tin c. V khía c nh hi u n ng.2 có 3 nh#t ký s c p. Khi i u ki n c c th th"a mãn. Tham s CHNGPGS_THRES ch. thì m t nh#t ký th c p c c p phát (S1 trên hình v.X" lý nh t ký s c p và th c p Trong hình 11. ta không có c m giác th c hi n 2 l n ghi cho m i l nh COMMIT: M t là ghi n nh#t ký c s d li u và m t ghi n không gian b ng trên 'a c ng. P2. Vi c c p phát ng m t nh#t ký s. N u giao d ch v%n còn ti p t c.2 Các ki u nh t ký Có hai ki u nh#t ký: Nh t ký s c p: / c c p phát s)n và s nh#t ký s c p s)n sàng LOGPRIMARY c xác nh b i tham bi n db cfg Nh t ký th c p: Ph n nh#t ký th c p này c DB2c p phát ng khi c n. gây ra s lãng phí vì v#y nh#t ký th c p s. / cho n gi n trong ví d này ch.1 Ghi tu n t quay vòng Hình 11. N u.có 1 giao d ch. m t khác. N u có m t l nh COMMIT c th c hi n và thông tin sau ó c xu t n không gian b ng trên 'a c ng. không c n thi t n a. nh là vi c t n ng (ng c a s thay i trong tham s CHNGPGS_THRES thì nh ng trang trong vùng m d li u s.3 Các ki u ghi nh t ký Có hai ki u ghi nh#t ký: Ghi tu n t quay vòng (m c nh) và ghi l u tr 11. nhi u nh#t ký th c p c c p phát cho n khi s nh#t ký th c p c c p phát t ng (ng t i a .3. c “chi ti t hóa” hay ghi lên thành không gian b ng trên 'a c ng. P3 và v%n c n nhi u không gian nh#t ký h n n a b i vì giao d ch ch a c COMMIT. X lý này c. Khi giao d ch c th c hi n không gian s d ng b t u ghi vào t#p tin nh#t ký P1 và ti p theo sau là P2.l ph n tr m c a vùng m d li u v i nh ng trang “dirty” ó là nh ng trang ch a nh ng thay i.) m t cách t ng. S nh#t ký th c p c gán giá tr b i tham bi n db cfg LOGSECOND.2 . ó là lý do t i sao “s chi ti t hóa” c a d li u n không gian b ng trên 'a c ng ch.nh t.ng c l p l i t ng t cho câu l nh SQL khác truy xu t n c s d li u.Nh p môn H qu n tr c s d li u DB2 122 c t trong nh ng t#p tin nh#t ký ngay l#p t c. vì v#y chúng ta gán LOGPRIMARY b ng 3. 11.

khi v n c phát hi n thì ng i qu n tr c s d li u s.ng c bi t n nh là ghi gi l i. M t ví d c th là khi m t ng i trong h th ng b t u th c hi n m t giao tác không úng kéo dài hàng ngày. v%n còn có m t s thao tác b t bu c ph i làm b ng tay m b o vi c khôi ph c c chính xác. m t thông i p l i ch.2 Nh t ký l u tr Nh#t l u tr c. vào th i i m tr c khi v n c x y ra. Tuy nhiên.3. Cách ghi l tr là c n thi t i v i quá trình khôi ph c l i và khôi ph c tr c tuy n.ra i u ki n h t kh n ng c p c quay lui (h+i x ). . Hình 11. Nh ng nh#t ký c l u tr cho phép khôi ph c c s d li u s m nh t có th b i nh ng t#p tin nh#t ký c. N u v%n ch a phát nh#t ký và giao d ch s.3 mô t lu+ng x lý c a ghi l u tr Hình 11.4 Nh t ký c s d li u t& Trung tâm i u khi n B n có th c u hình nh#t ký c s d li u t* trung tâm i u khi n b ng cách nh n chu t ph i trên c s d li u và ch&n “Configure Database Logging” . nh t trong h u h t các tình hu ng.Ghi l u tr 11.Nh p môn H qu n tr c s d li u DB2 123 LOGSECOND. V i cách ghi l u tr ng i qu n tr c s d li u có th khôi ph c nh ng l i gây ra b i con ng i. Nh ng nh#t ký l u tr ngo i tuy n c l u trong b ng t* và có th làm vi c v i th t c USEREXIT.3 . 11. nh ng t#p tin nh#t ký không b ghi è nh ng chúng c l u tr tr c tuy n hay ngo i tuy n. Cách ghi l u tr th ng c dùng trong nh ng h th ng s n ph m. / có th ghi nh#t ký l u tr c n gán tham s db cfg LOGRETAIN là YES. khôi ph c l i h th ng c. Nh ng nh#t ký l u tr tr c tuy n c l u tr v i nh ng nh#t ký ng c n cho khôi ph c khi h th ng b s c .

B ng 11.5 th hi n màn hình thi t l#p c u hình nh#t ký c s d li u. t i ây ta có th ch&n ki u ghi nh#t ký quay vòng (circular) ho c ghi l u tr Hình 11.Ghi nh t ký c s d 11.1 li t kê .5 Các tham s c a nh t ký Có nh ng tham s DB CFG liên quan danh sách các tham s chính.Nh t ký c s d li u t& Trung tâm i u khi n Hình 11.5 .4 . li u theo h ng d%n t&ng b c n vi c t o b n ghi nh#t ký.Nh p môn H qu n tr c s d li u DB2 124 Hình 11.

nh tùy ch&n OVERFLOW LOG PATH cho m i l nh ROLLFORDWARD c a ra.&c có th ti p t c.thay vì ch. Kích th m cho các b n ghi ng 4KB ct o c c a m i nh#t ký ã c u hình. có dung l c logfilsz s. tuy nhiên.6 Sao l u c s d li u L nh sao l u d li u DB2 cho phép b n t o m t b n sao chép c s d li u lúc l nh c th c thi. làm vi c trong ch Ví d . Ph n tr m s nh#t ký ho t S t p nh#t ký ho t ng t i a cách nhau qua giao d ch ng cho m t UOW kích h&at B ng 11. Thay vì ó.1. ngo i tuy n. logpath/newlogpath V trí các nh#t ký ho t mirrologpath loghead userexit softmax logretain overflowlogpath / b o v các nh#t ký trên ng d%n chính kh"i s c h"ng 'a hay vô tình xóa. Tr c H u h t các l nh và công c có th tuy n ngh'a là ng i s d ng khác có th c k t n i và th c hi n các thao tác trên c s d li u trong khi b n th c thi l nh c a mình. S b n nh#t ký chính v i kích th S t p nh#t ký ph c n thi t c t o và s d ng cho vi c khôi ph c n u ng ho c l u tr t ng lai c t. b n có th ch. c g ng t o ra t p nh#t ký m i n m phút n khi nó thành công.Các tham s nh t ký 11. Khi không còn tr ng i.Nh p môn H qu n tr c s d li u DB2 125 Tham s logbufsz logfilsz logprimary logsecond Mô t L ng b nh c s d ng nh m t b nh#t ký tr c khi ghi chúng vào 'a. n u không thì ng m nh b n s. Cú pháp n gi n nh t b n có th s d ng ch y l nh này là: BACKUP DATABASE <dbname> [ TO <path> ] c th c hi n tr c tuy n hay ngo i tuy n. b n có th thi t l#p tham s c u hình này m t l n Thi t l#p tránh vi c tràn 'a phát sinh khi DB2 không th t o ra m t t p nh#t ký m i trong ng d%n nh#t ký ang ho t ng. DB2 s. n u mu n sao l u c s d li u sample n ng d%n C:\BACKUPS b n có th a ra l nh này t* trình n l nh DB2 c a Window/Linux: . / cho phép m t thao tác tr c tuy n. Ngo i tuy n là không ng i nào c k t n i n c s d li u trong khi b n th c hi n thao tác.nh m t thi t l#p +ng nh t cho các nh#t ký c l u gi trên m t ng d%n ph ( nh c a ng d%n nh#t ký chính) Tên t p nh#t ký ho t Cho phép ch ng hi n hành ng trình userexit sao chép nh#t ký ngo i tuy n Gi i h n s m t mát c a vi c kh i ph c h"ng Cho phép ch ghi nh#t ký l u tr blk_log_dsk_ful maxlog num_log_span T ng t tùy ch&n OVERFLOW LOG PATH c a l nh ROLLFORWARD. thêm t* khóa ONLINE vào cú pháp l nh. SQL ch-.

và l p l i l nh sao l u n u b n ã g p l i lúc u. th y ph n ti p theo. Tên c a t p này theo quy c c ch.m t sao l u b ng bi u tr ng. . Ngh'a là khi b n c g ng ch y l nh sao l u ngay sau ó. Nút cc nh v i NODE0000 cho c s d li u không phân tán. n u không b n s. l nh RESTORE có th s d ng m c th i i m này ph c h+i m t b n sao ã nh.Nh p môn H qu n tr c s d li u DB2 126 db2 BACKUP DB sample TO C:\BACKUPS Chú ý r ng th m c C:\BACKUPS ph i t+n t i tr c khi th c thi l nh. Trong tr ng h p tìm ra nh ng k t n i trình n Window/Linux: db2 list applications / bu c ng t t t c k t n i Window ho c c a Linux: n c s d li u. là tr ng h p cho t t c n b n DB2 tr* n b n th ng m i DB2 Enterprise Edition v i tính n ng DPF.Quy c t tên nh sao l u Lo i “0” có ngh'a ó là b n sao l u y . Sau khi th c thi thành công l nh sao l u. nh#n m t thông báo l i b i m t sao l u ngo i tuy n không th c th c hi n khi có các k t n i. ngh'a là ch. / i vài giây. nó có th không làm vi c.trong hình 11.6 d li u sao l u Hình 11. m t t p m i ch a nh c s c t o ra.ng cc nh v i CAT0000. a ra l nh t* trình n l nh DB2 nc s d li u.ng l u ý r ng l nh cu i cùng ch y theo cách th c không +ng b . n u không b n s. Nút catalog c. C. Nh chúng ta s. a ra l nh DB2 này t* db2 force application all B n có th không c n ch y l nh cu i cùng trong môi tr ng s n xu t v i nhi u ng i s d ng. nh#n nh ng cu c g&i t* nh ng +ng nghi p nóng tính y! C.6 . Tham kh o sách h ng d%n DB2 có chi ti t h n Khi có vài b n sao l u c ghi l i và l u tr trên cùng ng d%n thì m c th i i m ghi l i cu i tên t p c s d ng phân bi t gi a các nh sao l u. Lo i “3” ch!ng h n.ng ch c ch n là không có k t n i nào n c s d li u khi b n th c thi l nh trên.

nh ng ôi khi b n c. Bây gi . ch 4. hi u ch-nh l ch sao l u cho c s d li u EXPRESS. ch a d li u bi n i v t t c các tác v l#p l ch. B m nút OK ti p t c. Sau ó b m Next chuy n sang m c ti p theo. . li u bao chuy n 2. Danh m c công c s. Thông th ng. T* cây i t ph i trên c s b c Backup ng Trung tâm i u khi n. Hãy ch&n bi u t ng File System trong danh sách th Media Type. 5. Ch. B m Next t i m c ti p theo c a công c Backup. B n có th m m c Options and Performance tuy nhiên b n nên m c nh vì DB2 m c nh cho phép sao l u ch t i u nh t.ra m t gi n + cho danh m c công c và ch&n t o nó trong c s d li u EXPRESS hi n hành. Ti p theo b n ch&n ch&n m c Schedule. Ch&n hê th ng t o danh m c các công c và th c hi n chúng. 3. Trong m c Introduction s. Các th t c : 1. là th m c ch a c s d li u sao l u. r+i b m OK.Nh p môn H qu n tr c s d li u DB2 127 Bài t p nhanh #8 . tóm t t tr ng thái hi n t i c a c s d g+m th i i m sao l u cu i cùng và ph ng th c truy c#p. Nh p chu t d li u EXPRESS và ch&n bi u t ng Backup. n u nh trình l#p l ch ch a c kích ho t thì b n hãy kích ho t chúng. ây s. Trong ph n bài t#p nhanh này.ng mu n hi u ch-nh chúng khi có m t ho t ng c th di0n ra. b n ch&n All Database. Công c t*ng c kh i ng. B m nút Add. b n s.L p l$ch sao l u M c ích: M c dù DB2 có m t vài kh n ng t ng duy trì c s d li u. Trong m c Schedule. c sao l u. ch&n th m c b n v*a t o ra. b n nên ch&n m t 'a khác v i 'a ang l u c s d li u hi n hành. B m Next chuy n sang m c ti p theo sau khi danh m c công c ã c t o l#p. t o m t th m c m i trong h th ng có tên là C:\db2backup. ch&n ích n c a d li u s. Trong m c Image.

L#p l ch sao l u m i ngày vào lúc 1 gi sáng. 8.Nh p môn H qu n tr c s d li u DB2 128 6. Finish t o ra tác v . Trong m c Summary. b n s. xem l i các tác v s. c t o ra. t o ra m t m c l c cho vi c thi hành các tác v . Trong m c Schedule. B m Next chuy n sang m c k ti p. Ch y Trung tâm tác v (Task Center) l u v*a m i t o ra. 7. Sau ó b m xem ho c s a ch a các tác v sao .

&c s. DB2 s. các c s d li u nh N u vi c l u tr b n ghi c cho phép tr c vi c sao l u.khôi ph c l i b ng cách s d ng nh sao l u. Sau khi hoàn thành. x y ra v i c s d li u c a b n? t ng t m t c dùng nhi u trong ph n này. ch ng trình khôi ph c d li u h"ng ct ng th c thi. chuy n gì s. c s d li u c a b n tr ng thái phù h p nh t. 11.1 Các ki u khôi ph c d li u Có ba lo i khôi ph c d li u: Khôi ph c d li u h+ng: Gi thi t r ng b n ang làm vi c v i c s d li u DB2 trên máy tính thì i n.Nh p môn H qu n tr c s d li u DB2 129 11. N u nh b n ch. ho c m t i m c th theo th i gian. Chú ý r ng t* khôi ph c (recovery) ph c l i là RESTORE. v*a khôi ph c d li u t i m t th i i m xác nh b ng l nh ROLLFORWARD. thì b n không ch. Khôi ph c d li u theo th i gian: Ki u khôi ph c d li u này v*a cho phép b n khôi ph c c s d li u t* m t b n sao.7. M&i tác ng lên c s d li u ó sau th i i m sao l u u b m t. ph c h+i c s d li u c a b n t* nh m t b n sao.7. gõ l nh nh sau: . Khôi ph c d li u phiên b n (ho c khôi ph c nh): Có ngh'a là. mà còn t* các t p nh#t ký.7 Khôi ph c c s d li u Khôi ph c c s d li u bao hàm vi c khôi ph c c s d li u t* các b n ghi d phòng và nh#t ký.khôi ph c c s d li u t* b n ghi d phòng thì s. D gi n nh t cho câu l nh này: RESTORE DATABASE at <th•i-•i•m>] i ây là c u trúc n <tên c• s• d• li•u> [from <•••ng d•n>] [taken Ví d : N u b n có m t t p sao l u có tên nh sau: B n s. t o ra ã t+n t i th i i m sao l u. nh ng l nh khôi Khi b n kh i ng l i máy tính và kh i ng DB2. b n s.2 Khôi ph c c s d li u Dùng l nh RESTORE khôi ph c d li u t* m t b n l u. t ng ch y l nh RESTART DATABASE và s. th y cách khôi ph c d li u cu n cho phép b n có th khôi ph c t* các b n ghi d phòng và sau ó ghép vào ph n cu i cùng c a các t p nh#t ký. Do ó c s d li u c a b n c tr v tr ng thái ngay tr c khi nó c sao l u. b n s. 11. và ph c h+i các giao d ch khi tr c tr ng thái kích ho t. c m b o r ng. 4 ph n ti p theo ta s. Khôi ph c d li u ki u này làm gi m s m t mát d li u m t cách t i a.

Nh p môn H qu n tr c s d li u DB2 130 RESTORE DB sample FROM <•••ng d•n> TAKEN AT 2006314131259 11. Sao l u các b n “ch p” d li u (flash copy) ( òi h"i v ph n c ng t ng thích) Khôi ph c b ng ã m t (n u tùy ch&n c l#p cho b ng) Sao l u h i u hành này và khôi ph c h i u hành khác là không th . Chúng tôi khuyên b n nên &c l i cu n h ng d%n v DB2 có thêm thông tin chi ti t. Cho phép sao l u nh ng thay i (Delta) và sao l u t ng d n (incremental).sao l u nh ng thay i ti p theo. Sao l u c s d li u ch Khôi ph c c c s d li u ang t+n t i. trong khi ó cách sao l u d n t ng thì ghi nh#n toàn b nh ng thay i và tích h p chúng vào m i nh sao l u. Dùng db2look và db2move cho tr ng h p này.8 Các ho t ng khác v i BACKUP và RESTORE D i ây là danh sách m t vài i u b n nên bi t v l nh BACKUP và RESTORE. Khôi ph c d li u t i m t 'a khác v i vùng c n khôi ph c. • • • • • 32 bit còn khôi ph c d li u ch 64 bit. Cách sao l u thay i ch. thay vi làm v i toàn b c s d li u. • • • . Khôi ph c ho c sao l u d li u theo không gian b ng.

Các b ng hay thay i s.ng nh nh ng kho ng tr ng l i và s. tái ghép nh ng m nh v n c. Khác v i vi c làm b ng tay.1 – Các công vi c duy trì: REORG. các b ng trong m t c s d li u ã c thay i theo các l nh nh UPDATE. Hình 12. 12. RUNSTATS. chia nh" ra thành các trang c s d li u. có l i nh t khi dùng REORG. bàn v các nhi m v c n thi t gi cho CSDL c a b n duy trì ho t ng c t t. B n DB2 Express-C c. nh hình 12.Nhi m v b o trì Trong ch ng này chúng ta s. RUNSTATS. DELETE trên c s d li u c a b n. chu k m i l i c b t u v i REORG. L nh REORG s. REBIND Có ba công vi c duy trì chính trong DB2.1 trình bày nh ng công vi c duy trì c th c hi n theo m t chu trình hình tròn. 12.1 mô t : REORG.Nh p môn H qu n tr c s d li u DB2 131 12 Ch ng 12 . N u m t REORG c th c hi n. anh y hay cô y s.1.ng gi ng nh t t c các b n DB2 hi n th i u ch a ng t t c các kh n ng t ng này. b n th c hi n các tính toán INSERT. Sau m t th i gian. RUNSTATS và REBIND. d li u c a b n b t u b phân o n. REBIND Hình 12. Kh n ng t qu n lý là m t l i ích l n làm nh" g&n và làm v*a ph i s l ng nhân viên trong nh ng công ty. UPDATE. có nhi u th i gian r nh r i th c hi n vi c nâng cao ho t ng làm gia t ng giá tr cho công ty. T t c m&i th trong DB2 u t ng th c hi n nh ng công vi c này. nó c khuyên là nên ch y m t RUNSTATS.1 L nh REORG Qua th i gian. t ch c l i d li u làm cho vi c truy v n d li u tr nên hi u qu h n. theo sau là m t REBIND.1 REORG. T i th i i m ó.m c REORG nh v i . DELETE và INSERT. n u m t ng i qu n tr c thuê. B n có th làm ch. nh ng ng i không c n thuê làm liên t c làm qu n tr qu n lý máy ch d li u.

Cú pháp: RUNSTATS ON TABLE <schema. vì các th ng kê c dùng t i th i i m ó không gi ng nhau nh th i i m hi n t i.tablename> Ví d : RUNSTATS ON TABLE myschema. Khi nh ng th ng kê c s d li u c c#p nh#t. L nh REORG không tr c tuy n th c hi n nhanh h n và hi u qu h n. Nó gi cho các th ng kê c s d li u luôn c#p nh#t.Nh p môn H qu n tr c s d li u DB2 132 các b ng. . Thay vào ó.2 L nh RUNSTATS C ch t i u c a DB2 (Optimizer) là “kh i óc” c a DB2. và s d ng phân tích th ng kê các i t ng c s d li u c l u trong các b ng danh m c cho hi u su t khai thác c s d li u l n nh t. Ví d . xác nh c d li u trong b ng thay i nh th nào.s s)n có v i m t b ng. không ph i t t c các câu truy v n s. … Thông tin v phân tích th ng kê không c c#p nh#t t ng.s 12. Nh ng s + truy nh#p SQL t'nh c xác nh khi b n a ra l nh BIND.2 s. ây là nh ng công vi c t t nh t cho nh ng b ng nh". giúp chúng ta hi u ý t ng này. trong khi l nh REORG tr c tuy n cho phép truy nh#p t i b ng. có bao nhiêu và nh ng ki u gì c a ch. T n su t c a các th ng kê t#p h p này s. có bao nhiêu hàng trong nó. c dùng tr c m t REORG xác nh b ng hay ch. c dùng nh ng th ng kê m i nh t. Nó tìm nh ng ng d%n truy nh v và truy v n d li u.có m t dòng so v i b ng có m t tri u dòng.employee 12.1. và m t REORG có th c th c hi n tr c tuy n hay không tr c tuy n. các b ng danh m c có các phân tích th ng kê v có bao nhiêu c t hi n di n trong m t b ng. Hình 12.1. Chính vì thi t k ki u này. nó s. C ch t i u c a DB2 có th t o ra nh ng thay i g c r0 c b n trong ng d%n truy nh#p n u b ng ch. nh ng không cho phép truy nh#p t i b ng. ph n tác d ng v i yêu c u v hi u n ng c a h th ng. DB2 cung c p l nh RUNSTATS c#p nh#t nh ng th ng kê này. nên b n không mu n DB2 c#p nh#t nh ng th ng kê sau m i thao tác trên c s d li u. DB2 có th ch&n m t ph ng án truy nh#p t t h n. C ch t i u là h th ng ánh giá tri nh#p hi u qu nh t th c. nh ng có th làm tiêu hao m t chút tài nguyên h th ng. Cú pháp: REORG TABLE <tablename> Ví d : REORG TABLE employee L nh REORGCHK có th c n c s a.3 BIND/REBIND Sau khi ch y thành công l nh RUNSTATS.

txt 12.c” c biên d ch nh th ng l v i trình biên d ch C. Hình 12. Sau khi ti n biên d ch.bnd” ch a t t c các câu l nh SQL.3 trình bày cách th c hi n. t o m t “th vi n” nh trình bày phía trên bên ph i c a hình. m t t p “. i u gì s. không t ng c#p nh#t tính toán l i ng d%n c s trên nh ng th ng kê m i nh t.2 m t ch ng trình nhúng vi t b ng C ( c l u tr nh m t t p v i ph n m r ng là “sqc”) c ti n biên d ch. và m t t p “. mylog. L nh db2rbind có th c dùng óng gói l i các gói trên v i th ng kê m i nh t. th c hi n l nh sau: . Cú pháp: db2rbind database_alias -l <logfile> Ví d : / óng gói l i t t c các gói c a c s d li u sample và l u nó trong nh#t ký t i t p db2rbind sample -l mylog.2 – Ti n trình k t n i SQL t-nh. Bây gi . Trong hình 12. /óng gói thì t ng ng v i biên d ch các câu l nh SQL v i nh ng s + truy nh#p t t nh t c xác nh trên các th ng kê ã có t i th i i m này. T p “. n u m t l nh RUNSTATS c th c thi.4 Các công vi c duy trì t& Trung tâm i u khi n T* Trung tâm i u khi n b n có th REORG và RUNSTATS. x y ra n u m t tri u dòng c chèn vào bên trong b ng s d ng trong ch ng trình nhúng trên? Sau khi chèn. c c#p nh#t. tuy nhiên gói s. nh ng th ng kê s.1.c” ch a mã C v i t t c chú thích SQL. hai t p c sinh ra. và sau ó l u chúng thành gói. nó c óng gói l u trong c s d li u.Nh p môn H qu n tr c s d li u DB2 133 Hình 12.txt. T p C v i ph n m r ng “.bnd” gi ng nh v#y.

nh p ph i chu t và ch&n t ch c l i (cho REORG) hay ch y th ng kê (cho RUNSTATS) Hi n th$ thông s c s d li u: Khi b n ch&n m t c s d li u.Nh p môn H qu n tr c s d li u DB2 134 Hình 12. cung c p thông tin v c s d li u nh là v kích th c.4 – Hi n th$ thông s c s d li u t& Trung tâm i u khi n .3 – REORG và RUNSTATS t& Trung tâm i u khi n B n ch&n b ng mà b n mu n t ch c l i. Hình 12. dù nó có c b o trì t ng hay không. khung nhìn ho t ng c s d li u phía d i bên ph i c a Trung tâm i u khi n s. c a l n sau cùng. Vi c hi n th này cho phép b n nhanh chóng xác nh nh ng duy trì c n thi t cho c s d li u c a b n.4 hi n th nh ng thông tin này. Hình 12.

. Ho t ng b o trì t ng bao g+m nh ng b c sau ây: .Có 2 lo i c a s b o trì chính: m t là th c hi n tr c tuy n.2 Các l a ch n b o trì Có 3 cách th c hi n vi c b o trì h th ng. thì khung th i gian này s. Hình 12.Nh p môn H qu n tr c s d li u DB2 135 12. . DB2 t BACKUP) Trong ph n này. n u h th ng có ít nh t các ho t ng vào ngày ch nh#t. T* giao di n i u khi n chính.5 – M Configure Automated Maintenance Wizard b o trì h th ng m t cách t ng theo h ng Hình 12. hi n ra c a s “C u hình d%n”. b n có th m “Configure Automated Maintenance Wizard” nh hình minh h&a 12. 2. B n có th t o các k ch b n v i nh ng l nh b o trì và l#p l ch h p lý cho nó ho t 3. chúng ta t#p trung ch y u vào cách b o trì t ng. 1. ho t ng nh là m t c a s b o trì. T ng b o trì ng giám sát công vi c b o trì cho b n (b ng l ch REORG.5. Ví d .th c hi n b o trì m t cách t ng khi c n thi t và ang trong th i gian kích ho t c a c a s b o trì. t* 2h sáng t i 4h sáng.Ng i dùng nh ngh'a m t c a s b o trì (khung th i gian) t i th i i m ó h th ng s. còn lo i kia là th c hi n ngo i tuy n. RUNSTATS. ng. B o trì th công B n th c hi n ho t ng b o trì này m t cách th công khi có nhu c u phát sinh. T o ra m t o n k ch b n (script) th c hi n vi c b o trì h th ng.6 s. th c hi n công vi c b o trì mà không gây ra s xáo tr n.DB2 ch. .

Nh p môn H qu n tr c s d li u DB2 136 Hình 12.6 – C u hình b o trì h th ng m t cách t ng theo h ng d%n .

Nh p môn H qu n tr c s d li u DB2

137

Bài t p nhanh #9 – C u hình vi c b o trì t M c ích Trong bài t#p nhanh này, v i vài thao tác b o trì trên c s d li u m%u DB2. Các th t c

ng

n gi n, b n s, c u hình cho vi c t

ng

1. T* cây i t ng c a Trung tâm i u khi n, nh n chu t ph i vào c s d li u SAMPLE và ch&n m c “Configure Automatic Maintenance”. Nó s, m ra c a s th c hi n vi c b o trì t ng theo h ng d%n. 2. Trang Introduction c a “h ng d%n” hi n th nh ng cài t hi n th i c a ch c n ng t ng b o trì. N u b n t o ra c s d li u v i ch c n ng t ng b o trì, khi ó nó s, t ng c c u hình. B n có th dùng “h ng d%n” này c u hình l i ch c n ng t ng b o trì. B m Next chuy n t i trang ti p theo c a “h ng d%n”. 3. Trang Type c a “h ng d%n” yêu c u b n ch&n gi a vô hi u hóa t t c các tùy ch&n t ng l u gi và thay i c u hình c a vi c t ng b o trì. Ch&n m t ch c n ng thay i cài t hi n t i c a t ng l u gi . B m Next. 4. Trang Timing (th i gian) c a “h ng d%n” s, yêu c u b n ch- rõ c a s c th c hi n vào m i t i th 7 b o trì. C u hình cho c a s ngo i tuy n s, và ch nh#t t* gi a êm t i 6h sáng nh hình bên d i. B m nút Change bên c nh c a s b o trì ngo i tuy n và ch&n th i gian nh mong mu n. Sau tr l i “h ng d%n”. khi hoàn thành nh ng thông tin c n thi t, b m nút OK Thoát kh"i c a s tr c tuy n (b o trì tr c tuy n có th m b t k lúc nào). B m nút Next.

Nh p môn H qu n tr c s d li u DB2

138

5. / n trang Notification (c nh báo) c a “h t ng tác trong tr ng h p có m t ho t b" qua b c ó. B m Next.

ng d%n”, b n có th cài t m t s ng t ng b o trì b l i. Bây gi

6. / n trang Actives c a “h ng d%n”, b n có th ch&n là có t ng hóa các công vi c cá nhân hay không c.ng nh là c thông báo v các ho t ng c th khác.Trong ví d này, ph i ch c r ng t t c các h p ki m “Automate” u c ch&n và các h p ki m “Notify” u không c ch&n. B m Next. 7. Tr c khi th c hi n trang k ti p c a “h ng d%n”, b n nên c u hình v trí l u d phòng c a c s d li u. Lý t ng nh t là b n nên l u tr m t 'a v#t lý khác trong tr ng h p 'a b l i. T* trang Activies, ch&n ch c n ng “Backup database”, sau ó b m nút “Configure Settings”. 8. Trên trang Backup Criteria c a c a s “Configure Settings”, ch&n ch c n ng “Balance Database Recoverability with Performance”. Trên trang Backup Location, ch&n v trí l u d phòng và b m nút “Change”. Ch- ra m t v trí khác th c hi n l u d phòng (ph i b o m là b nh trong 'a ó). Trên trang Backup Mode, b o m là “Offline Backup” ã c ch&n. B m OK óng trang Backup Criteria. B m nút Next. 9. Trang Summary (tóm t t) c a “h ng d%n” ch a m t b ng tóm t t c a nh ng l a ch&n mà b n ã ch&n. B m nút Finish ch p nh#n và thi hành nh ng thay i ó.

Nh p môn H qu n tr c s d li u DB2

139

13
Ch ng 13 – Truy c p ng th i và khóa
Ch ng này t#p trung th o lu#n làm th nào cho phép nhi u ng i dùng truy c#p vào cùng m t d li u gi ng nhau t i cùng m t th i i m mà không làm nh h ng l%n nhau, và gi cho quá trình ho t ng c a h& phù h p. Chúng ta s, th o lu#n v khái ni m c a các giao d ch, truy c#p +ng th i và khóa. 13.1 Các giao d$ch M t giao d ch hay m t n v công vi c g+m có m t hay nhi u dòng l nh SQL mà khi th c hi n c n ph i c coi là m t n v riêng l2. Có ngh'a là n u m t trong nh ng dòng l nh trong giao d ch th t b i thì toàn b giao d ch th t b i, và b t k dòng l nh nào c thi hành n i m th t b i thì s, c quay lui (h+i x ), a d li u v giá tr , tr ng thái tr c ó. M t giao d ch k t thúc v i dòng l nh COMMIT, nó c.ng có ngh'a là báo hi u b t u m t giao d ch m i. Hình 13.1 cung c p cho chúng ta ví d c a m t giao d ch

Hình 13.1 – M t ví d v giao d$ch Trong hình 13.1, ví d b n mu n chuy n 100 ô la t* tài kho n ti t ki m (savings) c a b n sang tài kho n séc (checking). Vi c ó òi h"i ph i th c hi n công vi c này: Tr* 100 ô la tài kho n ti t ki m C ng 100 ô la vào tài kho n séc

Nh p môn H qu n tr c s d li u DB2

140

N u dãy các vi c trên không c xem xét nh là m t n v công vi c - m t giao d ch, hình dung i u gì s, x y ra n u có l i (x y ra) sau khi tr* ti n tài kho n ti t ki m, nh ng không c ng c ti n vào tài kho n séc. B n s, m t 100 ô la! 13.2 Truy c p ng th i Truy c#p +ng th i ý nói r ng nhi u ng i có th làm vi c cùng m t th i i m trên cùng m t c s d li u. DB2 c thi t k nh là m t c s d li u nhi u ng i dùng. Vi c truy c#p d li u ph i c k t h p chính xác và rõ r t s d ng m t c ch b o m tính toàn v7n và ch c ch n c a d li u. Xem ví d 13.2

Hình 13.2 - M t ví d c a truy c p ng th i và s c n thi t cho vi c i u khi n truy c p ng th i Trong hình 13.2, có 4 ng d ng, App A, App B, App C và App D ang c g ng truy c#p n cùng m t dòng (dòng 2) trong b ng d li u. Không có i u khi n truy c#p +ng th i, t tc ng d ng có th th c hi n các thao tác i v i dòng d li u này. Gi nh r ng t t c ng d ng ang c#p nh#t c t Age cho dòng 2 v i giá tr khác, ng d ng th c hi n c#p nh#t sau cùng s, là "ng i chi n th ng" trong tr ng h p này. Hi n nhiên trong ví d này m t i u khi n truy c#p +ng th i nào ó c òi h"i m b o ch c ch n cho k t qu . /i u khi n truy c#p +ng th i này d a vào vi c s d ng khóa b n ghi. Khái ni m khóa và truy c#p +ng th i có liên quan ch t ch, v i nhau. Khóa dùng t m th i ng n nh ng ng d ng thao tác trên chúng cho n khi m t thao tác k t thúc. N u chúng ta có nhi u khóa h n trong m t h th ng thì vi c truy c#p +ng th i s, ít i. Nói m t cách khác, n u chúng ta có ít khóa h n trong h th ng thì s, có nhi u truy c#p +ng th i h n. Nh ng khóa này s, t ng xu t hi n h tr m t thao tác và s, c gi i phóng khi thao tác k t thúc (khi s d ng l nh COMMIT ho c ROLLBACK). Các khóa có th t trên các b ng ho c các dòng. Có hai lo i khóa c b n: - Khóa chia s2 (khóa S) c s d ng khi ng d ng mu n &c và ng n c n c#p nh#t t* nh ng dòng khác - Khóa dành riêng (khóa X) – c s d ng khi m t ng d ng c#p nh#t, thêm hay xóa m t dòng Bây gi chúng ta ý n hình 13.3, nó có v2 gi ng nh xu t hi n thêm m t khóa hình 13.2 nh ng bây gi nó

Nh p môn H qu n tr c s d li u DB2

141

Hình 13.3 – M t ví d c a truy c p

ng th i, và s

c n thi t c a khóa

Trong ví d hình 13.3, n u App B truy c#p dòng th 2 u tiên, và th c hi n vi c UPDATE, App B gi m t khóa dành riêng (khóa X) trên dòng ó. Khi App A, App C và App D c g ng truy c#p vào dòng 2, chúng s, không th UPDATE dòng này b i vì khóa X. Vi c ki m tra này giúp b o m tính toàn v7n và ch c ch n c a d li u. khi không ki m tra truy c p ng th i 13.3 Các v n Khi không có i u khi n truy c#p +ng th i, chúng ta có th g p nh ng v n • • • • M t d li u c#p nh#t /&c v i không cam k t /&c không l p l i /&c th*a d i ây

13.3.1 M t d li u c p nh t M t d li u c#p nh#t là m t v n t ng t nh gi i thích tr d ng th c hi n c#p nh#t sau cùng s, là “ng i chi n th ng”.

c trong m c này, khi ng

Hình 13.4 – M t d

li u c p nh t

App2 &c giá tr m i c a dòng ó 3. do ó x y ra vi c “M t d li u” 13. App1 cu n l i nh ng thay i trên dòng ó App2 thì ang &c v i d li u không c g&i là “ &c v i không cam k t” c cam k t.Nh p môn H qu n tr c s d li u DB2 142 Trong hình 13.3 * c không l p l i /&c không l p l i ng ý r ng b n không t c k t qu gi ng nhau sau khi th c hi n vi c &c gi ng nhau v i nh ng thao tác gi ng nhau. App1 c#p nh#t m t dòng 2. và k t* ó d li u không h p l và 13. . 3.4 có hai ng d ng c g ng c#p nh#t trên cùng m t dòng.2 * c v i không cam k t M t hành ng &c không cam k t ho c “ &c có ý x u” c#p n vi c m t &c nh ng thông tin mà không c cam k t.5 kéo theo nh ng s vi c này: 1. ng d ng c úng Hình 13. Bên trái là App1. Và chu i vi c sau ó là: 1. 2. b m t khi App2 c#p nh#t l i nó. và bên ph i là App2.5 – /&c v i không cam k t Hình 13.3. App1 c#p nh#t m t dòng App2 c#p nh#t dòng t ng t App1 hoàn t t App2 hoàn t t D li u c#p nh#t c a App1 s.3. và t t nhiên vi c này thì không n. 4.

App1 óng và m l i b ng Trong tr ng h p này. t* lúc App1 không c cung c p d li u t l i.6 – * c không l p l i Trong hình 13. Hình 13.6. b n có th thu c nh ng dòng v*a thêm vào mà úng ra thì chúng (dòng) ít h n.* c th&a . M t dãy các s vi c là: g ng ghi m t chuy n bay t* Dallas n 1.7 .7 cung c p cho chúng ta ví d c a v n này Hình 13. dòng v i destination “San Jose”) 3.4 * c th&a V n &c không có th c gi ng nh v n &c không l p l i. App2 xóa m t dòng trong b ng (ví d . App1 m m t b ng ( c hi u nh b ng k t qu ) hi n hành nh b n th y trong hình 13.3. d ng nh n u b n c Honolulu.Nh p môn H qu n tr c s d li u DB2 143 Hình 13. nh ng khác nhau là nh ng l trình k ti p. App2 hoàn t t nh ng thay i 4.6 2. ó chính là v n l p l i” ng t ang &c l p c g&i là “ &c không 13. nó không th sao chép l i b ng d li u.

Nh ng v n v%n t+n t i v i c p • /&c v i không cam k t • /&c không l p l i • /&c th*a cô l#p này: Nh ng v n c ng n ng*a v i c p • M t d li u khi c#p nh#t cô l#p này là: 13. Không có s khóa dòng nào t+n t i trên nh ng thao tác &c. /ó là m c cô l#p th p nh t.4. b n có th có nh ng tác ng khác nhau cho c s d li u khóa m t ng d ng DB2 cung c p nh ng m c • • • • b o v khác nhau cô l#p d li u: /&c v i không cam k t (UR) 6n nh con tr" (CS) /&c n nh (RS) /&c l p l i (RR) 13. 13. V n này c g&i là &c th*a ang &c l p l i.1 * c v i không cam k t /&c v i không cam k t c. N u ó là dòng ch. Nó cung c p m t m c khóa t i thi u.Nh p môn H qu n tr c s d li u DB2 144 Hình 13. c gi cho n khi m t dòng m i c n p ho c n v làm vi c c k t thúc. App1 s. N u dòng c c#p nh#t. v i m c cô l#p này thì dòng “hi n hành” c a con tr" (cursor) b khóa. 3.&c.7 trình bày chu i s ki n: 1. không th y d li u t ng t nh l y c nhi u dòng h n. 4.ng c hi u nh &c có ý x u. và thao tác c#p nh#t gi nhi m v nh là n u chúng ta dùng c p cô l#p n nh con tr". chi c khóa s. thì khóa s.2 (n $nh con tr+ 6n nh con tr" là c p cô l#p m c nh. App1 m m t b ng App2 thêm m t dòng vào c s d li u App2 hoàn t t nh ng thay i App1 óng và l i ti p t c m b ng n i mà nó có tiêu chu n c a b ng Trong tr ng h p này. V c b n. 2. c gi cho n khi n v làm vi c c k t thúc Nh ng v n v%n t+n t i v i m c • /&c không l p l i • /&c th*a cô l#p này: Nh ng v n c ng n ng*a v i m c • M t d li u c#p nh#t • /&c không cam k t cô l#p này . nó s.4. n u các ng d ng khác không xâm nh#p xóa ho c s a m t b ng.4 Các m c cô l p B n có th ngh' các m c cô l#p nh là n i gi các chính sách khóa. và cung c p m c truy c#p +ng th i cao nh t. d a vào s l a ch&n m c cô l#p.

và khóa s. M c cô l#p n nh con tr" gi m t cái khóa dòng 1 khi nó ang l y dòng ó v . và truy c#p +ng th i t i thi u nh t.4. chúng ta nhìn th y m c cô l#p “ &c không cam k t” không khóa gì c .000 dòng và câu truy v n tr v 10 dòng.8 so sánh s khác nhau mà các m c cô l#p mang l i. sau ó ch. t t c các dòng mà ng d ng làm vi c trong m t ph m vi u b khóa. x lý vi c xây d ng m t t#p h p k t qu . b t c dòng nào l y v s. Ví d n u b n có m t b ng ch a 10. xóa. V n v%n t+n t i v i m c • /&c th*a Nh • • • cô l#p này: cô l#p này là: ng v n c h n ch v i m c M t d li u c#p nh#t /&c v i không cam k t /&c không l p l i 13.Nh p môn H qu n tr c s d li u DB2 145 13. Trong hình. Không m t ch ng trình nào khác có th c#p nh#t. V n v%n còn t+n t i v i m c • không có Nh • • • • cô l#p này: cô l#p này: ng v n c ng n ng*a v i m c M t d li u khi c#p nh#t /&c không cam k t /&c không l p l i /&c th*a cô l p d li u 13. Nó cung c p c p khóa cao nh t. nh ng s. Cho m t con tr". Khóa c gi trên t t c các dòng. gi i phóng nó s m r+i nó l y dòng 2 v . không c gi i phóng cho n khi k t thúc m t giao tác (khi hoàn t t) . C ch &c l p l i b o m r ng nh ng câu truy v n t ng t nhau vi c c a ra b i m t ng d ng trong m t n v làm vi c s.4.có 10 dòng ó b khóa.4.5 So sánh các m c Hình 13. b khóa. nó khóa t t c các dòng tiêu chu n trong t#p h p k t qu . T c là nh ng dòng không c n thi t trong t#p h p k t qu cu i cùng có th b khóa. nh#n c k t qu gi ng nhau t i m i th i i m.3 * c n $nh V i &c n nh. ho c thêm m i m t dòng mà có th nh h ng n t#p h p k t qu cho n khi m t n v công c hoàn t t.… / i v i m c cô l#p &c n nh ho c &c l p l i.4 * c l p l i C ch &c l p l i là m c cô l#p cao nh t. C ch &c n nh s d ng m t m c khóa v*a ph i.

1 – S M c cô l#p nh : so sánh c a thu t ng t m c cô l p WITH {m c cô l#p}.1 cho th y nh ng m c cô l#p kh d' cho . Ch!ng h n c phát bi u có th dùng v i m nh SELECT … WITH {UR | CS | RS | RR} .rõ c m c cô l#p trong ng d ng c a các b n.6 * t m c cô l p Nh ng m c cô l#p có th c ch.4.rõ t i nhi u m c : • Phiên làm vi c trong ng d ng • K tn i • Câu l nh Nh ng m c cô l#p bình th ng c xác nh t i phiên ho c t i m không ch. Ch!ng h n.Nh p môn H qu n tr c s d li u DB2 146 Hình 13.NET hay JDBC và làm sao khi t nh ng thu c tính này ph i phù h l#p c a DB2: c ng d ng. N u nh t i con tr" n m t ch ng trình p v i m t m c cô Table 13. b ng 13.8 – So sánh các m c cô l p 13. nó m c nh.

S m c nh là n m m i l n trang 4K (200K) trên Windows. T p nh#t ký tri u ch ng c a DB2 có th c dùng xác nh li u có .5 Khóa leo thang M i khóa do DB2 t o ra s. N u s leo thang khóa xu t hi n th ng xuyên v i s thi t l#p này. N u ng d ng c a các b n yêu c u i u khi n r t ch t trên d li u làm vi c v i nó. N u ng d ng c a các b n không yêu c u có nh ng giá tr nh ví d . khóa leo thang xu t hi n khi m t ng d ng n yêu c u h n 44K trong t ng b nh khóa (200K * 22% = 44K).9 – Khóa leo thang Có hai tham s c u hình c s d li u chính liên quan • • n khóa leo thang: LOCKIST . t ng giá tr c a LOCKIST và MAXLOCKS. Hi u su t r t là quan tr&ng. Khi b t i u cho r ng nó t t h n là m t khóa trên toàn b b ng. Con tr" c yêu c u m c cô l#p n nh v i ngo i l c a m t câu l nh SQL: SELECT COUNT(*) FROM tab1 WITH UR V i SQL nhúng. ch&n cô l#p RR.9 minh h&a cho i u này: Hình 13. c t t i th i i m óng gói. thay vì khóa nhi u hàng. Hình 13.Nh p môn H qu n tr c s d li u DB2 147 M t ng d ng c n xác nh “s b ” s hàng trong m t b ng. còn v i SQL ng Vi c ch&n s d ng m c cô l#p nào ph thu c vào ng d ng c a các b n. s d ng l ng b nh nào ó. M c nh là 22%.S l ng c a b nh (trong trang 4k) d tr qu n lý nh ng khóa cho m&i ng d ng c n i. n u nh ng giá tr ng m nh c s d ng. 13. B i v#y. Khóa leo thang không t t cho hi u n ng nh ng l i gi m s xung t. ch&n cô l#p UR. các m c thi t l#p các m c c t th i gian ch y. MAXLOCKS .Ph n tr m c c i c a toàn b danh sách khóa cho m t ng d ng. s leo thang khóa xu t hi n.

(db2diag.6 Ki m soát khóa B n có th theo dõi nh ng s s d ng khóa b ng nh ch p nhanh khóa ng d ng DB2.9 – 0nh ch p nhanh khóa c a các ng d ng 13.log. / thu c a khóa vào m t th i gian nh t nh.exe Authorization ID ADMINISTRATOR Application status Waiting Status change time Collected Application code page Locks held Total wait time (ms) = 11- = 9 = = 0001 = = = UOW = Not = 1252 = 4 = 0 List Of Locks Lock Name = 0x05000700048001000000000052 Lock Attributes = 0x00000000 Release Flags = 0x40000000 Lock Count = 255 Hold Count = 0 Lock Object Name = 98308 Object Type = Row Tablespace Name = TEST4K Table Schema = ADMINISTRATOR Table Name = T2 Mode = X Figue 13. dùng l nh sau: c m t báo cáo GET SNAPSHOT FOR LOCKS FOR APPLICATION AGENT ID <handle> Hình 13. / b#t nh ng nh ch p nhanh cho khóa. c t#p h p. thông tin theo dõi s.9: 8nh ch p nhanh k t qu c a m t ví d s d ng ng d ng khóa Application Lock Snapshot Snapshot timestamp 05-2002 00:09:08.Nh p môn H qu n tr c s d li u DB2 148 ph i s leo thang khóa ang xu t hi n. m t trong s ó có th ph i i nh#n c khóa. th m c: C:\Program Files\IBM\SQLLIB\DB2) ng t p này n m trong th 13. ta dùng l nh: UPDATE MONITOR SWICTHES USING LOCK ON Sau khi c cho phép.7 Ch khóa Khi hai ho c nhi u các ng d ng c n th c hi n m t phép toán trên cùng m t i t ng. Theo m c nh m t ng d ng s.672586 Application handle Application ID *LOCAL. .00B9C5050843 Sequence number Application name db2bp.DB2.

nh ng s b t c luôn là m t v n chi m nhi u th i gian. Hình 13. và sau ó th c hi n m t l nh c#p nh#t hàng trên b ng employee làm v i "empno= 50000". thanh ghi này c t giá tr c a LOCKTIMEOUT. M hai c a s so n th o l nh c a DB2 (chúng tôi s.8 V n khóa ph thu c và phát hi n M t s b t c (deadlock) xu t hi n khi hai ho c nhi u các ng d ng c n i t i cùng c s d li u. Th i gian ch i m t ng d ng c a m t khóa c ki m soát b i tham s c u hình c s d li u.10 . Thanh ghi CURENT LOCK TIMEOUT c n c dùng t th i gian ch khóa cho m t k t n i ã cho. chúng ta ang k t n i t i c s d li u có tên SAMPLE. Chúng i di n cho hai ng d ng khác nhau k t n i t i c s d li u. Hình 13. Theo m c nh. t+n t i qua m&i giao d ch. không cho phép ng i khác cho n khi ông ta có b t nho khô. ng i B gi c s a. Ví d : SET LOCK TIMEOUT=WAIT n 13.10: Minh h&a m t tình hu ng b t c. và s.Nh p môn H qu n tr c s d li u DB2 149 i vô h n. nó s. M t khác. không cho phép ng i khác dùng cho n khi ông ta có s a. B i v#y. Trong thi t k ng d ng. M t khi giá tr c a thanh ghi ã d ng SET LOCK TIMEOUT c t cho m t k t n i. Giá tr ng m nh c a tham s này là -1 ( i vô h n). L a .10. ng i A gi c b t nho khô và gi s s. S ch i ch a bao gi c gi i quy t b i vì m i ng d ng ang gi m t tài nguyên mà nó ph c v cho nh ng nhu c u khác nhau. / mô ph"ng m t tình hu ng b t c DB2. chúng ta có m t tình hu ng b t c. g&i là "CLP1" và "CLP2" t ng ng). 2. S thay i giá tr c a nó. T* CLP1 th c hi n các l nh sau: db2 connect to sample db2 +c update employee set firstnme = ‘Mary’ where empno = ‘000050’ / u tiên. theo nh ng b c sau ây: 1.K$ch b n s b t c Trong hình 13.

T* CLP2 th c hi n nh ng l nh sau: db2 connect to sample db2 +c update employee set firstnme = ‘Tom’ where empno = ‘000030’ 4 c a s c a CLP2. T i i m này. và m t giao d ch nào s. Th c hi n nh ng thay i d li u theo lô/nhóm. Ch. 2.ng có v2 treo. 3. 5. ng d ng CLP1 i mãi mãi. câu l nh SELECT này có v2 s.ng n i vào c s d li u SAMPLE. t kho ng th i gian ki m tra cho nh ng s b t c. treo. DB2 s. s d ng m t gi i thu#t bên trong xác nh giao d ch nào c n ph i quay lui (h+i x ).9 Truy c p ng th i và th c ti n khóa t t nh t Sau ây là m t s m7o nh" truy c#p +ng th i và th c ti0n khóa t t nh t: 1. chúng tôi không mu n c a s l nh c a DB2 t ng cam k t l nh này. Chúng tai ang c ý làm i u này sao cho chúng ta gi c khóa. Tham s này s.ghi nh#t ký thông tin giao d ch khi có yêu c u. Phát bi u SELECT này c.Nh p môn H qu n tr c s d li u DB2 150 ch&n "+c " trong câu l nh ch. Nó th#t s là không ph i là treo. 3. Trong k ch b n b t c trên. DB2 s. N u b n ang g p nhi u tình hu ng b t c. giá tr c a tham s này c t t i 10 giây. L nh t* CLP2: db2 +c select firstnme from employee where empno = ‘000050’ B ng vi c ánh l nh SELECT trên.t1 WHERE c1 = … FETCH FIRST s3000 ROWS ONLY) . c ti p t c. /i u này có th t c b ng cách phát hành th ng xuyên nh ng l nh COMMIT (th#m chí cho nh ng giao d ch ch. Ch!ng h n. b n c n ph i tái ki m tra nh ng giao d ch c không.&c) khi ng d ng c a b n cho phép. ki m tra tham s c u hình c s d li u DLCHKTIME. n u CLOCKTIMEOUT ã c l i v i giá tr ng m nh c a nó là -1. Ch!ng h n DELETE FROM ( SELECT *FROM tedwas. nó i di n cho ng d ng th hai.ra r ng. Gi nh ng giao d ch càng ng n càng t t. T y d li u ã s d ng nhanh chóng: ALTER TABLE ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE 4. nh ng l i c#p nh#t m t hàng khác b ng employee. bây gi chúng ta ang t o ra m t s b t c. chúng ta c. th c ra nó ang i khóa CLP1 ang gi tr v . 4. mà là i khóa c a hàng này tr v do CLP2 ã gi trong b c 3. hi n h u xem xem có th t ch c l i 13. L nh t* CLP1: db2 +c select firstnme from employee where empno = ‘000030’ Sau khi nh n Enter th c hi n câu l nh SELECT trên.

Ch!ng h n. Không khôi ph c nhi u d li u h n c n thi t. 6. S d ng nh ng c tính t ng tranh c a nh ng công c chuy n i d li u trong DB2. s d ng m nh FETCH FIRST n ROWS ONLY trong câu l nh SELECT. B n *ng nên cho giá tr ng m nh c a nó là -1. . / t tham s m c LOCKTIMEOUT cho c s d li u (kho ng gi a 30-120 giây).ng s d ng khóa gi i h n th i gian (timeout) trên trên t*ng phiên làm vi c.Nh p môn H qu n tr c s d li u DB2 151 5. 7. B n có th c.

M t s ch ng trình Java m%u i kèm DB2. s d ng DB2 trên n n Windows. Hình d i ây là m t s ch ng trình m%u vi t b ng Java. .Nh p môn H qu n tr c s d li u DB2 152 PH1N 3: H2C DB2 – PHÁT TRI3N 4NG D5NG Trong ph n này. chúng ta s. hàm do ng i dùng nh ngh'a và b%y s ki n (trigger). th o lu#n v các i t ng c a c s d li u n m t ng d i c a ng d ng nh th t c l u (stored procedure). R ng b n có th h&c c cách l#p trình s d ng DB2 nh m t máy ch d li u b ng nhi u ngôn ng khác nhau b ng cách kh o sát các ng d ng m%u i kèm trong th m c SQLLIB\samples khi chúng ta cài t máy ch DB2.

4 góc trên bên trái c a hình.t ng truy n m ng b6ng th t c. ta th y m t vài câu l nh SQL c th c thi l n l t h t cái này n cái kia.ng có th s d ng c. t ng lên. Cobol. t#p trung vào SQL PL vì tính ph bi n và n gi n c a nó. Th t c l u trong DB2 có th vi t b ng SQL PL.Nh p môn H qu n tr c s d li u DB2 153 14 Ch ng 14 – Các th t c SQL PL Trong ch ng này chúng ta s. Trong ch ng này. có th óng gói các câu l nh SQL và các nghi p v . H n n a. Th t c l u là m t i t ng ng d ng c s d li u.1 mô t cách ho t ng c a stored procedure. N u nhi u câu SQL c th c thi theo ki u ó thì l ng d li u truy n trên m ng s. l nh CALL c dùng g&i th c hi n th t c. các th t c cho phép l u tr t#p trung t i m t n i nào ó các ng d ng khác c. L u tr h p lí m t ph n ng d ng trong c s d li u cho phép c i ti n hi u su t th c hi n nh gi m kh n ng k7t ng truy n m ng. Java. th o lu#n v “th t c l u” (stored procedure). và máy ch tr k t qu v l i máy khách. và sau ó t i máy khách (bên phía trái). Hình 14.Gi m k. C/C++. Tuy nhiên. ta th y th t c l u “myproc” c l u trên máy ch ch a nh ng câu SQL t ng t trên. Hình 14. M i câu SQL c g i t* máy khách n máy ch . chúng ta s. góc d i ph i.1 . các ngôn ng c h tr CLR (Common Language Runtime) và OLE. Cách th hai g&i th c .

.3 d i ây.… DWB n nh m t hình nh riêng r. Hình 14.c n cc p quy n th c hi n các th t c ó. ph c v cho vi c phát tri n các th t c. hàm.com/db2/express. Hình 14. ng d ng SQLJ.1.1 DB2 Developer Workbench DB2 Developer Workbench (DWB) là công c c xây d ng trên n n t ng Eclipse.Nh p môn H qu n tr c s d li u DB2 154 hi n m t th t c hi u qu h n vì ch. c phân c p các quy n th c thi ho c chc xem các th t c. (nó không ph i là m t ph n trong gói cài t DB2) nh ng hoàn toàn mi0n phí. hãy làm theo các b c sau.ng r t h u ích trong m c ích b o m#t c s d li u vì ng i s d ng s. Xem hình 14. c truy n trên m ng và m t k t Th t c l u c. L u ý r ng không th t o c các th t c c vi t b ng các ngôn ng khác trong DWB. ch&n File -> New -> Project và ch&n Data Development Project. Có th t i DWB v t* trang “Download” trên a chhttp://ibm. B c 1: T o m t d án DWB (project) T* menu.2 Giao di n c a DWB. i u ó giúp cho c che ch n và không cho ng i dùng l y thông tin n u h& không có quy n. truy v n XML.2 T o m t th t c l u trong DWB / t o m t th t c b ng Java hay SQL PL. h th ng Kh n ng này là hoàn toàn kh thi vì ng i dùng không òi h"i nh ng quy n t ng minh trên các b ng ho c khung nhìn (view) trong th t c mà h& th c thi. h& ch.2 – DB2 Developer Workbench 14.có m t l nh g&i qu tr v cho máy khách. 14.

4 b n s.3 – Data development project T*ng b c làm theo h ng d%n nh#p tên d án.Nh p môn H qu n tr c s d li u DB2 155 Hình 14. phía bên ph i c a c a s (data perspective) s. ch&n c s d li u b n mu n s d ng và xác nh rõ th m c JDK (cái nào m c nh th ng là úng). B c 2: T o m t th t c Sau khi t o xong d án. Trong hình 14. . xu t hi n d án m i v*a t o. th y d án m i t o trong tình tr ng m r ng.

có SQL PL và Java c h tr trong DWB) và các câu l nh SQL dùng trong th t c.4 Cho th y các th m c khác nhau trong d án c a b n. M c nh. Khi mu n t o m t th t c. DWB s. c t o ra và trong ó có s d ng o n mã m%u và các câu l nh SQL trong ví d c cung c p trên.5 . Hoàn thành các thông tin c yêu c u trong t*ng b c t o m i m t th t c nh : th t c ó k t h p v i d án nào. cung c p cho b n câu l nh SQL m%u ví d .Nh p môn H qu n tr c s d li u DB2 156 Hình 14.4 – D án “ myProject” Hình 14. tên và ngôn ng vi t th t c (l u ý r ng ch. b n nh n chu t ph i vào th m c th t c và ch&n New -> Stored Procedure. T i ây b n có th nh n Finish và th t c s. Xem hình 14.

5. Hình 14.5 – M t th t c m%u c phát sinh.Nh p môn H qu n tr c s d li u DB2 157 Hình 14. dùng các o n mã m%u trên ti p t c kh o sát quy n sách này. . B c 3: Biên d$ch m t th t c Khi m t th t c ã c t o. B n có th Trong hình 14. b n biên d ch và tri n khai b ng cách nh p ph i vào nó trong khung bên trái và ch&n Deploy. / n gi n chúng ta s. o n mã m%u cho th t c “PROCEDURE1” thay th o n mã ó b ng o n mã riêng c a b n.6 minh ho cho b c này.

Nh p môn H qu n tr c s d li u DB2 158 Hình 14. 14. Th t c l u SQL PL (hay nói t t là “Th t c SQL”) là tiêu i m c a ch ng này. b n có th s d ng câu l nh CALL 14.2.ra ngôn ng mà th t c s. s d ng.2.6 – Biên d$ch m t th t c B c 4: Th c thi m t th t c Khi m t th t c ã c biên d ch. b n có th th c thi nó b ng cách nh p ph i chu t vào nó và ch&n Run. LANGUAGE SQL là giá tr m c nh. V i nh ng ngôn ng khác nh JAVA hay C thì ta s d ng t ng ng thu c tính LANGUAGE JAVA hay LANGUAGE C c nhóm b i c u . Trong DB2 th t c có hi u su t t t nh t.2 Nh ng thu c tính tùy ch n c a th t c Sau ây là 1 vài thu c tính tùy ch&n c a th t c: • LANGUAGE SQL Thu c tính này ch.2 M t s khái ni m v th t c SQL PL: Nh ng th t c l u v i ngôn ng th t c r t d0 t o và h&c. xu t hi n trong khung “Result” góc d i ph i / th c thi m t th <procedure name> t c b ng dòng l nh. K t qu s.1 C u trúc c a th t c Cú pháp c a th t c CREATE PROCEDURE proc_name [({tham s tùy ch n})] [thu c tính tùy ch n c a th t c] <câu l nh> Trong ó <câu l nh> là m t câu l nh ho c m t t#p các câu l nh trúc BEGIN [ATOMIC]……………[END] 14.

Tham s ra INOUT . SET v_p3 = v_p1.4. t t c các tham s c n ph i g&i th t c trên b n ph i g&i nh sau: CALL proc (10.Tham s v*a vào và ra /ây là m t ví d khác c a th t c l u mà b n có th th : CREATE PROCEDURE P2 ( IN v_p1 INT.my second SQL procedure SET v_p2 = v_p2 + v_p1.2. tr v t#p h p k t qu n SPECIFIC my_unique_name /ây là tên duy nh t c gán cho th t c.ra danh sách tham s i kèm c a th t c ó. INOUT v_p2 INT. nh ng v i s l ng tham s khác nhau. N u t* khóa SPECIFIC không c s d ng thì v i câu l nh xóa th t c l u tr nh trên.3 Các lo i tham s Có 3 lo i tham s trong th t c l u tr SQL PL: • • • Ví d : CREATE PROCEDURE proc(IN p1 INT.2. c a vào trong câu l nh CALL. ngh'a là.?) 14. 4) D u h"i (?) c dùng cho các tham s tr v c a câu l nh CALL. INOUT p3 INT) Khi g&i th t c. ví d : -. ?. 14. END / g&i th t c này t* dòng l nh. nhi u th t c l u tr có th có cùng m t tên. IN . Ví d . B ng cách s d ng t* khóa SPECIFIC b n có th g n m t tên duy nh t v i nh ng th t c này. OUT p2 INT. xóa m t th t c s d ng t* khóa SPECIFIC b n có th d ng câu l nh: DROP SPECIFIC PROCEDURE. DB2 bi t c th t c nào c n c xóa (vì có r t nhi u th t c có tên gi ng nhau c ghi è) thì b n ph i ch. ta dùng câu l nh: CALL P2 (3.4 Chú thích trong th t c SQL PL Có hai cách chú thích trong th t c SQL PL: • S d ng 2 d u g ch ngang (--). OUT v_p3 INT) LANGUAGE SQL SPECIFIC myP2 BEGIN -.ây là 1 chú thích theo ki u SQL . Ví d .Nh p môn H qu n tr c s d li u DB2 159 • • RESULT SETS <n> Thu c tính này c n thi t n u th t c c a b n s. và i u này t o ra s d0 dàng cho vi c qu n lí các th t c l u tr .Tham s vào OUT . M t th t c có th c n p è.

Hình 14.00. câu l nh ghép c xem nh là m t n v . . temp12 CLOB(2G). temp2 INTEGER DEFAULT 10. temp8 VARCHAR(10) DEFAULT 'hello'. N u có m t câu l nh th t b i.2. temp4 REAL DEFAULT 10. /ây là m t vài ví d : DECLARE DECLARE DECLARE DECLARE DECLARE DECLARE DECLARE DECLARE DECLARE DECLARE DECLARE DECLARE DECLARE temp1 SMALLINT DEFAULT 0. Hình 14. temp5 DOUBLE DEFAULT 10000. temp3 DECIMAL(10.2.7 cho ta 1 minh h&a v câu l nh ghép. s d ng câu l nh DECLARE nh sau: DECLARE var_name <data type> [DEFAULT value].10. ngh'a là. temp7 CHAR(10) DEFAULT 'yes'.2) DEFAULT 100. temp10 TIME DEFAULT '1:50 PM'.2.00'. temp9 DATE DEFAULT '1998-12-25'.1. back). temp13 BLOB(2G). s d ng câu l nh SET. t t c các ch.7 Câu l nh gán / gán m t giá tr cho m t bi n. Ví d : SET total = 100.th hay câu l nh trong câu l nh ghép ph i hoàn thành câu l nh ghép c c tr v tr ng thái ban u (roll hoàn thành.7 – Câu l nh ghép 14. temp11 TIMESTAMP DEFAULT '2001-01-05-12.6 Khai báo bi n / khai báo bi n. Khi t* khóa ATOMIC cs d ng theo sau t* khóa BEGIN.1001.Nh p môn H qu n tr c s d li u DB2 160 • S d ng nh d ng nh ngôn ng l#p trình C. t t c s.5 Câu l nh ghép M t câu l nh ghép trong th t c là m t câu l nh trong ó ch a r t nhi u l nh th t c và các câu l nh SQL c bao b i t* khóa BEGIN và END. 14. temp6 BIGINT DEFAULT 10000. ví d : /* ây là 1 chú thích d ng C */ 14.

FETCH < tên con tr > INTO <các bi n>. b t kì bi n nào c. Cú pháp m . OPEN cur. SET first_val = (select c1 from T1 fetch first 1 row only) B n c.4 *i u khi n lu ng Nh trong r t nhi u ngôn ng khác.ng có th SET total = NULL M t bi u th c i u ki n s. CALLER: K t qu s. END 14. 14. m nh RETURN < ích tr khai báo.ng có th gán bi n v i các thu c tính ngoài c a c s d li u SET sch = CURRENT_SCHEMA. c tr v cho ng d ng máy khách c tr v cho máy khách ho c th t c l u ã g&i nó. D i ây là m t vài câu l nh c h tr : CASE (ch&n ra m t nhánh th c thi (tìm ki m IF FOR (th c thi m i dòng trong b ng) n gi n)) . CLOSE < tên con tr >. Ngoài ra.Nh p môn H qu n tr c s d li u DB2 161 Câu l nh trên c.3 Các con tr+ (cursor) M t con tr" là m t t#p h p ch a k t qu c a câu l nh SELECT. job FROM staff WHERE salary > 20000. /ây là m t ví d c a th t c s d ng con tr": CREATE PROCEDURE set() DYNAMIC RESULT SETS 1 LANGUAGE SQL BEGIN DECLARE cur CURSOR WITH RETURN TO CLIENT FOR SELECT name. dept. u tiên trong b ng c thi t l#p n u có nhi u h n m t dòng thì ch.l y dòng c gán v i giá tr NULL SET total = (select sum(c1) from T1). v >] WITH RETURN có th c s d ng v i CLIENT: K t qu s. chuy n giá tr (fetch) và óng con tr" nh sau: DECLARE <tên con tr > CURSOR [WITH <câu l nh SELECT>. Khi m t con tr" nh ng giá tr sau: • • c khai báo. SQL PL có r t nhi u câu l nh có th c dùng i u khi n lu+ng th c hi n m c logic. OPEN <tên con tr >.ng t ng ng v i câu l nh: VALUES(100) INTO total.

Add(“v_msg”. 0.VarChar) parm. } Xem chi ti t t p ví d c a DB2: sqllib/samples/sqlproc/rsultset.Nh p môn H qu n tr c s d li u DB2 162 WHILE ITERATE (bu c ph i th c hi n vòng l p ti p theo.Output ‘ G i l i th t c .StoredProcedure cmd.VarChar) parm. SQLExecute(hstmt). /*Ch nh giá tr (variable) cho sal */ sqlrc = SQLPrepare(hstmt.CommandType = CommandType. T trong C) LEAVE (r i kh"i m t kh i hay vòng l p) LOOP (l p vô h n nh) REPEAT GOTO RETURN CALL (g&i th t c) ng t v i câu l nh CONTINUE 14.Direction = ParameterDirection. else printf(“Median Salary = %. SQL_DOUBLE. DB2Type.Output parm = cmd. if (salind == SQL_NULL_DATA) printf(“Median Salary = NULL\n”). ch. G i th t c t& ng d ng CLI/ODBC l#p trình SQLCHAR *stmt = (SQLCHAR *) “CALL MEDIAN_RESULT _SET( ? )” . &sal. 1. /* L y t p k t qu u tiên */ sqlrc = StmtResultPrint(hstmt). 0. sal).CreateCommand() parm As DB2Parameter G i th t c t& Try ‘ T Dim Dim Dim cmd. &salind). if (sqlrc == SQL_SUCCESS) { /* Có 1 k t qu khác */ sqlrc = SQLMoreResult(hstmt).c ng d ng VB. SQL_PARAM_OUTPUT.0.2f\n\n”.Direction = ParameterDirection. /*Ch ra parameter marker trong stmt */ SQLINTEGER salind = 0. stmt.5 G i th t c Nh ng o n mã sau ây s.NET o m t DB2 Command ch y th t c procName As String = “TRUNC_DEMO” cmd As DB2Command = conn.CommandText = procName ‘ ng ký các tham s u ra cho DB2Command parm = cmd. sqlrc = SQLBindParameter(hstmt. 0. SQL_C_DOUBLE.Add(“v_lastname”.Parameter.ra cách g&i m t th t c b ng các ngôn ng khác nhau. SQL_NTS). DB2Type. SQLDOUBLE sal = 20000.Parameters.

?)”). CallableStatement cs = con.execute().registerOutParameter(2. Nh ng t* khóa này c n c khai báo t ng minh trong ph n ngoài cùng c a th t c nh sau: DECLARE SQLSTATE CHAR[5]. / i v i SQLCODE.VARCHAR).6 L i và x" lý i u ki n c dùng xác nh s thành Trong DB2. } catch (Exception e) { /* x lý ngo i l } ây */ 14. Nhi u . // ng ký tham s u ra callStmt. các giá tr c a nó nh sau: • Thành công: SQLSTATE ‘00000’ • Không th y: SQLSTATE ‘02000’ • C nh báo: SQLSTATE ‘01XXXX’ • Tr ng h p c bi t: các giá tr khác SQLCODE là m t c t cho c s d li u. không tìm th y d li u (ví d nh : câu l nh FETCH không tr v d li u) / i v i SQLSTATE. Types. chi ti t h n c SQLSTATE. thành công nh ng có c nh báo < 0.Nh p môn H qu n tr c s d li u DB2 163 Dim reader As DB2DataReader = cmd.ExecuteReader Catch myException As DB2Exception DB2ExceptionHandler(myException) Catch UnhandledExceptionHandler() End Try G i th t c t& ng d ng Java try { // K t n i CSDL m u String url = “jdbc:db2:sample”. giá tr c thi t l#p nh sau: • • • • = 0.getConnection(url).VARCHAR). không thành công = 100. DECLARE SQLCODE INT. con. thành công > 0. callStmt. DB2 s. Types.close().prepareCall(“CALL trunc_demo(?. thi t l#p giá tr m t cách t ng cho nh ng t* khóa trên sau m i thao tác trên SQL (SQL operation).registerOutParameter(1. con = DriverManager. các t* khóa SQLCODE và SQLSTATE công hay th t b i trong vi c th c thi m t câu l nh SQL. cs. SQLSTATE là tiêu chu n trong các h qu n tr cho c s d li u nh ng t ng quát h n.

N u m t i u ki n SQLEXCEPTION c t o ra. i n cu i th t c. Các lo i trình x" lý Có 3 lo i trình x lý: CONTINUE – X lý này dùng ch.rõ các y u t sau: • • • /i u ki n mà nó ph i x lý N i ph c h+i l i quá trình th c thi (d a vào ki u c a trình x lý: CONTINUE. c nói rõ h n M t i u ki n có th c t o ra b ng b t kì câu l nh SQL nào và s. TI9P T:C i n câu l nh ti p theo sau câu l nh v*a t o ra. EXIT or UNDO) c thi hành x lý i u ki n. Hình 14. m t tên g&i có th c gán. Ph l c A.ra r ng. SQLCODE và SQLSTATE s. k t thúc và tr v cho máy khách m t thông báo l i. X lý s c . và ph i ch. tên “trunc” có th c gán cho i u ki n SQLSTATE ‘01004’ nh sau. b n có th t o ra m t trình x lý i u ki n.ra r ng. sau khi ngo i l x y ra.ra r ng. và trình x lý ã x c lý i u ki n.Nh p môn H qu n tr c s d li u DB2 164 SQLCODE có th trùng v i SQLSTATE. và không có trình x lý nào. dòng x lý s. Thay vì dùng SQLSTATE giá tr ‘01004’ ki m tra i u ki n này. và trình x lý ã x lý i u ki n. sau khi ngo i l x y ra. Trong ví d c th này. sau khi ngo i l x y ra. dòng x lý s. bao g+m c các c u trúc i u khi n. UNDO – x lý này c dùng ch. và s. DECLARE trunc CONDITION FOR SQLSTATE ‘01004’ Các i u ki n khác ã • • • SQLWARNING SQLEXCEPTION NOT FOUND c nh ngh'a tr c: X" lý i u ki n / x lý m t i u ki n. trùng v i m t SQLSTATE. và trình x lý ã x lý i u ki n. Ví d . i n cu i th t c. m t i u ki n c th nh SQLSTATE ‘01004’ c t o ra khi có m t c làm tròn s trong quá trình thi hành câu l nh SQL. dòng x lý s. EXIT – x lý này dùng ch. th t c s. không làm gì i ho c khôi ph c b t kì câu l nh nào ã c th c thi (roll back). Nh ng hành ng này có th là Hành ng b t c câu l nh nào.8 minh h&a s khác nhau gi a các trình x lý i u ki n và hành vi c a nó .

toàn b câu l nh SQL không c nh#n bi t trong th i gian ch y. INT value2 INT) SPECIFIC dyn1 BEGIN DECLARE stmt varchar(255). c2 INT) CREATE PROCEDURE dyn1 (IN value1 INT. chúng ta s. value1. Nó c. ph thu c và sai sót c th c thi theo hai cách: Dùng l nh EXECUTE IMMEDIATE – ây là ý t ng cho vi c th c thi th t c SQL n.ng c khi óng gói. PREPARE st FROM stmt. SET stmt = INSERT INTO T2 VALUES (9. Ví d này gi s r ng có m t b ng T2 ã c t o nh sau: CREATE TABLE T2 (c1 INT.7 SQL ng Trong SQL ng. Dùng l nh PREPARE song song v i l nh EXECUTE – ý t ng này c dùng th c thi a th t c SQL. END . value2. SET stmt = ‘INSERT INTO T2 VALUE (?. DECLARE st STATEMENT. ?)’. SQL ng c. EXECUTE st USING value2. EXECUTE st USING value1.8 – Ki u c a các trình x" lý i u ki n 14. th c hi n v i SQL ng nh sau: ‘SELECT ‘ || col1 || ‘FROM ‘ || tabname. EXECUTE IMMEDIATE stmt. /o n mã sau a ra m t ví d v SQL ng s d ng c hai cách trên. trái ng c v i SQL t'nh. 9)’.ng SQL • • ng có th ngh dùng cho DDL tránh các v n c yêu c u khi th c hi n quy.Nh p môn H qu n tr c s d li u DB2 165 Hình 14. Ví d n u col1 và tabname là các bi n trong câu l nh này.

SQL PL n i tuy n ch.ng có th ng m t mình. hàm ng i dùng $nh ngh-a.HANDLER PREPARE EXECUTE EXECUTE IMMEDIATE LOOP REPEAT RESIGNAL CALL COMMIT/ROLLBACK . sau ây là các t* khóa c a SQL PL n i tuy n: DECLARE <variable> SET CASE FOR GET DIAGNOSTICS GOTO IF RETURN SIGNAL WHILE ITERATE LEAVE /ây là nh ng t* khóa không n m trong SQL PL n i tuy n: ALLOCATE CURSOR ASSOCIATE LOCATORS DECLARE <cursor> DECLARE . chúng ta s. it ng khác 15. UDF. Triggers) Trong ch ng này.ng là n i tuy n vì các mã l nh ã c thêm vào mã l nh c a các UDF và hàm b%y s ki n. không n m trong m t th t c nào c . các hàm x" ký các s ki n b%y (Inline SQL PL.Nh p môn H qu n tr c s d li u DB2 166 15 Ch ng 15 – Hàm n i tuy n. chúng ta ã th o lu#n v vi c t o các th t c l u s d ng ngôn ng c s d ng n i tuy n. ngh'a là có có th SQL PL.1 Hàm n i tuy n SQL Trong ch ng 14.. b n thân nó ã là các SQL ng.. xem xét v các hàm n i tuy n SQL các c a CSDL nh hàm do ng i dùng nh ngh'a (UDF) và các b%y s ki n.h tr m t t#p con trong toàn b các l nh SQL PL. Các l nh SQL PL c s d ng trong các UDF và hàm b%y s ki n c. Ngôn ng SQL PL này c.

SET cnt=cnt+1. Các thao tác c th c hi n b i b%y này thì không th kích ho t c các b%y khác (vì th các thao tác INSERT.2) = 0 THEN SET sumevens = sumevens + cnt.txt” thì b n có th th c hi n nó b ng l nh sau. SET err_msg = 'Rows with values > 100 is:' || char(cnt). ho c DELETE c th c hi n trên b ng ó.c1 > 100 THEN SET cnt = cnt + 1. END IF. UPDATE và DELETE không c phép có trong b%y).1 . FOR cur1 AS SELECT * FROM T1 DO IF cur1.txt 15. 15.SYSDUMMY1).Nh p môn H qu n tr c s d li u DB2 167 D i ây là ví d c a SQL ng s d ng SQL PL n i tuy n. SIGNAL SQLSTATE '80000' SET MESSAGE_TEXT = err_msg. DECLARE err_msg VARCHAR(1000) DEFAULT ''. N u các b n mu n th nó.2 B%y s ki n (Triggers) B%y s ki n là các i t ng c s d li u k t h p v i m t b ng c nh ngh'a b i các thao tác c th c hi n khi có m t trong các thao tác INSERT. SET cnt = (SELECT 0 FROM SYSIBM.2.ra trên hinh 15. s a hay xóa i. Các thao tác là nguyên nhân các b%y này c th c thi. INSERT INTO T3 values (sumevens).1 Các lo i b%y s ki n Có 3 lo i b%y ó là: b%y tr c (before). b%y sau (after) và b%y thay th (instead of) B%y tr c Các b%y tr c c kích ho t tr c khi m t dòng c thêm. và b n ph i ch c ch n là ã t p c các b ng nh sau: CREATE TABLE T1 (c1 INT) CREATE TABLE T3 (c1 INT) BEGIN ATOMIC DECLARE cnt INT DEFAULT 0. WHILE (cnt < 100) DO IF mod(cnt. M t ví d n gi n v b%y tr c c ch. Chúng c thi hành m t cách t ng. END FOR. DECLARE sumevens INT DEFAULT 0. b n các th l y nó làm m t ph n c a c a t p k ch b n. UPDATE. END! N u b n l u o n ch ng trình n i tuy n trên vào t p k ch b n tên là “myScript. END IF. END WHILE. db2 -td! –vf myScript. g&i là triggering.

ki m tra s h p l c a các giá tr chèn vào. day. CREATE TRIGGER validate_sched NO CASCADE BEFORE INSERT ON cl_sched REFERENCING NEW AS n FOR EACH ROW MODE DB2SQL BEGIN ATOMIC -. Các l nh sau giúp ta ki m tra b%y này C:\Program Files\IBM\SQLLIB\BIN>db2 insert into cl_sched (class_code. i di n cho giá tr m i c a l nh INSERT. B%y này s. starting) values ('abc'.-----042:BF 4 553:MJA 1 543:CWM 3 778:RES 2 044:HD 3 abc 1 STARTING -------12:10:00 10:30:00 09:10:00 12:10:00 17:12:30 11:06:53 ENDING -------14:00:00 11:00:00 10:30:00 14:00:00 18:00:00 12:06:53 6 record(s) selected. N u c t “ending” không có giá tr gì khi chèn. Bi n “n” trong nh ngh'a c a b%y s.supply default value for ending time if null .1. b n có th t o ra nó và ki m tra nó d a vào c s d li u SAMPLE. chèn vào. B ng này là m t ph n c a c s d li u SAMPLE.1. giá tr s. ban có th t o và th ki m tra b%y này khi k t n i v i c s d li u này. Xin nh c l i r ng. m b o ch c ch n là có giá tr c a c t “starting” c ng 1 c chèn vào. C:\Program Files\IBM\SQLLIB\BIN>db2 select * from cl_sched CLASS_CODE DAY ---------.1 – Ví d v b%y tr c Trong hình 15.Nh p môn H qu n tr c s d li u DB2 168 Hình 15. b%y “defalt_class_end” s. thì b%y này s. b%y tr c l nh khi INSERT SQL c th c hi n trong b ng cl_sched.current time) DB20000I The SQL command completed successfully. Th t c b%y “validate_sched” d i ây cho phép m r ng hàm b%y “default_class_end” ã mô t tr c ây.

salary) || ' to ' || CHAR(n.ending = n. th c hi n vi c c#p nh#t cho các l nh SQL triggering. END B%y sau B%y sau c kích ho t sau khi các SQL triggering th c hi n thành công. END IF. c s d ng i di n giá tr m i sau ó t* câu l nh UPDATE.empno || ' sal- ary changed from ' || CHAR(o. Ví d nh . -.DAY=1 or n.Nh p môn H qu n tr c s d li u DB2 169 IF (n. b%y thay th s. Các thao tác trong b%y này có th kích ho t các b%y khác (s n i t ng c cho phép n 16 m c).salary” miêu t giá tr nh#t m i vào c t d li u Salary. ' Employee ' || o. ho c giá tr t+n t i trong b ng Salary còn “n. c th c thi th c hi n vi c c#p nh#t các b ng g c mà các khung nhìn này th hi n.ensure that class does not end beyond 9pm IF (n. c dùng i di n giá tr c. B%y s ki n thay th B%y thay th c nh ngh'a trên các khung nhìn (view). T i dòng “OLD as o NEW as n ” ch. Nh v#y. END IF. n u b n th c hi n m t thao tác c#p nh#t trên m t khung nhìn.ra ti n t “o” này s.DAY=7) THEN SIGNAL SQLSTATE '80001' SET MESSAGE_TEXT='class cannot be scheduled on a weekend'. và ti n t “n” s. ho c Command Editor) . ELSEIF (n. Chúng có th ct o t* trung tâm i u khi n ho c t* các công c dòng l nh khác (Command Window. Command Line Processor.ending IS NULL) THEN SET n. th c hi n vi c ghi thông tin v vi c thay i liên quan n b ng Salary vào trong bàng khácg&i là audit. D i ây là ví d c a m t b%y sau CREATE TRIGGER audit_emp_sal AFTER UPDATE OF salary ON employee REFERENCING OLD AS o NEW AS n FOR EACH ROW MODE DB2SQL INSERT INTO audit VALUES ( CURRENT TIMESTAMP. B%y sau h tr các thao tác INSERT.ending > '21:00') THEN SIGNAL SQLSTATE '80000' SET MESSAGE_TEXT='class ending time is beyond 9pm'. / nh ngh'a m t cách logic b%y này s. ho c giá trì t+n t i trong b ng.salary) || ' by ' || USER) Trong ví d này thì th t c b%y audit_emp_sal c s d ng th c hi n vi c ki m tra trên c t salary c a b ng employee.salary” miêu t c c#p giá tr c.starting + 1 HOUR. UPDATE và DELETE. Khi m t ai ó t o s thay i trong c t này thì o n mã này s. Các th t c b%y không c t o t* DB2 Developer Workbench. “o.

ho c s d ng Create table wizard t* Trung tâm i u khi n. V i bài t#p nhanh này.Kh i t o m t b%y b6ng Trung tâm i u khi n. M c tiêu B%y là m t i t ng c s d li u c s d ng hoàn thành công vi c kinh doanh m t cách ch t ch. b n s. s a. l u nh#t ký bán hàng trong b ng SALES (bán hàng) cho m c ích ki m tra s sách. 3. Cái b%y này s. T* Trung tâm i u khi n. Kh i t o m t b ng theo các thu c tính sau: Tên b ng: saleslog (nh#t ký bán hàng) C t u tiên: Tên: userid (mã ) Ki u d liêu: VARCHAR(128) Các thu c tính khác: NOT NULL C t th hai: Tên: daytime (th i i m) Ki u d li u: TIMESTAMP Các thu c tính khác: NOT NULL G i ý: Kh i t o b ng này s d ng CREATE TABLE có trong c a s nh#p l nh. và ch&n m c “Create”. c n kh i t o m t b ng ph c s d ng ghi nh#t ký bán hàng. Th t c: 1. /i n y theo thông tin trong c a s i tho i: S + b%y (Trigger schema): User ID (mã) c a ng c cài t m c nh) (nên i bán ã c nh#p vào Tên b%y (Trigger name): audit_sales (Ki m tra bán hàng) B ng hay s + hi n th : User ID (mã) c a ng c cài t m c nh) i bán ã c nh#p vào (nên B ng hay tên hi n th (Table or view name): SALES (bán hàng) Th i gian b%y ho t ng (Time to trigger action): After (sau) Khi nào thì b%y c th c hi n (Operation that causes the trigger to be executed): Update of columns (không li t kê b t c c t nào vì chúng ta mu n b%y th c hi n khi b t c c t nào trong s các c t c c#p nh#t) Chú thích (Comment): Logs all update actions on Sales table (Ghi nh#t ký t t c các ho t ng c#p nh#t trong b ng Sales) . C a s i tho i kh i t o b%y m ra. M Trung tâm i u khi n. ghi vào nh#t ký bán hàng mã c a ng i bán hàng (user ID) cùng v i th i i m bán. 2. Trong bài t#p nhanh này. B n s. m r ng tài li u c s d li u EXPRESS.Nh p môn H qu n tr c s d li u DB2 170 Bài t p nhanh #10 . b n s. xóa). Nh p chu t ph i trong th m c Trigger. 4. t o m t b%y b ng vi c s d ng Trung tâm i u khi n. khi x y ra thay i d li u trên b ng (chèn.

Nh#p o n mã ngu+n sau vào m c hành ng c a b%y: WHEN (1=1) BEGIN ATOMIC INSERT INTO saleslog (userid. ch&n STATEMENT trong m c tùy ch&n For Each. c th c hi n m t l n sau khi b%y c kích ho t và k t thúc hoàn toàn. CURRENT TIMESTAMP). Trong b ng Triggerred action. END (Ghi chú: o n b%y s. B%y theo dòng ngh'a là ho t ng c a b%y s.Nh p môn H qu n tr c s d li u DB2 171 5. daytime) VALUES (CURRENT USER. th c hi n m t khi SQL triggering tác ng vào m t dòng.) .

ph bi n và hi u su t c a chúng.1 Hàm vô h ng Hàm vô h ng tr l i m t giá tr n. chúng tôi nói ch y u v hàm SQL PL b i tính n gi n. và hàm c t (Column Functions). COALESCE().3 Hàm ng i dùng $nh ngh-a (UDF) Hàm ng i dùng nh ngh'a là m t i t ng ng d ng c s d li u. Bây gi b n nên xem l i b%y ã c kh i t o trong tài li u Triggers th m c Trung tâm i u khi n. Truy v n b ng Saleslog m b o ch a có d li u trong b ng này. làm thay i tr ng thái c a c s d li u thì không c ch p nh#n. 9. CLR (Common Language Runtime). Ki m tra l i m t l n n a n i dung c a b ng saleslog. 15. Có là 4 lo i hàm: hàm vô h ng (Scalar Funcitons). DB2 h tr t o nh ng hàm s d ng SQL PL. Ví d : m t hàm có th l y kích th c d li u vào b ng inch. và tr l i k t qu b ng centimetes. DIGITS(). . Th c#p nh#t m t b n ghi trong b ng sales (G i ý: s d ng Command Editor ho c SQL Assist Wizard).Nh p môn H qu n tr c s d li u DB2 172 Kích ch&n nút OK kh i t o b%y. hàm b ng (Table Functions) . AVG().t#p trung vào hàm vô h ng và hàm b ng. các câu l nh INSERT. UPDATE và DELETE s. C/C++. 8. Lo i b" nh ng hàng có d li u trong b ng b ng l nh DELETE FROM saleslog. 6. hàm dòng (Row Functions). M t vài hàm vô h ng c cài t s)n là SUM(). 7. và SUBSTR(). 15. Trong cu n sách này. và OLE (Object Linking and Embedding). nó cs px p thành b d li u nh#p và d li u xu t. Java. Trong bài này chúng tôi ch. Nó không th ch a các câu l nh SQL.3. Xem có bao nhiêu hàng trong ó.

Thay vì b n ph i i tên t t c các hàm NVL trong ng d ng thành COLALESCE. DECLARE v_err VARCHAR(70). các câu l nh INSERT. th l i trong Command Window ho c Linux/UNIX v i l nh: db2 “values (deptname(‘000300’))” G i hàm vô h ng Hàm vô h ng c a ng i dùng có th c g&i trong câu l nh SQL.3.employee e WHERE e. Trong ng d ng này. Hàm c g&i là “deptname”. ta s. b t k âu giá tr vô h ng c s d ng. Hàm b ng c. b i v#y. END / ki m tra l i hàm. và nó tr l i mã s c a phòng/ban (department) c a m t nhân viên d a trên các mã (ID) c a h&: CREATE FUNCTION deptname(p_empid VARCHAR(6)) RETURNS VARCHAR(30) SPECIFIC deptname BEGIN AUTOMIC DECLARE v_department_name VARCHAR(30). /ây là hai ví d bi u di0n l i g&i hàm vô h ng COALESCE: SELECT DEPTNAME.workdept = d. kích ho t hàm COLALESCE khi c g&i. M t vài hàm b ng c cài t s)n là SNAPSHOT_DYN_SQL() và MQREADALL(). IF v_department_name IS NULL THEN SIGNAL SQLSTATE ‘80000’ SET MESSAGE_TEXT = v_err. SET v_department_name =( SELECT d. vi t hàm NLV nh d i ây: CREATE SPECIFIC RETURNS RETURN FUNCTION NVL (p_var1 VARCHAR(30) .2 Hàm b ng Hàm b ng tr l i m t b ng c a các b n ghi. RETURN v_department_name. ho c trong m nh liên quan n m t “Giá tr ”. p_var2) ng h p này tr l i is u tiên là không r ng (not NULL) Hàm COALESCE trong tr D i ây là m t ví d khác c a hàm vô h ng.ng gi ng nh khung nhìn (view).empno = p_empid). Hàm t ng ng cài t s)n trong DB2 c g&i là COALESCE.‘ABSENT’)FROM DEPARMENT VALUES COALESCE(‘A’. và nó s.‘B’) 15.deptname FROM department d. t* ó b n có th th ng xuyên s d ng nó theo ý ngh'a logic.Nh p môn H qu n tr c s d li u DB2 173 DB2 cho phép b n tùy bi n xây d ng hàm ng i dùng nh ngh'a. b n có th t o m t UDF trong DB2 g&i nó là NVL. Ví d . SET v_err = ‘Error:employee’ || p_empid || ‘was not found’. B n có th g&i chúng trong m nh FROM c a m t truy v n. Hàm b ng ng c l i v i hàm vô h ng là có th thay i tr ng thái c s d li u. tính n s chuy n i ng d ng c a b n t* Oracle sang DB2.deptno AND e. p_var2 VARCHAR(30)) nvlvarchar30 VARCHAR(30) COALESCE (p_var1 . END IF. b n g&i hàm NVL() c a Oracle kh p n i. UPDATE và DELETE c ch p nh#n. COALESCE(MGRNO. nh ng ây nó cho phép các l nh làm thay i .

lastname. xóa) m t cách m nh h n.3 .L i g i m t hàm b ng. Hình 15. s a. e.firstnme FROM employee e WHERE e. Hàm TABLE() c n s d ng và ph i có bí danh. . Hình 15.Nh p môn H qu n tr c s d li u DB2 174 d li u (chèn.empno. lastname VARCHAR(15). /i n hình là chúng th ho c gi l i m t b n ghi ki m tra. e.2 minh h&a m t ví d c a cách g&i hàm “getEnumEmployee” mà chúng tôi ã ki m tra. firstnme VARCHAR(12)) SPECIFIC getEnumEmployee RETURN SELECT e.workdept = p_dept / ki m tra hàm trên. th l i v i câu l nh sau: db2 “SELECT * FROM table(getEnumEmployee(‘D11’)) AS t” G i hàm b ng M t hàm b ng ng i dùng nh ngh'a c g&i trong m nh FROM c a câu l nh SQL. D i ây là m t ví d c a hàm b ng ng tr l i m t b ng li t kê m t nóm nhân viên trong phòng: CREATE FUNCTION getEnumEmployee(p_dept VARCHAR(3)) RETURNS TABLE (empno CHAR(6).

END 5. Vi c này s. 7. DECLARE v_err VARCHAR(70). M DBW ( G i ý: có s)n trong b ng ch&n Start) T* c a s Data Project Explorer ch&n d án b n ã t o bài t#p nhanh tr c và ch&n Open Project. Cho ch y hàm b ng cách kích chu t vào nút Run trên thanh công c . Xây d ng hàm b ng cách kích chu t ph i trên hàm và ch&n Deploy. Trình so n th o m v i hàm chính.Nh p môn H qu n tr c s d li u DB2 175 Bài t p nhanh #11 . ph i t o m t hàm vô h ng do ng i dùng nh ngh'a trong DWB. em l i cho b n nhi u kinh nghi m h n v i DBW.Kh i t o UDF s" d ng DB2 Developer Wordbench M c ích: DB2 Developer Workbench (DWB) là m t công c phát tri n (IDE) vi t các th t c và các hàm. 6. SET v_book_title = (SELECT title FROM books WHERE p_bid = book_id).’. /óng DBW khi b n ã hoàn thành. Sau khi hàm ch p nh#n nh#p m t tham s vào. R+i s a i mã l nh nh d i ây: CREATE FUNCTION booktitle(p_bid INTEGER) RETURNS VARCHAR(300) ----------------------------------------------------------SQL UDF (Scalar) ----------------------------------------------------------SPECIFIC booktitle F1: BEGIN ATOMIC DECLARE v_book_title VARCHAR(300). Kích chu t ph i vào th m c User-Defined Functions. Sau ó ch&n m c SQL User-Defined Function. 3. 2. Nh#p giá tr : 80002 K t qu là gì? Th l i v i giá tr : 1002 /i u gì x y ra lúc này? (g i ý: Nhìn vào o n Messages c a Out-put view) 8. END IF. Quy trình th c hi n: 1. các b n s. IF v_book_title IS NULL THEN SIGNAL SQLSTATE ‘80000’ SET MESSAGE_TEXT = v_err. SET v_err = ‘Error: The book with ID ‘ || CHAR(p_bid) || ‘was Not found. RETURN v_book_title. B n có th ch&n m c User-Defined Function using Wizard n u c n c h ng d%n trong su t quá trình s d ng. m t c a s thông báo hi n ra yêu c u b n i n giá tr cho tham s . 4. Ch&n m c New. .Trong bài t#p nhanh này. t t cho vi c trau d+i ki n th c v i ngôn ng SQL PL xây d ng các hàm ng i dùng nh ngh'a.

Xem ph n tài nguyên bi t thêm thông tin.Nh p môn H qu n tr c s d li u DB2 176 16 Ch ng 16 – SQL/XML và XQuery Trong ch ng này chúng ta bàn v pureXML. kho XML. Hình 16. Hình 16.1 th hi n ph n ki n th c trong b c tranh t ng quát c a DB2 s.1 S" d ng XML v i các c s d li u Các tài li u XML c l u d i d ng t#p tin v n b n. c c#p trong ch ng này. SQL/XML và XQuery 16. hay c s d li u. Có hai nguyên nhân chính là t i sao nhi u công ty xu t l u tr XML b ng c s d li u: . Nhi u ví d và khái ni m c bàn lu#n trong ch ng này c l y t* sách " IBM: DB2 9: T ng quan và B t u nhanh v i pureXML (IBM Redbook: DB2 9: pureXML overview and fast start). m t công ngh m i c cung c p trong DB2 phiên b n 9 h tr vi c l u tr thu n XML.1 – B c tranh t ng quát DB2: các l nh DB2.

2 gi i thích chi ti t h n hai l a ch&n cho c s d li u h tr XML. H n n a.1 c s d li u h tr XML M t c s d li u h tr XML s. tính hi u qu và kh n ng m r ng. Tính tích h p: b ng cách l u tr các tài li u quan h và XML cùng v i nhau.khác ph n nh d ng.2 – Hai l a ch n l u tr d li u XML trong c s d li u h tr XML Bên trái hình 16.Nh p môn H qu n tr c s d li u DB2 177 • Qu n lý l ng l n h+ s XML là m t v n v c s d li u. s d ng mô hình quan h là mô hình chính l u tr d li u. ch. Ph ng th c này không linh ho t b i vì khó tìm c các ph n t bên trong nh. Trong khi xem xét vi c này nh là công ngh c. Nh ng nguyên nhân t ng t l u tr d li u quan h trên c s( d li u XML: các c s d li u cung c p ch c n ng tìm ki m và rút trích hi u qu . b n có th tích h p d li u XML m i cùng v i d li u quan h ã có. mà x lý tr c ti p trên 'a.ng không cao vì các nh XML th ng r t l n do ó t n b nh . l u tr d li u. các c s d li u có th h tr các ng d ng web (web applications). Tài li u XML dùng ph ng th c này c l u b ng c nh CLOB và c t ki u Varchar trong c s d li u. XML là d li u gi ng nh các d li u khác.2 cho th y ph ng th c l u tr tài li u XML trong c s d li u “CLOB và Varchar”.2 C s d li u XML Có hai lo i c s d li u C s d li u h tr XML C s d li u thu n XML 16. d li u quan h có th c chuy n thành XML và ng c l i. h tr tính b n v ng c a d li u m t cách tin c#y. Hình 16. Nhi u máy ch d li u. S d ng hình nh hi n nhiên s. thì nhi u nhà cung c p c s d li u v%n s d ng cách nh trên. h tr giao d ch. SOA (Service Oriented Architecture) và các d ch v web (web services). Thông qua vi c tích h p. . không t hi u n ng t t. và k t h p SQL v i XPath hay XQuery trong m t câu truy v n. Hình 16. bao g+m máy ch DB2. không t i hình nh vào b nh . Hi u n ng c a nó c. /i u này c n s ánh x gi a mô hình d li u XML và mô hình d li u quan h . h+ s XML: • 16.2. sao l u và ph c h+i. ho c là l u tr d li u XML nh là i t ng l n có thu c tính.

S d ng ph ng pháp này mô hình phân c p c a tài li u XML b chuy n thành mô hình quan h .ng không linh ho t: m t thay i trong tài li u XML không d0 gì lan truy n n các b ng t ng ng và có th ph i t o nhi u b ng khác khi c n thi t.i tên bên trái c a hình trên cho th y c t deptID c l u tr b ng nh d ng quan h (d ng b ng). ng SQL v i XML m r ng truy xu t d li u XML ng XQuery truy xu t d li u XML ng XQuery truy xu t d li u quan h . Ph ng th c này c.3 XML trong DB2 Hình 16. gi s nh ngh'a b ng dept nh sau : CREATE TABLE dept (deptID char(8) . ph ng th c này c minh h&a bên ph i c a hình 16. /ây là nguyên nhân t i sao g&i các c s d li u này là c s d li u thu n XML. x lý các câu l nh ó ch không chuy n sang SQL.… . 16. Hình 16.ng không hi u qu : n u b n c n l y l i tài li u XML ban u. trong khi c t detdoc c l u b ng nh d ng phân c p ã c phân rã.3 bên d i phác h&a cách th c l u tr d li u quan h và d li u phân c p (các tài li u XML) trong DB2 phiên b n 9. b n ph i th c hi n các tác v SQL v i chi phí cao. Trong hình.4 minh h&a b n cách truy xu t d li u trong DB2 phiên b n 9: S S S S d d d d ng SQL truy xu t d li u quan h . 16. Ph ng pháp này c. Hình 16. DB2 9 là máy ch th ng m i duy nh t cung c p tính n ng này. Khi s d ng các câu l n XPath hay XQuery. Hi n t i. M. vi c này còn t n chi phí khi s l ng b ng c k t n i càng nhi u.2.2 C s d li u thu n XML C s d li u thu n XML s d ng mô hình phân c p c a d li u XML l u tr và x lý XML bên trong. / nh d ng l u tr thì gi ng nh nh d ng x lý: không có s ánh x n mô hình quan h . Toàn b tài li u XML dùng ph ng th c này b phân rã thành nhi u ph n (ph n t ) r+i l u trong các b ng. deptdoc XML).Nh p môn H qu n tr c s d li u DB2 178 L a ch&n còn l i cho c s d li u h tr XML là ph ng th c phân rã.3 – XML trong DB2 Chú ý r ng khi nh ngh'a b ng dept có s d ng ki u d li u m i XML cho c t deptdoc. m t c ch (engine) s. và không l u các tài li u XML thành d ng nh.2.

trong hình 16. h& g&i nh ng công ngh c. b ng cách l u tr các tài li u XML trong các c t c a b ng có s d ng ki u d li u m i XML. mô t công ngh này. B n có th nâng cao kh n ng dùng d li u quan h . ó là “native XML”.5 minh h&a m t o n mã PHP c vi t v*a s d ng và không s d ng pureXML.1 7u i m c a công ngh pureXML trong DB2 9 S d ng công ngh pureXML em l i nhi u u i m sau : 1.ng có h tr XML.có ngh'a là mã l nh ít ph c t p mà hi u n ng toàn th c c i thi n vì s dòng phân tích và b o trì trong mã l nh ít h n. 2. . Ví d . /i u này không ch.Nh p môn H qu n tr c s d li u DB2 179 Hình 16. Chú ý r ng IBM dùng thu#t ng pureXML thay vì “native XML” Trong khi các hãng khác v%n dùng công ngh c. trong khi m t ng i s d ng SQL xem DB2 nh là m t h qu n tr c s d li u quan h (RDBMS – Relational Database Management System) c p cao c. IBM quy t nh dùng thu#t ng m i pureXML tránh s nh m l%n và t th ng hi u tên này các hãng khác v c s d li u hay XML không s d ng trùng thu#t ng bi u th cho các công ngh khác. B n có th gi m ph c t p c a mã. Chú ý. xem DB2 nh là kho tr XML c p cao có h tr SQL. S d ng pureXML (h p màu xanh) giúp gi m các dòng mã l nh. CLOB/Varchar hay phân rã l u tr các tài li u XML. s h tr pureXML chc cung c p khi t o ra c s d li u Unicode.4 – B n cách truy xu t d li u trong DB2 Vì v#y. 16. còn m t ng i s d ng XML thì s.3.

gi s r ng b n ã có c s d li u g+m các b ng Employee và Department.6 minh h&a m t ví d v s t ng tính linh ng.* ph c t p khi s" d ng hay không s" d ng pureXML 3. b i vì không nh ng l ng d li u ã có c n c chuy n l n mà còn t t c các câu SQL trong các ng d ng s. n u nhà qu n lí c a b n yêu c u b n l u tr không ch. Tuy nhiên. thì thêm m t th2 (tag) m i l u thông tin này. ph i thay i i m n là b ng m i.Nh p môn H qu n tr c s d li u DB2 180 Hình 16. Thay vào ó. T o ra b ng Phone m i thì t n chi phí. B n c.5 .ng có th thêm nhi u s i n tho i di ng. chúng tôi a ra cách th c hi n vi c này s d ng XML bên trái hình bên d i. Hình 16. cách làm này không úng v i các lu#t chu n hóa trong c s d li u quan h . . Trong hình. N u b n mu n gi úng các lu#t này thì b n t o m t b ng Phone m i và chuy n toàn b thông tin s i n tho i qua b ng này. N u nhân viên “Christine” c. S d ng XML và công ngh pureXML thay i l c + (schema) c a b n d0 dàng h n.ng có m t s i n tho i di ng.m i nhân viên m t s i n tho i (s i n tho i nhà) mà còn l u thêm s th hai (s di ng) thì b n có th thêm m t c t trong b ng Employee và l u s i n tho i di ng trong c t m i ó. M c nh là c s d li u không có XML. N u nhân viên “Michael” không có s i n tho i di ng thì tr ng.

Nh p môn H qu n tr c s d li u DB2 181 Hình 16.3.6 – T ng s m m d)o khi s" d ng XML 4. và c t th ba là k t qu s d ng pureXML trong DB2 9.. Hình 16. Hình 16.7 – S t ng hi u n ng khi s" d ng công ngh pureXML 16. Hình 16. C t gi a cho th y k t qu làm vi c v i XML b ng ph ng th c c. B n có th c i thi n hi u n ng ng d ng XML c a mình. x d ng nh d ng "phân tích phân c p" gi i thích XPath ho t ng nh th nào. . Th c hi n các ki m tra dùng công ngh pureXML cho th y s c i thi n áng k cho nhi u ng d ng XML.ng minh h&a tài li u ó c trình bày v i d ng "phân tích phân c p" (c.8 mô t m t tài li u XML và hình 16.9 c.2 Khái ni m c b n v XPath XPath là m t ngôn ng mà ta có th dùng nó truy v n các tài li u XML.7 cho th y các k t qu ánh giá cho vi c m t công ty chuy n sang s d ng công ngh pureXML.ng c g&i là nút (node) hay lá (leaf)). Chúng ta s.

M t tài li u XML Hình 16. Ví d .. ta s d ng hàm "text()". S d ng câu l nh CD b n i qua m t cây th m c nh sau: cd /directory1/directory2/.9 v i XPath b n có th l y ra tên c a t t c các nhân viên thông qua câu truy v n sau: /dept/employee/name Các bi u th c XPath Các bi u th c XPath s d ng ng d%n y nh ra các thành ph n và/hay các thu c tính.. / ch.Trình bày tài li u XML hình 16. trong XPath b n s d ng nh ng d u g ch chéo (/) chuy n t* m t thành ph n này n m t thành ph n khác trong tài li u XML.l y giá tr (text node) c a m t thành ph n.8 .9 .9 .Nh p môn H qu n tr c s d li u DB2 182 Hình 16.1 minh h&a m t vài câu truy v n XPath và k t qu t ng ng khi áp d ng trên tài li u XML ã cho hình 16.thu c tính.8 theo d ng “ phân tích phân c p” M t cách nhanh chóng h&c XPath ó là so sánh nó v i câu l nh i th m c (CD) trong MS-DOS hay trong Linux/UNIX. Kí hi u "@" dùng ch. B ng 16. b ng cách s d ng tài li u trong hình 16. T ng t ..

Ví d [@id="902"] có th c hi u là "v i i u ki n thu c tính id có giá tr b ng 902".2 cho ta thêm vài ví d d a trên tài li u XML XPath /dept/employee/*/text() hình 16.3 . Trong m t bi u th c XPath có th có nhi u v t*. Ví d employee[2] ngh'a là ng i công nhân th 2 s.3 s.1 – Các ví d v bi u th c XPath i di n Các kí t Có 2 kí t i di n chính trong XPath: • "*" thay th cho b t kì tên th2 nào • "//" là kí t i di n cho "t* ây tr xu ng" (descendent-or-self) B ng 16. B ng 16.9 XPath /dept/@bldg /dept/employee/@id K t qu John Doe 408 555 1212 344 Peter Pan 408 555 9918 216 /dept/employee/@id 901 902 /dept/employee/name <name>Peter Pan</name> <name>John Doe</name> /dept/employee/name/text() Peter Pan John Doe /dept//phone <phone>408 555 1212</phone> <phone>408 555 9918</phone> B ng 16. ta s d ng [n] v i ý ngh'a là thành ph n con th n s.ra m t v t* có v trí.Nh p môn H qu n tr c s d li u DB2 183 K t qu 101 901 902 /dept/employee/name <name>Peter Pan</name> <name>John Doe</name> /dept/employee/name/text() Peter Pan John Doe B ng 16.2 .Các ví d v v$ t& XPath K t qu <name>Peter Pan</name> <name>John Doe</name> 901 902 902 . M t cách t ng t . b n có th ngh' chúng nh là m t thành ph n t ng ng v i m nh WHERE trong SQL.Các ví d v kí t i di n trong XPath Các v$ t& c a XPath Các v t* c a XPath c t trong c p d u ngo c vuông []. cho ta nhi u ví d h n: XPath /dept/employee[@id=”902”]/name /dept[@bldg=”101”]/employee[office > “300”]/name //employee[office=”304” OR office=”216”]/@id /dept/employee[2]/@id B ng 16. / ch. c ch&n. c ch&n.

cho phép b n tr v nh ng bi u th c khác. Và tài li u XML sau c thêm vào trong các c t c a deptdoc: <dept bldg=”101”> <employee id=”901”> <name>John Doe</name> . b n có th dùng m t d u ch m (. M t chú ý quan tr&ng là các bi u th c XQuery và XPath phân bi t ký t vi t hoa và vi t th ng. deptdoc XML).) chi u n ví trí trên nó m t c p (m c cha).=”John Doe”]/. gi i thích rõ h n v FLWOR XQuery: Bi u th c FLWOR FLWOR vi t t t cho: • FOR: l p qua t t c các ph n t c a m t dãy các thành ph n và gán m t bi n cho các thành ph n./@bldg /dept/employee/name[.. Th c t XPath là m t t#p con c a XQuery. do ó.) trong bi u th c r ng b n tham chi u n v trí hi n t i../@id=”902”] /dept/employee/office[.4 – Tr c cha Xpath nh ra tham K t qu <name>Peter Pan</name> <office>344</office> <office>344</office> 101 101 16. và hai d u ch m (./.. Trong SQL nó s. • WHERE: lo i ra các thành ph n trong quá trình l p • ORDER: s p x p l i các thành ph n trong khi l p • RETURN: t o ra giá tr tr v cho câu truy v n. XQuery h tr c d li u có ki u và d li u không có ki u. gi s b n ã có 1 b ng v i nh ngh'a nh sau: CREATE TABLE dept (deptID CHAR(8)./@bldg B ng 16..ng c áp d ng v i XQuery. t t c nh ng gì chúng ta ã h&c tr c ây v XPath c.3 *$nh ngh-a XQuery XQuery là m t ngôn ng truy v n c t o ra cho XML.3. XQuery h tr bi u th c FLWOR ( &c nh flower).. • LET: Gán m t bi n v i m t dãy. XQuery tr v m t chu i các d li u XML. /ây là m t bi u th c cho phép ta thao tác v i các tài li u XML. XQuery không ch a giá tr null vì tài li u XML b" i nh ng d li u thi u hay không xác nh.>”300”] /dept/employee[office > “300”]/office /dept/employee[name = “John Doe”]/. Ví d . t ng ng v i bi u th c SELECT-FROM-WHERE. B ng 16.Nh p môn H qu n tr c s d li u DB2 184 Tr c cha XPath: T ng t v i MS-DOS hay Linux/UNIX.4 cho ta thêm vài ví d XPath /dept/employee/name[. XQuery h tr các bi u th c ng d%n nh v trí trong c u trúc phân c p XML. Ph n ti p theo s.

nó có th ch y trong DB2 Command Window ho c Linux shell dùng l nh này. -. cho ta k t qu sau: <EmpList bldg=”101”> <name> John Doe </name> <name> Peter Pan </name> </EmpList> 16.Nh p môn H qu n tr c s d li u DB2 185 <phone>408 555 1212</phone> <office>344</office> </employee> <employee id=”902”> <name>Peter Pan</name> <phone>408 555 9918</phone> <office>216</office> </employee> </dept> Thì khi ó câu l nh XQuery sau s d ng FLWOR có th c th c hi n: xquery for $d in db2-fn:xmlcolumn(‘dept.4 Chèn các tài li u XML Vi c chèn các tài li u XML vào c s d li u DB2 có th th c hi n b ng câu l nh INSERT SQL. @emp} </EmpList> Và s.(2) create database mydb using codeset UTF-8 territory US . Không th dùng XQuery chèn tài li u XML khi nó ch a c nh ngh'a trong chu n.deptdoc’)/dept let $emp := $d//employee/name where $d/@bldg > 95 order by $d/@bldg return <EmpList> {$d/@bldg.(3) connect to mydb .(1) drop database mydb . Ki m tra t p k ch b n sau.txt table_creation. hay công c IMPORT.(4) create table items ( .3.txt -. -. -. db2 -tvf table_creation.

Dùng l nh SQL INSERT này. -.(5) create table clients( id int primary key not null. TX. c t o. SKU.(8) IMPORT FROM "D:\Raul\items. T o c s d li u “mydb” s d ng b mã UTF-8. c nh ngh'a v i 6. chèn m t tài li u XML vào m t c t XML. name varchar(50). 3.. 00112</addr>' ) . ITEMNAME. ' John Smith'' . Thao tác này th ng c th c hi n trong các t p k ch b n làm nhi m v d&n d7p. b n nh#p d li u t* t p clients. K t n i n c s d li u “mydb” v*a m i các i t ng trong c s d li u. NAME.ng ki u d li u XML m i. -. sku int. Xóa c s d li u “mydb”. T o b ng “clients”. nh ng nó không gây nh h ng n vi c ta ang làm.Nh p môn H qu n tr c s d li u DB2 186 id int primary key not null. / ý th y c t cu i cùng trong b ng (c t “comments”) nh ngh'a nh là m t c t XML s d ng ki u d li u XML m i. b n s. 7. chèn ho c nh#p nhi u tài li u XML cùng v i d li u quan h vào c s d li u. BRANDNAME. 5. L nh 7.del" of del xml from "D:\Raul" INSERT INTO ITEMS (ID. -.del" of del xml from "D:\Raul" INSERT INTO CLIENTS (ID.2). STATUS. -. vì v#y b c này là c n thi t t om tc s d li u thành m t c s d li u UNICODE. comments xml ). Dallas. Trong câu l nh INSERT b n truy n tài li u XML vào nh là m t chu i bao b i d u nháy n. CONTACT) . status varchar(10). brandname varchar(30). L nh này c n thi t t o ra c 4. COMMENTS) L u ý r ng t p k ch b n này và nh ng t p liên quan pressc_book_quicklabs. Gold' . C t cu i trong b ng (c t “contact”) c. nh#n c c m t thông báo l i. 2.(7) IMPORT FROM "D:\Raul\clients. T o b ng “items”. N u nh tr c ó ch a có “mydb”. ' <addr>111 Main St.zip i kèm v i sách. SRP.(6) insert into clients values (77. Dùng l nh IMPORT. itemname varchar(30).del (m t t p ascii . M t c s d li u UNICODE c òi h"i h tr pureXML. c cung c p trong t p nén exi chúng ta mô t t*ng dòng l nh 1. srp decimal(7. Bên d trong t p k ch b n. contact xml ).

Rita Gomez. 4309.Ella Kimpton.Gold.Chris Bontempo. 8877.11 cho th y trung tâm i u khi n sau khi ch y t p k ch b n trên.<XDS FIL='Client8877.Nh p môn H qu n tr c s d li u DB2 187 c d u phân cách). Hình 16.<XDS FIL='Client3227.xml' />. 9077.Silver.del clients.del 3227.<XDS FIL='Client5681.xml'/> Trong t p clients.<XDS FIL='Client9177. “XDS FIL=” c dùng tr" n m t t p tài li u XML c th .Lisa Hansen.Standard.Gold.ng có th ch.del. .Tina Wang. 5681.xml'/>.<XDS FIL='Client9077.Paula Lipenski.xml'/>. hãy xem n i dung c a th Hình 16.xml' />.<XDS FIL='Client4309.xml' /> 9177.del ó c nh v (trong ví d này là th m c D:\Raul). và b n c.Standard.del. Chúng ta s.10 – N i dung c a th m c D:\Raul v i các tài li u XML /ây là n i dung c a t p clients.ra n i mà d li u XML c tham chi u b i t p clients. nh ng tr m c D:\Raul (Hình 16. tìm hi u k$ h n t p clients.10) c h t.Standard.

11 16. Khi b n nh p vào nút có ba d u ch m.Nh p môn H qu n tr c s d li u DB2 188 Hình 16.3.txt Trong hình là n i dung c a b ng CLIENTS. B ng 16. C t cu i cùng “Contact” là m t c t XML. Truy v n d li u XML v i SQL/XML S d ng nh ng câu l nh SQL thu n túy cho phép b n làm vi c v i c dòng và c t. DB2 u tuân theo chu n XML qu c t . m t c a s khác m ra cho b n th y n i dung tài li u XML. C a s này n m góc d i bên ph i c a hình 16. Trong tr ng h p này. tuy nhiên nó l i không có kh n ng làm vi c v i ch.5 bên d Tên hàm XMLPARSE XMLSERIALIZE XMLVALIDATE XMLEXISTS i mô t m t s hàm SQL/XML có s)n v i chu n SQL 2006 Mô t Tách (phân tích) thu c tính ho c d li u nh phân trong 1 i t ng l n.m t ph n c a tài li u XML. l y ra giá tr XML Chuy n giá tr XML sang thu c tính ho c d li u nh phân trong 1 i t ng l n /ánh giá giá tr c a XML v i s + XML (XML Schema) và ghi chú ki u các giá tr c a XML Xác nh (ki m tra) câu truy v n XQuery có giá tr tr v không (ví d m t dãy giá tr hay nhi u h n) .11 – Trung tâm i u khi n sau khi th c hi n table_creation. b n c n s d ng SQL v i các l nh m r ng cho XML (SQL/XML). có 2 cách truy v n d li u XML: • S d ng SQL v i các l nh m r ng cho XML (SQL/XML) • S d ng XQuery Trong c 2 cách trên.5 Truy v n d li u XML Trong DB2. M t câu l nh SQL làm vi c c v i nguyên c tài li u XML.

c .th i n t c a tài li u XML ch không mu n l y ra c t d li u. nh rõ bi u th c XPath yêu c u DB2 tìm M nh “$c/Client/Address” xác nh ng d%n bên trong cây c u trúc c a tài DB2 có th tìm ra ph n t “zip”. Trong ví d này. duy t t* nút “Client” xu ng nút “Address”.Nh p môn H qu n tr c s d li u DB2 189 Th c thi câu truy v n XQuery và tr v dãy k t qu Th c thi câu truy v n XQuery và k t qu tr v (n u có) s. trong khi hàm XMLEXISTS c s d ng sau m nh WHERE. T ng t ví d tr c. Câu truy v n d i ây có th gi i quy t v n này: SELECT xmlquery(‘$c/Client/email’ passing contact as “c”) FROM clients WHERE status = “Gold” Dòng u tiên nói r ng ta mu n l y ra ph n t là a ch. Bi n “c” này sau ó c nh ngh'a b ng câu l nh passing clients.contact as “c”. bao g+m mã vùng. là m t b ng quan h XMLCAST Ép ki u XML B ng 16. b n tìm th y c t d li u XML phù h p v i mã vùng. XMLQUERY XMLTABLE Ví d 1: Gi s b n c n xác nh tên t t c khách hàng s ng m t vùng nào ó (có cùng mã vùng – zip). Trong ó “clients” là tên b ng và “contact” là tên c t có ki u d li u XML. S d ng XMLEXISTS. chúng ta ang a tài li u XML vào bi n “c”. Nói cách khác. tài li u XML c l u trong bi n “$c”. M nh WHERE g&i hàm XMLEXISTS. hàm XMLQUERY có th c s d ng sau m nh SELECT. ta có th làm i u này b ng cách s d ng hàm XMLTABLE.khách hàng. cu i cùng là nút “zip” và xác nh xem khách hàng có s ng vùng có mã vùng ó không.5 . Ví d 2: Chúng ta suy ngh' xem làm cách nào t o ra c m%u báo cáo g+m danh sách a chth i n t c a nh ng khách hàng “Vàng” (có tr ng thái “Gold”). N u th y.Các hàm SQL/XML Nh ng ví d minh h&a sau s d ng c s d li u “mydb” mà ta ã t o ra t* tr c. B ng “clients” l u a ch. Ký t $ c dùng khai báo “c” là m t li u XML bi n. sau ó gi i h n l i k t qu tr v . chph n t “zip” có giá tr 95116. trong m t c t XML. hàm XMLEXISTS tr v “true” và DB2 l y ra tên khách hàng t ng ng. DB2 ki m tra d li u XML trong c t “contact”. SELECT name FROM clients WHERE xmlexists ( ‘$c/Client/Address[zip=”95116”]’ passing clients. Ví d 3: Có tr ng h p b n mu n trình bày d li u XML theo d ng b ng.contact as “c” ) Dòng u tiên c a câu l nh SQL nói r ng b n mu n l y thông tin trong c t “name” c a b ng “clients”.

i. Ví d 4: Bây gi ta s. là nh ng ph n t T* dòng 4 n 6 là m nh “columns”. S d ng hàm text() dòng u tiên ch. Dòng th t cho ta bi t c t này b ng “client”. Ví d 6: Ví d d i ây minh h&a cách s d ng hàm XMLELEMENT t o ra m t dãy các ph n . Dòng ti p theo g&i hàm XMLTABLE ta c n (“i.comments as “c” columns Comment# integer path ‘CommentID’. xác nh rõ c t XML c a DB2 s. Ph n ánh x này có s tham gia c a ki u d li u mà các giá tr c a các ph n t XML s. c tr v . Trong ví d này. Message FROM items I. và dòng n m ch. th c hi n m t ví d n gi n có s d ng bi u th c XQuery FLWOR bên trong hàm XMLQUERY SQL/XML. Dòng th hai cho bi t ph n t “email” u tiên c a ph n t “Client” s.quan tâm n bi u di0n v n b n a ch. t t c d li u XML u c i thành ki u d li u v n có c a SQL.e-mail u tiên c a nhóm khách th"a mãn yêu c u. c b&c l i trong các th2 HTML (trong tr ng h p này là th2 <p> và </p>).tr v d li u XML mà còn c HTML. ch a d li u mà n ph n t ó trong tài li u XML.ra khách hàng “vàng” là quan tâm c a chúng ta. Ví d 5: Ví d này minh h&a l i hàm XMLQUERY có s d ng bi u th c XQuery FLWOR. c ánh x t ng ng v i nh ng c t trong b ng k t qu c a câu l nh SQL dòng 1. t. CustomerID integer path ‘CustomerID’.ra r ng ta ch. Dòng th hai cho bi t thông tin này s.comment#. Nh ng c t b t u b ng “t” là c s trên các giá tr c a ph n t XML. xác nh nh ng ph n t XML c th nào s. xmlquery( ‘for $e in $c/Client/email[1] return $e’ passing contact as “c” ) FROM clients WHERE status = ‘Gold’ Dòng th nh t xác nh r ng b ng k t qu c a câu truy v n bao g+m tên khách hàng và k t qu tr v t* hàm XMLQUERY.comments”) và ng d%n mong mu n. nh ng l n này ta không ch. SELECT xmlquery (‘for $e in $c/Client/email[1]/text() return <p>{$e}</p>’ passing contact as “c” ) FROM clients WHERE status = ‘Gold’ M nh return c a XQuery cho phép bi n i d li u XML u ra theo yêu c u.customerID. Message varchar(100) path ‘Message’) AS t Dòng u tiên cho bi t nh ng c t nào s.Nh p môn H qu n tr c s d li u DB2 190 SELECT t.itemname. xmltable(‘$c/Comments/Comment’ passing i. SELECT name. xu t hi n trong t#p h p k t qu (results set). Dòng th ba ch.ngu+n d li u XML (c t “contact”). chuy n i thành.

“sku”.Nh p môn H qu n tr c s d li u DB2 191 t . brandname). ta có th dùng hàm XMLELEMENT khi mu n chuy n t* d li u quan h sang d li u XML.s hàng hóa t i thi u trong kho (SKU) t ng ng v i các c t trong b ng “items”. DB2 s. SELECT xmlelement (name xmlelement (name xmlelement (name xmlelement (name FROM items WHERE srp < 100 “item”. Tr ng h p này. tên hàng hóa và ch. Câu l nh trên t ng ng v i câu l nh SQL sau ây: SELECT contact FROM clients Ví d 2: Ta s d ng bi u th c FLWOR l y thông tin v s fax c a khách hàng. ta ã th y c cách truy v n d li u XML v i câu SQL có ph n m r ng cho XML. id). m i ph n t này l i ch a trong nó các ph n t con (sub-element) có n i dung v ID. và XPath c nhúng vào bên trong câu l nh SQL. xquery db2-fn:xmlcolumn(‘CLIENTS. XQuery là ph ng pháp chính. V c b n.CONTACT’)/Client/fax return $y . N u không. sku) K t qu xu t ra c a câu truy v n trên nh sau: <item> <id>4272</id> <brand>Classy</brand> <sku>981140</sku> </item> … <item> <id>1193</id> <brand>Natural</brand> <sku>557813</sku> </item> Truy v n d li u XML v i XQuery Trong ph n tr c.CONTACT’) Nh luôn luôn thêm l nh “xquery” vào u bi u th c XQuery cho DB2 bi t r ng nó c n s d ng b phân tích (parser) XQuery. SQL là ph ng pháp truy v n chính. ta s. xquery for $y in db2-fn:xmlcolumn(‘CLIENTS. s d ng c bi u th c FLWOR. itemname). g&i vài hàm. cho r ng b n ang c g ng th c thi bi u th c SQL. và trong m t XQuery s tr ng h p. Ví d 1: Làm m t truy v n XQuery n gi n là l y d li u liên l c c a khách hàng. “id”. Khi th c hành v i XQuery . Còn trong ti p theo này. ta s. ta nói v cách s d ng truy v n d li u XML. Hàm db2-fn:xmlcolumn l y c t ta ch.nh trong tài li u XML làm tham s . nhúng SQL vào bên trong XQuery (b ng cách s d ng hàm “db2fn:sqlquery”). Lúc này. “brand”.

K t qu xu t ra c a câu truy v n trông gi ng nh sau (m c nh có th g+m a ch. Dòng cu i cùng nói r ng giá tr c a bi n $y s. Hàm db2-fn:sqlquery th c thi câu truy v n SQL và ch. c tr v trong m i l n l p.tr v nh ng d li u XML c ch&n.</street> <city>Los Gatos</city> <state>ca</state> <zip>95302</zip> </address> </li> <li> <address> <street>4209 El Camino Real</street> <city>Mountain View</city> <state>CA</state> <zip>95302</zip> </address> </li> … </ul> Ví d 4: Ti p theo là cách nhúng SQL vào trong XQuery b ng vi c s d ng hàm db2fn:sqlquery.nh ng câu truy v n SQL tr v d li u XML m i c truy n vào hàm db2-fn:sqlquery. m t khác thông tin xu t có th tr i ra thành nhi u dòng nên h i khó &c): <fax>4081112222</fax> <fax>5559998888</fax> Ví d 3: Ví d này ti p t c truy v n d li u XML và tr v k t qu là HTML xquery <ul> { for $y in db2-fn:xmlcolumn(‘CLIENTS. Dòng th hai yêu c u DB2 l p h t các ph n t con fax trong c t CLIENTS. xquery for $y in db2-fn:sqlquery( ‘select comments from items where srp > 100’ )/Comments/Comment where $y/ResponseRequested = ‘Yes’ . M i ph n t fax c l u trong bi n $y.c a không gian tên (namespace) nh ng ây tôi không th hi n ra.Nh p môn H qu n tr c s d li u DB2 192 Dòng u tiên g&i b phân tích XQuery.CONTACT’)/Client/Address order by $y/zip return <li>{$y}</li> </ul> K t qu HTML tr v trông nh sau: <ul> <li> <address> <street>9407 Los Gatos Blvd. Ch.CONTACT.

deptdoc as “e”. là c t d li u XML.manager as “m”) Trên dòng 3 c a l nh này ch. Ghi chú: DB2 không phân bi t ch in hoa và ch th ng và gi nh t t c tên b ng và tên c t u là ch in hoa.ra r ng l nh JOIN xu t hi n gi a ph n t “name” là ph n t con c a c t XML deptdoc c a b ng “dept”.unitID FROM dept d. T* các dòng ã l&c này l y ra c t “comments”. unit u WHERE XMLEXITS( ‘$e//employee[name = $n]’ passing d. Gi s ta ã t o hai b ng v i các l nh sau: CREATE TABLE dept (unitID CHAR (8). u. mô t cách th c th c hi n l nh JOIN gi a hai c t XML c a hai b ng khác nhau. và c t quan h “manager” c a b ng “unit”. Truy n tên i t ng d ng ch th ng có th gây ra l i “tên i t ng không xác nh” (undefined object name) 16. ) Ta có th th c hi n l nh JOIN theo m t trong hai cách Ph ng pháp 1: SELECT u.unitID FROM dept d.6 N i (join) v i SQL/XML Ph n này s. Các hàm trên là hàm giao di n c a XQuery (XQuery interface function) do ó tên b ng và tên c t truy n vào các hàm này nên là ch hoa.manager = XMLCAST( XMLQUERY(‘$e//employee/name’ passing d. name CHAR(20).3.deptdoc as “e”) AS char(20)) . . manager VARCHAR(20). trong khi ó XQuery l i phân bi t ch in hoa và ch th ng.Nh p môn H qu n tr c s d li u DB2 193 return ( <action> {$y/ProductID $y/CustomerID $y/Message} </action> ) Trong ví d trên. unit u WHERE u. Câu l nh XQuery (ho c XPath) ti p theo c áp d ng cho nh ng ph n t con. . Ph ng pháp 2: SELECT u. . ho c gi a m t c t XML và m t c t quan h . deptdoc XML) CREATE TABLE unit (unitID CHAR(8) primary key not null. câu truy v n SQL l&c nh ng dòng d li u th"a i u ki n giá tr t i c t “srp” ph i l n h n 100.

3. n u trong ví d d i ây ta mu n thay th ph n t <state>. nh sau: SELECT XMLQUERY ( ‘$d/delp/employee’ passing d.7 N i (Join) v i XQuery Gi s có các b ng sau c t o ra: CREATE TABLE dept(unitID CHAR(8).deptdoc as “d”) FROM dept d. Nh v#y dòng 4 th c hi n l nh JOIN gi a m t thu c tính c a tài li u XML u tiên và m t ph n t c a tài li u XML th hai.</street> <city>San Jose</city> <state>CA</state> <zip>95116</zip> </address> <phone> <work>4084633000</work> <home>4081111111</home> <cell>4082222222</cell> </phone> . project p WHERE XMLEXISTS( ‘$e/dept[@deptID=$p/project/deptID]’ passing d.project as “p”) L nh t ng ng s d ng XQuery s. p.PROJECTDOC”)/project where $dept/@deptID = $proj/deptID return $dept/employee Ph ng pháp th 2 này d0 phiên d ch h n – bi n “$dept” mang tài li u XML c a c t XML “deptdoc” c a b ng “dept”. là: bên xquery for $dept in db2-fn:xmlcolumn(“DEPT. deptdoc XML) CREATE TABLE project(projectdoc XML) N u ta s d ng SQL/XML.3. toàn b tài li u XML c thay th v i m t l n c#p nh#t. th#t v#y. c t quan h thì bên trái c a l nh JOIN. toàn b tài li u XML trên th c t b thay th . m t ch.G&i th t c DB2XMLFUNCTION. Bi n “$proj” mang tài li u XML c a c t XML “projectdoc” c a b ng “project”. c#p nh#t ho c xóa tác ng m c tài li u.DEPTDOC”)/dept for $proj in db2fn:xmlcolumn(“PROJECT.S d ng câu l nh SQL UPDATE và DELETE . UPDATE clients SET contact=( xmlparse (documment ‘<Client> <address> <street>5401 Julio ave.Nh p môn H qu n tr c s d li u DB2 194 Trong l a ch&n này.m c XML. 16. Ví d .deptdoc as “e”.8 Các l nh c p nh t và xóa Các l nh c#p nh#t và xóa d li u XML có th c th c hi n b ng m t trong hai cách: .XMLUPDATE Trong c hai tr ng h p. câu truy v n s. 16. N u c t có quan h trái d u b ng.m c quan h có th c dùng thay cho m t ch.

và ch.m c trên ph n t “name” CREATE UNIQUE INDEX idx2 ON customer(info) GENERATE KEY USING xmlpattern ‘/customerinfo/name’ AS sql VARCHAR(40) 3) L nh này t o m t ch. thu c tính ho c giá tr (v n b n).m c thên thu c tính “Cid” CREATE UNIQUE INDEX idx1 ON customer(info) GENERATE KEY USING xmlpattern ‘/customerinfo/@Cid’ AS sql DOUBLE 2) L nh này t o m t ch.m c s.m c có th c t o ra theo các ph n t . nó quá t n kém duy trì ch.m c khi th c hi n các l nh c#p nh#t. Sau ây là m t s ví d .Nh p môn H qu n tr c s d li u DB2 195 </Client>’) ) WHERE id = 3227 16.m c trên toàn b v n b n (t t c các giá tr ).m c trên m&i ph n t “name” CREATE UNIQUE INDEX idx3 ON customer(info) GENERATE KEY USING xmlpattern ‘//name’ AS sql VARCHAR(40) 4) L nh này t o m t ch.3.9 Ch. /ây là l nh không nên dùng. r t l n . các ch. gi s b ng sau ã c t o: CREATE TABLE customer(info XML) Và gi s h+ s sau ã c l u trong b ng này: <customerinfo Cid=”1004”> <name>Matt Foreman</name> <addr country=”Canada”> <street>1596 Baseline</street> <city>Toronto</city> <state>Ontario</state> <zip>M3Z-5H9</zip> </addr> <phone type=”work”>905-555-4789</phone> <phone type=”home”>416-555-3376</phone> <assistant> <name>Peter Smith</name> <phone type=”home”>416-555-3426</phone> </assistant> </customerinfo> 1) L nh này t o m t ch. m c XML Trong m t tài li u XML. xóa ho c chèn.

Nh p môn H qu n tr c s d li u DB2 196 CREATE UNIQUE INDEX idx4 ON customer(info) GENERATE KEY USING xmlpattern ‘//text()’ AS sql VARCHAR(40) .

Tìm ra t t c các n i dung chú thích (comments) trong tài li u XML trong b ng ITEMS b ng hai cách.txt mà chúng ta ã gi i thích trong các ch ng tr c. T o c s d li u “mydb” và n p d li u XML. brandname FROM items WHERE XMLEXISTS(‘$c/Comments/Comment[ResponseRequested=”No” passing ITEMS.Nh p môn H qu n tr c s d li u DB2 197 Bài t p nhanh #12 – SQL/XML và XQuery M c ích B n ã th y nhi u ví d v cú pháp c a SQL/XML và XQuery và ã c gi i thi u trong DB2 Command Editor và công c DB2 Developer Workbench. Trong bài t#p này. nh ã trình bày ch ng tr c 2. b n hãy ki m tra s hi u bi t c a b n v SQL/XML và XQuery b ng vi c th c hành v i các công c này. S d ng ho c C a s l nh ho c DWB: a. T i sao khi ta s d ng l nh SQL sau l i không a ra cùng k t qu ? SELECT comments FROM items c.COMMENTS as “c” 2b) 2c) . SELECT id. s d ng c s d li u “mydb” c t o ra b ng vi c s d ng t p k ch b n table_creation. còn XQuery không tr l i gì c .COMMENTS’) xquery db2-fn:sqlquery(“select comments from items”) K t qu khác nhau là vì SQL tr l i giá tr NULL khi không có giá tr . Th t c 1. Tìm ra ID và BRANDNAME c a các b n ghi mà tài li u XML c a nó có giá tr c a tr ng ResponseRequested là “No” L i gi i 2a) xquery db2-fn:xmlcolumn(‘ITEMS. Ta s. ch.s d ng XQuery b.

1.1 – Trình i u khi n JDBC ki u 2 Hình 17.jar c.ng bao g+m b t c máy khách DB2 nào. Hình 17. M c ích c a ch ng này không nh m h ng d%n v các ngôn ng trên.2 a ra m t o n mã l nh cho ta th y làm th nào thi t l#p m t k t n i s d ng trình i u khi n JDBC ki u 2. th c thi. T p db2jcc.jcc) bao g+m trình i u khi n ki u 2 và ki u 4. 17. PHP và Ruby Ch ng này s.Nh p môn H qu n tr c s d li u DB2 198 17 Ch ng 17 – Phát tri n v i Java.1 Phát tri n ng d ng b6ng Java c bi t n nh trình i u khi n JCC) c Trình i u khi n IBM DB2 cho JDBC ( xem là t i u i v i các máy ch DB2 trên t t c các n n t ng. th o lu#n nh ng v n c b n c a vi c phát tri n ng d ng trong Java. T p db2jcc. L u ý là URL không bao g+m hostname ho c thông tin v c ng b i vì i u này c th c hi n t* máy khách DB2. .1 Trình i u khi n JDBC ki u 2 (type 2) Trình i u khi n JDBC ki u 2 yêu c u m t máy khách DB2 ã c cài t n i mà ng d ng JDBC s. nh ng nó cung c p thông tin thích h p trong vi c s d ng chúng v i DB2.com/db2/express) 17.ibm. ho c nó có th c th y (trình i u khi n IBM DB2 cho JDBC và SQLJ) t* trang web DB2 Express-C (ibm.jar (com.1 minh h&a m t ng d ng JDBC s d ng trình i u khi n ki u 2. Hình 17.db2. PHP và Ruby trên n n Rails s d ng m t máy ch DB2.

2 – Thi t l p m t k t n i s" d ng trình i u khi n JDBC ki u 2 17. Hình 17.3 minh h&a m t ng d ng JDBC s d ng trình i u khi n ki u 4.2 Trình i u khi n JDBC ki u 4 Trình i u khi n JDBC ki u 4 không yêu c u m t máy khách ph i k t n i n m t máy ch DB2.1. . Hình 17. L u ý là URL bao g+m c hostname ho c thông tin v c ng.4 a ra m t o n mã l nh cho ta th y làm th nào thi t l#p m t k t n i s d ng trình i u khi n JDBC ki u 4.Nh p môn H qu n tr c s d li u DB2 199 Hình 17.3 – Trình i u khi n JDBC ki u 4 Hình 17.

1 cho th y làm th nào k tn i hai ph n m r ng ã c mô t trên.2. Apache HTTP Server. th ng s)n có trên các nhà cung c p (ISP) v i giá h p lý. c#p nh#t và ghi các thao tác c s d li u thêm vào ó m r ng truy xu t n siêu c s d li u. Tính ph bi n c a PHP d a trên các c tr ng c a ngôn ng : - - Nhanh.Nh p môn H qu n tr c s d li u DB2 200 Hình 17. và c t i u cho DB2.1. là ngôn ng k ch b n c l#p v n n t ng c thi t k cho vi c phát tri n ng d ng Web. Có y các c tính h tr cho các th t c l u tr và LOBs.NET trên n n Web. 17.4 – Thi t l p m t k t n i s" d ng trình i u khi n JDBC ki u 4 17.2 Phát tri n ng d ng b6ng PHP PHP (PHP Hypertext Preprocessor) là m t ngu+n m . D0 dàng tích h p vào các môi tr ng/h th ng không thu n nh t. / c ch ng t" thông qua tri n khai r ng rãi T o nên m t c ng +ng y s c s ng PHP là b ph#n c a LAMP (vi t t t c a các t* Linux. K tn i n m t c s d li u DB2 ch a phân lo i (uncalalogued) n c s d li u DB2 s d ng m t trong . tính th c thi cao và kh chuy n 6n nh và an toàn M t s l a ch&n i v i J2EE và .net/package/PDO_ODBC /o n mã 17. /ó là m t trong nh ng ngôn ng web c tri n khai r ng rãi nh t trên th gi i hi n nay. và nó ã c xây d ng trong PHP 5. và s)n sàng truy c#p n c s d li u DB2 thông qua m t giao di n c s d li u h ng i t ng ã c th t c hóa trong PHP 5. PDO_ODBC: PDO_ODBC là trình i u khi n cho ph n m r ng c a Các i t ng d li u PHP (PHP Data Objects . Ph n m r ng PDO_ODBC s d ng các th vi n DB2 truy xu t m t cách t nhiên.1. nh7 nhàng. Nó có th ng. Ph n m r ng s)n có t* kho th vi n PECL d i s cho phép c a Apache 2.1 L a ch n k t n i DB2 cho PHP IBM h tr truy xu t n c s d li u DB2 t* các ng d ng PHP thông qua hai ph n m r ng.php. PHP / Perl / Python). /ây là m t nhóm công ngh web mã ngu+n m . MySQL. Có th tham kh o thêm t i: • • http://pecl. Nó có th c biên d ch làm vi c v i PHP 4 ho c PHP 5.0. Nhanh chóng. ibm_db2: Ph n m r ng ibm_db2 a ra m t giao di n l#p trình th t c ng d ng cho phép t o.PDO). nhanh.php. d0 h&c t* th p n cao M nh.net/package/pdo http://pecl. Nó c IBM phát tri n và h tr . Nó cung c p m t giao t ng thích ng c v i các th vi n c a DB2 m t cách t di n truy xu t d li u tiêu chu n cho PHP. và h ng i t ng. &c.

Zend [Core] có th c t i v t i a ch. và *ng ng i v các v ng m c c u hình này. xem hình minh h&a 17. .1 – K t n i nm tc s d li u bên ngoài n gi n s d ng ph n m /o n mã 17.2.instance_name=<instance name> / i v i Windows. Zend [Core] cho IBM c.2 4ng d ng công ngh Zend Core dành cho IBM Zend [Core] là b công c PHP hoàn ch-nh cho môi tr ng phát tri n và s n xu t các ng d ng web t i quan tr&ng cho doanh nghi p.Nh p môn H qu n tr c s d li u DB2 201 *o n mã 17. m t máy ch HTTP c a Apache (tùy ch&n).7.com/software/data/info/zendcore Zend [Core] cho IBM bào g+m cài t DB2 và máy khách IDS.iso ibm_db2. hi u qu và s linh ho t c n thi t cho vi c v#n hành nh ng ng d ng PHP.dll Ti p theo. b h ng d%n s d ng PHP. PDO_INFOMIX.5.2 cung c p m t ví d cho m t ng d ng PHP r ng ibm_db2 *o n mã 17.ng có th cài t máy ch DB2 Express-C.sau: http://ibm.2 – M t ng d ng PHP n gi n s" d ng ph n m r ng ibm_db2 i t p php. PHP5 và m t s th vi n ph bi n kèm theo bao g+m: ibm_db2. trong ph n ti p theo. máy ch IBM CloudscapeTM. 17. và m t s ng d ng ví d trên DB2. Zend [Core] th hi n s ti n d ng và cài t môi tr ng PHP m t cách d0 dàng. b n có th t i và cài t b ng d ng Zend Core for IBM s.ini nh sau: extension=php_ibm_db2.6 và 17. thay i t p php.ini nh sau: C u hình PHP cho jbm_db2 Trong Linux ho c UNIX b n c n thay extension=ibm_db2. c mô t 17. Zend [Core] th hi n s tin c#y.

5 – C"a s qu n lý và i u khi n c a Zend [Core] Hình 17.6 – C"a s c u hình PHP c a Zend [Core] .Nh p môn H qu n tr c s d li u DB2 202 Hình 17.

Nh p môn H qu n tr c s d li u DB2 203 Hình 17.7 – C"a s c u hình PHP c a Zend 17.com/tech/db2onrails B công c này bao g+m: B cài t H ng d%n cài t và c u hình Ruby và Rails B cài t DB2 – Express C 9 và b công c kèm theo Các trình i u khi n (driver) cho DB2 Ruby và b thích h p cho DB2 Rails Ví d và bài t#p .1 B công c phát tri n DB2 trên n n Rails IBM nh#n ra c t m quan tr&ng c a Ruby trên n n Rails trong c ng +ng phát tri n ng d ng web. g&n nh7 c phát tri n b i Yukihiro Matsumoto (“Matz”) vào n m 1995. 17. /ây là b cài t c tích h p l i t o nên m t môi tr ng phát tri n DB2 b ng Ruby trên n n Rails.3 Phát tri n ng d ng Ruby trên n n Rails Ruby là m t ngôn ng k ch b n h ng i t ng. ng và a n n d a trên mã ngu+n m . Rails là m t b khung hoàn ch-nh cho vi c phát tri n các ng d ng web d a trên c s d li u do Ruby phát tri n. Ruby là ngôn ng l#p trình n gi n.3. Chính vì lý do ó mà IBM ã t o ra b công c phát tri n DB2 trên n n Rails (Startup Toolkit for DB2 on Rails). Ruby giúp cho phát tri n các ng d ng m t cách d0 dàng. nhanh chóng và còn bao g+m t#p h p các th vi n r t phong phú. Rails cài t ki n trúc model-view-controller (MVC).alphaworks. Rails n i lên nh là m t trong nh ng khung phát tri n ng d ng web m nh nh t k t* n m 2004 do David Heinemeier Hansson phát tri n. B công c này có th download t i a ch-: http://www.ibm.

T ng quan v vi c g/ r i A. Hình A.2 d i ây .Nh p môn H qu n tr c s d li u DB2 204 Ph l c A – G/ r i A Trong ph n này. nh trong hình A. nói v cách làm th nào 0 gi i quy t (g( r i) nh ng v n có th g p ph i khi làm vi c v i DB2. Hình A.1 . chúng ta s.1 cung c p m t s + t ng quan v nh ng vi c chúng ta nên làm khi g p s c .1 Thêm thông tin v mã các l i / thu th#p c nhi u thông tin h n t* o n mã l i mà chúng ta nh#n c hãy nh#p mã l i mà b n nh#n c v i d u ch m h"i (?) vào vùng nh#p l nh và nh n vào nút Execute.

Ý ngh'a c a SQLCODE = 0.2 .2 SQLCODE and SQLSTATE M t SQLCODE là mã nh#n c sau khi m&i câu l nh SQL ã các giá tr nh sau: c ch y. l nh không thành công và tr v m t l i SQLSTATE g+m 5 ký t . 4 h i u hành Linux/Unix thì nh#t ký thông báo qu n tr (Administration Notification) là m t t p v n b n <tên th hi n>.nfy (ví d “db2inst. chu i này tuân theo chu n ISO/ANSI SQL92. l nh thành công nh ng ch ng trình có c nh báo SQLCODE < 0. g&i n trình tr giúp (Help) c a DB2. 4 h i u hành Windows. T t c nh ng ví d d i ây là t ng ng db2 db2 db2 db2 db2 ? ? ? ? ? SQL0104N SQL104N SQL – 0104 SQL – 104 SQL – 104N A. Hai ký t tiên cho ta bi t mã l p SQLSTATE 00: l nh thành công 01: có c nh báo 02: không tìm th y i u ki n T t c các mã l p khác c xem nh có l i u A.Tìm ki m thông tin v o n mã b$ l i D u ch m h"i (?) s. t t c các khai báo qu n tr u c ghi vào Windows Event Log.3 Nh t ký khai báo qu n tr$ DB2 Nh#t ký khai báo qu n tr cung c p công c dùng ch n oán thông tin v các l i t i các i m phát sinh l i. l nh thành công SQLCODE > 0. D i ây là m t s ví d v kích ho t trình help. ví d nh#n c mã l i SQL là “-104”.Nh p môn H qu n tr c s d li u DB2 205 Hình A. .nfy”).

IBM s. Ý ngh'a c a ch n oán C p t* 0 n 4. m c nh là 3 A. .V trí c a mã DB2 phát sinh l i . nh là c u trúc d li u SQLCA và con tr" n v trí c a k t xu t ho c t p b%y 4 Windows.5 Theo v t CLI V i CLI và các ng d ng Java. n i mà ng d ng c a b n ang ch y. /i u này có th c làm b ng cách s a i t p db2cli.hành ng c n c th c hi n ngay l#p t c 3 .log cung c p thông tin chi ti t h n v nh#t ký khai báo qu n tr DB2.ra bên d i: Theo v t m c th p c. nh ng nó th thu#t s d ng. u n phát hành nh ng b n s a l i (Fixpacks) s a ch a nh ng l i ó (APARs). Nó th ng chc s d ng b i nhân viên h tr k$ thu#t DB2 hay ng i qu n tri có kinh nghi m.Các d li u h tr s)n có.ini máy ch .M t thông i p ch n oán (b t u b ng “DIA”) gi i thích nguyên nhân c a l i . ng c nhân viên h tr k$ A.log trên náy ch và máy khách. Khi phát tri n m t ng d ng m i chúng ta nên c#p nh#t nh ng b n s a l i m i nh t tránh nh ng v n có th x y ra trong khi làm vi c. cho phép b n có th so sánh nh ng dòng c a ng d ng trên t p db2diag. db2diag.thông i p A. / xem phiên b n hi n .log c ch a trong m t th m c m c inh: C:\Program Files\IBM\sqllig\<instance name>\db2diag. Thông tin trong db2diag.Nh p môn H qu n tr c s d li u DB2 206 Tham s c u hình DBM notifylevel cho phép ng c ghi l i i qu n tr ch.4 db2diag. 0 là ít ý ngh'a nh t và 4 là cao nh t. Trong t p v n b n c a b n s a l i có ch a danh sách nh ng l i mà nó s a ch a c. không c n hành ng ngay l#p t c (m c nh) 4 .l i n ng ho c không th ph c h+i 2 .6 Kh c ph c và s"a l i trong DB2 /ôi khi m t l i mà b n thình lình g p ph i l i là nguyên nhân c a m t s c (l i) c a DB2.ini c ch.ng s)n có (db2trc).log c quy t nh b i tham s c u hình dbm cfg DIAGLEVEL.log bao g+m: . Nh ng tr ng c tr ng c a db2cli.ra m c thông tin 0 .log 4 Linux/Unix db2diag.M t ch ng trình nh#n d ng. b n có th b#t ti n ích theo v t CLI kh c ph c nh ng s c cho nó.thông tin quan tr&ng.log Db2diag.log c ch a trong th m c m c nh: /home/<instance_ owner>/sqllid/db2trum/db2diag.không có khai báo qu n tr nào c gi l i (không khuy n khích) 1 .

ibm.ibm. v. bài h ng d%n. ng ký nh#n email t i ây.3.com/ /ây là n i t#p h p nhi u blog c a nh ng ng i phát tri n DB2. 1.7.5.com/infocenter/db2luw/v9/index.2. Trang web chính th c c a DB2 Express-C: www. t* c a s l nh gõ “db2level”. các driver dành cho DB2. Di0n àn DB2 Express: http://www. 1.ibm.com/db2/express Website này cho phép b n download các file cài t cho máy ch DB2. 1. /ây là n i b n có th tìm th y nh ng công ngh m i nh t t* Phòng Nghiên c u c a IBM. planetDB2 http://www. máy khách DB2. ho c tìm &c blog c a nhóm phát tri n DB2.ng có th tìm th y các h ng d%n s d ng.jsp?forum=805&cat=19 B n có th s d ng Di0n àn này ng t i các v n v k$ thu#t m i khi b n không th t mình tìm th y câu tr l i cho các v n ó.Nh p môn H qu n tr c s d li u DB2 207 t i c a b n s a l i.4. b n c. b n có th download các b n vá l i t* Website này: http://www-306.ibm.com/ Website này cho phép b n truy xu t tr c ti p vào các công ngh n i tr i c a IBM. ch&n About t* trình n Help. 1. Trung tâm d li u DB2 http://publib. L u ý r ng.planetdb2.6.ibm.jsp Trung tâm d li u cung c p ngu+n tài li u h ng d%n tr c tuy n. H tr k$ thu#t DB2 N u b n ã ng ký h tr k$ thu#t 12 tháng t* DB2 Express-C. alphaWorks http://www.1. 1.có hi u l c trong DB2 Express–C khi b n mua b n quy n 12 tháng Ngu n tài nguyên Các trang web 1.alphaworks. b n s a l i và s h tr t* IBM ch.com/software/data/db2/support/db2_9/ .boulder.ibm.com/developerworks/forums/dw_forum.com/developerworks/db2 Website này là m t ngu+n tài nguyên tuy t v i cho nh ng ng i phát tri n và nh ng ng i qu n tr h th ng c s d li u tìm th y c nhi u bài vi t. developerWorks http://www-128. /ây là ngu+n tài nguyên c c#p nh#t m t cách th ng xuyên nh t. 1.v… hoàn toàn mi0n phí.

Tháng 8 n m 2006 – SG24-7301-00 http://www.com Email liên h . Ming-Pang Wei. John Chun. C/C++. Michael Gao. Tháng 1 n m 2005 – ISBN: 0-13-185916-1 3. Piotr Pietrzak Tháng 5 n m 2006 – SG24-7218-00 http://www.ibm. Fraser McArthur.redbooks. Ippei Komi. and z/OS®. Manoj K. Daniel Krook. Chong. Leon Katsnelson ISBN-10: 0071487832 ISBN-13: 987-0071487832 7. DB2 9: pureXML overview and fast start Cynthia M. Rav Ahuja.redbooks. Free Redbook: DB2 pureXML Guide Whei-Jen Chen.html?Open 6. Rav Ahuja Tháng 1 n m 2006 – SG24-7298 4. Holger Kirstein. Drew Bradstock. Felicity Hendricks. Chris Eaton.com/abstracts/sg247218. Saracco. Understanding DB2 – Learning Visually with Examples V8. Dobromir Goutev. UNIX®. Rakesh Ranjan. Redbook: Developing PHP Applications for IBM Data Servers.Nh p môn H qu n tr c s d li u DB2 208 Sách 1. Kiran H Nair. Paul Yip ISBN: 0-13-100772-6 5. Art Sammartino. Raul Chong.com/abstracts/sg247301.html?Open 2.html?Open H p th DB2 Express-C: db2x@ca.ibm.NET Whei-Jen Chen. 2nd Edition Zamil Janmohamed. i5/OS™.com H p th DB2 dành cho các tr ng / i h&c: db2univ@ca. Free Redbook: DB2 Express-C: The Developer Handbook for XML. and .redbooks. Matthias Nicola. Java. Don Chamberlin. Windows™.ibm. Whei-Jen Chen. Information on Demand – Introduction to DB2 9 New Features Paul Zikopoulos. PHP. Naomi Ngan. Clara Liu.com/abstracts/sg247315. Dwaine Snow. Sardana.2 Raul F. George Baklarz. Tháng 8 n m 2007. Clara Liu.ibm.ibm. http://www. Sylvia Qi. DB2® SQL PL: Essential Guide for DB2® UDB on Linux™.

ng nh cách phát tri n nh ng gi i pháp t phá. . không gi i h n. khám phá ra cách hoàn toàn m i t o ra ch ng trình ng d ng. B n s. Phát tri n ch ng trình ng d ng s d ng c s d li u DB2.NET. Hi u v ki n trúc c a DB2. * c cu n sách này Tìm th y t t c nh ng i u v DB2 Express-C. . Perl. và Ruby.Nh p môn H qu n tr c s d li u DB2 209 B t - u v i DB2 không th nào d dàng h n. t do b n xây d ng ng d ng. ho c phân ph i các ng d ng v c s d li u. các qu n tr viên c s d li u. Nh ng h tr tr c tuy n c. c. Hãy tham gia vào s phát tri n c a c ng +ng nh ng ng i s d ng DB2 Express-C ngay hôm nay. DB2 Express-C c a IBM là m t h qu n tr d li u mi0n phí. nh ng ng i t v n.0. Java.ng có th c ng ký v i giá th p. XQuery. ho c s l ng ng i s d ng. và t do phân ph i l i các gi i pháp c a b n. . các công c và b o m#t DB2. Vi t mã SQL. và SOA ã d%n n nh ng nhu c u v m t lo i h qu n tr d li u lai mang tính cách tân. sinh viên. ho c b t k ai có ý nh phát tri n. Và. DB2 Express-C ch y trên h th ng Windows và Linux và h tr nhi u ngôn ng l#p trình khác nhau. PHP. s l ng d li u. và là c s d li u LAI có kh n ng qu n tr c XML và d li u quan h thu n túy m t cách d0 dàng. N u b n mu n có nhi u ch c n ng cao c p h n n a i v i m t h qu n tr c s d li u. Mi0n phí ngh'a là DB2 Express-C có th c t do t i v . Web 2. nh ng ng i bán ph n m m c l#p. tri n khai. Chu n b cho k thi DB2 trong tr ng. t do tri n khai s n ph m. : S phát tri n nhanh chóng c a XML.n b n DB2 mi0n phí này r t lý t ng cho nh ng ng i phát tri n. bao g+m c C/C++. Luy n t#p b ng nh ng bài t#p th c hành. DB2 không t m t gi i h n nào cho kích th c d li u. b n có th d0 dàng tri n khai nh ng ng d ng ã c xây d ng b ng DB2 Express-C lên nh ng n b n DB2 khác nh DB2 Enterprise. th nghi m. H&c cách qu n tr C s d li u DB2.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->