giaotrinh ct110

Upload: baodongcolcn

Post on 11-Jul-2015

4.680 views

Category:

Documents


2 download

TRANSCRIPT

Khoa CNTT & Truyn Thng Trng i Hc Cn Th

MC LCTNG QUAN MN HC ............................................................................................... 6

Phn l thuytChng 1 Cc bin php bo v CSDL ......................................................................... 8 1 Cc bin php bo v bng my tnh........................................................................ 8 2 Cp quyn................................................................................................................. 9 2.1 Lnh SQL cp quyn: .................................................................................. 9 2.2 Lnh SQL thu hi quyn: ........................................................................... 10 3 Khung nhn ............................................................................................................. 10 3.1 Lnh dng to view: ................................................................................... 10 3.2 Lnh dng xa view ................................................................................... 11 3.3 Thun li v bt li ca vic s dng view .................................................... 11 4 Sao lu v phc hi ................................................................................................ 12 5 Ton vn d liu ..................................................................................................... 12 6 Mt ho d liu ...................................................................................................... 13 7 RAID (Redundancy Array of Independent Disks) ................................................. 14 8 Cc khi nim v cu trc lu tr CSDL Oracle ................................................... 16 8.1 Gii thiu ........................................................................................................ 16 8.2 Database v Instance ....................................................................................... 16 8.3 Cu trc lu tr ca CSDL Oracle.................................................................. 17 8.4 Schema v schema objects .............................................................................. 23 8.5 Data dictionary ................................................................................................ 23 9 M/tt CSDL v th hin (startup/shutdown) ........................................................ 23 9.1 Gii thiu ........................................................................................................ 23 9.2 M CSDL........................................................................................................ 24 9.3 Tt CSDL ........................................................................................................ 25 10 Oracle Net .............................................................................................................. 25 11 Cc bin php bo v CSDL Oracle ...................................................................... 26 11.1 Qun l ngi dng ........................................................................................ 26 11.2 Qun l quyn ................................................................................................. 29 11.3 Qun l Role (vai tr) ..................................................................................... 33 11.4 Import v export.............................................................................................. 37 11.5 Oracle Data Pump ........................................................................................... 39 Chng 2 Ngn ng SQL & PL/SQL trong Oracle........................................................ 41 1 Bng d liu v cc i tng lin quan ................................................................ 41 1.1 Qun l bng ................................................................................................... 41 1.2 Sequence ......................................................................................................... 43 1.3 Index ............................................................................................................... 44 1.4 Biu thc chnh quy (regular expression) ....................................................... 45

Gio Trnh H Qun Tr C S D Liu trang 1

Khoa CNTT & Truyn Thng Trng i Hc Cn ThCc kiu d liu trong Oracle ................................................................................ 46 Cu trc chng trnh PL/SQL .............................................................................. 47 3.1 Cu trc lp trnh trong Oracle ....................................................................... 47 3.2 Cc dng chng trnh PL/SQL...................................................................... 47 3.3 Cu trc khi PL/SQL v danh....................................................................... 48 4 Cc kiu d liu c bn ca PL/SQL ..................................................................... 49 5 Thuc tnh .............................................................................................................. 50 6 Kiu d liu phc ................................................................................................... 50 6.1 Kiu d liu con do ngi dng nh ngha ................................................... 50 6.2 Kiu TABLE ................................................................................................... 51 7 Cc loi mnh .................................................................................................... 51 7.1 Mnh gn.................................................................................................... 51 7.2 Mnh lnh (SQL command) ...................................................................... 52 8 Cc cu trc iu khin .......................................................................................... 52 8.1 Cu trc r nhnh ............................................................................................ 52 8.2 Cu trc lp ..................................................................................................... 54 8.3 Cu trc Ngoi l (Exception) ........................................................................ 55 9 Kiu con tr (Cursor) ............................................................................................. 57 9.1 C php khai bo con tr: ............................................................................... 57 9.2 C php m con tr:........................................................................................ 58 9.3 C php ly d liu ......................................................................................... 58 9.4 C php ng con tr ...................................................................................... 58 9.5 Mt s thuc tnh ca con tr: ........................................................................ 59 9.6 Mnh SELECT FOR UPDATE trong Cursor ............................................ 59 9.7 Mnh WHERE CURRENT OF trong Cursor ............................................ 59 10 Th tc, hm v trigger .......................................................................................... 60 10.1 Th tc ............................................................................................................ 61 10.2 Hm ................................................................................................................. 62 10.3 Trigger ............................................................................................................ 63 Chng 3. Qun l giao dch & phc hi ....................................................................... 67 1 Giao dch (transaction) ........................................................................................... 67 1.1 nh ngha Giao dch: ..................................................................................... 67 1.2 Trng thi ca Giao dch:................................................................................ 68 1.3 Cc thuc tnh ca mt GD............................................................................. 68 2 iu khin cnh tranh (Concurrency control) ........................................................ 70 2.1 S cn thit phi c qun l cnh tranh .......................................................... 70 2.2 Lch trnh (schedule): ...................................................................................... 72 2.3 Tnh kh tun t ca mt lch trnh ................................................................. 75 2.4 Tnh kh phc hi ca lch trnh ..................................................................... 75 2.5 Cc k thut qun l cnh tranh...................................................................... 76 2.6 Cc k thut lc quan (optimistic techniques) ................................................ 84 2.7 mn ca mc d liu (data granularity) ..................................................... 85 3 Phc hi CSDL ...................................................................................................... 88 2 3

Gio Trnh H Qun Tr C S D Liu trang 2

Khoa CNTT & Truyn Thng Trng i Hc Cn Th3.1 S cn thit phi phc hi d liu .................................................................. 88 3.2 Cc GD v s phc hi ................................................................................... 88 3.3 Cc tin ch phc hi .................................................................................. 89 4 Qun l giao dch trong Oracle: ............................................................................. 93 4.1 Tng quan ....................................................................................................... 93 5 Sao lu, phc hi trong Oracle: ............................................................................. 97 5.1 Sao lu ............................................................................................................ 98 5.2 Phc hi (recovery) ....................................................................................... 102

Phn thc hnhBI 1. LM QUEN VI ORACLE ............................................................................. 105 1 Ni dung ............................................................................................................... 105 2 Bi tp c hng dn............................................................................................ 105 3 Bi tp t lm ....................................................................................................... 115 BI 2. QUN L BNG D LIU............................................................................ 116 1 Ni dung ............................................................................................................... 116 2 Bi tp c hng dn............................................................................................ 116 3 Bi tp t lm ....................................................................................................... 118 BI 3. LP TRNH PL/SQL ........................................................................................ 120 1 Ni dung ............................................................................................................... 120 2 Bi tp c hng dn............................................................................................ 120 3 Bi tp t lm ....................................................................................................... 125 BI 4. HM TH TC ............................................................................................ 127 1 Ni dung ............................................................................................................... 127 2 Bi tp c hng dn............................................................................................ 127 3 Bi tp t lm ....................................................................................................... 128 BI 5. TRIGGER ......................................................................................................... 130 1 Ni dung ............................................................................................................... 130 2 Bi tp c hng dn............................................................................................ 130 3 Bi tp t lm ....................................................................................................... 132 BI 6. QUN L GIAO DCH, SAO LU V PHC HI ..................................... 133 1 Ni dung ............................................................................................................... 133 2 Bi tp c hng dn............................................................................................ 133 3 Bi tp t lm ....................................................................................................... 135 N TP ........................................................................................................................ 136 1 Ni dung ............................................................................................................... 136 2 Bi tp .................................................................................................................. 136 Ph lc........................................................................................................................... 139 1 Cc li thng gp ............................................................................................... 139 2 Cc hm x l d liu .......................................................................................... 140

Gio Trnh H Qun Tr C S D Liu trang 3

Khoa CNTT & Truyn Thng Trng i Hc Cn Th

DANH MC HNHHnh 1. Cc mc RAID ........................................................................................ 15 Hnh 2. Database Instance .................................................................................... 17 Hnh 3. Mi quan h gia Data block, extend v Segment .................................. 20 Hnh 4. Mi tng quan gia Tablespace v Datafiles ........................................ 21 Hnh 5. Quan h gia cu trc lun l v vt l trong CSDL .............................. 21 Hnh 6. Cp pht thm vng lu tr cho CSDL ................................................... 22 Hnh 7. Quy trnh m/tt CSDL Oracle ................................................................ 24 Hnh 8. Role trong database.................................................................................. 34 Hnh 9. Cu trc mt khi PL/SQL ...................................................................... 47 Hnh 10. Hai dng khi chng trnh PL/SQL ..................................................... 48 Hnh 11. V tr lu tr cc chng trnh trong schema ........................................ 61 Hnh 12. Cc s kin ca Trigger ......................................................................... 64 Hnh 13. T chc lu tr trong qu trnh thc hin giao dch cp nht CSDL .... 67 Hnh 14. Biu trng thi tng ng vi mt GD ............................................. 68 Hnh 15. Cc thnh phn lin quan vic qun l GD trong HQTCSDL .............. 70 Hnh 16. Cc lch trnh tun t ............................................................................. 72 Hnh 17. th ch c chu trnh .......................................................................... 82 Hnh 18. S phn cp ca mn ......................................................................... 87 Hnh 19. S c xy ra khi cc GD ang thc hin cnh tranh ............................. 89 Hnh 20. Cc la chn sao lu ton CSDL........................................................... 99 Hnh 21. Mt chin lc sao lu tng dn chnh lch ....................................... 101 Hnh 22. Mt chin lc sao lu tng dn tch ly ............................................ 101 Hnh 23. Nguyn l sao lu, hon li v phc hi CSDL .................................. 103 Hnh 24. Oracle Net Manager ............................................................................. 105 Hnh 25. t Net Service Name ......................................................................... 106 Hnh 26. Chn giao thc mng c s dng .................................................... 106 Hnh 27. Cc thit lp ca giao thc................................................................... 106 Hnh 28. Thit lp tn service ............................................................................. 107 Hnh 29. Kim tra kt ni ................................................................................... 107 Hnh 30. Thng bo kt ni thnh cng ............................................................. 107 Hnh 31. Giao din SQL Developer ................................................................... 108 Hnh 32. Kt ni trc tip ................................................................................... 108 Hnh 33. Kt ni thng qua Oracle Net .............................................................. 109 Hnh 34. Ca s chnh ca Oracle SQL Developer ............................................ 109 Hnh 35. Li ng nhp do cha c quyn kt ni n CSDL ........................... 110 Hnh 36. Dng cc bin ...................................................................................... 120 Hnh 37. Ca s nhp d liu ............................................................................. 120

Gio Trnh H Qun Tr C S D Liu trang 4

Khoa CNTT & Truyn Thng Trng i Hc Cn Th

DANH MC BNGBng 1. Mt s quyn h thng thng dng ......................................................... 30 Bng 2. Mt s quyn trn i tng thng dng ................................................ 32 Bng 3. Cc roles c nh ngha sn ................................................................ 36 Bng 4. Thng tin v cc roles ............................................................................. 37 Bng 5. Cc tham s trong lnh imp v exp ......................................................... 38 Bng 6. Cc tham s tng ng gia imp/exp v Oracle Data Pump .............. 40 Bng 7. Cc mu biu thc chnh quy .................................................................. 45 Bng 8. Cc kiu d liu trong Oracle ................................................................. 47 Bng 9. Cc ngoi l thng xy ra..................................................................... 57 Bng 10. Din gii cc thuc tnh ca con tr ...................................................... 59 Bng 11. Lch trnh cnh tranh ............................................................................. 71 Bng 12. Lch trnh gy mt d liu cp nht....................................................... 73 Bng 13. Lch trnh ph thuc vo GD khng hon tt ........................................ 74 Bng 14. Lch trnh phn tch khng nht qun. .................................................. 74 Bng 15. Lch trnh khng kh phc hi .............................................................. 75 Bng 16. Giao thc 2PL gii quyt vn mt d liu cp nht. ................... 79 Bng 17. Giao thc 2PL gii quyt vn ph thuc vo GD khng hon tt.... 79 Bng 18. Giao thc 2PL gii quyt vn phn tch khng nht qun. .............. 80 Bng 19. Lch trnh cun nhiu tng (cascade rollback). .................................... 80 Bng 20. Tnh trng kha cht .............................................................................. 81 Bng 21. S tng thch ca cc kha trong c ch kha a ht ......................... 87 Bng 22. Mt on ca tp tin nht k. ................................................................ 90 Bng 23. Cc mc c lp v cc hin tng c .................................................. 94 Bng 24. Bng tng thch ca cc kho ............................................................. 96

Gio Trnh H Qun Tr C S D Liu trang 5

Khoa CNTT & Truyn Thng Trng i Hc Cn Th

