Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

LVTN - Xay dung giao dien lap trinh OCI.doc
MIỄN PHÍ
Số trang
104
Kích thước
527.6 KB
Định dạng
PDF
Lượt xem
1422

LVTN - Xay dung giao dien lap trinh OCI.doc

Nội dung xem thử

Mô tả chi tiết

Luaän aùn toát nghieäp -Xaây döïng giao dieän laäp trình OCI

GVHD :KS.Buøi Hoaøi Thaéng

PHAÀN I : CAÙC KHAÙI NIEÄM CÔ BAÛN

CHÖÔNG I : GIÔÙI THIEÄU OCI VAØ NHÖÕNG ÑAËC TÍNH CUÛA NOÙ

I-Oracle Call Inteface(OCI)

SQL laø ngoân ngöõ laäp trình khoâng coù caáu truùc . Chöông trình vieát trong noù duøng taäp döõ lieäu ñeå

hoaït ñoäng nhöng seõ khoâng xaùc ñònh nhöõng hoaït ñoäng gì ñöôïc thöïc thi , hoaëc nhöõng hoaït ñoäng

ñoù thöïc thi nhö theá naøo . SQL deã hoïc vaø deã duøng ñeå giaûi quyeát CSDL . Noù cuïng laø moät ngoân

ngöõ chuaån duøng ñeå truy caäp vaø thao döõ lieäu trong caùc quan heä hieän ñaïi vaø quan heä höôùng ñoái

töôïng trong caùc heä thoáng CSDL .

Tuy nhieân haàu heát caùc ngoân ngöõ coù caáu truùc nhö C , C++ thì vieäc thöïc thi cuûa haàu heát caùc caâu

leänh phuï thuoäc vaøo nhöõng caâu leänh tröôùc ñoù hoaëc nhöõng caâu leänh loàng beân trong noù vaø nhöõng

caâu leänh ñieàu khieån nhö laëp , reõ nhaùnh maø khoâng coù trong SQL . Nhöõng ngoân ngöõ coù caáu truùc

phöùc taïp hôn SQL nhöng chuùng meàm deûo vaø maïnh hôn SQL .

OCI cho pheùp phaùt trieån nhöõng öùng duïng maø trong ñoù coù söï lieân keát khaû naêng truy caäp döõ lieäu

cuûa SQL vaø C . OCI hoå trôï taát caûcaùc ñònh nghóa döõ lieäu SQL , thao taùc döõ lieäu , truy vaán , caùc

ñieàu khieån thuaän lôïi maø ñaõ coù saún trong Oracle8 Server .

PL/SQL cuõng coù nhieàu thuaän lôïi vì noù laø môû roäng töø Oracle theo thuû tuïc ñeán SQL . Theo ñoù

caùc öùng duïng coù theå phaùt trieån meàm deûo vaø maïnh hôn caùc öùng duïng chæ vieát baèng SQL . Vì

vaäy OCI cung caáp caùc thuaän lôïi trong vieäc truy caäp vaø thao taùc caùc ñoái töôïng trong Oracle 8

Server .

OCI laø moät phaàn meàm giao tieáp cho pheùp thao taùc döõ lieäu vaø sô ñoà CSDL Oracle . Hình 1-1

cho thaáy vieäc dòch vaø lieân keát moät chöông trình OCI töông töï nhö vieäc dòch vaø lieân keát moät öùng

duïng khoâng phaûi laø CSDL . Khoâng caàn böôùc xöû lyù tröôùc hoaëc dòch tröôùc .

Hình 1-1 : Quaù trình phaùt trieån OCI

Chuù yù : Trong moät soá phaàn cöùng chuaån caàn moät soá thö vieän khaùc theâm vaøo thö vieän OCI ñeå

lieân keát caùc chöông trình OCI ñuùng ñaén hôn . Caàn kieåm tra taøi lieäu veà heä thoáng Oracle cuûa baïn

ñeå bieát caàn phaûi theâm nhöõng thö vieän naøo caàn theâm vaøo.

II- Caùc phaùt bieåu SQL

Trang 1

Source

file

Hast Language

compiler

Object File

Hast Linker

Application

OCI Library

Oracle8

Server

Luaän aùn toát nghieäp -Xaây döïng giao dieän laäp trình OCI

GVHD :KS.Buøi Hoaøi Thaéng

Moät trong nhöõng vieäc chính cuûa SQL laø xöû lyù caùc phaùt bieåu . Caùc phaùt bieåu khaùc nhau caàn