TNG QUAN MN HCMc ch yu cu Mn H qun tr CSDL l mt mn hc gip sinh vin nm c cc kin thc v cc k nng c bn qun tr mt CSDL quan h c phn quyn v bo mt. ng thi, sinh vin c kh nng s dng ngn ng lp trnh tng tc mnh m vi CSDL thng qua vic thit k v s dng th tc, hm v trigger. a s cc h qun tr s dng ph bin trn th trng hin nay u h tr cc tnh nng trnh by trong gio trnh ny. minh ha, phn mm c chn thc hnh l h qun tr CSDL Oracle 10g R2. Sinh vin s thc hnh trong 6 bui (30 tit) ng vi 6 bi thc hnh vi cc ch khc nhau. Sau khi hon tt hc phn ny, sinh vin c th: Kt ni, qun l CSDL (to/xa/khi ng/tt CSDL) . Qun l v cp quyn cho ngi dng v sao chp CSDL. Thc hin cc thao tc c bn trn CSDL (to bng, ci t rng buc trn bng; thm, sa, xa d liu). Lp trnh to hm, th tc, trigger vi ngn ng PL/SQL. Hiu c s iu khin cnh tranh gia cc giao dch. Qun l sao lu, phc hi. Hiu v ci t cc bin php bo v h thng CSDL. Ni dung ct li Ti liu gm 3 chng l thuyt v 6 bi thc hnh. Mi bi thc hnh s tp trung vo mt s ni dung vi cc bi tp c hng dn v bi tp t lm. Kin thc tin quyt Nh mt mn bt buc, mn hc ny c a vo ging dy cho sinh vin chuyn ngnh Cng Ngh Thng Tin vi yu cu sinh vin hon thnh hc phn H C S D Liu (CT106). Phng php hc tp Vi mc tiu nng cao kh nng t hc tp v t nghin cu ca sinh vin, ngi son c gng lng ghp vo ni dung cc v d minh ha n gin, c th; ng thi b tr b cc vi mong mun to s d hiu cho sinh vin v ngi c. hc tt mn hc ny, trc ht sinh vin cn phi: Tham gia y cc bui hc l thuyt trn lp v cc bui thc hnh trn phng my. Trc mi bui thc hnh, SV t nghin cu v lm phn bi tp c hng dn nh. Trong mi bui thc hnh, sinh vin ch thc hin phn bi tp khng c hng dn. Sinh vin cn lu li tt c cc cu lnh lm mi bi s dng cho cc bi sau. Gio Trnh H Qun Tr C S D Liu trang 6

Khoa CNTT & Truyn Thng Trng i Hc Cn Th Thi lng b tr cho tng chng, tng bi Chng I: Cc bin php bo v CSDL Chng II: Ngn ng SQL & PL/SQL 6t 2 bui LT 3t 1 bui LT

Chng III: Qun l giao dch, sao lu v phc hi 6t 2 bui LT Phn thc hnh: Bi 1: Lm quen vi Oracle, qun l ngi dng, 5t 1 bui TH import/export Bi 2: DDL & DML Bi 3: Ngn ng PL/SQL Bi 4: Hm, th tc Bi 5: Trigger Bi 6: Qun l giao dch & sao lu, phc hi CSDL 5t 1 bui TH 5t 1 bui TH 5t 1 bui TH 5t 1 bui TH 5t 1 bui TH

Mt s quy c to s d dng trong vic theo di gio trnh, cc phn quan trng c vit theo cc nh dng khc nhau v quy c nh sau: Phn quan trng CODE Cc k hiu trnh by trong c php ca cc cu lnh c ngha nh sau: CH HOA t kha ch thng t do ngi dng nh ngha, cn thay th khi vit lnh c th. {A | B} mc ny bt buc phi c, nhng c th chn A hoc B. [A] mc A ny khng bt buc. A ... mc A c th xut hin nhiu ln. ::= c thay bng

Gio Trnh H Qun Tr C S D Liu trang 7

Khoa CNTT & Truyn Thng Trng i Hc Cn Th

Chng 1 Cc bin php bo v CSDLTrong chng ny t mc 1 n mc 7 l l thuyt tng qut v cc bin php bo v CSDL bng my tnh. Ty theo tng HQTCSDL m mc v cch thc ci t cc bin php ny khc nhau. T mc 8 ca chng tr v sau s dng HQTCSDL Oracle minh ha cc bin php c th ny.

1 Cc bin php bo v bng my tnhAn ton trong CSDL (DB security) l s bo v CSDL khi nhng e da c ch hay v tnh thng qua cc bin php c s dng my tnh hoc khng c s dng my tnh Vic xem xt an ton khng ch p dng cho d liu trong CSDL, m cn bao gm c phn cng, phn mm v con ngi. Chng ta xem xt an ton CSDL trong cc tnh hung sau: CSDL b nh cp hay gian ln CSDL mt i tnh bo mt CSDL mt tnh ring t CSDL mt tnh ton vn CSDL mt tnh sn sng Nguy c (threat) l nhng tnh hung hay s kin, c th l c hay v tnh, s nh hng bt li n mt h thng v v vy nh hng n c t chc. Nguy c c th l hu hnh nh mt mt v phn cng, phn mm, d liu, hay v hnh nh s tn nhim ca khch hng. Mi nguy c phi c xem nh mt s vi phm an ninh c th xy ra. T chc phi nhn nh c tt c cc nguy c tim n, hay t ra l cc nguy c quan trng, t a ra cc k hoch phng trnh cng nh bin php i ph ph hp. Khi xy dng cc bin php ny cn lu chi ph thc hin v mc cn tr i vi ngi dng. C rt nhiu bin php bo v h thng khc nhau c th chia thnh 2 loi l cc bin php khng s dng my tnh v nhng bin php c s dng my tnh. Cc bin php khng s dng my tnh bao gm cc b tr thit b mt cch an ton, qun tr nhn s, chnh sch an ninh cng nh k hoch i ph vi nhng bt ng, Trong khun kh ca gio trnh ny, ta ch quan tm nhng bin php bo v c s dng my tnh. Cc bin php bo v bng my tnh cp trong gio trnh ny bao gm: Cp quyn (authorization) Khung nhn (Views) Sao lu v phc hi (Backup and restore) Ton vn d liu (Integrity) Mt ha (Encryption) Cng ngh RAID

Gio Trnh H Qun Tr C S D Liu trang 8

Khoa CNTT & Truyn Thng Trng i Hc Cn Th

2 Cp quynCp quyn l s gn quyn cho mt ngi dng hay chng trnh c th truy cp vo mt h thng hay mt i tng ca h thng. Chng thc ngi dng (authentication) l c ch xc nh mt ngi dng l ai. C ch chng thc ngi dng ph bin nht l s dng nh danh ngi dng cng vi mt khu, mc d cch ny khng th m bo mt cch hon ton. V vy, cn phi c nhng th tc i km nng cao tnh an ton cho h thng nh: Mt khu phi c gi kn v thay i nh k. nh danh v mt khu lu trong h thng phi dng m ha. a ra cc qui nh v thnh phn ca mt khu. ra cc th tc cn thit v theo di st vic cp quyn cho ngi dng. Mt s HQTCSDL s dng cc nh danh ngi dng ring, mt s s dng cc nh danh ngi dng ca h iu hnh bn di hoc h tr c hai. Ch s hu (ownership) ca mt i tng trong CSDL l ngi to ra i tng . Cc i tng c sn trong HQTCSDL s thuc v bn thn HQTCSDL m i din l nh qun tr CSDL (DBA). Ch s hu c mi quyn (privileges) trn i tng ca mnh v c th gn quyn trn i tng cho ngi khc. HQTCSDL ghi nhn tt c cc quyn gn cho ngi dng no v gn bi ai; c th duy tr ng n tp quyn trn tng ngi dng khi quyn c g b. Cc HQTCSDL c th h tr nhiu mc cp quyn khc nhau (mc ngi dng user hoc nhm ngi dng - role). nh danh ngi dng thng c u tin cao hn nh danh nhm. Mi ngi dng c to ra c th c gn 2 loi quyn: Quyn i tng (Object Privileges). Cc quyn ny cho php ngi dng thc hin cc thao tc no trn mt i tng ca CSDL; chng hn quyn SELECT, INSERT, UPDATE,.. d liu trong mt bng no . Quyn h thng (System Privileges): Cc quyn ny cho php ngi dng thc hin thao tc no trong CSDL nhng khng gn vi mt i tng tn ti no; chng hn quyn to bng, to view,..

2.1 Lnh SQL cp quyn:Cc quyn nh ngha bi chun ISO: SELECT, INSERT, UPDATE, DELETE, REFERENCES, USAGE Gn quyn trn i tng cho ngi dng bng lnh:GRANT {danh_sch_quyn | ALL PRIVILEGES} ON tn_i tng TO {danh_sch_nh_danh_c_cp | PUBLIC} [WITH GRANT OPTION]

Ty chn WITH GRANT OPTION cho php ngi dng c cp tip tc cp nhng quyn ny cho ngi khc. Lnh gn quyn h thng thng thng cng c cc H QTCSDL ci t tng t nhng b i mnh ON.

Gio Trnh H Qun Tr C S D Liu trang 9

Khoa CNTT & Truyn Thng Trng i Hc Cn Th

2.2 Lnh SQL thu hi quyn:Lnh REVOKE c dng g b quyn trn i tng khi ngi dng c cp:REVOKE [GRANT OPTION FOR] {ds_quyn| ALL PRIVILEGES} ON i_tng FROM {danh_sch_nh_danh_c_cp | PUBLIC} [RESTRICT | CASCADE]

RESTRICT: mc nh, s ngng thc thi lnh Revoke nu kt qu cu lnh lm nh hng n cc i tng ph thuc. CASCADE: Cc i tng ph thuc s b xa hoc g ra. Lnh thu hi quyn h thng thng thng cng c cc H QTCSDL ci t tng t nhng b i mnh ON.

3 Khung nhnKhung nhn l kt qu ng ca mt hoc nhiu thao tc quan h trn cc quan h c s (base table) sinh ra mt quan h khc. Mt khung nhn l mt bng o (virtual table), n khng thc s tn ti trong CSDL. Mt ngi dng c th c gn cc quyn thch hp trn mt khung nhn nh ngha trn nhiu bng. Bng cch ny ta s m bo tnh an ton cho d liu tt hn l gn quyn trn nhiu bng c s.

3.1 Lnh dng to view:CREATE VIEW tn_view [(tn_ct [,...])] AS cu_truy_vn [WITH [CASCADED | LOCAL] CHECK OPTION]

Cc dng i vo v ra khi view c gi l cc dng di c (migrating rows). WITH CHECK OPTION l ty chn m bo rng cc dng khng di c ra khi view qua cc thao tc insert v update trn view (ngha l, nu mt dng khng tha iu kin WHERE trong cu truy vn ca view th dng s khng c cp nht vo bng c s). Nu chn CASCADE th vic m bo ny cng p dng trn cc view nh ngha trn view ny (y l ch mc nh). Nu chn LOCAL th vic m bo ny cng p dng trn cc view nh ngha trn view ny tr khi dng cng di c khi view hay table nn ca view ny. V d minh ha sau y cho thy lnh UPDATE s khng c thc thi v n lm cho dng mun cp nht c sno = SG37 di c ra khi view high_salary.

Gio Trnh H Qun Tr C S D Liu trang 10

Khoa CNTT & Truyn Thng Trng i Hc Cn Th

3.2 Lnh dng xa viewDROP VIEW tn_view [RESTRICT | CASCADE]

Nu c cc i tng khc tham chiu view ny th trng hp c: RESTRICT: lnh ny s khng c thc hin CASCADE: lnh ny s xa lun c cc i tng kia.

3.3 Thun li v bt li ca vic s dng viewCc thun li khi s dng view l: c lp d liu: Mt view gip th hin mt bc tranh nht qun, khng i v cu trc ca CSDL, thm ch khi cc bng ngun bn di c thay i (nh thm, bt ct; mi quan h thay i; cc bng c tch ra, cu trc li, i tn). Tnh mi nht: mi s thay i d liu trong cc bng nn ngay lp tc c phn nh trong view. Nng cao tnh an ton: Nu mi ngi dng c cp quyn truy cp vo CSDL ch thng qua mt tp nh cc views cha d liu thch hp th s gii hn v qun l s truy cp ca ngi dng vo CSDL tt hn. Gim s phc tp: Mt view c th n gin ho cu truy vn, thay v phi truy vn trn nhiu bng th tr thnh truy vn trn mt bng. Thun tin: To s n gin cho ngi dng khi nhn vo CSDL ch thy nhng g h cn. Kh nng ty bin: view cung cp c ch tu chnh din mo ca CSDL, v vy c th to nhiu cch nhn khc nhau vo cng mt CSDL. Ton vn d liu: Nu mnh WITH CHECK OPTION c dng khi to view, th SQL m bo khng c dng no khng tho mnh WHERE trong nh ngha view m c cp nht thng qua view . Bt li: Hn ch cp nht: mi cp nht trong mt bng nn phi c phn nh ngay tc th trong tt c cc view c tham chiu n bng ny. Tng t nh vy, nu ta cp nht d liu thng qua view th cc bng nn cng thay i. Tuy nhin, c mt s gii hn nh sau: Gio Trnh H Qun Tr C S D Liu trang 11

Khoa CNTT & Truyn Thng Trng i Hc Cn Th Ch cho php cp nht trn cc view nh ngha trn 1 bng v c cha cc thuc tnh kho chnh hoc kho ng vin (kho duy nht). Khng cho php cp nht trn view lin quan n nhiu bng. Tuy nhin, iu ny c th khc phc bng cch s dng instead of trigger. Khng cho php cp nht trn view c kt tp hay nhm d liu. Hn ch cu trc: cu trc ca view c xc nh thi im to ra n. Nu trong nh ngha, ta dng SELECT * FROM th view s ly tt c cc ct. Nhng nu sau bng nn c thm ct mi th ct mi ny s khng c mt trong view tr khi ta xo view v to li n. Hiu qu hot ng: Khi s dng view ta phi mt mt t thi gian thc thi cu lnh select trong view. Trong mt s trng hp, thi gian ny khng ng k; trong nhng trng hp khc n c th l mt vn .