nhöõng böôùc xöû lyù khaùc nhau . Ñieàu naøy raát quan troïng trong vieäc maõ hoaù öùng duïng OCI .

Oracle8 thöøa nhaän 8 loaïi phaùt bieåu sau :

ª Ngoân ngöõ ñònh nghóa döõ lieäu (DDL)

ª Caùc phaùt bieåu ñieàu khieån

ª Ñieàu khieån thöïc thi

ª Ñieàu khieån heä ñieàu haønh

ª Ñieàu khieån heä thoáng

ª Ngoân ngöõ thao taùc döõ lieäu (DML)

ª Truy vaán

Ghi chuù: caùc truy vaán ñöôïc phaân loaïi nhö caùc phaùt bieåu DML nhöng caùc öùng

duïng OCI xöû lyù truy vaán khaùc nhau . Vì vaäy chuùng phaûi ñöôïc suy nghó moät

caùch rieâng bieät .

ª PL/SQL

ª SQL nhuùng

1 . Ngoân ngöõ ñònh nghóa döõ lieäu

Caùc phaùt bieåu DDL quaûn lyù sô doà caùc ñoái töôïng trong CSDL . Caùc phaùt bieåu .DDL taïo ra caùc

baûng môùi , xoaù caùc baûng cuõ , thieát laäp sô ñoà caùc ñoáitöôïng khaùc . Vì vaäy chuùng dieàu khieån truy

caäp ñeán moät sô ñoà caùc ñoái töôïng . Ví duï :

CREATE TABLE employees

(name VARCHAR2(20) ,

ssn VARCHAR2(12) ,

empno NUMBER(6) ,

mgr NUMBER(6) ,

salary NUMBER(6))

GRANT UPDATE , INSERT ,DELETE ON employees TO joe

REVOKE UPDATE ON employees FROM scott

Caùc phaùt bieåu DDL cuõng cho pheùp baïn laøm vieäc vôùi caùc object trong Oracle8 Server caùc phaùt

bieåu sau seõ taïo ra moät baûng caùc object

CREATE TYPE person_t AS OBJECT(

name VARCHAR2(30),

ssn VARCHAR2(12),

address VARCHAR2(50))

CREATE TABLE person_tab OF person_t

2 . Caùc phaùt bieåu ñieàu khieån

Caùc öùng duïng OCI giaûi quyeát caùc ñieàu khieån thöïc thi , ñieàu khieån heä ñieàu haønh , dieàu khieån heä

thoáng töông töï nhö caùc phaùt bieåu DML .

3 . Ngoân ngöõ thao taùc döõ lieäu

Caùc phaùt bieåu DML coù theå thay döõ lieäu trong caùc baûng CSDL . Chaúng haïn caùc phaùt bieåu DML

dung ñeå :

 Theâm caùc haøng vaøo moät baûng

 Caäp nhaät caùc giaù trò cuûa caùc coät toàn taïi trong caùc haøng

Trang 2

Luaän aùn toát nghieäp -Xaây döïng giao dieän laäp trình OCI

GVHD :KS.Buøi Hoaøi Thaéng

 Xoaù caùc haøng trong moät baûng

 Khoaù moät baûng trong CSDL

 Giaûi quyeát quaù trình thöïc thi cho moät phaùt bieåu SQL

Caùc phaùt bieåu DML coù theå yeâu caàu moät öùng duïng cung caáp döõ lieäu cho CSDL , laø ñaàu vaøo

ñöôïc ñoùng goùi (binding)

Binding

Haàu hieát caùc phaùt bieåu DML vaø moät soá truy vaán yeâu caàu moät chöông trình ñöa döõ lieäu vaøo

Oracle nhö laø moät phaàn cuûa caùc phaùt bieåu SQL hoaëc PL/SQL . Khi chöông trình ñöôïc dòch caàn

phaûi bieát döõ lieäu laø haèng hay daïng chöõ . Ví duï phaùt bieåu SQL sau seõ theâm moät employee vaøo

CSDL

INSERT INTO emp VALUES

(2365,'BESTY','PROGRAMMER',2000,20)

Moät phaùt bieåu cöùng nhaéc nhö vaäy seõ coù moät vaøi haïn cheá . Baïn phaûi thay ñoåi phaùt bieåu vaø dòch

laïi chöông trình moãi khi theâm employee môùi vaøo CSDL . Ñeå chöông trình meàm deûo hôn baïn coù

theå vieát chöông trình ñeå user nhaäp döõ lieäu moãi khi chöông trình chaïy .

Khi chuaån bò cho moät phaùt bieåu SQL hoaëc khoái PL/SQL maø döõ lieäu ñöôïc cung caáp vaøo luùc

chaïy . Ví duï , phaùt bieåu SQL coù 5 nôi giöõ döõ lieäu ñaïi dieän cho 5 ñaàu vaøo döõ lieäu (baét ñaàu baèng

":")

INSERT INTO emp VALUES

(:empno,:ename,:job,:sal,:deptno)

Baïn coù theå duøng nôi giöõ döõ lieäu ñaïi dieän cho caùc bieán ñaàu vaøo trong caùc phaùt bieåu DELETE ,

INSERT , SELECT , UPDATE hoaëc khoái PL/SQL ôû baát kyø vò trí naøo cuûa phaùt bieåu , chuùng coù

theå laø bieåu thöùc hoaëc giaù trò daïng chöõ . Ñoái vôùi khoái PL/SQL caùc nôi giöõ döõ lieäu coù theå ñaïi dieän

cho caùc bieán ñaàu ra . Teân cuûa chuùng khoâng ñöôïc duøng ñeå ñaët teân cho caùc ñoái töôïng khaùc cuûa

Oracle nhö table hoaëc column .

ñoái vôùi moãi nôi giöõ döõ lieäu trong phaùt bieåu SQL hoaëc khoái PL/SQL baïn phaûi goïi moät thuû tuïc

OCI maø nhaän ñòa chæ cuûa bieán chæ ñeán nôi chöùa döõ lieäu . Khi phaùt bieåu thöïc thi , Oracle nhaän

döõ lieäu maø chöông trình ñaët trong input , bind , bieán vaø gôûi noù ñeán server cuøng vôùi phaùt bieåu

SQL ñoù .

4 . Caùc truy vaán

Truy vaán laø phaùt bieåu nhaän döõ lieäu töø moät CSDL . Moät truy vaán coù theå traû veà khoâng , moät ,

hoaëc nhieàu haøng döõ lieäu . Taát caû caùc truy vaán baét ñaàu baèng töø khoùa SELECT

Caùc truy vaán truy caäp döõ lieäu trong caùc baûng vaø chuùng ñöôïc phaân loaïi cuøng vôùi caùc phaùt bieåu

DML . Tuy nhieân caùc öùng duïng OCI xöû lyù caùc truy vaán khaùc nhau , do vaäy chuùng phaûi ñöôïc

xaùc ñònh rieâng bieät .

Caùc truy vaán yeâu caâàu chöông trình cung caáp döõ lieäu ñeán CSDL söû duïng caùc bieán ñaàu vaøo

(bind) nhö ví duï sau :

SELECT name

FROM employees

WHERE empno= :empnumber

Trong phaùt bieåu SQL treân , :empnumber laø moät nôi giöõ döõ lieäu ñaïi dieän cho moät giaù trò seõ ñöôïc

cung caáp bôûi öùng duïng ñoù .

Khi xöû lyù moät truy vaán , moät öùng duïng OCI caàn ñònh nghóa caùc bieán output ñeå nhaän caùc giaù trò

traû veà . Trong phaùt bieåu treân caàn ñònh nghóa moät bieán output ñeå nhaän giaù trò name traû veà .

Trang 3

Luaän aùn toát nghieäp -Xaây döïng giao dieän laäp trình OCI

GVHD :KS.Buøi Hoaøi Thaéng

Defining

Caùc phaùt bieåu seõ traû döõ lieäu lieäu veà töø CSDL ñeán öùng duïng cuûa baïn . Khi xöû lyù moät truy vaán

baïn phaûi ñònh nghóa moät bieán output hoaëc moät maûng caùc bieán output cho moãi phaùt bieåu

SELECT maø baïn muoán nhaän döõ lieäu töø noù . Böôùc ñònh nghóa seõ taïo ra söï keát hôïp ñeå xaùc

ñònh nôi chöùa keát quaû traû veà vaø theo ñònh daïng gì .

VD : SELECT name,ssn

FROM employees

WHERE empno=:empnum

Baïn caàn phaûi ñònh nghóa hai output , moät ñeå nhaän giaù trò traû veà töø coät name , moät ñeå nhaän