4 Sao lu v phc hiSao lu l qu trnh sao chp CSDL v cc tp tin nht k (c th k c chng trnh) vo cc thit b lu tr d phng mt cch nh k. y l cng vic ca cc nh qun tr CSDL v cn phi thc hin mt cch c t chc, cc qui nh, bc thc hin sao lu phi c m t r rng. Sao lu l mt cch bo v d liu chng li cc li ng dng v s mt mt d liu khng mong i. Nu d liu gc b mt, chng c th c xy dng li t bn sao lu. Thng tin v phin bn sao lu phi chnh xc. Bn sao lu phi c lu tr nhiu ni. Ni lu tr cc bn sao lu phi c m bo an ton. Cc HQTCSDL ngy nay thng h tr chc nng t ng thc hin sao lu theo lch trnh nh trc ca nh qun tr. Ta c th la chn thc hin sao lu ton b CSDL (complete backup) hoc ch sao lu cc thay i mi din ra (incremental backup) k t ln sao lu trc. Thng thng, cc bn sao lu ny c lu trong b lu tr offline nh bng t. Nu c s c lm cho CSDL b hng, cc bn sao chp d phng v cc chi tit lu trong cc tp tin nht k s c s dng phc hi li h thng v tnh trng n nh gn nht c th. Qu trnh phc hi ny cng cn phi c m t r rng v phi t chc kim th thng xuyn m bo h thng c th phc hi nu c s c. im kim tra (checkpoint): L im din ra s ng b gia CSDL v tp tin nht k giao dch. Ti thi im ny, tt c cc vng m s c ghi ra b lu tr th cp v mt mu tin kim tra s c ghi vo trong nht k. C ch ny gip cho cc cp nht ang din ra trn CSDL c ghi ra ngoi a. Cc k thut ny s c tho lun chi tit hn trong chng qun l giao dch.

5 Ton vn d liuVic qun l ton vn cng gp phn duy tr mt h thng CSDL an ton, bo v d liu lun lun hp l, khng b sai. RBTV thng c chia lm 4 loi v cc HQTCSL hin nay h tr nhiu cng c cho php ci t hu ht cc rng buc ny trong CSDL thay v phi lp trnh trong ng dng nh trc kia: Gio Trnh H Qun Tr C S D Liu trang 12

Khoa CNTT & Truyn Thng Trng i Hc Cn Th Rng buc v kha hay rng buc thc th: PRIMARY KEY, UNIQUE KEY Rng buc v min tr: CHECK CONSTRAINT, DEFAULT VALUE Rng buc v tham chiu: FOREIGN KEY Rng buc khc: PROCEDURE, FUNCTION, TRIGGER Cc cng c ci t ba loi rng buc u c hc trong hc phn H CSDL. Trong hc phn ny s tip tc hc cc cng c ci t loi rng buc cn li.

6 Mt ho d liuNu h CSDL lu gi cc d liu quan trng th cn lu m ho d liu trnh cc nguy c t bn ngoi hay truy cp tri php c th xy ra. Mt s h QTCSDL cung cp tin ch m ha nhm mc ch ny. Mt ha l s m ha d liu bng mt gii thut c bit lm cho d liu khng th c c nu khng c kha gii m (decryption key). C nhiu k thut m ha d liu, c th chia thnh 2 loi: Kh o (reversible): C th gii m d liu v nh ban u. Bt kh o (irreversible): khng cho php gii m d liu v nh ban u. Mt h thng mt ha kh o bao gm: kha m, gii thut m ha, kha gii m v gii thut gii m. C hai loi h thng mt ha: i xng (symmetric): H thng i xng s dng cng 1 kha m v gii m chng hn nh DES (Data Encryption Standard) do IBM pht trin. Gii thut chuyn mi khi vn bn 64-bit s dng kho 56-bit. DES c cho l cha an ton lm, cn phi c kho di hn na. H m ho PGP (Pretty Good Privacy) v vy s dng kho 128-bit. Bt i xng (asymmetric): s dng cc kha khc nhau m v gii m. in hnh l h thng mt ha kha cng cng public key cryptosystems nh RSA, mi i tng s c 2 kho: kho ring (private key) v kho cng cng (public key). Ngi A mun gi thng ip n ngi B s dng kho cng cng ca B m ho, khi ch c B mi c th c c thng ip v B mi c kho ring tng ng gii m. H m ho ny cng c dng gi ch k in t km theo thng ip chng t thng ip n t ngi k ln thng ip. Thng thng, gii thut i xng chy nhanh hn. Nhng trong thc t, ta thng dng phi hp c hai loi. H thng dng kho cng cng m ho mt kho sinh ra ngu nhin, v kho ngu nhin ny c gii thut i xng dng m ho thng ip.

Gio Trnh H Qun Tr C S D Liu trang 13

Khoa CNTT & Truyn Thng Trng i Hc Cn Th

7 RAID (Redundancy Array of Independent Disks)Mt trong cc phn cng c nguy c b h v nh hng nghim trng n h CSDL l cc a cng. m bo cho h thng vn c th hot ng cho d s c c xy ra, mt gii php ra i, l cng ngh RAID. RAID hot ng bng cch sp xp mt dy cc a c lp ci tin tin cy v tng hiu sut hot ng cho h thng. Hiu sut c tng ln nh k thut tho ri d liu (data stripping): d liu c chia thnh cc phn bng nhau v c phn phi cho nhiu a mt cch trong sut. iu ny to cho ta c v nh c mt a ln, vi tc nhanh t cc a nh hn. K thut ny ci tin hiu sut vo/ra a bng cch cho php nhiu dch v vo/ra thc hin song song. ng thi cng cn bng ti gia cc a. tin cy c ci tin nh vic lu tr thng tin lp li trn nhiu a s dng c ch chn l (parity) hay c ch sa li (error-correcting). Mi byte c lu km thm 1 bit cho bit s bit 1 trong byte l chn hay l. Nu c bit no b li th gi tr ca bit chn l s khng cn trng khp vi s bit 1 trong byte. C ch sa li th cn thm vi bit na cho mi byte c th phc hi li bn gc khi c 1 bit b h. C nhiu mc RAID ng vi nhiu mc cu hnh a khc nhau: RAID 0 Khng d tha (Nonredundant): khng lu d liu lp li do to hiu sut ghi tt nht v khng cn phi lp li vic cp nht. Vic chia d liu c thc hin mc khi. RAID 1 phn chiu (mirror): Mc ny duy tr hai phin bn d liu ging ht nhau trn cc a khc nhau. duy tr tnh nht qun khi c li xy ra, vic ghi c th khng c thc hin ng thi. y l gii php lu tr t tin nht. RAID 0 + 1 Gii php ny kt hp c phn chia v phn chiu. RAID 2 Memory-style error-correcting codes (MSECC): Vi mc ny, n v phn chia l bit v m Hamming c s dng nh l c ch d tha c th sa li. RAID 3 Bit-interleaved Parity: Mc ny cung cp d tha bng cch lu tr thng tin chn l trn mt a trong dy a. Thng tin ny c th c s dng phc hi d liu trn cc a kia nu chng b h. Mc ny s dng t khng gian lu tr hn RAID 1 nhng a chn l c th tr thnh mt nt c chai. RAID 4 Block-interleaved Parity: Vi mc ny, n v chia d liu l 1 khi a Khi chn l c duy tr trn mt a ring bit cho cc khi tng ng t mt s a khc. Nu mt trong cc a b li, khi chn l c dng kt hp vi cc khi tng ng t cc a khc phc hi li cc khi a h. RAID 5 Block-interleaved Distributed Parity: Mc ny s dng d liu chn l tng t nh mc 3 nhng chia d liu chn l c chia ra lu trn nhiu a, tng t nh cch chia d liu ngun. iu ny trnh tnh trng nt c chai a chn l nh mc 3. RAID 6 P+Q Redundancy: Mc ny tng t nh mc 5 nhng c thm d liu d tha bo v h thng khi c nhiu li xut hin trn a. Khi m sa li s c dng thay cho m chn l. Vic chn la mc RAID no ci t cho h thng ph thuc vo nhiu yu t nh bn cht d liu, chi ph, mc quan trng ca d liu,v.v.

Gio Trnh H Qun Tr C S D Liu trang 14

Khoa CNTT & Truyn Thng Trng i Hc Cn Th

Hnh 1. Cc mc RAID. Cc con s biu th cho cc khi d liu tun t v cc k t ch cc phn on ca mt khi d liu.

Gio Trnh H Qun Tr C S D Liu trang 15

Khoa CNTT & Truyn Thng Trng i Hc Cn Th

8 Cc khi nim v cu trc lu tr CSDL Oracle8.1 Gii thiuOracle Database l phn mm HQTCSDL c cung cp bi cng ty Oracle. Nhn chung, cc HQTCSDL u c kh nng qun l mt cch tin cy s lng ln d liu trong mi trng a ngi dng, sao cho nhiu ngi dng c th truy cp ng thi cng mt d liu m vn gi c tnh nht qun ca d liu . HQTCSDL cng cn c bo v chng li cc xm nhp tri php v c kh nng phc hi d liu khi c li xy ra. Bn pht hnh gn y nht ca Oracle Database l 11g, bn ny gm cc phin bn sau: Standard Edition One (SE1) cung cp cc tnh nng d s dng, mnh m cho cc nhm lm vic, cc n v phng ban v cc ng dng web. Standard Edition (SE) c thit k cho cc my ch n hoc phn tn. Enterprise Edition (EE) cung cp qun l d liu mt cch hiu qu, tin cy v bo mt cho cc ng dng x l giao dch trc tuyn (OLTP), cc ng dng qun l ni dung v web 2.0. C 3 phin ca Oracle Database 11g u c xy dng da trn kin trc chung v hon ton tng thch vi nhau. Cc phin bn ny u c kh nng trin khai trn cc h iu hnh khc nhau (Windows, Linux, Unix) v km theo rt nhiu cng c h tr pht trin ng dng cng nh cc th vin lp trnh. Ch g trong Oracle Database 11g l vit tt cm t Grid Computing (tnh ton li GC). y l kin trc mi ca ngnh cng ngh thng tin trong thit k v ci t cc h thng thng tin. Vi GC, nhm cc phn cng c lp cng vi cc thnh phn phn mm c kt ni nhau v c phn phi theo yu cu thay i ca ti cng vic (workloads). So vi cc kin trc trc y, GC cung cp dch v c cht lng cao hn v chi ph thp hn. Dch v c cht lng cao v GC khng c s c do mt thnh phn n l gy ra v c mt kin trc bo mt mnh m. Chi ph thp do GC gia tng ti a kh nng s dng cc ti nguyn h thng. Cc phn cng hoc thnh phn phn mm rnh ri khng cn tn hin cho mt tc v chuyn bit m s c cp pht cho cc tc v khc c nhu cu s dng. V hc phn ny c xem nh l phn nhp mn, cung cp cho sinh vin cc kin thc c bn v H qun tr CSDL ni chung v H qun tr Oracle ni ring, chng ti thit k cc bi thc hnh trn phin bn Oracle 10g R2 vi y cc tnh nng c bn v i hi cu hnh my thc hnh nh nhng hn so vi cc phin bn Oracle 11g.

8.2 Database v InstanceCc HQTCSDL u dng c b nh my tnh v cc thit b lu tr nh cng hot ng. Cc cng cung cp kh nng lu tr lu di v mt khng gian rng ln cha hng triu mu tin c th ln n hng gigabyte. Tuy nhin, truy cp d liu t cng chm hn nhiu so vi truy cp t b nh. V th cc h CSDL u s dng b nh vo vic np trc d liu nhm tng tc truy vn. Gio Trnh H Qun Tr C S D Liu trang 16

Khoa CNTT & Truyn Thng Trng i Hc Cn Th Trong Oracle, mt CSDL (database) l mt tp hp cc tp tin h thng lu tr d liu do ngi dng hoc chng trnh a vo v thng tin v cu trc ca CSDL (metadata). c th truy vn v cp nht CSDL, Oracle phi khi ng mt s tin trnh nn v cp pht mt vi vng nh s dng trong sut qu trnh thao tc trn CSDL. Khi mt CSDL c khi ng (start), mt SGA (System Global Area) c cp pht v cc tin trnh nn (Oracle background processes) c khi ng. S kt hp gia SGA v cc tin trnh nn c gi l th hin CSDL (Database Instance hoc Oracle Instance). SGA l mt vng nh chia s dng lu tr d liu v cc thng tin iu khin ca mt th hin (instance). Khi kt ni n server, ngi dng c chia s cc d liu c trong SGA. Vng nh ny s c gii phng khi th hin c tt (shutdown) v mi th hin c mt SGA ring bit. Mt tin trnh l mt c ch hot ng trong h iu hnh, n thc hin mt dy cc bc lin tip nhau v c mt vng nh ring. Cc tin trnh nn trong Oracle c chia thnh 2 dng: tin trnh ngi dng (user process) v tin trnh my ch (server process). Tin trnh ngi dng c to ra v duy tr nhm thc thi cc m lnh ca cc trnh ng dng (nh Oracle Forms, ...) hay cc cng c Oracle (nh Oracle Enterprise Manager, Database Configuration Assistance, ...). Tin trnh my ch c nhim v iu khin cc yu cu t cc tin trnh ngi dng c kt ni. Khi tin trnh my ch khi ng, Oracle cng cp pht mt vng m b nh PGA (Program Global Area) cha ng d liu v thng tin iu khin cho mi tin trnh ny. Nhn chung, mi th hin c mt tp hp cc tin trnh duy tr v thc p mi quan h gia cu trc vt l ca CSDL v cu trc b nh. S lng cc tin trnh ph thuc vo cu hnh ca mi th hin CSDL. Trong mt server, nhiu CSDL c th tn ti song song. V vy, khng b ln ln gia cc CSDL khc nhau, mi th hin CSDL c nhn dng bng mt SID ring bit (System Identifier). Mt CSDL c th c m (open hay mount) bi nhiu hn mt th hin, nhng mt th hin ch c th m nhiu nht mt CSDL m thi.

Hnh 2. Database Instance