giaù trò traû veà töø coät ssn

5 . PL/SQL

PL/SQL laø caùc môû roäng theo höôùng thuû tuïc cuûa SQL . PL/SQL xöû lyù caùc coâng vieäc phöùc taïp

hôn caùc truy vaán vaø caùc phaùt bieåu SQL . PL/SQL cho pheùp nhoùm moät soá phaùt bieåu thaønh moät

khoái ñôn vaø thöïc thi nhö moät ñôn vò . Ñoù laø :

 Moät hoaëc nhieàu phaùt bieåu SQL

 Caùc khai baùo bieán

 Caùc phaùt bieåu phaân coâng

 Caùc phaùt bieåu ñieàu khieån thuû tuïc nhö : IF…THEN…ELSE , LAËP

 Ngoaïi tröø handing

Coù theå duøng khoái PL/SQL trong chöông trình ñeå :

 Goïi caùc thuû tuïc vaø haøm

 Dòch caùc phaùt bieåu ñieàu khieån thuû tuïc cuøng vôùi caùc phaùt bieåu SQL ñeå thöïc thi

nhö moät ñôn vò

 Truy caäp caùc thuoäc tính PL/SQL ñaëc bieät nhö record , table , con troû caùc voøng

laëp , ngoaïi tröø handing

 Söû duïng caùc bieán con troû

 Truy caäp vaø thao taùc caùc ñoái töôïng trong moät Oracle8 server

Ví duï PL/SQL sau cho thaáy moät phaùt bieåu SQL ñeå nhaän nhöõng giaù trò töø moät baûng employees .

Ví duï naøy giaûi thích caùch söû duïng nôi giöõ döõ lieäu trong caùc phaùt bieåu PL/SQL

BEGIN

SELECT ename,sal,comm INTO :emp_name,:salary,:commission

FROM emp

WHERE ename=:emp_number

END;

Vôùi yù nghóa ñoù caùc nôi giöõ döõ lieäu khoâng phaûi laø caùc bieán PL/SQL maø chuùng chæ töôïng tröng

cho caùc bieán ñaàu vaøo khi phaùt bieåu ñöôïc xöû lyù . Chuùng caàn ñeå giao tieáp vôùi caùc bieán cuûa C

trong chöông trình cuûa baïn .

6 . SQL nhuùng

OCI xöû lyù caùc phaùt bieåu nhö laø caùc caâu cuûa vaên baûn maø moät öùng duïng truyeàn ñeán Oracle thöïc

thi . Caùc trình bieân dòch tröôùc cuûa Oracle (Pro*C/C++ , Pro*COBOL , Pro* FORTRAN) cho

pheùp laäp trình vieân nhuùng caùc phaùt bieåu SQL tröïc tieáp vaøo maõ chöông trình öùng duïng cuûa hoï .

Böôùc dòch tröôùc laø caàn thieát ñeå taïo ra moät öùng duïng coù theå thöïc thi .

Trang 4

Luaän aùn toát nghieäp -Xaây döïng giao dieän laäp trình OCI

GVHD :KS.Buøi Hoaøi Thaéng

III . Caùc töø ñaëc bieät cuûa OCI

Caùc töø ñaëc bieät ñeå chæ caùc phaàn khaùc nhau cuûa moät phaùt bieåu SQL . Ví duï moät phaùt bieåu SQL

nhö sau :

SELECT customer,address

FROM customers

WHERE bus_type='SOFTWARE'

AND sales_volume=:sales

bao goàm caùc phaàn sau :

+ Moät leänh SQL : SELECT

+ Hai select-list item : customer vaø address

+ Moät teân cuûa baûng trong meänh ñeà FROM : customers

+ Hai coät trong meänh ñeà WHERE : bus_type vaø sales_volume

+ Moät giaù trò ñaàu vaøo daïng chöõ trong meänh ñeà WHERE : 'SOFTWARE'

+ Moät nôi giöõ döõ lieäu töôïng tröng cho moät bieán ñaàu vaøo trong phaàn thöù hai cuûa meänh ñeà

WHERE : :sales

Khi phaùt trieån moät öùng duïng OCI baïn goïi ñòa chæ cuûa caùc bieán vaøo/ra trong chöông trình . Ña

chæ cuûa nôi giöõ döõ lieäu ñaïi dieän cho döõ lieäu vaøo goïi laø bind operation . Ñòa chæ cuûa caùc bieán ñeå