8.3 Cu trc lu tr ca CSDL OracleTrong h qun tr Oracle, mt CSDL c cu thnh bi 2 cu trc: lun l v vt l. Cu trc lun l m t cc vng nh dng lu tr cc i tng nh cc Gio Trnh H Qun Tr C S D Liu trang 17

Khoa CNTT & Truyn Thng Trng i Hc Cn Th bng, cc hm Ngc li, cu trc vt l c xc nh bi cc tp tin h thng hnh thnh nn CSDL. 8.3.1 Cu trc vt l (physical database structure) Cu trc vt l lin quan n cc tp tin c lu tr trn thit b phn cng, chng lin quan n vn lu tr d liu, cc tham s, nht k, lu vt, sao lu m bo h thng hot ng n nh. 8.3.1.1Datafiles Oracle lu tr d liu trong cc datafiles (c phn m rng *.dbf) tng ng vi tablespace. Bn cht ca mt CSDL l mt tp hp cc datafiles c lu tr trn cc thit b khc nhau nh a t, a quang hc Datafile c cc tnh cht sau: Mi datafile ch lin kt vi mt CSDL. Datafile c mt s c tnh c th m rng t ng khi ln ca CSDL vt qu gii hn. Mt hoc nhiu datafiles to thnh mt n v lu tr lun l c gi l tablespace. D liu trong datafile c c trong lc thc thi ca CSDL v c lu tr trong b nh m ca phn mm Oracle nhm tng tc truy cp. D liu c thm mi hoc sa i khng nht thit c ghi ngay lp tc ln datafile. gim s lng truy cp thit b lu tr v tng hiu qu thc thi, cc d liu ny c lu tm trong b nh v c ghi ng lot ln cc datafile vo mt thi im nh sn. Nhim v ny c m trch bi tin trnh nn Database Background Writer (DBWn). 8.3.1.2Control Files Cc Control Files c phn m rng *.ctl. Mi th hin CSDL c t nht 1 tp tin dng ny. N rt cn thit cho hot ng bnh thng ca CSDL. Cc tp tin ny c cp nht thng xuyn trong qu trnh hot ng ca CSDL, v vy n lun c t vo ch ghi khi CSDL c m. V l do no cc tp tin khng truy cp c, CSDL s khng hot ng ng n. Cc Control Files ghi nhn cc thng tin ca CSDL nh tn CSDL, cc thng tin v tablespace v cc redo-log file Control File cn c dng trong thao tc phc hi d liu. 8.3.1.3Redo Log Files Cc tp tin Redo Log c phn m rng *.rdo hoc *.log. Mi th hin CSDL duy tr mt tp hp cc tp tin dng ny ghi li ton b cc giao dch (transaction) v cc thay i trn datafiles. Khi CSDL b li, cc tp tin ny c dng phc hi li d liu n thi im mu tin redo cui cng c ghi. Mi CSDL duy tr t nht 2 nhm tp tin Redo Log v mi tp tin ch thuc vo mt nhm. Ti mi thi im, ch mt nhm tp tin trng thi hin thi ghi nhn cc mu tin redo. Khi dung lng vt qu gii hn, nhm ny s chuyn trng thi hin thi sang nhm khc. 8.3.1.4Archived Redo Log Files V Oracle s dng xoay vng cc nhm tp tin redo log, nn c kh nng mt nhm tp tin c cha cc mu tin redo b ghi v nh vy thng tin redo b tht Gio Trnh H Qun Tr C S D Liu trang 18

Khoa CNTT & Truyn Thng Trng i Hc Cn Th lc. V vy, Oracle phi m bo cc tp tin ny khng b ghi nu cha c lu ra tp tin Archived Redo Log. Khi mt th hin CSDL c thc thi di ch ARCHIVELOG, tin trnh ARCH ca Oracle s dng cc tp tin dng ny lu li cc mu tin redo trn nhm tp tin redo log. 8.3.1.5Parameter Files Tp tin ny lu tr cc thng s cu hnh cho th hin v CSDL nh: ln ca datablock, ng dn n ni lu tr datafiles, ln ca vng nh SGA, s sessions, s processes Ngoi ra, CSDL Oracle cn c Server Parameter File (SPFILE) lu tr cc thng s khi ng ca CSDL, nh qun tr c th thay i cc thng s trc tip trn tp tin ny theo nhu cu h thng. 8.3.1.6Alert v Trace Log Files Mi tin trnh nn v my ch u c th lu vt hot ng trn mt Trace Log File tng ng. Mi khi c mt li ni ti trong tin trnh, thng tin v li c ghi ra tp tin. Phn ln thng tin ghi ra Trace Log File dnh cho nh qun tr CSDL, cc thng tin khc phc v cho dch v h tr ca Oracle (Oracle Support Service). Cc thng tin ny cn c dng iu chnh cc ng dng v th hin CSDL. 8.3.1.7Backup Files y l cc tp tin c nh dng c bit c nh ngha bi Oracle. Cc tp tin ny phc v cho qu trnh khi phc CSDL mi khi c s c v thit b lu tr hay li do ngi dng gy ra. 8.3.2 Cu trc lun l (logical database structure) Cu trc lun l bao gm data block, extend, segment v tablespace; m t cc vng nh lu tr d liu v cho php Oracle iu khin vic s dng a cng n mc nh nht. 8.3.2.1Data blocks n v lu tr nh nht c dng trong CSDL, c xc nh bi mt s bytes nht nh trong vng nh vt l ca CSDL. ln ca data block c xc nh khi CSDL c to ra v c nh ngha bi tham s khi to DB_BLOCK_SIZE. 8.3.2.2Extends n v lu tr lun l nh nht c cp pht cho mt i tng CSDL, bao gm mt dy lin tc cc khi d liu (data blocks) c cp pht lu tr mt kiu thng tin nht nh. 8.3.2.3Segments

Gio Trnh H Qun Tr C S D Liu trang 19

Khoa CNTT & Truyn Thng Trng i Hc Cn Th Tp hp cc extent c cp pht lu tr cc cu trc d liu nht nh v cc extent ny c lu tr trong cng mt tablespace. V d, d liu ca mt bng c lu trong mt table segment, cc ch mc c lu trong cc index segment Khi cc extent cp pht cho segment y d liu, Oracle s cp pht thm extent cho segment . V cc extent c cp pht khi cn thit nn cc extent trong cng mt segment c th khng lin tc trong b nh. Mt s loi segments c nh ngha trong Oracle: Data segment: d liu ca cc bng c lu trong cc extends ca data segment. Index segment: lu tr cc thng tin v ch mc. Temporary segment: c t Hnh 3. Mi quan h gia Data block, ng to ra bi Oracle mi extend v Segment khi cu lnh SQL cn mt vng lu tr d liu tm thi hon tt thc thi. Khi cu lnh SQL kt thc hot ng, vng nh ny c gii phng v tr li h thng cho cc yu cu khc. Rollback segment: khng cha cc i tng CSDL, m cha hnh nh trc (before image) ca d liu c thay i trong khi mt giao tc cha hon thnh. Cc thay i trn d liu c th c cun li bng cch s dng segment ny. 8.3.2.4Tablespace Mt CSDL c chia thnh cc phn vng lun l c gi l tablespaces. Tt c cc i tng ca CSDL u c lu tr trong cc tablespace. V mt vt l, mi tablespace bao gm mt hoc nhiu datafiles. T phin bn 10g tr i, mt CSDL Oracle c t nht mt tablespace mang tn SYSTEM cha t in d liu (data dictionary) v mt mang tn SYSAUX nhm chia ti vi SYSTEM. Cc tablespace khc c to ra nhm phc v cho cc ng dng v cc tc v khc nhau.

Gio Trnh H Qun Tr C S D Liu trang 20

Khoa CNTT & Truyn Thng Trng i Hc Cn Th

Hnh 4. Mi tng quan gia Tablespace v Datafiles

Cc tablespace c th t ch smallfile hoc bigfile khi c to ra. Smallfile l ch truyn thng, tablespace c th n 1022 datafiles. Bigfile l ch c t phin bn 10g, tablespace ch cha 1 datafile nhng c ln n 232 data blocks, ty theo ln ca data block, bigfile tablespace c ln n 8 exabytes (1 exabyte = 1018 bytes). Ch ny cho php Oracle s dng kh nng ca h thng 64bit to v qun l cc tp tin c dung lng cc ln.

Hnh 5. Quan h gia cu trc lun l v vt l trong CSDL

Tablespace c th t ch online (truy cp c) hoc offline (khng truy cp c). Tablespace thng c t ch online ngi dng c th truy cp d liu. Tuy nhin, i khi nh qun tr cn t mt tablespace ch offline nhm mc ch bo tr, ngi dng ch khng truy cp c tablespace ny nhng vn truy cp c cc tablespaces khc trong CSDL. Oracle nh ngha 3 loi tablespaces khc nhau: Tablespaces c nh (permanent tablespace) cha cc i tng CSDL tn ti lu di (persistent schema objects), cc i tng ny c lu trong datafile. Undo tablespace l mt kiu khng gian d liu c nh c dng qun l vic hon tc d liu (undo data) nu CSDL c t di ch qun l hon tc t ng (automatic undo management). Oracle khuyn co s dng undo tablespace thay v s dng rollback segment cho vic hon tc d liu. Tablespaces tm thi (temporary tablespace) cha cc i tng CSDL trong mt phin lm vic. Tablespace dng ny c dng qun l vng nh cho cc thao tc sp xp (sort operations) trn CSDL. V d, nu ta kt ni hai Gio Trnh H Qun Tr C S D Liu trang 21

Khoa CNTT & Truyn Thng Trng i Hc Cn Th bng d liu rt ln, Oracle khng th thc hin thao tc sp xp trong b nh, mt vng nh s c cp pht trong temporary tablespace thc hin thao tc ny. Cc lnh SQL cn cung cp vng nh thc hin thao tc sp xp gm: CREATE INDEX, ANALYZE, Select DISTINCT, ORDER BY, GROUP BY, UNION, INTERSECT, MINUS, Tablespace lu tr nhiu loi i tng gin (schema object) nh bng, ch mc, hm, th tc, trigger, Bng d liu ch l mt loi i tng gin , c nh danh duy nht bi tn v bao gm nhiu hng lu tr d liu, mi hng c gi l 1 tuple hay 1 record. Mt bng d liu c th c nhiu ct. Mi ct c nh ngha bi 1 tn v 1 kiu d liu, m t thuc tnh ca 1 b (tuple). Mt bng d liu c th c ti a 254 ct c kiu d liu ging nhau hoc khc nhau. 8.3.3 Cp pht thm vng lu tr cho CSDL Ta c 3 cch m rng vng lu tr cho CSDL : B sung thm datafile cho tablespace. To mt tablespace mi. Tng vng nh ca datafile.

B sung thm datafile

To tablespace mi

Tng vng nh ca DatafileHnh 6. Cp pht thm vng lu tr cho CSDL

Gio Trnh H Qun Tr C S D Liu trang 22

Khoa CNTT & Truyn Thng Trng i Hc Cn Th

8.4 Schema v schema objectsSchema l mt tp hp cc i tng CSDL (database object hoc schema object) thuc v mt ngi dng. Mi ngi dng trong 1 CSDL s hu duy nht mt schema c tn trng vi tn ngi dng, ngc li mi schema ch tng ng vi mt ngi dng m thi. Schema Object l cu trc lun l lin quan trc tip n d liu ca CSDL, bao gm cc cu trc nh bng (table), khung nhn (view), cc th tc tr sn (stored procedure) Cc schema objects thng dng: Bng d liu: n v lu tr d liu c bn nht trong CSDL Ch mc: cu trc ty chn kt hp vi bng d liu, c s dng nhm tng hiu qu kt xut d liu. Khung nhn: cch biu din d liu t mt hoc nhiu bng hoc cc khung nhn khc. Thc cht, khung nhn khng cha ng d liu m c xem nh mt cu truy vn tr sn (stored query). D liu trong khung nhn c th c cp nht, xa, thm mi nh bng d liu vi mt s hn ch. Mi thay i trn khung nhn nh hng trc tip n cc bng d liu hoc khung nhn khc c lin quan. Synonym: l b danh cho mt schema object bt k hoc mt synonym khc. Thng tin v synonym c lu tr trong t in d liu.

8.5 Data dictionaryT in d liu l mt tp hp cc bng (table) v khung nhn (view) ging nh cc CSDL khc, l ni lu tr cc thng tin v cu trc vt l v lun l ca CSDL. Cc thng tin ny bao gm: Thng tin ngi dng (quyn, vai tr) Rng buc ton vn ca cc bng d liu. Tn v kiu d liu ca cc ct trong bng d liu. Thng tin v vng nh c cp pht v s dng ca cc schema object. Th hin CSDL lun truy cp n t in d liu phn tch c php cu lnh SQL. SYS l ch nhn v l ngi dng duy nht c ton quyn thao tc trn cc bng v khung nhn ca t in d liu. tham kho cc bng v khung nhn ca t in d liu, s dng cu lnh:SELECT * FROM DICT[IONARY]

9 M/tt CSDL v th hin (startup/shutdown)9.1 Gii thiuMi CSDL Oracle trng thi thc thi u kt hp vi mt th hin CSDL ( database instance). Khi CSDL c khi ng trn mt my ch, Oracle cp pht vng nh SGA v khi ng cc tin trnh nn ca phn mm. S kt hp gia SGA v cc tin trnh c gi l th hin CSDL. Sau khi khi ng th hin, Oracle kt hp th hin vi CSDL tng ng, lc ny ta ni CSDL c lin kt (mounted database). Khi , CSDL sn sng c m (open) ngi dng truy cp. Gio Trnh H Qun Tr C S D Liu trang 23