nhaän select-list items goïi laø define operation . Ñoái vôùi PL/SQL ñeàu ñöôïc goïi laø operation .

IV. Ñoái töôïng hoå trôï trong OCI

Oracle server coù nhöõng thuaän lôïi ñeå laøm vieäc vôùi kieåu ñoái töôïng vaø caùc ñoái töôïng . Moät object

type laø moät caáu truùc döõ lieäu moâ taû moät phaàn töû cuûa theá giôùi thöïc do user ñònh nhóa . Ví duï , moät

CSDL coù theå chöùa moät ñònh nghóa cuûa ñoái töôïng maø ñoái töôïng ñoù bao goàm caùc thuoäc tính first￾name , last-name , age moâ taû nhöõng ñaëc tröng veà ñònh danh cuûa con ngöôøi trong theá giôùi thöïc .

Ñònh nghóa object type laø côù sôû cho vieäc taïo caùc oject maø moâ taû caùc thöïc theå cuûa object type .

Söû duïng object type nhö laø ñònh nghóa caáu truùc , moät ñoái töôïng ngöôøi ñöôïc taïo ra vôùi caùc thuoäc

tính 'Jonh' , Bonivento' , '30' . Caùc object type coù theå chöùa caùc method .

OCI cuûa Oracle8 bao goàm caùc haøm maø coù nhieàu khaû naêng ñieàu khieån caùc oject trong Oracle

server . Ñaëc bieät laø caùc khaû naêng sau ñöôïc theâm vaøo OCI :

+ Hoå trôï vieäc thöïc thi caùc phaùt bieåu SQL thao taùc döõ lieäu vaø thoâng tin sô ñoà

+ Hoå trôï vieäc tham chieáu ñeán caùc ñoái töôïng vaø thöïc theå nhö caùc bieán ñaàu vaøo cuûa phaùt bieåu

SQL

+ Hoå trôï vieäc tham chieáu ñeán caùc ñoái töôïng vaø thöïc theå nhö caùc bieán ñaàu ra cho caùc phaùt bieåu

SQL

+ Hoå trôï vieäc tham chieáu ñeán caùc ñoái töôïng vaø thöïc theå töø moät CSDL

+ Hoå trôï vieäc moâ taû nhöõng thuoäc tính cuûa moät phaùt bieåu SQL maø noù traû veà laø caùc thöïc theå vaø

caùc tham chieáu

+ Hoå trôï vieäc moâ taû caùc thuû tuïc hoaëc haøm cuûa PL/SQL maø coù caùc tham soá hoaëc keát laø ñoái

töôïng .

Theâm vaøo ñoù OCI hoå trôï cho vieäc thao taùc treân caùc object sau khi chuùng ñöôïc truy caäp bôûi caùc

phaùt bieåu SQL

V. Caùc loaïi haøm cuûa OCI

OCI bao goàm 4 taäp haøm chính :

1. OCI relational function : quaûn lyù truy caäp döõ lieäu vaø xöû lyù caùc phaùt bieåu SQL

2. OCI navigational function : thao taùc caùc ñoái töôïng nhaän ñöôïc töø moät Oracle8 server

Trang 5

Luaän aùn toát nghieäp -Xaây döïng giao dieän laäp trình OCI

GVHD :KS.Buøi Hoaøi Thaéng

3. OCI datatype mapping and munipulation function : thao taùc treân caùc thuoäc tính döõ lieäu cuûa

caùc kieåu Oracle8

4. OCI external procedure function : duøng ñeå vieát C goïi töø PL/SQL

VI. Nhöõng ñaëc tính môùi cuûa Release 8.0

R 8.0 coù nhöõng ñaëc tính môùi vaø nhöõng thuaän lôïi cho vieäc thöïc hieän :

 Taêng caùc chu trình client-side vaø giaûm caùc yeâu caàu server-side

 Phaùt bieåu SELECT traû veà taäp caùc haøng

 API truy caäp ñeán caùc ñoái töôïng vaø döõ lieäu coù lieân quan

 Giaûm soá chuyeán ñi voøng troøn treân maïng

 Coù khaû naêng ñieàu khieån caùc coät LOB

 Moät taäp API goïi thöïc hieän caùc thao taùc treân LOB vaø treân FILE

 Caûi tieán caùc khaû naêng cuûa NLS (National Language Support)

 Coù söï duy chuyeån ñöôøng daãn trong OCI vaø coù moät soá khaû naêng troän laãn vieäc goïi cuõ vaø môùi

trong moät öùng duïng

 Caûi tieán hoå trôï cho nhieàu moâi tröôøng

 Caùc chöùc naêng theâm vaøo cung caáp vieäc truy caäp qua laïi caùc object trong moät Oracle8

server .

VII.Taïi sao phaûi söû duïng OCI ?

Noùi chung coù nhieàu phöông phaùp truy caäp vaøo moät Oracle database nhö söû duïng ODBC , SQL

*Plus … Nhöng OCI giuùp truy caäp tröïc tieáp vaøo Oracle database tieát kieäm ñöôïc thôøi gian truy

caäp . Vaán ñeà thôøi gian truy caäp caøng trôû neân coù yù nghóa ñoái vôùi moät database lôùn .

Tuy nhieân caùc haøm OCI raát phöùc taïp(coù nhieàu thoâng soá ) trôû khoâng thaân thieän ñoái vôùi ngöôøi

duøng . Muoán söû duïng ñöôïc OCI ñoøi hoûi ngöôøi duøng phaûi am hieåu khaù tæ mæ veà noù . Vì theá muïc

ñích cuûa ñeà taøi naøy laø xaây döïng moät giao dieän laäp trình thaân thieän hôn maø ngöôøi duøng chæ caàn

thao taùc moät soá böôùc cô baûn thì coù theå thöïc hieän truy caäp nhanh choùng vaø deã daøng .

VIII. Moät soá khaùi nieäm

1. Database server : laø khoùa ñeå giaûi quyeát vaán ñeà quaûn lyù thoâng tin , quaûn soá löôïng lôùn döõ

lieäu vaø cho pheùp nhieàu user truy caäp ñoàng thôøi cuøng moät döõ lieäu

Moät Oracle server bao goàm : moät Oracle server instance vaø moät Oracle database .

2. Oracle instance : laø söï lieân keát giöõa caùc background process vaø vuøng nhôù toaøn cuïc (System

Global area) vuøng nhôù duøng chung cho caùc döõ lieäu cuûa user .

Moät Oracle instance coù hai loaïi process :

 user process : thöïc thi maõ cuûa chöông trình öùng duïng

 oracle process : thöïc thi caùc coâng vieäc cuûa user process vaø background process

nhaèm quaûn lyù coâng vieäc cuûa oracle server

3. Oracle database : laø moät hôïp caùc döõ lieäu ñöôïc xem nhö moät ñôn vò , chöùa vaø nhaän caùc

thoâng tin coù lieân quan vôùi nhau . Moät oracle database coù theå môû(acessable) hoaëc

ñoùng(unacessable) .

4. Caáu truùc cuûa Oracle database : bao goàm

 Logical structure

 Physical structure : coù 3 loaïi file

+ data file : chöùa döõ lieäu

Trang 6

Luaän aùn toát nghieäp -Xaây döïng giao dieän laäp trình OCI

GVHD :KS.Buøi Hoaøi Thaéng

+ redo log file : ghi nhaän caùc thay ñoåi data nhaèm ngaên chaën caùc loãi

+ control file : duøng ñeå nhaän dieän database vaø redo log file

5. Cursor(hay handle) : oracle duøng caùc vuøng daønh rieâng (private SQL areas) ñeå thi haønh caùc

caâu leänh SQL vaø löu tröõ thoâng tin cuûa quaù trình . Moät cursor laø moät caáu truùc PL/SQL cho pheùp

ñònh danh caùc vuøng naøy vaø truy caäp thoâng tin trong noù .

6. Oracle process : laø caùc process maø seõ ñöôïc goïi bôûi caùc process khaùc ñeå thöïc hieän coâng vieäc

theo yeâu caàu cuûa caùc process khaùc naøy . Coù 2 loaïi :

 Server process : nhaän caùc yeâu caàu cuûa caùc user process ñöôïc noái keát ñeán . Noù giao tieáp vôùi

caùc user process vaø taùc ñoäng vaøo Oracle ñeå mang veà caùc keát quaû theo yeâu caàu cho user .

 Background process : Oracle taïo moät taäp caùc background process cho moãi instance . Nhaèm

ñoàng boä vieäc thöïc hieän I/O vaø giaùm saùt caùc Oracle process töø ñoù laøm taêng tính xöû lyù song

song ñeå thöïc thi coâng vieäc toát hôn .