Khoa CNTT & Truyn Thng Trng i Hc Cn Th Ch duy nht nh qun tr CSDL c quyn khi ng th hin v m CSDL, cng nh tt CSDL v gii phng th hin. Alter database openMOUNT

OPEN

SHUTDOW

Ch : vic m/tt c s d liu bng lnh c thc hin trong chng trnh SQL*Plus.

9.2 M CSDLCch n gin nht m CSDL l s dng dng lnh startup, dng lnh ny s a CSDL t trng thi shutdown ln open. Trng thi nomount Khi thc hin lnh startup, u tin CSDL i vo trng thi nomount. Trong sut trng thi ny, Oracle c tp tin cha cc thng s khi ng (init.ora) ly thng tin v cu hnh CSDL nh ln vng nh SGA, Tip theo, Oracle khi ng th hin CSDL vo cui trng thi nomount. i vi mt s thao tc khi phc (recovery) yu cu CSDL phi trng thi nomount, chng ta dng lnh startup nomount. Nu s dng lnh startup, CSDL s tip tc t ng chuyn sang trng thi mount. Trng thi mount Khi vo trng thi ny, Oracle m tp tin iu khin (control file) c thng tin v v tr ca cc data files v cc thng tin v cu trc vt l khc. Khi nh dng v tr ca cc data files, CSDL sn sng c m. i vi mt s thao tc khi phc (recovery) yu cu CSDL phi trng thi mount, chng ta dng lnh startup mount. Nu th hin c khi ng bng lnh startup nomount, vo trng thi mount, chng ta dng lnh alter database mount. Nu s dng lnh startup, CSDL s tip tc t ng chuyn sang trng thi open. Trng thi open Nu CSDL ang trng thi mount, chng ta dng lnh alter database open vo trng thi open. Khi a CSDL vo trng thi open, Oracle truy cp n tt c cc data file lin quan n CSDL. Khi , Oracle m bo tnh nht qun ca tt c data files. Vo lc ny, CSDL sn sng cho ngi dng truy cp d liu. Gio Trnh H Qun Tr C S D Liu trang 24

STARTUP

Alter database mount Startup nomountSHUTDOWN NOMOUNT

Hnh 7. Quy trnh m/tt CSDL Oracle

Khoa CNTT & Truyn Thng Trng i Hc Cn Th Ngoi cch khi ng thng thng, chng ta c th khi ng CSDL ch hn ch (restrict mode) bng cu lnh cu lnh startup restrict. ch ny, ch nhng ngi dng c quyn c bit (SYS, SYSTEM) mi c th truy cp CSDL. Nu CSDL c m, chng ta dng lnh alter system enable restrict session a CSDL vo trng thi ny. Ngc li, ta dng lnh alter system disable restrict session.

9.3 Tt CSDLMt s thao tc yu cu nh qun tr phi ng CSDL nh thay i cu hnh, sao lu d liu hay nng cp phn mm Oracle. Khi , ta s dng lnh shutdown. ng CSDL cng tri qua mt s trng thi theo quy trnh ngc li so vi m CSDL. Tuy nhin, ta ch c th a CSDL v trng thi shutdown m khng dng li cc trng thi trung gian c. ng CSDL: Oracle ghi tt c thng tin d liu t SGA ra data files v redo log files. Tip theo, tt c data files v redo log files c ng li. V th, CSDL khng cn truy cp c. Tuy nhin, control files vn cn c m v CSDL vn c lin kt. Ngt lin kt (unmount): Oracle ngt lin kt gia th hin v CSDL. Lc ny, control files c ng li v th hin vn cn trong b nh. Tt th hin: th hin c gii phng khi vng nh v cc tin trnh nn kt thc thc thi. CSDL Oracle c th c ng 3 ch khc nhau: Ch bnh thng (normal): dng lnh shutdown. y l ch mc nh, CSDL ch tt khi tt c cc thao tc trn CSDL kt thc. Tt c thay i trn d liu u c ghi ln data files. Tuy nhin, ch ny t dng v i hi Oracle phi ch i tt c ngi dng log off khi CSDL. Nu mt ngi dng no ng nhp v qun tt phin lm vic, CSDL c kh nng khng bao gi tt c. Ch tc khc (immediate): dng lnh shutdown immediate. Ch ny ngn chn cc truy cp mi, cun li tt c cc giao dch cha hon tt v tt CSDL. Tt c thay i trn d liu u c ghi ln data files Ch d b (abort): dng lnh shutdown abort. y l cch tt CSDL p buc, cch ny t c s dng v nh hng n d liu v mi thay i s khng c ghi ra data files v cc giao dch khng c cun li. y l la chn cui cng nu CSDL khng tt c bng cc ch khc.

10 Oracle NetOracle Net l mt middleware c ci t trn Oracle Client v Oracle Database Server. Oracle Net cung cp cc gii php kt ni trong mi trng tin hc khng ng nht v phn tn, gip cho vic cu hnh v qun l mng d dng hn. Oracle Net cho php thit lp mt phin kt ni mng (network session) t mt ng dng trnh khch (Client Application) n my ch CSDL (Database Server). Mt khi phin kt ni mng c thit lp, Oracle Net ng vai tr nh mt knh trao i d liu Gio Trnh H Qun Tr C S D Liu trang 25

Khoa CNTT & Truyn Thng Trng i Hc Cn Th gia ng dng khch v my ch. N c nhim v thit lp, qun l kt ni mng v trao i cc thng ip (messages) gia trnh khch v my ch. Phin kt ni mng c thit lp thng qua listener module, mt tin trnh c lp ca my ch CSDL. Listener nhn cc yu cu kt ni ca trnh khch v qun l vic dn ng n my ch. Mi khi trnh khch yu cu kt ni, listener nhn yu cu ny. Nu thng tin cung cp bi trnh khch tng ng vi cc thng tin ca listener, trnh khch c php truy cp n my ch. i vi client, database l mt dch v (service) thc thi cng vic thay cho client. y dch v m database cung cp cho client chnh l lu tr d liu v gi li d liu khi cn. Khi kt ni, client nhn bit database qua tn dch v (service name) mc nh trng vi global database name (kt hp ca tn CSDL v tn min). yu cu thit lp kt ni, ngi dng phi gi i tn ti khon, mt khu cng nh danh (identifier) ca dch v cn kt ni. nh danh ny c gi l nh danh kt ni cho php xc nh: Dch v cn kt ni. ng dn mng n dch v ny. nh danh kt ni c th c biu th bng nhiu cch. Cch thc c p dng rng ri nht l tn dch v mng (net service name) tng ng vi mt m t kt ni (connect descriptor). M t ny cha ng cc thng tin v dch v cn kt ni v ng dn mng. Dch v c xc nh bi tn ca dch v (tn ca CSDL). ng dn mng cung cp cc thng tin v a ch mng, cng hot ng v giao thc mng s dng ca Listener. Khi yu cu kt ni, client gi phng thc Service Naming thit lp lin lc vi Listener c ch nh trong m t kt ni hay net service name. Listener chp nhn kt ni vi client thng qua mt giao thc mng. N so snh cc thng tin do client cung cp vi cc thng tin tng ng c cung cp bi dch v CSDL, nu cc thng tin ny khp nhau, kt ni s c php thit lp gia client v database server. Phng thc giao tip mng (network protocol) thng c s dng trong mng Oracle l TCP/IP, c cng mc nh 1521. Ngoi ra, i vi lp trnh vin v qun tr vin, ng dng pha trnh khch (application client) l ng dng ca nh pht trin th ba (third party), cung cp mt giao din tng tc thn thin vi h qun tr Oracle. Hin nay, cc ng dng ny c pht trin rt nhiu trn th gii nh Maestro, SQL Navigator, Oracle SQL Developer

11 Cc bin php bo v CSDL Oracle11.1 Qun l ngi dngVic phn quyn s dng l cn thit trong cng vic qun tr. C 2 user accounts c t ng to ra ngay t khi to database v c gn quyn DBA (DataBase Administration) l: SYS v SYSTEM. SYS: c to t ng v gn quyn DBA. Mt khu mc nh l change_on_install. C quyn s hu cc bng v cc khung nhn ca t in d liu trong CSDL.

Gio Trnh H Qun Tr C S D Liu trang 26

Khoa CNTT & Truyn Thng Trng i Hc Cn Th SYSTEM: c t ng to ra vi mt khu ban u l manager v cng c gn quyn DBA. Tuy nhin, SYSTEM cn c s hu c mt s table, view m rng cha cc thng tin s dng cho cc tools ca Oracle. Lu : Ngay khi to CSDL, Oracle to sn mt quyn gi l "DBA". Quyn ny cho php thc hin cc thao tc qun tr i vi CSDL. Ngi dng c quyn DBA c th can thip c ti cc quyn ca cc user khc s dng trong h thng. V th, nhng qun tr vin database cn thay i mt khu ca mnh trnh s dng mt khu mc nh do Oracle cung cp v user khc c th bit v s dng truy nhp vo h thng mt cch tri php, gy xo trn h thng. Khi to mt ti khon mi, ta cn xc nh cc thng s sau cho ti khon : Default Tablespace (tablespace mc nh) Default Tablespace l tablespace mc nh cha cc segments c tin trnh ca ngi dng s dng lu tr d liu trong trng hp ngi dng khng ch r tn tablespace ngay khi to segment. Tablespace Quotas (hn mc tablespace) Tablespace quotas l dung lng lu tr ti a ng vi kh nng lu tr vt l c php ca ngi dng ny trong CSDL. Temporary Tablespace (tablespace trung gian) Temporary tablespace l ni Oracle server cp pht cc extends phc v cho cng vic sp xp (sort) d liu mi khi ngi dng thc hin lnh truy vn c sp xp. Account Locking (kho account) Cc Accounts c th b kho (locked) ngn cn vic ngi dng thm nhp vo CSDL. Vic ny c th c thc hin mt cch t ng hoc do iu khin ca nh qun tr CSDL. Resource Limits (hn ch ti nguyn) L nhng gii hn c a ra cho ngi dng ny v cc ti nguyn ca h thng nh: thi gian s dng CPU, truy xut vo ra, s lng cc sessions c m ti a,... 11.1.1 Cc bc thc hin khi to mi ngi dng La chn username (tn user dng truy cp CSDL) v c ch xc nhn i vi user ny. Ch ra cc tablespaces cho user dng lu tr d liu. Gn cc default tablespace v temporary tablespace. Phn b hn mc s dng trn tng tablespace. Phn quyn truy nhp (privileges - quyn hoc roles vai tr) cho user va to lp.

11.1.2 To mi ngi dng C phpCREATE USER tn_user IDENTIFIED {BY mt_khu | EXTERNALLY} [ DEFAULT TABLESPACE tn_tablespace ]

Gio Trnh H Qun Tr C S D Liu trang 27

Khoa CNTT & Truyn Thng Trng i Hc Cn Th[ TEMPORARY TABLESPACE tn_ tblsp] [ QUOTA {s_nguyn [K | M ] | UNLIMITED } ON tablespace [ QUOTA { s_nguyn [K | M ] | UNLIMITED } ON tn_tablespace ] ...]

Vi: Tn truy nhp ca ngi dng. BY mt_khu Xc nh c ch xc nhn bi CSDL vi mt khu truy nhp l mt_khu. EXTERNALLY Xc nh c ch xc nhn user bi h iu hnh. DEFAULT/TEMPORARY tn_tblsp Xc nh tablespace mc nh/tm thi cho ngi dng. QUOTA Xc nh lng khng gian ti a cp pht cho ngi dng lu tr cc i tng trong tng tablespace. T kho UNLIMITED cho bit khng gii hn khng gian cp pht. V d : To mt ngi dng c tn v password l userTest, cp Quota 1M trn tablespace USERStn_user CREATE USER userTest IDENTIFIED BY usertest DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA 1M ON USERS ;

11.1.3 Thay i mt khu ca ngi dng C php:ALTER USER tn_user [ IDENTIFIED {BY mt_khu | EXTERNALLY }]

V d: i mt khu ca ngi dng userTest thnh ptestALTER USER userTest IDENTIFIED BY ptest;

11.1.4 Thay i hn mc (quota) s dng tablespace Trong mt s trng hp, ta c th thay i hn mc s dng tablespace khi: Cc bng ca ngi dng khng th m rng lu tr thm c na. Cc ng dng c ci tin i hi b sung thm cc tables hay indexes. Cc i tng c t chc li v c t trn nhiu tablespaces khc nhau. C php:ALTER USER tn_user [ DEFAULT TABLESPACE tn_tablespace] [ TEMPORARY TABLESPACE tn_tablespace] [ QUOTA {s_nguyn [K | M] | UNLIMITED } ON tn_tablespace [ QUOTA {s_nguyn [K | M] | UNLIMITED } tn_tablespace ] ... ]

ON

V d: Tng hn mc cho ngi dng userTest thnh 2MALTER USER userTest QUOTA 2M ON USERS ;

11.1.5 Xa ngi dng C php: Gio Trnh H Qun Tr C S D Liu trang 28

Khoa CNTT & Truyn Thng Trng i Hc Cn ThDROP USER tn_user [CASCADE]

Lu : CASCADE s hu tt c cc i tng trong schema trc khi xo ngi dng. N cn c ch r khi schema c cha i tng. Ta khng th hu c cc ngi dng hin ang kt ni ti Oracle server. 11.1.6 Xem thng tin v ngi dng Ta c th ly cc thng tin lin quan ti user trong data dictionary DBA_USERS v DBA_TS_QUOTAS. Vi mi ngi dng, ta c th xc nh c cc thng tin v hn mc. V d: xem cc thng hn mc tin ca ngi dng userTest.SELECT tablespace_name, blocks, max_blocks, bytes, max_bytes FROM dba_ts_quotas WHERE username = 'userTest';