7. Program interface :laø cô caáu maø moät user process giao tieáp moät server process

8. Transaction : laø moät ñôn vò coâng vieäc luaän lyù bao goàm nhieàu SQL statement . Moät

transaction baét ñaàu vôùi SQL statement coù theå thöïc thi ñaàu tieân vaø keát thuùc khi noù ñöôïc commit

hoaëc rallback .

Moät transaction keát thuùc khi xaûy ra moät trong soá caùc ñieàu sau :

 Söû duïng commit statement hoaëc rallback statement

 Thöïc thi DDL statement . Neáu transaction hieän taïi chöùa baát kyø DML(such as CREATE,

DROP, RENAME, ALTER) statement naøo thì ñaàu tieân Oracle seõ commit transaction hieän

taïi roài thöïc thi vaø commit DDL nhö moät transaction môùi .

 Disconnect töø Oracle

 Moät user process keát thuùc khoâng bình thöôøng

Sau khi keát thuùc moät transaction SQL statement coù theå thöïc thi töï ñoäng baét ñaàu transaction tieáp

theo .

taàm quan troïng cuûa transaction : Oracle duy trì tính nhaát quaùn döõ lieäu döïa vaøo caùc transaction .

Caùc transaction cho pheùp ta ñieàu khieån linh hoaït khi laøm vieäc vôùi döõ lieäu vaø baûo veä söï toaøn

veïn döõ lieäu ngay caû trong tröôøng hôïp gaëp söï coá heä thoáng .

Commit transaction : nghóa laø taïo nhöõng thay ñoåi thöôøng xuyeân bôùi caùc SQL statement trong

transaction ñoù

Tröôùc khi moät transaction söõa chöõa döõ lieäu ñöôïc commit thì xaûy ra caùc d-ieàu sau :

 Oracle taïo ra caùc rollback segment record trong vuøng ñeäm rollback segment cuûa

SGA(system global area) ñeå chöùa caùc giaù trò döõ lieäu cuõ ñaõ bò thay ñoåi bôûi caùc SQL

statement cuûa transaction .

 Oracle ñaõ taïo ra caùc redo leg trong redo log buffer cuûa SGA . Nhöõng thay ñoåi naøy coù theå

ñöôïc ghi vaøo ñóa tröôùc khi commit transaction .

 Caùc thay ñoåi ñöôïc ñöa ñeán database buffer vaø chuùng coù theå ñi ñeán ñóa tröôùc khi moät

transaction thöïc söï ñöôïc commit .

Khi moät transaction ñöôïc commit xaûy ra caùc ñieàu sau :

 Baûng transaction beân trong noái keát vôùi caùc baûng ghi phaân ñoaïn rollback(rollback segment

records) maø transaction ñaõ ñöôïc commit ñeå ghi vaøo baûng unique system change

number(SCN) cuûa transaction ñoù .

Trang 7

Luaän aùn toát nghieäp -Xaây döïng giao dieän laäp trình OCI

GVHD :KS.Buøi Hoaøi Thaéng

 Process log writer ghi caùc redo log vaø SCN vaøo redo log file . Ñaây söï kieän cô baûn ñeå thieát

laäp commit transaction .

 Oracle môû khoùa treân caùc row vaø table .

 Oracle ñaùnh daáu transaction laø "complete" .

Rollback transaction : khoâng taïo baát kyø thay ñoåi döõ lieäu naøo maø ñaõ ñöôïc thöïc hieän bôûi SQL

statement trong moät uncommit transaction . Oracle cho pheùp rollback toaøn boä moät uncommit

transaction hoaëc töø moät savepoint .

IX. Giôùi thieäu Net8

Net8 laø lôùp phaàn meàm ñöôïc söû duïng ñeå giao tieáp giöõa client vaø server hoaëc giöõa caùc server .

Caùc user process vaø server process treân caùc maùy khaùc nhau giao tieáp vôùi nhau thoâng qua Net8 .

Net8 laø moät cô caáu caùc protocol thöïc hieän vieäc phaân boá xöû lyù vaø phaân boá database . Caùc

protocol ñònh nghóa caùch truyeàn vaø nhaän data treân moät maïng .

Trong ñeà taøi naøy vieäc truy caäp oracle database cuõng nhôø Net8 ñeå truyeàn vaø nhaän döõ lieäu .

Hình döôùi laø kieán truùc cuûa Net8 vaø chöông trình öùng duïng söû duïng thö vieän OCI ñeå truy caäp

vaøo Oracle database .

CHÖÔNG II : CAÙC BÖÔÙC CÔ BAÛN LAÄP TRÌNH OCI

I. Caáu truùc chöông trình OCI

Noùi chung muïc tieâu cuûa moät öùng duïng OCI laø noái keát ñeán Oracle Server , choïn tröôùc moät soá

loaïi trao ñoåi data thöïc hieän vieäc xöû lyù data . Moãi öùng duïng OCI ñöôïc thöïc hieän theo trình töï caùc

böôùc nhö hình 2-1:

Trang 8

client program

Net8

Oracle protocol

Adapter

Protocol stack

Oracle8

ORDBMS

Net8

Oracle protocol

Adapter

Protocol stack

OCI

Library

Server Client

Physical Network

Luaän aùn toát nghieäp -Xaây döïng giao dieän laäp trình OCI

GVHD :KS.Buøi Hoaøi Thaéng

Hình 2-1 : Löu ñoà chöông trình OCI cô baûn

Treân ñaây laø caùc böôùc cuûa moät chöông trình OCI toång quaùt . Tuy nhieân tuøy thuoäc vaøo chöùc naêng

cuûa chöông trình (quaûn lyù nhieàu giao tieáp , söû duïng object ,…) thì coù theå caàn theâm moät soá böôùc .

Quaù trình OCI chæ ñöôïc khôûi taïo moät laàn , moät öùng duïng coù theå taïo nhieàu moâi tröôøng nhö ñöôïc

minh hoïa ôû hình 2-2 :

Trang 9

Initialize Process

Initialize Enviroment

Allocation Handle and

Data structures

Connect to sever and

begin session

Issue SQL and process

Data

Disconnect

Free handles & Data

Structures

Initialize Process

Initialize Environment

Connect to server

andBegin Session

Connect to server

andBegin Session

Initialize Environment Initialize Environment

AllocateHandles and

Data Structures

AllocateHandles and

Data Structures AllocateHandles and

Data Structures

Connect to server

andBegin Session

Issue SQL and

Process Data

Free Handles & Data

Structures

Free Handles & Data

Structures

Issue SQL and

Process Data

Issue SQL and

Process Data

Disconnect Disconnect

Disconnect

Free Handles & Data

Structures

Hình 2-2 : Nhieàu moâi tröôøng trong moät quaù trình

Luaän aùn toát nghieäp -Xaây döïng giao dieän laäp trình OCI

GVHD :KS.Buøi Hoaøi Thaéng

II. Caùc caáu truùc cuûa data OCI

Handle vaø Descriptor laø hai caáu truùc khoâng trong suoát ñöôïc ñònh nghóa trong caùc öùng duïng OCI

vaø coù theå ñöôïc chæ ñònh tröïc tieáp thoâng qua caùc caùch goïi ñöôïc chæ ñònh roõ raøng , hoaëc chæ ñònh

aån bôûi caùc haûm OCI .

Handle vaø Descriptor chöùa thoâng tin lieân quan ñeán data , caùc noái keát hoaëc caùch thöïc hieän cuûa

öùng duïng .

III. Handle

Haàu heát Oracle8 OCI goïi danh saùch tham soá cuûa chuùng hoaëc nhieàu handle . moät handle laø moät

pointer khoâng trong suoát troû ñeán moät vuøng löu tröõ ñöôïc chæ ñònh bôûi thö vieän OCI . Moät handle

coù theå ñöôïc söû duïng ñeå chöùa phaïm vi hoaëc thoâng tin noái keát , hoaëc coù theå chöùa thoâng tin veà caùc

haøm OCI hoaëc data . Handle coù theå laäp trình öùng duïng deã hôn , bôûi vì coù thö vieän ñeå quaûn lyù

data naøy .

Haàu heát caùc öùng OCI caàn truy caäp thoâng tin ñöôïc löu tröõ trong handle . ñeå truy caäp thoâng tin

naøy ta duønh hai haøm OCI OCIAttrGet() vaø OCIAttrSet()

Baûng döôùi ñaây ñöa ra danh saùch caùc handle ñöôïc ñònh nghóa cho OCI . Moãi kieåu handle , kieåu

data C vaø kieåu handle haèng soá ñöôïc ñöa ra .

Table 2-1 OCI Handle Types

C Type Description Handle Type

Trang 10

Tải ngay đi em, còn do dự, trời tối mất!