Nu kt qu tr v c gi tr -1 trong ct MAX_BLOCKS v MAX_BYTES ngha l quota khng gii hn (UNLIMITED). Hoc ta cng c th ly cc thng tin v ti khon ca ngi dng V d:SELECT username, account_status, temporary_tablespace FROM dba_users;

11.2 Qun l quynMi ngi dng c to ra c th c gn 2 loi quyn: Quyn h thng (System Privileges): Cc quyn ny cho php ngi dng thc hin thao tc no trong CSDL chng hn to bng, to view,.. Quyn i tng (Object Privileges). Cc quyn ny cho php ngi dng thc hin thao tc no trong mt i tng ca CSDL chng hn quyn SELECT, INSERT, UPDATE,.. trong mt bng no . 11.2.1 Quyn h thng

11.2.1.1 Cc loi quyn h thng Oracle database c khong 140 quyn h thng v con s ny ang tip tc tng ln. Cc quyn h thng c th chia ra nh sau: Cc quyn cho php thc hin cc thao tc truy cp, to dung lng lu tr trn h thng v d nh: CREATE SESSION, CREATE TABLESPACE. Cc quyn cho php qun l cc i tng thuc v mt ngi dng v d nh: CREATE TABLE. Cc quyn cho php qun l cc i tng trong bt c mt schema no v d nh cu lnh: CREATE ANY TABLE. C th iu khin cc quyn bng cch cu lnh GRANT hay REVOKE. Phn loi Cc quyn thng dngCREATE TABLE

Gio Trnh H Qun Tr C S D Liu trang 29

Khoa CNTT & Truyn Thng Trng i Hc Cn ThCREATE ANY TABLE ALTER ANY TABLE DROP ANY TABLE SELECT ANY TABLE UPDATE ANY TABLE DELETE ANY TABLE CREATE SESSION ALTER SESSION RESTRICTED SESSION CREATE TABLESPACE ALTER TABLESPACE DROP TABLESPACE UNLIMITED TABLESPACEBng 1. Mt s quyn h thng thng dng

TABLE

SESSION

TABLESPACE

Ch :CREATE SESSION l quyn ti thiu nht ca mt user c th kt ni vo

CSDL. Cc quyn nh CREATE TABLE, CREATE PROCEDURE, CREATE TRIGGER bao gm c cc quyn xo cc i tng . CREATE TABLE bao gm cc quyn CREATE INDEX v ANALYZE. Vi quyn ny, ngi dng cn c quota trn tablespace hay phi c gn UNLIMITED TABLESPACE. c th xa ht d liu (truncate) ca cc bng th quyn DROP ANY TABLE phi c s dng. 11.2.1.2 Gn cc quyn h thng S dng c php sau y gn quyn h thng cho ngi dngGRANT {quyn_h_thng|tn_role}[, {quyn_h_thng|tn_role} ]... TO {tn_user|tn_role|PUBLIC}[, {tn_user|tn_role|PUBLIC} ]... [WITH ADMIN OPTION]

Vi:quyn_h_thng tn_role PUBLIC WITH ADMIN OPTION

ch nh quyn h thng s dng. ch nh tn Role c gn. gn quyn h thng cho tt c ngi dng. cho php ngi dng c gn quyn c th gn quyn hay Role cho ngi dng khc.

V d:GRANT CREATE SESSION,CREATE TABLE TO userTest;

Hoc nu mun cho userTest ny c th cp li quyn ca mnh cho user khc, ta s dng thm mnh WITH ADMIN OPTIONGRANT CREATE SESSION,CREATE TABLE TO userTest WITH ADMIN OPTION;

Gio Trnh H Qun Tr C S D Liu trang 30

Khoa CNTT & Truyn Thng Trng i Hc Cn Th Mt s hng dn Ngi dng c gn quyn a vi tu chn WITH ADMIN OPTION th c th tip tc gn quyn a cho mt ngi dng khc, thm ch vi ty chn WITH ADMIN OPTION. Bt c mt ngi dng no c quyn GRANT ANY ROLE c th gn bt k quyn no trong CSDL cho ngi dng khc. Mt ngi dng nu c gn quyn a vi tu chn WITH ADMIN OPTION th c th gn quyn ny hay ly li cc quyn ny t bt c ngi dng hay role no trong database. 11.2.1.3 Thu hi cc quyn h thng S dng c php sau y ly li cc quyn h thng:REVOKE {quyn_h_thng|tn_role} [,{quyn_h_thng|tn_role} ]... FROM {tn_user|tn_role|PUBLIC} [, {tn_user|tn_role|PUBLIC} ]...

V d:REVOKE CREATE TABLE FROM userTest;

Ch : Lnh REVOKE ch c th ly li quyn ca ngi dng c gn trc tip bng lnh GRANT. Thu hi cc quyn h thng c th nh hng n mt s cc i tng ph thuc. V d: nu quyn SELECT ANY TABLE c gn cho mt ngi dng v ngi dng c gn cc th tc hay view m s dng cc bng thuc v cc ngi dng khc th vic ly li cc quyn s lm cho cc th tc hay view tr nn khng hp l. 11.2.1.4 Xem thng tin v cc quyn h thng Thng tin v cc quyn c ly t cc view ca data dictionary: DBA_SYS_PRIVS v SESSION_PRIVS. Cc thng tin bao gm:DBA_SYS_PRIVS: GRANTEE, PRIVILEGE, ADMIN OPTION SESSION_PRIVS: PRIVILEGE

V d 1: Lt k cc quyn h thng c gn cho user v role:SELECT * FROM DBA_SYS_PRIVS;

V d 2: Mun bit user hin hnh c quyn g.SELECT * FROM SESSION_PRIVS;

11.2.2

Quyn i tng

11.2.2.1 Cc quyn trn i tng Quyn trn i tng c gn cho ngi dng l thao tc m ngi dng c th thc hin trn i tng . Bng di y lit k cc quyn thng dng c th c gn trn mt i tng:

Gio Trnh H Qun Tr C S D Liu trang 31

Khoa CNTT & Truyn Thng Trng i Hc Cn Th QuynALTER DELETE EXECUTE INSERT SELECT UPDATE X X X X X X

TableX X

ViewX

Procedure

X

Bng 2. Mt s quyn trn i tng thng dng

11.2.2.2 Gn cc quyn trn i tng S dng c php sau y gn mt quyn trn i tng:GRANT { quyn_i_tg [(ds_ct)][, quyn_i_tg [(ds_ct)] ]... |ALL [PRIVILEGES]} ON [tn_schema.]tn_i_tng TO {tn_user|tn_role|PUBLIC}[, {tn_user|tn_role|PUBLIC} ]... [WITH GRANT OPTION]

Vi: Ch nh quyn i tng c gn ds_ct Ch nh cc ct ca mt bng hay view (tu chn ny ch s dng khi gn cc quyn INSERT hay UPDATE. ALL Gn tt c cc quyn cho i tng m c gn vi WITH GRANT OPTION. tn_i_tng ch nh i tng trn cc quyn c gn. WITH GRANT OPTION cho php ngi c gn quyn c th gn cc quyn cho mt ngi dng khc. Lu : gn cc quyn trn i tng, i tng phi thuc v schema ca ngi dng thc hin gn hoc ngi dng c quyn WITH GRANT OPTION. Mc nh nu mt i tng thuc v mt ngi dng no th ngi dng c y cc quyn trn i tng . Tu chn WITH GRANT OPTION khng dng cho vic gn cc quyn i tng cho cc Role.quyn_i_tg

V d: ng nhp vi ti khon ca ngi dng scott v password l tiger, sau thc hin cp quyn xem v cp nht d liu trn bng Emp cho userTestGRANT select,update ON Emp to userTest;

11.2.2.3 Thu hi cc quyn trn i tng S dng c php sau y ly li quyn cp:REVOKE { quyn_i_tg [, quyn_i_tg]... | ALL [PRIVILEGES] } ON [tn_schema.]tn_i_tng FROM {tn_user|tn_role|PUBLIC} [, {tn_user|tn_role|PUBLIC}...]

Gio Trnh H Qun Tr C S D Liu trang 32

Khoa CNTT & Truyn Thng Trng i Hc Cn Th[CASCADE CONSTRAINTS]

Vi:quyn_i_tg Ch nh quyn trn i tng c gn .

Thu hi ton b cc quyn trn i tng c gn cho ngi dng. ON Ch nh i tng trn cc quyn trn i tng c thu hi. FROM Ch nh ngi dng hay role b thu hi quyn. CASCADE CONSTRAINTS Xo tt c cc tham chiu m vic thu hi c nh ngha do s dng quyn REFERENCES hay ALL.ALL

V d: ng nhp vi ti khon ca ngi dng scott v password l tiger, sau thc hin thu hi quyn cp nht d liu trn bng Emp t userTestREVOKE update ON Emp FROM userTest;

11.2.2.4 Thng tin v cc quyn trn i tng Thng tin v cc quyn c lu tr trong cc data dictionary. Mt s thng tin ta cn quan tm:DBA_TAB_PRIVS: GRANTEE, OWNER, TABLE_NAME, GRANTOR, PRIVILEGE, GRANTABLE DBA_COL_PRIVS: GRANTEE, OWNER, GRANTOR, PRIVILEGE, GRANTABLE TABLE_NAME, COLUMN_NAME,

V d: DBA c th truy vn bng DBA_TAB_PRIVS ly thng tin v cc quyn trn i tng c gn cho ngi dng userTest.SELECT * FROM dba_tab_privs WHERE GRANTEE='userTest'

11.3 Qun l Role (vai tr)11.3.1 Khi nim Role Gi s mt CSDL c cp M quyn nh nhau cho N users c cng chc nng trong h thng, nh vy h thng cn thc hin N*M thao tc gn quyn. Hn na, sau mt thi gian, gi s h thng cn thu hi mt quyn no trn N users ny, h thng phi thc hin N thao tc thu quyn. Mt khc, cc thao tc gn quyn v thu quyn ny l nh nhau cho mi user, vic ny c th dn n s nhm chn v mt thi gian trong cng vic. tng y l s dng mt nhm cc quyn, nhm ny s c gn cho cc users c cng chc nng trong h thng, v vic gn hay thu hi quyn trn mt nhm s nh hng trc tip n cc user thuc vo nhm . V th, cng vic gn quyn s tr nn nh nhng v linh ng hn. Theo tng , Oracle cung cp mt cng c cho php qun l mt cch d dng cc quyn thng qua vic s dng vai tr (Role). Role l mt tp hp cc quyn c ch nh bng mt tn ring v c th c gn cho cc user hay Role khc.

Gio Trnh H Qun Tr C S D Liu trang 33

Khoa CNTT & Truyn Thng Trng i Hc Cn Th

Hnh 8. Role trong database

11.3.2

Cc tnh cht ca Role c gn v ly li t ngi dng. C th gn role cho bt c ngi dng no ngoi tr cho chnh n. C th bao gm c quyn h thng (system privileges) v quyn i tng (object privileges). C th enable v disable cc Role c gn cho cc ngi dng. C th yu cu password khi cn enable cc Role. Tn cc Role khng trng vi tn ngi dng v tn cc Role ang tn ti. Khng thuc v bt c ngi dng no v khng thuc v bt c schema no. Li ch ca vic s dng Role

11.3.3

Gim cng vic gn cc quyn: s dng cc Role n gin ho vic qun l cc quyn, bng cch gn mt tp cc quyn cho ngi dng. C th gn cc quyn cho mt Role v sau gn Role cho cc ngi dng. Qun l cc quyn mt cch linh ng: khi thay i cc quyn c trong mt Role th quyn ca tt c cc ngi dng c gn cc Role s b thay i theo. 11.3.4 To role Role c to ra phi m bo khng trng tn vi cc ngi dng hoc role khc. C php:CREATE ROLE tn_role [NOT IDENTIFIED | IDENTIFIED {BY mt_khu | EXTERNALLY }]

Vi: tn ca Role NOT IDENTIFIED ch nh khng cn kim tra Role khi enable Role BY mt_khu mt khu ngi dng cn cung cp khi enable Role EXTERNALLY ch nh ngi dng phi c xc lp bi dch v bn ngoi (nh h iu hnh hay dch v bn th ba) trc khi kch hot Role. V d: To role c tn StudentsGrouptn_role

Gio Trnh H Qun Tr C S D Liu trang 34

Khoa CNTT & Truyn Thng Trng i Hc Cn ThCREATE ROLE StudentsGroup;

11.3.5 Sa cha cc Role C php:ALTER ROLE tn_role {NOT IDENTIFIED | IDENTIFIED {BY mt_khu | EXTERNALLY }};

Vi:tn_role NOT IDENTIFIED IDENTIFIED BY mt_khu EXTERNALLY

tn ca Role cn thay i. ch nh khng cn xc nhn khi enable Role ch nh cn xc nhn khi enable cc Role cung cp mt khu xc nhn khi enable Role ch nh user cn c xc nhn bi dch v bn ngoi (c ch xc nhn bi h iu hnh)

11.3.6 Cp quyn cho Role C php ging nh cp quyn cho ngi dng. 11.3.7 Gn cc Role cho ngi dng C php :GRANT tn_role [, tn_role ]... TO {tn_user|tn_role|PUBLIC} {tn_user|tn_role|PUBLIC} ]... [WITH ADMIN OPTION] [,

Vi : tn ca Role tn_user tn ca user c gn vo Role_name tn_role tn ca Role c gn vo Role_name PUBLIC Gn cho tt c cc ngi dng WITH ADMIN OPTION cho php ngi dng c gn Role c th gn Role tng ng cho ngi dng khc. V d:tn_role GRANT StudentsGroup TO userTest;

11.3.8 Thu hi cc Role t cc user S dng c php sau y thu hi cc Role t cc ngi dng:REVOKE tn_role [, tn_role ]... FROM {tn_user|tn_role|PUBLIC} ]... {tn_user|tn_role|PUBLIC}[,

Vi:tn_role tn_user tn_role

tn ca cc Role cn thu hi. tn ngi dng b thu hi Role. tn ca cc Role b thu hi Role.

Gio Trnh H Qun Tr C S D Liu trang 35

Khoa CNTT & Truyn Thng Trng i Hc Cn ThPUBLIC

thu hi cc quyn hay Role t tt c cc ngi dng.

V d: Chuyn userTest ra khi role StudentsGroupREVOKE StudentsGroup FROM userTest;

11.3.9 Xo cc Role xo cc Role t database s dng cu lnh sau:DROP ROLE role_name;

11.3.10

Cc Role c nh ngha sn Tn Role Din gii Role cung cp sn tng thch vi cc phin bn trc Tt c cc quyn h thng, c tu chn:WITH ADMIN OPTION

CONNECT RESOURCE DBA EXP_FULL_DATABASE IMP_FULL_DATABASE DELETE_CATALOG_ROLE EXECUTE_CATALOG_ROLE SELECT_CATALOG_ROLE

Quyn export d liu ca database Quyn import d liu vo database Quyn xo d liu Quyn thc hin mt th tc Quyn ly d liuBng 3. Cc roles c nh ngha sn

tn DELETE_CATALOG_ROLE, EXCUTE_CATALOG_ROLE v SELECT_CATALOG_ROLE cho php thc hin truy xut ti cc views v cc packages trong data dictionary. Cc Role ny c th gn cho user khng c quyn DBA nhng mun xem thng tin trong cc bng v view thuc data dictionary. 11.3.11 Thng tin v cc role Thng tin v cc Role c ly trong data dictionary. C rt nhiu tables v views cha thng tin v cc quyn c gn cho user. Tn view DBA_ROLES S ROLE_PRIVS DBA_SYS_PRIVS ROLE_SYS_PRIV S ROLE_TAB_PRIV S SESSION_ROLES Cc Role c php ca user hin thi Quyn trn table c gn cho Role Cc Role c gn quyn cho Role khc Quyn h thng gn cho user hay Role Quyn h thng gn cho Role Din gii Tt c cc Role trong CSDL

Cc

Role

c

DBA_ROLE_PRIV Cc Role c gn quyn cho user hay Role khc

Gio Trnh H Qun Tr C S D Liu trang 36

Khoa CNTT & Truyn Thng Trng i Hc Cn ThBng 4. Thng tin v cc roles

V d: Xem thng tin v cc quyn cp pht cho ngi dngSELECT Role, password_required FROM dba_Roles;

11.4 Import v export11.4.1 Gii thiu Chc nng export cho php xut ni dung lun l ca mt CSDL vo mt tp tin nh phn nh ngha bi Oracle c gi l tp tin dump. Chc nng import s dng tp tin ny to li cc i tng CSDL trn mt lc c ch nh hoc trn ton b CSDL. Tp tin dump xut ra t mt CSDL c th c dng to li d liu trn cng CSDL hoc trn mt CSDL khc, ngay c khi cc CSDL ny c ci t di nhng cu hnh phn cng v phn mm khc nhau. V d, tp tin dump ca mt CSDL trn h iu hnh Windows c th dng to li cc i tng CSDL trn h iu hnh Linux. thc hin 2 chc nng ny ta dng 2 lnh h thng exp v imp (thc thi bng cng c Command Console ca Windows hoc cng c Terminal ca Linux). T phin bn 10g, Oracle cung cp thm mt tnh nng mi c gi l Oracle Data Pump, c hiu qu thc thi vt tri so vi import v export truyn thng. 11.4.2 Cc phng thc ca chc nng import v export

11.4.2.1 Cp CSDL y l phng thc phc tp nht. Vi chc nng export, tt c cc i tng ca CSDL c xut ra tp tin dump tr cc i tng ca mt s ngi dng nh: SYS, ORDSYS, CTXSYS, MDSYS, v ORDPLUGINS. ng thi, tp tin dump bao gm cc thng tin lin quan n cu trc ca CSDL nh nh ngha cc tablespace v cc segments rollback Vi chc nng import, tt c cc i tng s c to li trong CSDL ch. Tham s FULL cho php xc nh phng thc ny trong cc chc nng import v export. Ch : trong trng hp import c CSDL, cn phi to li tt c ngi dng v cc quyn tng ng trong CSDL ngun. 11.4.2.2 Cp ngi dng Tt c cc i tng ca ngi dng bao gm cc bng d liu, th tc, trigger u c xut ra tp tin dump. Trong chc nng export, tham s OWNER cho php ch nh cc i tng ca ngi dng cn xut. Vi chc nng import, tham s FROMUSER ch nh to li cc i tng ca ngi dng (hoc lc ) no c xut ra v lu tr trong tp tin dump; mt khc, tham s TOUSER ch nh ngi dng (hoc lc ) ch m ti cc i tng CSDL c to li. 11.4.2.3 Cp bng d liu Tt c cc i tng lin quan n bng d liu (index, rng buc, cc quyn) s c xut ra tp tin dump. 11.4.2.4 Cp tablespace Cc metadata ca tablespace v cc i tng CSDL c xut ra tp tin dump. Gio Trnh H Qun Tr C S D Liu trang 37

Khoa CNTT & Truyn Thng Trng i Hc Cn Th 11.4.3 Yu cu v quyn Hnh ng Export schema Export schema ca ngi dng khc Export ton b CSDL hoc tablespace Import cc i tng 11.4.4Tham s

Quyn hoc vai tr cn thit CREATE SESSION SYSDBA, EXP_FULL_DATABASE v DBA EXP_FULL_DATABASE IMP_FULL_DATABASE

Cc tham s ngha Gi tr mc nh imp exp

Userid

Chui kt ni CSDL di dng /[@] Imp/Exp cc rng buc Tn tp tin DUMP Tn tp tin nht k Imp/Exp ton b CSDL Exp d liu ra file dump Imp/Exp cc quyn trn i tng Imp/Exp cc ch mc Tn ngi dng cn thc hin Exp nh ngha iu kin lc cc d liu cn Export Cc bng cn Imp/Exp Tn ngi dng c Export Tn ngi dng ch Imp/Exp cc i tng c lu tr trong tablespaceBng 5. Cc tham s trong lnh imp v exp

x

x

Contraints File Log Full Rows Grants Indexes Owner Query Tables Fromuser Touser Tablespace

Y expdat.dmp N Y Y Y userid x x x x x

x x x x x x x x x x x x x x x

V d

Gi s ta to Net Service Name xe v cc ngi dng SYS, SCOTT v TEST c sn trong h thng. Export ton b CSDL (full=y) khng c d liu (rows=n): expuserid=sys/hqtcsdl@xe log=D:\export_full.log full=y rows=n file=D:\export_full.dmp

Gio Trnh H Qun Tr C S D Liu trang 38

Khoa CNTT & Truyn Thng Trng i Hc Cn Th Export ton b schema ca ngi dnguserid=sys/hqtcsdl@xe owner=scott file=D:\scott.dmp exp SCOTT: log=D:\scott.log

Export bng DEPT trong schema SCOTT: exp userid=scott/tiger@xefile=D:\scott_dept.dump log=scott_dept.log tables=dept

Import tt c schema: imp userid=system/hqtcsdl@xe file=D:\export_full.dmp log=D:\imp_full.log Import cc i tng ca SCOTT vo schema TEST: imp userid=system/hqtcsdl@xe file=D:\scott.dmp log=D:\imp_scott_test.log fromuser=scott touser=testimp userid=system/hqtcsdl@xe file=D:\scott_dept.dmp fromuser=scott touser=test tables=scott.dept

Import

bng

DEPT

ca

SCOTT

vo

schema

TEST:

11.5 Oracle Data Pumpc tch hp t phin bng 10g, Oracle Data Pump h tr di chuyn nhanh chng d liu v metadata gia cc CSDL vi nhau. Data Pump tha hng tt c tnh nng ca phng php import/export truyn thng; nhng c tc thc hin nhanh hn imp/exp t nht 2 ln. Khc vi lnh imp, tp tin xut ra t lnh expdp s lu trn server, tp tin d liu m impdp thao tc cng phi lu trn server; v vy, ta cn to mt th mc cha cc tp tin dump ny v qun l thng qua th mc i tng. Ngi dng no c gn quyn c ghi trn th mc ny th mi c th s dng n. 11.5.1 Th mc i tng (Directory Objects) Oracle Data Pump thao tc vi cc tp tin trn server ti cc th mc c nh ngha v cu hnh sn bi nh qun tr. 11.5.2 Qui trnh thc hin Bc 1: Nh qun tr nh ngha cc th mc i tng v gn cc quyn READ, WRITE cho nhng ngi dng lin quan. V d, to mt th mc ngi dng HR v SCOTT thc hin import v export. M ca s Command, g ln lt cc lnh sau: To th mc mi trong h iu hnh, v d D:\backup sqlplus sys/hqtcsdl as sysdba (ng nhp SQLPLUS) CREATE DIRECTORY dpump_dir AS D:\backup; (ch : th mc ny phi c to trc bng cc cng c ca h iu hnh).GRANT READ,WRITE ON DIRECTORY dpump_dir TO hr, scott;

Bc 2: Ngi dng s dng cc lnh expdp v impdp thc hin pump d liu trong ca s Command nh cc v d sau: HR thc hin export ton schema ca mnh:expdp hr/hr DIRECTORY=dpump_dir dumpfile=hr.dmp

SCOTT thc hin export ton schema ca mnh:expdp scott/tiger DIRECTORY=dpump_dir dumpfile=scott.dmp

HR thc hin import bng emp v dept ca SCOTT vo schema ca mnh :Impdp hr/hr@hqtcsdl DIRECTORY=dpump_dir DUMPFILE=scott.dmp TABLES={scott.emp, scott.dept} REMAP_SCHEMA=scott:h

Gio Trnh H Qun Tr C S D Liu trang 39

Khoa CNTT & Truyn Thng Trng i Hc Cn Th 11.5.3 Cc tham s tng ng gia imp/exp truyn thng v Data PumpTham s truyn thng Userid Contraints File Log Full Rows (Y, N) Grants Indexes Owner Query Tables Fromuser Touser Tablespace h> Tham s Data Pump Dng username/password Exclude=Constraint Dumpfile Logfile Full Contents (All, Metadata_Only) Exclude= Grant Exclude=Index Schemas Query Tables REMAP_SCHEMA=:)] VALUES (gi_tr_i, . . . , gi_tr_j>) ;

V d:INSERT INTO CUAHANG VALUES ( 1, 'CUA HANG 1', '123 LY TU TRONG', '071088822') ;

1.1.5 Lnh cp nht record trong bngUPDATE tn_bng SET ct_i = biu_thc_i, . . . , ct_j = biu_thc_j> [WHERE iu_kin>];

V d:UPDATE CUAHANG SET TENCH='CUA HANG CUA TOI' WHERE MACH=1;

1.1.6 Lnh xa record trong bngDELETE FROM tn_bng [WHERE iu_kin];

V d:DELETE FROM CUAHANG WHERE MACH=1;

1.1.7 Lnh xa tt c records trong bng i khi, chng ta cn xa tt c cc records trong bng d liu nhng vn mun gi li cu trc ca n. Cch n gin nht l thc hin lnh DROP xa bng v to li bng vi lnh CREATE TABLE cng vi cc lnh khc to cc kha, index v trigger... cc thao tc ny c th lm mt nhiu thi gian. V vy, cc H qun tr u ci t mt lnh DDL c tn TRUNCATE xa tt c cc dng trong bng d liu nhng vn gi li cu trc v cc rng buc ton vn ca bng . Lnh TRUNCATE c th thc hin nhanh hn lnh DELETE trong trng hp ny. Tuy nhin, chng ta khng th ROLLBACK hay s dng FLASHBACK TABLE ly li d liu b xa bi lnh ny. C php:TRUNCATE TABLE tn_bng ;

ngi dng thc hin c lnh ny, bng phi thuc lc (schema) ca ngi dng hoc ngi dng c gn quyn DROP ANY TABLE. V d:TRUNCATE TABLE CUAHANG ;

1.2 Sequence Sequence l danh sch tun t cc s nguyn, c qun l t ng bi Oracle sever. Sequence dng to gi tr mt cch t ng cho kha chnh. C th dng chung mt Sequence cho nhiu i tng. Con s sequence ny c chiu di ti a l 38 s. Sequence tng ng vi autonumber trong mt s h qun tr khc. Gio Trnh H Qun Tr C S D Liu trang 43

Khoa CNTT & Truyn Thng Trng i Hc Cn Th 1.2.1 To SequenceCREATE SEQUENCE tn_sequence INCREMENT BY s_nguyn START WITH s_nguyn [MAXVALUE s_nguyn] [MINVALUE s_nguyn] [CYCLE/NO CYCLE] [CACHE s_nguyn/NOCACHE];

Trong :INCREMENT BY START WITH MAXVALUE MINVALUE CYCLE/NO CYCLE NO CYCLE CACHE : Ch nh khong cch ca dy s tun t : Ch nh s u tin ca dy s tun t : Gi tr ln nht ca dy tun t : Gi tr nh nht ca dy tun t : Dy tun t c quay vng khi n im cui. Mc nh l : Ch nh bao nhiu s sequence c lu trong b nh.

V d:CREATE SEQUENCE supplier_seq MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 20;

1.2.2 S dng Sequence lm vic vi cc sequence, dng lnh SQL vi cc ct gi (pseudocolumn) sau: CURRVAL Cho gi tri hin thi ca sequence. NEXTVAL Tng gi tri hin thi ca sequence v cho gi tr sau khi tng. V d:INSERT INTO suppliers (supplier_id, supplier_name) VALUES (supplier_seq.NEXTVAL, 'Kraft Foods');

1.2.3 Sa SequenceALTER SEQUENCE tn_sequence INCREMENT BY s_nguyn START WITH s_nguyn [MAXVALUE s_nguyn] [MINVALUE s_nguyn] [CYCLE/NO CYCLE];

1.2.4 Xa SequenceDROP SEQUENCE tn_sequence;

1.3 Index Index l mt cu trc t chc lu tr d liu, c sever s dng tm mt dng trong bng mt cch nhanh chng. C php:CREATE INDEX tn_index ON TABLE ( ct [,ct...]);

Mt s nhn xt v Index: Dng index tng tc cu lnh truy vn. Index nhng ct no dng ni gia cc bng ln nhau. Gio Trnh H Qun Tr C S D Liu trang 44

Khoa CNTT & Truyn Thng Trng i Hc Cn Th Khng nn dng Index cho cc bng no ch c vi dng d liu. Primary v unique key t ng c index, nhng nn c index cho foreign key. 1.4 Biu thc chnh quy (regular expression) Biu thc chnh quy l chui k t c bit m t mt mu tm kim kt qu. Biu thc chnh quy c h tr trong hu ht cc ngn ng lp trnh cp cao nh Perl, PHP, Java, .NET Trong chng trnh hc ny, biu thc chnh quy c p dng ci t rng buc min tr cho cc bng.Mu biu thc chnh quy

Mu * . ? + | ^ $ [] { i }, { i, }, { i, j } \d, \D \s, \S

ngha Xut hin mt hoc nhiu ln Bt c k t g ngoi NOT NULL Xut hin 0 hoc 1 ln Xut hin 1 hoc nhiu ln OR Bt u dng Kt thc dng So khp vi danh sch cc k t So khp i ln, t nht i ln, t nht i ln nhng [NULL | NOT NULL] [DEFAULT tr_mc_nh ]; ] BEGIN cu lnh | khi lnh; [EXCEPTION WHEN tn_ngoi_l THEN cu_lnh; ] END;

Do cc khi c th lng nhau nn ta c mt s lu v tm ca bin trong khi: Khi con s truy xut c bin khai bo trong khi cha. Khi cha khng truy xut c bin c khai bo bn trong khi con. V d:SET SERVEROUTPUT ON; DECLARE v_deptno NUMBER(2); v_loc VARCHAR2(15); BEGIN DECLARE v_dname VARCHAR(10); BEGIN v_dname := 'SALES'; DBMS_OUTPUT.put_line(v_dname); SELECT deptno, loc INTO v_deptno, v_loc FROM dept WHERE dname = v_dname; -- Cu SQL DBMS_OUTPUT.put_line('v_deptno: ' || v_deptno || ' and v_loc:' || v_loc); END; -- Cu lnh sau y s bo li: DBMS_OUTPUT.put_line(v_dname); END;

Khi con

Khi cha

Gio Trnh H Qun Tr C S D Liu trang 48

Khoa CNTT & Truyn Thng Trng i Hc Cn Th Ch : c php SET SERVEROUTPUT ON c khai bo u khi PL/SQL nhm xut ra mn hnh cc kt qu tr v t server Oracle.

4 Cc kiu d liu c bn ca PL/SQLPL/SQL h tr nhiu kiu d liu c bn nh sau: BINARY_INTEGER: kiu d liu s nguyn c lu di dng nh phn. Kiu ny c min xc nh t -231 n 231-1. Ngoi ra, Oracle nh ngha thm cc kiu d liu con (subtypes) tha k t kiu BINARY_INTEGER: + NATURAL: kiu s nguyn vi min xc nh [0 .. 231-1]. + POSITIVE: kiu s nguyn vi min xc nh (0 .. 231-1]. + NATURALN, POSITIVEN: tng ng cc kiu NATURAL v POSITIVE nhng cc bin kiu ny khng nhn gi tr NULL. + SIGNTYPE: kiu s nguyn gii hn trong 3 gi tr -1,0,1. NUMBER[(precision, scale)]: kiu s thc c min xc nh t 10-130 n 10126. Ta c th quy nh min gi tr ca bin kiu ny thng qua thng s precision (s ch s nguyn) v scale (s ch s thp phn). + Precision c gi tr ln nht l 38. Mc nh, mt bin kiu ny c phn precision l 38 nu khng c ch ra. + Scale c min xc nh t -84 n 127. Vi scale m, s c lm trn v bn tri du chm thp phn. Vi scale dng, s c lm trn v bn phi du chm thp phn. V d: s thp phn 12345.678 c gi tr l 12300 nu scale = -2, c gi tr l 12345.68 nu scale = 2 v c gi tr l 12345 nu scale = 0. Cc kiu d liu con ca NUMBER l: + DEC, DECIMAL, NUMERIC, DOUBLE PRECISION, FLOAT: kiu s thc c phn precision n 38 ch s thp phn. + INTEGER, INT, SMALLINT: kiu s nguyn n 38 ch s thp phn. BOOLEAN: kiu d liu lun l. Bin kiu BOOLEAN c th gn 3 gi tr l TRUE, FALSE v NULL. CHAR(max_length): l kiu d liu k t, c di cho trc xc nh qua thng s max_length. DATE: kiu d liu ngy thng. y l mt kiu d liu c thuc tnh c bit. N c th chp nhn c s ln ch m t ngy thng. Ngoi ra, n cn cha thng tin v th k, nm, thng, ngy, gi, pht v giy. VARCHAR2 (max_length): kiu d liu chui k t c chiu di thay i, chiu di ti a c xc nh bi max_length (ti a 32767). Tuy nhin, rng ti a ca ct d liu (database column) kiu VARCHAR2 ch gii hn trong 4000 bytes, nn ta khng th chn gi tr kiu VARCHAR2 c di hn 4000 bytes vo ct d liu ny. LONG: kiu d liu chui k t c chiu di thay i ging kiu VARCHAR2 vi chiu di ti a l 32760 bytes. Ta c th chn gi tr kiu VARCHAR2 c di bt k vo ct d liu kiu LONG. Gio Trnh H Qun Tr C S D Liu trang 49

Khoa CNTT & Truyn Thng Trng i Hc Cn Th

5 Thuc tnhCc bin trong PL/SQL cng nh cc ct v bng d liu u c cc thuc tnh cho php ta tham chiu n kiu d liu v cu trc ca mt phn t m khng cn lp li nh ngha ca n. Du % c dng nh mt ch th ly thuc tnh. Cc thuc tnh thng dng: %ROWTYPE: thuc tnh dng ly kiu ca kiu ca mu tin trong mt bng d liu no . C php:tn_bin tn_bng%ROWTYPE

V d: EMP%ROWTYPE tham chiu n kiu ca mu tin trong bng EMP. %TYPE: thuc tnh dng ly kiu ca mt trng hoc mt bin no . Vic s dng thuc tnh ny s mang li nhiu thun li nu kiu ca bin thng xuyn thay i. C php:tn_bin {tn_ct | tn_bin_khc}%TYPE

V d: EMP.NAME%TYPE tham chiu n kiu d liu ca trng NAME trong bng EMP. Khi trng kiu d liu NAME ca bng EMP b thay i, EMP.NAME%TYPE cng thay i theo. V d:DECLARE total_sales NUMBER(20,2); monthlySales total_sales%TYPE; /* bin monthlySales s ly kiu t bin total_sales */ vEname employees.last_name%TYPE;/* bin vEname s ly kiu t kiu d liu ca ct last_name trong bng employee */ BEGIN NULL; -- khng lnh no c nn t NULL y END;

6 Kiu d liu phcOracle h tr nhiu kiu d liu phc. tuy nhin do thi gian hn hp, gio trnh ch cp n mt s kiu d liu c s dng trong gio trnh.

6.1 Kiu d liu con do ngi dng nh nghaMi kiu d liu c bn nh ngha mt tp hp cc gi tr v cc php ton p dng trn cc biu thc kiu ny. Kiu d liu con (subtype) k tha tp hp cc php ton ca kiu d liu cha (base type) nhng n ch xc nh trong mt khong gi tr ca kiu cha. Tuy nhin, kiu d liu con khi c nh ngha khng to ra mt kiu d liu mi, thc cht n ch thay th mt rng buc trn kiu d liu cha. Kiu d liu con c khai bo trong phn nh ngha (declare) ca khi PL/SQL, chng trnh con v package theo c php:SUBTYPE tn_kiu_con IS tn_kiu_cha [(rang_buc)] [NOT NULL]

V d:SET SERVEROUTPUT ON;

Gio Trnh H Qun Tr C S D Liu trang 50

Khoa CNTT & Truyn Thng Trng i Hc Cn ThDECLARE -- nh ngha kiu con BirthDate SUBTYPE BirthDate IS DATE NOT NULL; -- Khai bo bin kiu BirthDate myBirthDate BirthDate := '14-mar-2008'; BEGIN DBMS_OUTPUT.put_line('My birthday is: ' || myBirthdate); END;

6.2 Kiu TABLETng t kiu mng ca ngn ng lp trnh c cu trc. C php khai bo:TYPE tn_kiu_bng IS TABLE OF kiu [NOT NULL] INDEX BY BINARY_INTEGER; tn_bin tn_kiu_bng;

V d: tm tn nhng nhn vin c lng ln hn 10000.SET SERVEROUTPUT ON; DECLARE TYPE Hr_Emp IS TABLE OF hr.employees%ROWTYPE INDEX BY BINARY_INTEGER; emp_tab Hr_Emp; x INTEGER; BEGIN SELECT * BULK COLLECT INTO emp_tab FROM hr.employees WHERE salary > 10000; FOR X IN 1..emp_tab.COUNT LOOP dbms_output.put_line(emp_tab(x).FIRST_NAME); END LOOP; END;

7 Cc loi mnh 7.1 Mnh gnC php:tn_bin := biu_thc;

V d:DECLARE total_sales NUMBER(15,2); emp_id VARCHAR2(9); company_number NUMBER DEFAULT 10; -- Gan gia tri mac dinh BEGIN total_sales := 350000; emp_id := 3; dbms_output.put_line('Employee ' || emp_id ||

Gio Trnh H Qun Tr C S D Liu trang 51

Khoa CNTT & Truyn Thng Trng i Hc Cn Th', sold total product value: ' || total_sales); END;

7.2 Mnh lnh (SQL command)Mnh SELECT...INTO truy vn gi tr c cha trong bng v lu vo bin. C php:SELECT tn_ct_1, tn_ct_2... [bin_con_tr] FROM tn_bng_1, tn_bng_2... [WHERE iu_kin_1, iu_kin_2... ] INTO bin1, bin2...

Vi:INTO bin1, bin2... select vo cc bin. [bin_con_tr]: a kt qu tr v t

V d:SET SERSEROUTPUT ON; DECLARE v_deptno dept.deptno%TYPE; v_loc dept.loc%TYPE; BEGIN SELECT deptno, loc INTO v_deptno, v_loc FROM dept WHERE dname = 'SALES'; DBMS_OUTPUT.put_line(v_deptno || ' : ' || v_loc ); END ;

Mnh INSERT, DELETE v UPDATE: tng t mnh trong ngn ng SQL. Tuy nhin, cc gi tr tham gia vo mnh c th c ch nh bi cc biu thc. C php: V d:INSERT INTO counts (sales_set, non_sales_set) VALUES (v_sales_count, v_non_sales);

Trong :v_sales_count, v_non_sales: cc bin (biu thc).

8 Cc cu trc iu khin8.1 Cu trc r nhnh8.1.1 Mnh IF: Mnh IF c 2 c php. C php dnh cho IF ... ELSE... END IF v c php IF...ELSIF...ELSIF... ELSE... END IF. C php u tin ch cho mt iu kin ng hoc sai. C php th hai c th kim tra nhiu iu kin ln lt cho n ht.IF iu_kin_1 THEN lnh_1; ELSIF iu_kin_2 THEN

Gio Trnh H Qun Tr C S D Liu trang 52

Khoa CNTT & Truyn Thng Trng i Hc Cn Thlnh_2; ELSE lnh_3 END IF;

V d:DECLARE grade CHAR(1); BEGIN grade := 'B'; IF grade = 'A' THEN dbms_output.put_line('Excellent'); ELSIF grade = 'B' THEN dbms_output.put_line('Very Good'); ELSIF grade = 'C' THEN dbms_output.put_line('Good'); ELSIF grade = 'D' THEN dbms_output. put_line('Fair'); ELSIF grade = 'F' THEN dbms_output.put_line('Poor'); ELSE dbms_output.put_line('No such grade'); END IF; END;

8.1.2 Mnh CASE: Tng t nh mnh IF, mnh CASE cng ch thc thi mt trong nhng chui lnh cho trc ty theo gi tr ca bin la chn (selector). C php:[] CASE bin WHEN biu_thc_1 THEN chui_lnh_1; WHEN biu_thc_2 THEN chui_lnh_2; ... WHEN biu_thc_N THEN chui_lnh_N; [ELSE chui_lnh_N+1;] END CASE [tn_nhn];

V d:DECLARE grade CHAR(1) BEGIN CASE grade WHEN 'A' THEN WHEN 'B' THEN WHEN 'C' THEN WHEN 'D' THEN WHEN 'F' THEN := 'B';

dbms_output.put_line('Excellent'); dbms_output.put_