Việc sử dụng OLE DB trongORACLE Server đã mở ra một lĩnh vực mới với câu hỏi phân tán, khả năngthực hiện câu hỏi từ nhiều nguồn dữ liệu dữ liệu khác nhau, không chỉ giớihạn trong ORACLE
Trang 1khoá luận Xin cảm ơn các thầy cô trong khoa Công nghệ thông tin cùng các thầy cô giáo Trờng Đại Học Vinh đã truyền thụ cho em những tri thức quý báu trong suốt 4 năm học qua Công ơn dạy dỗ của thầy cô chỉ có thể đền đáp bằng thái độ học tập nghiêm túc và hăng say, em sẽ cố gắng làm đợc điều đó không chỉ trong quá trình làm khóa luận mà trong cả quá trình công tác sau này.
Sự quan tâm giúp đỡ của bố mẹ, gia đình và bạn bè cũng là một nguồn động viên lớn, con mong rằng những gì làm đợc trong quá trình học tập này sẽ là một phần nhỏ bé đền đáp công ơn của bố mẹ và lòngtin tởng của mọi ngời
Chơng I
Đặt vấn đề
I Giới thiệu đề tài quản lý thi của sinh viên
Quản lý hành chính là một phần công việc quan trọng không thể thiếutrong bất kỳ một tổ chức hay cộng đồng nào, trớc kia việc quản lý chỉ thựchiện bằng sổ sách giấy tờ, nh vậy rất tốn công sức và thời gian, hơn nữa hiệuquả công việc lại không cao, vì vậy việc đa tin học vào quản lý là rất cầnthiết và đáng quan tâm Ngày nay các bài toán quản lý nh quản lý nhân sự,quản lý hàng hoá, quản lý sinh viên đã là một mảng đề tài quen thuộc, các
Trang 2công cụ trợ giúp quản lý gồm ngôn ngữ lập trình và hệ quản trị cơ sở dữ liệu
từ cổ điển nh Foxpro đến các công cụ phổ biến hiện nay nh Acess, VisualBasic hay thậm chí là Excell đều đã đợc xem xét sử dụng tuỳ theo phạm vibài toán và điều kiện cho phép Công tác quản lý thi của sinh viên trong tr-ờng đại học với số lợng sinh viên đông, xuất phát từ nhiều thành phần và cónhiều thông tin cần quản lý thực sự là một khối công việc lớn cần trợ giúpcủa máy tính Vì vậy trong khoá luận tốt nghiệp này, em muốn đa ra mộtcách tiếp cận và giải quyết vấn đề này với mục tiêu tự động hoá các côngviệc tính toán, xử lý dữ liệu, giảm thiểu nhiệm vụ của con ngời trong hệthống và thống nhất các chức năng thành một hệ thống thống nhất có tổ chứcchặt chẽ Nếu đợc xây dựng tốt, hệ thống mới với sự hỗ trợ của mạng máytính sẽ giảm gánh nặng cho ngời quản lý, tăng tính thuận tiện cho ngời sửdụng, các luồng thông tin chuyển giao trong hệ thống chủ yếu là dới dạng tínhiệu truyền trên mạng máy tính, thông tin giao tiếp với ngời sử dụng có thể ở
2 dạng là hiển thị trên màn hình và trên giấy tờ
Song song với tính thuận tiện sử dụng, thì vấn đề an toàn thông tincàng cần phải đặc biệt chú trọng Mục tiêu xây dựng hệ thống này là triểnkhai một hệ thống quản lý toàn diện trên mạng máy tính, các hoạt động giaotiếp hệ thống nh truyền thông tin, xem thông tin hay chuyển giao thông tingiữa các chức năng xử lý đều thực hiện thông qua mạng, vì thế mạng phải
đảm bảo tính an toàn cao, yêu cầu này chỉ đợc thực hiện tốt khi có đủ điềukiện kỹ thuật và chuyên môn: một mạng máy tính với máy chủ mạnh, đờngtruyền tốt và trình độ quản trị cao, bản thân những ngời làm công tác quản lýcũng cần có kiến thức nhất định về tin học Tuy nhiên với một nớc mà điềukiện vật chất còn nghèo nàn, trình độ khoa học kỹ thuật cha cao nh ViệtNam, những yêu cầu trên cha thể cùng lúc đáp ứng Chơng trình cần phù hợpvới điều kiện hiện thời, đồng thời cho phép nhiều ngời dùng ở những trình độkhác nhau có thể sử dụng nó Mặt khác, hệ thống với tính công khai cànglớn, tức là càng cho phép nhiều ngời sử dụng thì khả năng thâm nhập củanhững “cracker” kẻ phá hoại thông tin càng cao lúc này nhiệm vụ của bảomật thông tin không chỉ đơn giản nh trong các hệ tập trung trớc đây là ngănchặn những truy cập bất hợp pháp vào một máy trung tâm tính toán và lu trữdữ liệu mà nó phải ngăn không cho thông tin bị sửa đổi trái phép trong khivẫn đảm bảo cho những ngời sử dụng khác truy cập một cách thuận tiệnnhất
Trong đề tài này, dựa trên mô hình hệ thống đang hoạt động khảo sáttại trờng Đại học Vinh và các nguyên tắc quản lý chung cũng nh các nguyêntắc đặc thù của Bộ giáo dục, em tiến hành phân tích những đặc trng của cácchức năng, có sắp xếp lại cho hợp lý và thuận tiện hơn nhằm mô hình hoá hệthống thực tế bằng các chức năng máy tính, sau đó xây dựng chơng trìnhthực hiện Chơng trình sẽ từng bớc đợc hoàn thiện để hớng tới một hệ thốngquản lý thống nhất hiệu quả và có giá trị sử dụng trong thực tế
II Lựa chọn công cụ thực hiện
Việc lựa chọn công cụ thực hiện là vô cùng quan trọng Trớc hết nóphản ánh mức độ hiểu biết vấn đề của ngời giải quyết bài toán sâu sắc đến
đâu, anh ta cần phải nắm rõ những đặc trng của bài toán, cân nhắc những
điểm mạnh yếu của môi trờng xung quanh bài toán để chọn đợc công cụ phùhợp Hơn nữa, công cụ thực hiện sẽ quyết định điểm mạnh yếu của chơngtrình xây dựng trên đó
Trang 3Bài toán quản lý cần hai loại công cụ chính là hệ quản trị cơ sở dữ liệu
để xây dựng và quản lý dữ liệu cho hệ thống và ngôn ngữ lập trình để xâydựng chơng trình Trớc đây, các ứng dụng về cơ sở dữ liệu hầu hết đợc xâydựng trên hệ quản trị truyền thống là Foxpro (bao gồm những phiên bản nhFoxpro for Dos, Foxpro for Windows và mới đây là Visual Foxpro) hoặcAcess, các hệ này rất mạnh trong phạm vi những ứng dụng nhỏ Hiện nayxuất hiện thêm nhiều hệ quản trị mới phát huy khả năng trong các ứng dụnglớn: DB2, Oracle Server Bài toán quản lý sinh viên là kết hợp của nhiều bàitoán nhỏ nh quản lý nhân sự, quản lý điểm, quản lý học bổng, quản lý họcphí nên phạm vi của nó tơng đối lớn, nếu dùng Acess hay FoxPro thì khôngthích hợp Với nhu cầu và khả năng cung cấp máy tính hiện nay thìORACLE Server là hệ quản trị cơ sở dữ liệu đợc phát triển trong môi trờngtính toán phía máy chủ trong thập kỷ 90, bắt đầu với mô hình truyền thốngclient/Server và hiện nay đang phát triển với các xu hớng công nghiệp Gần
đây, ORACLE Server đợc điều chỉnh để thích nghi với các vai trò khác củaServer, bao gồm Internet, các ứng dụng phân tán ORACLE Server có khảnăng thực hiện các câu hỏi với các nguồn dữ liệu phân tán Vì những lý dotrên mà tôi quyết định lựa chọn hệ quản trị CSDL ORACLE Server làm hệquản trị cơ sở dữ liệu cho bài toán
ORACLE Server cho phép ADO (ActiveX Data Object) - tập đối tợngmẫu với những đặc tính tiên tiến truy cập dữ liệu của nó một cách dễ dàng vàtiện lợi cho hầu hết các ứng dụng ADO có thể viết bằng nhiều ngôn ngữkhác nhau nh C++, J++ hay FoxPro; tuy nhiên Visual Basic là cách đơn giản
và thuận tiện nhất để phát triển các ứng dụng ADO truy cập cơ sở dữ liệuoracle Server Trong phần sau sẽ trình bày cụ thể về các cơ sở lý thuyết đểxây dựng hệ thống cũng nh các đặc tính u việt của các công cụ kể trên
Trang 4Chơng II
Tìm hiểu về oracle
II.1 Hệ quản trị ORACLE Server
II.1.1 Tổng quan về ORACLE Server
Phần này đa ra những giới thiệu về ORACLE Server để đa ra nhữngkhái niệm chung nhất về hệ quản trị ORACLE Server
Trớc hết, cần đặt ORACLE Server ở vai trò của một hệ quản trị cơ sởdữ liệu (DBMS) Hệ quản trị cơ sở dữ liệu là một lớp các sản phẩm phầnmềm dùng làm công cụ quản lý và điều khiển cơ sở dữ liệu
Thứ hai, ORACLE Server là một hệ quản trị cơ sở dữ liệu quan hệ.Nói theo một cách khác, nó là một DBMS dựa trên mô hình quan hệ và chịu
ảnh hởng của ngôn ngữ chuẩn SQL
Thứ ba, ORACLE Server đợc phát triển trong môi trờng tính toán phíamáy chủ trong thập kỷ 90, bắt đầu với mô hình truyền thống client/Server vàhiện nay đang phát triển theo các xu hớng công nghiệp Gần đây, ORACLEServer đợc điều chỉnh để thích nghi với các vai trò khác của Server nhInternet, đa quan hệ và các ứng dụng phân tán Việc sử dụng OLE DB trongORACLE Server đã mở ra một lĩnh vực mới với câu hỏi phân tán, khả năngthực hiện câu hỏi từ nhiều nguồn dữ liệu dữ liệu khác nhau, không chỉ giớihạn trong ORACLE Server, nó có thể kết nối với các nguồn dữ liệu củaInformix, Sybase
Ngày nay, thông tin trong cơ sở dữ liệu nói chung gồm hai loại: OLTP
và DSS
OLTP (Online Transaction Processing): dùng để xử lý các giao dịchtrực tuyến, lu trữ các dữ liệu động dựa trên các giao dịch xảy ra trong khoảngthời gian cho phép Nó thờng đợc gọi là dữ liệu có tính thao tác
DSS: dùng cho các hệ trợ giúp quyết định, gồm các dữ liệu tơng đốitĩnh và các dữ liệu mang tính lịch sử, thờng đợc gọi là dữ liệu có tính phântích
ORACLE Server luôn là một hệ quản trị OLTP tốt, điểm mới trongORACLE Server là nó đợc tăng cờng thêm một số các đặc trng mới và hỗtrợ cho các câu hỏi cần truy nhập đến cơ sở dữ liệu lớn
1 Hệ quản trị cơ sở dữ liệu
Trớc hết ta làm quen với khái niệm Hệ quản trị cơ sở dữ liệu (DBMS –Database Management System): Hệ quản trị cơ sở dữ liệu là một sản phẩmphần mềm đặc biệt để quản lý các cơ sở dữ liệu
Sự ra đời và phát triển của DBMS:
Các ứng dụng hớng dữ liệu nói chung gồm 3 dịch vụ đối với ngời dùng:
Dịch vụ biểu diễn (Presentation): nhận dữ liệu và biểu diễn dữ liệu chongời sử dụng
Các luật (Business rule): xác định tính hợp lệ của dữ liệu theo các luật
Truy nhập dữ liệu (Data access): lu trữ và lấy dữ liệu từ đĩa
Trang 5Hình 1: Ba dịch vụ của một ứng dụng dữ liệu đối với ngời dùng
Ban đầu, các ứng dụng thờng không phân biệt các vai trò trên, ngời lậptrình cho ứng dụng thờng phải đảm nhiệm cả việc biểu diễn dữ liệu, nhận dữliệu từ ngời dùng, kiểm tra tính hợp lệ và lu trữ dữ liệu, đó là các ứng dụng
đơn khối
Sau đó, các vai trò đợc phân tách dần, từ mức logic đến mức vật lý.Việc phân tách các dịch vụ truy nhập cơ sở dữ liệu khỏi ứng dụng cho phépphát triển hệ quản trị cơ sở dữ liệu thành một sản phẩm phần mềm chung chonhiều mục đích sử dụng Các hệ này đã phát triển từ mức chỉ có khả năng lutrữ và lấy dữ liệu tới khả năng kiểm tra tính hợp lệ bằng các luật
Bớc đột phá này đã tạo ra một lớp sản phẩm phần mềm mới mà ngàynay ngời ta gọi là hệ quản trị cơ sở dữ liệu Bằng cách tách riêng phần xử lýdữ liệu, ta đã giảm đợc chi phí phải viết lại hay tạo lại các chơng trình lu trữdữ liệu cho từng ứng dụng, thay vào đó, các ứng dụng chỉ cần giao tiếp vớiDBMS và nó sẽ xử lý dữ liệu giúp bạn
Sự khác nhau cơ bản giữa cơ sở dữ liệu và hệ quản trị cơ sở dữ liệu là:cơ sở dữ liệu là một tập hợp dữ liệu, trái lại hệ quản trị cơ sở dữ liệu lại lu trữ
và duy trì cơ sở dữ liệu đó Một cơ sở dữ liệu gồm các bảng dữ liệu, chỉ số,các luật ràng buộc, phụ thuộc, trigger, và các thủ tục lu trữ; điều này tạo nên
sự khác biệt giữa các cơ sở dữ liệu, nhng nó vẫn luôn đợc chứa trong mộtDBMS DBMS sẽ cung cấp các công cụ lu trữ, truy nhập dữ liệu, công cụtruy vấn, quản trị và các tiện ích khác để quản lý cơ sở dữ liệu đó
Trang 62 Hệ cơ sở dữ liệu quan hệ
Những năm cuối 1960, đầu 1970, các nhà nghiên cứu của IBM và nhàtoán học E.F.Codd đã đa ra mô hình quan hệ cho hệ quản trị cơ sở dữ liệu.Theo lý thuyết về tập chuẩn cho lu trữ và thao tác dữ liệu, Codd đề xuất ý t-ởng biểu diễn dữ liệu dới dạng bảng, nhờ đó việc quan sát dữ liệu độc lập vớibiểu diễn vật lý của DBMS Liên kết (quan hệ) giữa các bảng không thể hiệnbằng con trỏ vật lý mà bằng các giá trị dữ liệu thực sự
Các hệ quản trị cơ sở dữ liệu tuân theo mô hình quan hệ đợc gọi là hệquản trị cơ sở dữ liệu quan hệ (DBMS) Song song với sự ra đời của hệ quảntrị cơ sở dữ liệu quan hệ, nhu cầu về một ngôn ngữ truy vấn để giao tiếp vớidữ liệu cũng phát sinh, và SQL (Structured Query Language - ngôn ngữ hỏi
có cấu trúc) đợc coi là ngôn ngữ chuẩn Chuẩn hiện nay cho SQL là ANSISQL-92
Các đặc trng của một hệ cơ sở dữ liệu quan hệ:
a Các khoá Candidate, Primary, Alternate: khi một bảng
không có các hàng lặp lại thì bạn có thể dùng các giá trị dữ liệu để định danhchính các hàng đó Khoá Candidate là một cột hoặc một nhóm cột đảm bảotính duy nhất trong bảng Trong một bảng có thể có nhiều khoá Candidatebởi vì có nhiều cột hoặc nhóm cột khác nhau nhng vẫn đảm bảo tính duynhất của hàng trong bảng Khoá Primary là khoá Candidate duy nhất do ngờithiết kế dữ liệu chỉ ra, nó dùng để liên kết với các bảng khác Các khoáCandidate khác không là khoá Primary thì gọi là khoá phụ hoặc khoá thaythế (alternate)
b Data manipulation (thao tác dữ liệu): một hệ quản trị cơ sở
dữ liệu quan hệ phải cung cấp khả năng lấy, chèn, cập nhật, xoá các hàngtrong bảng Ngôn ngữ truy vấn phục vụ tốt nhất cho các khả năng này làSQL, nó bao gồm các câu lệnh SELECT, INSERT, COMMAND, DELETE
để thao tác với dữ liệu
c Transaction (giao dịch): là khả năng thực hiện một số các câu
lệnh nh là một khối công việc thống nhất ORACLE Server coi một hoặc mộttập thao tác lên dữ liệu nh một giao dịch, giao dịch hoặc đợc thực hiện toàn
bộ hoặc bị phá vỡ toàn bộ Nếu giao dịch không thành công thì cơ sở dữ liệu
sẽ đợc phục hồi về trạng thái ổn định trớc đó
d Concurrent access (truy nhập đồng thời): hệ quản trị cơ sở
dữ liệu phải hỗ trợ khả năng truy cập đồng thời, tức là cho phép nhiều ngời
sử dụng cùng truy nhập vào cơ sở dữ liệu ORACLE Server dùng phơng phápkhóa: khóa các hàng, các trang hoặc các bảng để thao tác dữ liệu của ngời sửdụng này không ảnh hởng đến thao tác của ngời khác, nhờ đó đảm bảo chomỗi ngời sử dụng có thể quan sát dữ liệu một cách nhất quán
e Catalog: hệ quản trị cơ sở dữ liệu phải hỗ trợ tập các bảng quan hệ
dữ liệu, gọi là Catalog, nó lu trữ dữ liệu về cơ sở dữ liệu ORACLE Server lutrữ catalog và những bảng hệ thống của mọi cơ sở dữ liệu trong các bảng củacơ sở dữ liệu master
f Views (khung nhìn): cơ sở dữ liệu quan hệ cung cấp các khung
nhìn cho phép xem dữ liệu trong các bảng
3 Giao dịch - SQL
Việc định nghĩa các bảng cơ sở dữ liệu và nạp dữ liệu vào đó đợc thựchiện qua ngôn ngữ giao diện hỏi của ORACLE Server là SQL*PLUS.Transact - SQL (T- SQL) là một kiểu "tiếng địa phơng" của ngôn ngữ chuẩn
Trang 7SQL cho phép định nghĩa các bảng, nạp dữ liệu vào và lấy dữ liệu ra khỏibảng dữ liệu của ORACLE Server.
II.1.2 Cấu trúc vật lý và logic của oracle Server
CSDL oracle có một lớp vật lý và một lớp logic Lớp vật lý bao gồmtất cả các tập tin nằm trên đĩa, các thành phần của lớp logic ánh xạ dữ liệu
đến những thành phần của lớp logic Vị trí các loại tập tin này không ảnh ởng đến chức năng của CSDL
h-1 Lớp vật lý
Lớp vật lý bao gồm 3 loại tập tin nhĩ phân đó là: các tập tin dữliệu(data file), các tập tin điều khiển (control file), và các tập tin phục hồi(redo log file)
- Tập tin dữ liệu: lu trữ thông tin có trong CSDL, phụ thuộc vào kích
th-ớc, các bảng và các đối tợng khác mà có thể có một hay nhiều tập tin trongmột CSDL Tập tin dữ liệu có kích thớc cố định và không bao giờ tự pháttriển lớn hơn kích thớc ban đầu tạo ra
- Tập tin điều khiển: Mỗi CSDL có ít nhất một tập tin điều khiển các
tập tin này ghi tên của CSDL, vị trí các tập tin dữ liệu và tập tin redo logcùng với các thông tin đồng bộ để đảm bảo rằng chúng luôn hoạt động ănkhớp với nhau
- Các tập tin phục hồi (Redo log): lu giữ các thông tin để phục hồi trong
trờng hợp một hệ thống bị sự cố Các tập tin này ghi lại toàn bộ quá trìnhthay đổi của CSDL Trong trờng hợp h hỏng nhng không mất dữ liệu Oracle
có thể sử dụng những thông tin trong tập tin redo log một cách tự động màkhông cần đến sự can thiệp của ngời quản trị CSDL
2 Lớp logic
Lớp logic bao gồm các yếu tố sau:
- Một hay nhiều không gian bảng (tablespace)
- Các lợc đồ CSDL (database schema) bao gồm nhiều đối tợng nh bảng(table), chỉ mục (idex)
Mỗi lợc đồ thuộc về một tài khoản ngời sử dụng đợc xác định bởi tênngời sử dụng (username) và mật khẩu của ngời sử dụng (password) duy nhất
đối với CSDL
2.1 Không gian bảng và các tập tin dữ liệu
CSDL đợc chia thành một hay nhiều mẫu logic gọi là không gianbảng Một không gian bảng bao gồm một hay nhiều tập tin dữ liệu vật lý, ng-
ợc lại một tập tin dữ liệu vật lý chỉ thuộc vào một không gian bảng Trongquá trình tạo CSDL Oracle tự động tạo không gian bảng hệ thống (tablespacesystem) đó là nơi chứa từ điển dữ liệu của toàn bộ CSDL Trong quá trình tạotập tin dữ liệu ta có thể để nó ở không gian bảng hệ thống hoặc không gianbảng của riêng mình tạo ra
2.2 Lợc đồ CSDL (Schema CSDL)
Một lợc đồ kết hợp với một ngời sử dụng CSDL, một lợc đồ là một tậphợp các lợc đồ sau: bảng, chỉ mục, nhóm, bí danh Các đối tợng lợc đồ làcác cấu trúc lu trữ dữ liệu logic Ta sẽ xét một số đối tợng của lợc đồ:
- Bảng (table): là đơn vị cơ bản lu trữ dữ liệu trong oracle, dữ liệu đợc
lu trữ thành các hàng và các cột, mọi thao tác đối với bảng đều đợc thực hiệngiống nh những CSDL quen thuộc đã học
Trang 8- Tổng quan (View): một view là sự hiện thị dữ liệu chứa trong một hay
nhiều bảng, một view là một bảng ảo nó lấy kết xuất từ một truy vấn và nó
đ-ợc thao tác giống nh một bảng
- Bí danh (Synonym): Nó là một bí danh của bất kỳ một bảng hay
view Nó chỉ là một định danh trong từ điển dữ liệu, chúng thờng đợc sửdụng để che tên và chủ của đối tợng, đơn giản hoá câu lệnh SQL cho ngờidùng
- Chỉ mục (Index): là cấu trúc tuỳ chọn kết hợp với bảng hoặc là tập
hợp các bảng Một Index đơn thuần chỉ là một đờng truy xuất nhanh đến dữliệu, nó chỉ ảnh hởng đến tốc độ thực hiện Khi cho một giá trị dữ liệu đợcindex thì index trỏ trực tiếp vào vị trí của hàng chứa giá trị đó Oracle tự
động duy trì index khi nó đợc tạo, chỉ mục hoàn toàn độc lập về mặt logic vàvật lý với dữ liệu trong bảng kết hợp Ta có thể tạo ra và xoá chỉ mục bất cứlúc nào mà không ảnh hởng đến bảng gốc và các chỉ mục khác
- Nhóm (Cluster): Là một phơng pháp tuỳ chọn để lu trữ dữ liệu bảng.
Một cluster là một nhóm các bảng có cùng các khối dữ liệu do chúng cóchung các cột và thờng sử dụng chung với nhau
- Thủ tục lu trữ và hàm (Store procedre và function): nó là một tập hợp
các câu lệnh SQL đợc nhóm với nhau nh một tập tin thực thi để thực hiệnmột tác vụ nào đó
- Các trigger CSDL (database): Một database trigger là một thủ tục
chạy tự động khi một sự kiện xảy ra nh chèn, xoá, chọn dữ liêu từ bảng
3 Các khối, vùng và đoạn dữ liệu (Data Block, Extent và Segment)
Oracle định vị không gian CSDL logic cho tất cả dữ liệu trong mộtCSDL Các đơn vị của không gian CSDL là các khối, vùng và đoạn dữ liệu
Đơn vị không gian logic nhỏ nhất là data block, mỗi data block tơngứng với một số byte không gian CSDL
Mức kế tiếp của không gian CSDL logic là vùng (extent) Một vùng làmột số xác định các khối dữ liệu liên tục đợc định vị để chứa một loại thôngtin xác định
Mức lu trữ dữ liệu cao hơn vùng là đoạn (segment), một đoạn là mộttập hợp các vùng đợc định vị cho một loại cấu trúc CSDL đặc biệt
Oracle định vị các segment theo đơn vị một segment, khi các extent
đang có của một segment đầy, Oracle định vị một extent khác cho segment
đó do đó các extent không hẳn nằm liên tục trên đĩa
4 Cấu trúc bộ nhớ và các tiến trình
4.1 Cấu trúc bộ nhớ
Oracle tạo ra và sử dụng các cấu trúc bộ nhớ để hoàn thành một số côngviệc, các cấu trúc bộ nhớ cơ bản kết hợp với oracle là: vùng toàn cục hệthống (system globol area) và vùng toàn cục chơng trình (program globolarea)
Oracle instance là một thể hiện của Oracle nó là sự kết hợp các tiếntrình và cấu trúc bộ nhớ của oracle Server Một thể hiện của Oracle gồm hailoại tiến trình: các tiến trình ngời dùng và các quá trình Oracle Một tiếntrình ngời dùng thực hiện mã của một chơng trình ứng dụng hay một công cụ
Trang 9Oracle, Còn các tiến trình Oracle gồm các tiến trình Server thực hiện các tiếntrình ngời dùng và các tiến trình chạy ngầm để duy trì công việc của Oracle.
a System globol area: Là vùng nhớ dùng chung chứa dữ liệu và các
thông tin điều khiển của một thể hiện Oracle Nó bao gồm vài cấu trúc bộnhớ chính:
- Bộ đệm CSDL (data buffer): nó dùng để lu trữ những khối dữ liệu
th-ờng đợc sử dụng nhất, tập hợp các bộ đệm trong một thể hiện gọi là databuffer cache, buffer cache chứa các khối dữ liệu đã biến đổi cũng nh chabiến đổi
- Bộ đệm redo log (redo log buffer): nó lu trữ các mục redo các quá
trình thay đổi của CSDL, các mục redo này đợc lu trong tập tin redo logonline có kích thớc không đổi và nó đợc sử dụng khi CSDL có sự cố
- Các vùng chia sẻ (shared pool): nó chứa các cấu trúc bộ nhớ dùng
chung nh các vùng SQL dùng chung Một vùng SQL dùng chung đợc dùng
để xử lý mọi lệnh SQL xác định đa tới CSDL
- Các cursor: chỉ ra trạng thái hiện tại của câu lệnh SQl.
b Program globol area: Là bộ nhớ đệm kiểm soát thông tin của một quá
trình Server và chứa dữ liệu Nó đợc tạo ra khi một tiến trình Server đợc khởitạo
4.2 Cấu trúc các tiến trình
Một tiến trình là cơ chế trong hệ điều hành mà có thể thực hiện mộtchuỗi các bớc Một tiến trình (process) thờng có vùng nhớ riêng để chạy.Oracle Server có hai tiến trình chính: tiến trình ngời dùng và tiến trìnhOracle
a Tiến trình ngời dùng (client): Một tiến trình ngời dùng đợc tạo ra và
duy trì để thực hiện mã phần mền cua một chơng trình ứng dụng hay công cụcủa oracle
b Cấu trúc tiến trình của Oracle: các tiến trình của Oracle đợc gọi bởi
các tiến trình khác để thực hiện các chức năng của tiến trình gọi, các loại tiếntrình Oracle bao gồm các tiến trình Server và các tiến trình chạy ngầm
- Các tiến trình Server: Oracle tạo ra các tiến trình Server để quản lý
các yêu cầu từ các quá trình kết nối của ngời dùng Một tiến trình Server cónhiệm vụ tơng tác với Oracle để thực hiện các yêu cầu của tiến trình ngờidùng kết hợp
- Các tiến trình background: Oracle tạo ra một tập các tiến trình
background cho mỗi thể hiện, chúng hợp nhất các chức năng mà lẽ ra sẽ đợcquản lý bởi nhiều chơng trình Oracle chạy cho mỗi tiến trình ngời dùng Mỗithể hiện của Oracle có thể sử dụng một vài tiến trình background sau:
Database writer: Ghi các khối đã biến đổi từ bộ đệm dự liệu đến các tậptin dữ liệu chỉ cần một database writer là đủ cho hầu hết các hệ thống
Log writer (LGWR): Log writer ghi các mục redo log vào tệp dữ liệuredo log, khi một chuyển tác đợc xác lập và bộ đệm redo log đầy logwriter ghi các mục redo log vào các tập tin redo log online
Checkpoint (CKPT): ở một thời điểm xác định tất cả các bộ đệm dữ liệu
đã đợc biến đổi trong SGA sẽ đợc ghi vào tập tin dữ liệu bởi databasewriter, sự kiện này gọi là một checkpoint
Trang 10 System monitor (SMON): thực hiện phục hồi thể hiện lúc khởi tạo thểhiện, trong một hệ thống nhiều thể hiện SMON của một thể hiện cũng cóthể thực hiện việc phục hồi thể hiện bị hỏng đồng thời xoá các segmenttạm không dùng nữa và nối lại các extern trống trên đĩa để tạo không gianliên tục giễ định vị.
Process monitor (PMON): thực hiện việc phục hồi quá trình khi một quátrình ngời dùng bị hỏng, nó có trách nhiệm xoá bộ nhớ và giải phóng cáctài nguyên quá trình đang sử dụng
Archiver (ARCH): chép các tập tin redo log online vào bộ nhớ lu trữ khichúng bị đầy
Recoverer (RECO): đợc sử dụng để phân giải các chuyển tác phân tán
đang bị treo do sự h hỏng mạng hay hệ thống CSDL phân tán Vào cáckhoảng đã định nó cố gắng kết nối CSDL từ xa và thực hiện commit hayrollback của bất kỳ chuyển tác nào đang bị treo
Giao diện chơng trình: là cơ chế giao tiếp của một tiến trình ngời dùng vàmột quá trình Server nó cung cấp phơng tiện giao tiếp chuẩn giữa mộtcông cụ hay một ứng dụng client bất kỳ
5 Giao dịch (transaction), commit và rollback
Sự thay đổi dữ liệu sẽ không đợc ghi lại cho đến khi ngời dùng quyết
định tờng minh bằng các lệnh chèn, xoá, sửa đổi có hiệu lực Một giao dịch
là một đơn vị làm việc bao gồm một hay nhiều lệnh SQL, nó bắt đầu khi
ng-ời dùng kết nối vào CSDL và kết thúc khi một commit hay một rollback đợcphát ra Việc commit một chuyển tác tạo sự thay đổi thờng trực toàn bộchuyển tác vào CSDL, và một khi đã commit sự thay đổi không thể đảo ng-
ợc Trái lại rollback đảo lại toàn bộ sự thêm, sửa đổi, xoá trong chuyên tác,những thay đổi này không thể commit
6 Các tác vụ khởi tạo (startup) và chấm dứt (shutdown)
Một CSDL Oracle chỉ có sẵn cho ngời dùng khi Server đợc startup vàCSDL đợc mở nó đợc thực hiện bởi ngời quản trị mạng, quá trình đó thựchiện nh sau:
- Khởi động một thể hiện của Oracle
- Kết nối (mount) CSDL
Việc shutdown một thể hiện và CSDL gồm các bớc:
- Thu hồi kết nối (dismount) CSDL
- Shutdown thể hiện của Oracle
7 Bảo mật CSDL
Các hệ thống CSDL nhiều ngời sử dụng nh Oracle thì việc bảo mật làhết sức quan trọng, các cơ chế bảo mật bao gồm:
- Ngăn cản sự truy xuất dữ liệu trái phép
- Ngăn cản sự truy xuất trái phép các lợc đồ
- Điều khiển việc sử dụng đĩa
- Điều khiển việc sử dụng không gian hệ thống
- Giám sát các hành động của ngời dùng
Tính bảo mật của CSDL có thể phân ra làm hai loại riêng biệt:
Trang 11- Bảo mật hệ thống bao gồm đều khiển việc truy xuất và sử dụngCSDL:
Sự đăng nhập hợp lệ của username và password
Lợng không gian đĩa sẵn có cho mỗi schema của ngời sử dụng
Giới hạn về tài nguyên cấp cho mỗi user
- Bảo mật hệ thống kiểm tra:
user có quyền truy cập vào CSDL hay không?
Sự giám sát dữ liệu có hoạt động hay không?
Các tác vụ hệ thống nào user có thể thực hiện?
- Bảo mật dữ liệu bao gồm:
Xác định quyền user với một đối tợng schema và những tác vụ nhất định
mà user có thể thực hiện trên đối tợng schema
Các tác vụ nếu có đợc giám sát đối với mỗi đối tợng hệ thống
b Bảo mật vùng (Domain Security)
Mỗi user có một domain security nó bao gồm:
Các hoạt động có sẵn nh role của user
Các không gian đĩa (quota tablespace) có sẵn cho user
Giới hạn tài nguyên hệ thống
7.2 Đặc quyền (Privilege)
Một đặc quyền thực hiện một loạt các câu lệnh SQL đặc biệt, đặcquyền bao gồm:
a Đặc quyền hệ thống (privilege): cho phép đối tợng thực hiện một
hành động mức hệ thống, đặc quyền này rất mạnh nên hầu hết chỉ dành chocác nhà quản trị hệ thống và các nhà phát triển ứng dụng
b đặc quyền trên đối tợng (schema): Nó thờng đợc gán cho ngời
dùng cuối để thực hiện một số hành động trên các đối tợng schema nh chèn,xoá , sửa các hàng của bảng
c Cấp đặc quyền: đặc quyền đợc cấp cho các user để họ thực hiện biến
đổi dữ liêu trong một CSDL, privilege đợc cấp theo hai cách:
Các privilige cấp cho các user một cách tờng minh
Các privilige đợc gán cho các role, đó là nhóm các quyền đợc đặt tên vàsau đó role có thể đợc gán cho một user
d Role: Là một nhóm các privilige có liên quan đợc đặt tên để cấp cho các
user hay các role khác
e Các xác lập lu trữ và quota: Oracle cung cấp các biện pháp để định
hớng và giới hạn việc sử dụng không gian CSDL của từng user, bao gồmkhông gian (tablespace) mặc định, không gian tạm thời, không gian quota:
Trang 12- Tablespace mặc định: Mỗi user kết hợp với một tablespace mặc định,khi tạo một bảng mà không chỉ định cụ thể tablespace thì tablespace mặc
định sẽ đợc sử dụng nếu user có quyền tạo các đối tợng schema và đợc cấpquota trong tablespace
- Tablespace tạm thời: Mỗi user có một table space tạm thời, khi userthực hiện một câu lệnh SQL mà yêu cầu tạo ra một segment tạm thời thìtablespace tam thời sẽ đợc sử dụng, nó định vị tất cả các segment tạm thờivào một tablespace riêng
- Các giới hạn lu trữ (quota) tablespace: Oracle có thể giới hạn mộtkhông gian đĩa định sẵn để cung cấp cho các đối tợng trong một schema Cácquota có thể xác lập cho từng tablespace có sẵn của user
II.1.3 Mô hình kết nối trong Oracle Server
Trong phần này ta xây dựng một mô hình khái niệm để hiểu cáchclient và Server trong Oracle Server giao tiếp với nhau
Phần mềm client gửi yêu cầu cho Oracle Server và nhận dữ liệu từServer, giao tiếp này phải đi qua nhiều tầng liên kết trên client, từ tầng ứngdụng xuống tầng mạng, và ở phía Server thì nó đi theo chiều ngợc lại Ta coicác tầng này nh là các giải pháp cho 2 vấn đề sau:
- Vấn đề thứ nhất là truyền thông cơ sở dữ liệu: Các hệ quản trị cơ sở dữ
liệu, trong đó có Oracle Server phải phục vụ các mục đích chung, trong khi
đó các chơng trình client lại phục vụ cho một mục đích đặc biệt nào đó Làmthế nào mà các client rất khác nhau này có thể giao tiếp đợc với Server? Câutrả lời sẽ là tầng truyền thông cơ sở dữ liệu
- Vấn đề thứ hai là truyền thông mạng: Khi bạn đã có một ngôn ngữ
hay giao thức chung giữa client và Server, giao tiếp qua mạng giữa chúng sẽ
nh thế nào? Nếu chỉ có client phát ra yêu cầu hay Server sinh ra kết quả thìkhông đủ để coi là một giao tiếp mạng Giải pháp cho vấn đề này là th việnmạng
1 Truyền thông giữa tiến trình client và tiến trình Server
Mục đích của kiến trúc client/Server là phân tán các xử lý ứng dụnggiữa client và máy chủ cơ sở dữ liệu Nhiệm vụ của Server: truy nhập vàquản lý dữ liệu, cung cấp dịch vụ thực hiện các yêu cầu từ client Nhiệm vụcủa client: nhận dữ liệu đầu vào từ ngời sử dụng, biểu diễn dữ liệu trả về từServer Do cả client và Server thực thi tơng tác đồng thời nên cần có phơngpháp truyền thông giữa các tiến trình client và tiến trình Server, đó là cơ chếtruyền thông liên tiến trình (IPC-interprocess communication)
Hình 3 :Mô hình giao tiếp giữa client và Server
Interprocess
Communicati on
oracle Server
Client
Netword Componens NetwordComponens
Physical Netword
Trang 13Có hai loại IPC qua mạng: loại theo liên kết và loại quảng bá Truyềnthông liên tiến trình theo liên kết là giao tiếp hai chiều giữa client và Server,liên kết này chỉ tồn tại trong một khoảng thời gian nhất định Truyền thôngclient - Server trong Oracle Server là loại theo liên kết.
Phần mềm CSDL client cung cấp giao diện với ngời sử dụng Nó phảithực hiện mở một kết nối và một đờng truyền tới cơ sở dữ liệu trên máy chủ.Chỉ khi mở đợc kết nối, client và Server mới giao tiếp đợc với nhau Client
có thể tạo kết nối tới một hoặc nhiều Server tuỳ theo yêu cầu của từng ứngdụng Server phải điều khiển cùng một lúc nhiều kết nối của các client khácnhau, mối kết nối là một tiến trình riêng biệt
2 Tabular Data Stream – TDS
Phần mềm client không thể giao tiếp trực tiếp với hệ quản trị cơ sở dữliệu trên máy chủ Nếu DBMS giao tiếp trực tiếp với các ứng dụng client thìvới mỗi ứng dụng client mới lại phải viết lại DBMS Do vậy, mỗi DBMS cóquy tắc riêng cho các client muốn thiết lập giao tiếp với nó, đợc gọi là giaothức dòng dữ liệu mức logic - logical data stream protocol (còn gọi là giaothức truyền thông mức thấp - low level communications protocol)
Truyền thông từ client tới Server: giao thức TDS thực hiện nhúng cácthẻ giới hạn dòng dữ liệu vào trong các câu lệnh client gửi tới Server
Truyền thông từ Server tới client: Server gửi kết quả tới client, các thẻTDS mô tả cấu trúc của tập dữ liệu trả về, thông báo lỗi, trạng thái của yêucầu
Trong trờng hợp cả yêu cầu của client và kết quả trả về của Server đều
ở dạng văn bản thì TDS trộn lẫn văn bản và thẻ TDS miêu tả văn bản
Bạn có thể dùng dich vụ giám sát mạng (Network Monitor) của Windows
2000 Server để xem dữ liệu truyền giữa SQL và client thông qua TDS
Hình 4 : Client và Server giao tiếp với nhau thông qua TDS
3 Database API Components
Tuy đã có giao thức TDS nhng các ứng dụng client vẫn cha thể giao tiếp
đợc với DBMS Vì nếu ứng dụng client giao tiếp với DBMS thông qua giaothức TDS thì nó cần đảm nhiệm chức năng dịch các yêu cầu của nó thànhdòng dữ liệu TDS, giải mã dòng dữ liệu TDS để nhận kết quả trả về PhíaServer cần có chức năng dịch ngợc trở lại, từ dòng dữ liệu TDS thành các yêucầu của client, từ kết quả trả về cho client thành dòng dữ liệu TDS Đáp ứng
Tabular Data Stream (TDS)
oracle Server
Client
Netword Componens NetwordComponens
Physical Netword
Open Data Services Database API
Components
Trang 14yêu cầu đó, các thành phần cơ sở dữ liệu API đa thêm một tầng trừu tợnglàm nhiệm vụ dịch dữ liệu cho giao thức bậc thấp TDS và thể hiện giao diệnchuẩn cho client Oracle Server có 3 loại giao diện khác nhau: ODBC (OpenDatabase Connectivity - kết nối cơ sở dữ liệu mở), OLE DB, DB –Library(th viện cơ sở dữ liệu) trong đó ODBC là loại phổ biến với các ứng dụng hiệnnay, DB –Library là loại đầu tiên còn OLE DB là loại mới xuất hiện cùngOracle Server 8.0.
Hình 5 : Các thành phần giao tiếp với TDS
4 Các thành phần của IPC
Nh phần trên đã giới thiệu, TDS chỉ là một giao thức mang tính logic
về mặt định dạng dữ liệu, nó không có cơ chế duy trì kết nối giữa client vàServer cũng nh giao diện giao tiếp với tầng mạng ở cả client và Server Ngaytrong Database API Components và Open Data Services cũng không baogồm các chức năng tơng tác với tầng mạng Bởi vậy, cần có một thành phần
đảm nhận chức năng giao tiếp mạng mới có thể thực hiện truyền thông giữacác tiến trình client và Server, đó chính là IPC Components
Tầng IPC Components của client giao tiếp với tầng IPC Componentscủa Server để khởi tạo, duy trì, giải phóng kết nối cũng nh thực hiện gửi vànhận các yêu cầu, kết quả Tầng IPC Components nhận dữ liệu dạng TDS từtầng Database API Components và Open Data Services gói thành các gói tintruyền qua tầng mạng vật lý kết nối giữa client và Server Khi nhận các góitin từ tầng mạng vật lý, IPC Components thực hiện cắt bỏ các thông tinmạng, trả lại dữ liệu ở dạng TDS cho tầng Database API Components vàOpen Data Services
oracle Server Open Data Services Client Aplication
Client Netword library Protocol Stack
VBSQL RDO
OLE DB
Provider
ADO
DB Library
ODBC Driver TDS
Communtcation
Server IPC Components
Open Data Services
oracle Server
Client IPC
Components
data
Trang 15Hình 6: Vai trò của tầng IPC
5 Mô hình kết nối của ORACLE Server
Bây giờ ta đã có một mô hình chi tiết về quá trình truyền thông client Server trong ORACLE Server: Bắt đầu ứng dụng, client đa ra các yêu cầuliên kết, các lệnh cơ sở dữ liệu tới trình điều khiển cơ sở dữ liệu (ODBC,OLE DB, DB - Library) Các trình điều khiển dịch các yêu cầu của clientthành dữ liệu dạng TDS để gửi cho Server Khi trình điều khiển cơ sở dữ liệuyêu cầu kết nối, tầng th viện mạng sẽ chọn cơ chế IPC để thiết lập cách thứcgiao tiếp với Server Ví dụ: Khi phần mềm client chạy trên máy chủ (tức là
-hệ thống hoạt động trên một máy), kết nối giữa client và Oracle Server đợcthiết lập thông qua cơ chế named pipes Sau khi kết nối đợc thiết lập, trình
điều khiển cơ sở dữ liệu gọi đến các hàm trong th viện mạng để chuyển dữliệu dạng TDS thành các gói tin mạng, đẩy chúng vào ngăn xếp (stack) trongmạng, truyền qua đờng truyền vật lý
Vì tất cả các th viện mạng đều có chung một giao diện với trình điềukhiển cơ sở dữ liệu nó có thể sử dụng bất kỳ một th viện nào để kết nối vớiORACLE Server
Datta Client Application oracle Server
ODS(Open Data Services)
IPC Mechanism (name pipes,RPC,Sockets)
IPC Mechanism
(name pipes,RPC,Sockets)
Protocal Stack Protocal Stack
Database API Library
OLE DB ODBC DB-Libraray
Client-stite netword library
Named Multi- TCP/IP
Pipes Protocal Sockets
Client-stite netword library Named Multi- TCP/IP Pipes Protocal Sockets
Trang 16Hình 7: Mô hình kết nối của Oracle Server 8.0
Với mô hình kết nối nh trên, các ứng dụng theo mô hình client/Server
có thể chạy trên nhiều mô hình mạng khác nhau
6 Kết nối Server - to – Server
Cấu trúc đóng gói của các tầng truyền thông nh trên tạo điều kiệnthuận lợi cho việc kết nối giữa các Server Mô hình kết nối dựa trên nguyêntắc: bộ xử lý câu hỏi của Server này đợc thực hiện nh một client đối với mộtServer khác
Hình 8: Mô hình kết nối Server – to - Server
Trong Oracle Server , công cụ hỏi và công cụ lu trữ giao tiếp với nhauthông qua giao diện OLE DB, nhờ đó nó có thể kết nối tới nhiều nguồn cơ sởdữ liệu khác nhau nh Jet, Site Server, Index Server
ODBC Driver
Other OLE DB Provider
ODBC OLE DB Provider
SQL Server OLE DB Provider
oracle OLE DB Provider Other SQL
Sources
Rilational Engine OLE DB
Netword Libraries Netword Components Data
Trang 17
Hình 9: Giao diện kết nối OLE DB tới các nguồn cơ sở dữ liệu khác nhau
II.1.4 Quản trị Oracle Server
1 Cài đặt Oracle
Có rất nhiều phiên bản của Oracle có thể thích hợp với nhiều loại cấuhình máy khác nhau, tuỳ theo cấu hình máy của bạn và khả năng khai thácứng dụng mà bạn lựa chọn phiên bản thích hợp Trong phạm vi đề tài này tôilựa chọn phiên bản Enterprise của Oracle cài đặt trên Windown 2000 Server
2.1 Các môi trờng làm việc của Oracle
Oracle có hai môi trờng làm việc đó là SQL*PLUS và EterpriseManager Trong đó SQL*PLUS là môi trờng chuẩn nó cung cấp giao diệndòng lệnh rất thuận tiện cho ngời dùng Trái lại môi trờng EnterpriseManager cung cấp giao diện đồ họa, nó cung cấp một cách nhìn tổng thể về
hệ thống trong đó cây phân cấp và các hình ảnh đồ họa cùng với các quan hệgiữa chúng đợc thể hiện
Khi khởi động SQL*PLUS hay Enterprise Manager đòi hỏi bạn phải
đăng nhập Tên ngời sử dụng/mật khẩu do DBA cung cấp Với giao diện mànhình đăng nhập nh sau:
Sau khi đăng nhập đối với môi trờng SQL*PLUS ta có thể gõ lệnh tạidấu nhắc SQL> Còn đối với môi trờng Enterprise Manager ta chỉ việc clickchuột vào các chức năng tuỳ thuộc vào công việc mà bạn muốn thực hiện
2.2 Quản lý một Oracle Instance
a.Tập tin tham số Init.ora
Trang 18Mỗi thể hiện của CSDL là một tập hợp gồm các tiến trình nền và cấutrúc bộ nhớ mà Oracle sử dụng, mỗi thể hiện đó phải có một tập tin tham sốInit.ora Từ tập tin này thể hiện có thể nhận lại các tham số để chạy, nó đợcOracle sử dụng trong lần khởi động đầu tiên của một thể hiện.
Tập tin Init.ora đợc dùng để chỉ định:
- Tổng số không gian lu trữ đợc cấp phát cho vùng nhớ Oracle
- Segment Rollback nào đợc dùng
- Các cài đặt về ngôn ngữ sử dụng
- Các cài đặt để Oracle chạy trong chế độ máy chủ song hành
- CSDL và tập tin controll đợc dùng
- Khi nào sẽ tạo điểm kiểm tra
- Giới hạn về cơ cấu kiểm tra CSDL
- Sẽ khởi tạo tiến trình nền không uỷ nhiêm nào
Các tham số:
Tập tin tham số của oracle có dạng INIT xxxx.ORA, trong đó xxxx làtên CSDL mà tập tin tham số này liên hệ, thứ tự các tham số trong tập tin làkhông quan trọng và các tham số là tuỳ chọn Một số tham số cơ bản
Background_dump_dest Xác định nơi tiến trình nền đặt các file để ghi
vào (LGWR,DBW)Compatibke Phiên bản Server tơng thích với instance
Control_file Tên của các control_file
Db_block_Buffers Số lợng blocks cached trong SGA
Db_Name Định danh CSDL từ 8 ký tự trở xuống
Shared_pool_Size Kích thớc của Shared_pool
User_Dump_Dest Các file user debug đợc tạo thay cho tiến trình
ngời dùng
IFILE Tên của tham số đợc include vào file tham số
hiện thờiLog_Buffer Số Byte cấp cho vùng đệm redo log
Processes Kiểm tra số tiến trình lớn nhất của hệ điều
hành có thể nối với CSDLSQL_Trace Chỉ định tập tin SQL sẽ thực hiện khi tạo
CSDL
Tạo và lu các File tham số:
Kích hoạt Oracle Enterprise Manager Console/Truy nhập vào với mậtkhẩu hệ thống/Kích hoạt oracle instance manager, File tham số đợc lu giữtrong th mực %Oracle_home%\admin\sid\pfile Cho phép chúng ta xem xét
và sửa các tham số
b Khởi động và đóng CSDL (Startup và Shutdown)
Một CSDL Oracle sẽ sẵn sàng khi khởi động Oracle instance và mởmột database Các bớc khởi động:
Trang 19- Khởi động
- Kết nối với CSDL (Mount the database)
- Mở CSDL (Open the datatbase)
Trong môi trờng SQL*PLUS có thể khởi động CSDL theo tham biếncủa lệnh Startup, bao gồm:
- Startup nomount: Khởi động instance không kết nối CSDL
- Startup mount: Khởi động instance mount database nhng vẫn đóngnó
- Startup open: Khởi động instance và mở CSDL
Quá trình khởi động Oracle lấy các tham số mặc định trong file tham
số phục vụ cho việc khởi tạo Cấp phát vùng nhớ SGA và khởi động các tiếntrình nền
Shutdown CSDL gồm 3 giai đoạn:
- Thu hồi kết nối
Để tắt CSDL ta dùng lệnh Shutdown với các tham số
- Normal:Trong quá trình thực hiện lệnh không có một kết nối mới nàocho phép, database sẽ đợi cho đến khi kết nối kết thúc
- Immediate: Kết nối chấm dứt ngay lập tức, các thao tác xử lý chacommit đều bị rollback
- Abort: Kết nối chấm dứt và các thao tác cha commit thì không bịrollback
c.Tạo CSDL
Trớc khi tạo CSDL ta phải Connect bằng mật khẩu của DBA, có thểtạo CSDL bằng công cụ Database Configution Assistant hoặc Createdatabase:
Sử dụng Database cofigution Assistant: Cho phép tạo CSDL ở hai chế
độ:
- Typical: Tự động cài đặt CSDL chuẩn cùng với các file tham số khởitạo mặc định
- Customer: Cho phép tạo CSDL tuỳ theo ý muốn
Sử dụng cú pháp câu lệnh CREATE trong môi trờng SQL*PLUS:
CREATE DATABASE [database]
Trang 20[CHARACTER SET charset ][NATIONAL SET charset ][NATIONAL CHARACTER SET charset]
[DATAFILE filespec [autoextend_clause]
[, filespec [autoextend_clause] ]]
filespec :== 'filename' [SIZE integer][K/M] [REUSE]autoextend_clause:==[ AUTOEXTEND {OFF
/ON [NEXT integer [K/M]]
[MAXSIZE {UNLIMITED/ integer[K/M]}}}]
Trong đó:
Database: tên CSDL đợc tạo
CONTROLFILE REUSE: tên file tham số đã tồn tại đợc sử dụngLOGFILE GROUP : tên log file đợc sử dụng
MAXLOGFILES: số lợng tối đa log file group cho CSDL
MAXLOGMEMBERS: số lợng tối đa log file member cho một logfile group
MAXLOGHISTORY: số lợng tối đa các redo log trong một groupDATAFILE filespec: tên file dữ liệu đợc sử dụng
MAXSIZE
MAXDATAFILES: kích thớc khởi tạo của một database
MAXINSTANCES: số lợng lớn nhất các instance có thể đồng thờimount và open CSDL
AUTOEXTEND: cho phép hoặc không mở tự động các file dữ liệu
2.3 Quản lý các Server
Công cụ quản lý chính cho Oracle Server là Enterprise Manager, đó làmột tiện ích giàu tính đồ họa có khả năng quản lý nhiều máy ORACLEServer Có thể dùng Enterprise Manager để đặt cấu hình cho một OracleServer cụ thể và quản lý các cơ sở dữ liệu của nó
2.4 Quản lý nhiều cơ sở dữ liệu
Tất cả dữ liệu của Oracle Server đợc lu trong các cơ sở dữ liệu Mộtcơ sở dữ liệu là một tập các bảng và những đối tợng khác dựa trên các bảng
đó Bảng chứa dữ liệu đợc tổ chức theo hàng và cột, các đối tợng ràng buộchoặc thao tác trên dữ liệu
2.5 Các đối tợng của cơ sở dữ liệu
Bảng là thành phần cơ sở của cơ sở dữ liệu vì tất cả dữ liệu của nó đều
đợc lu trong các bảng Mỗi bảng chỉ thuộc về một cơ sở dữ liệu và mỗi cơ sởdữ liệu cũng chỉ thuộc một Oracle Server Một cơ sở dữ liệu gồm các đối t-ợng sau:
- Sechema (Biểu đồ cơ sở dữ liệu): các biểu đồ về cơ sở dữ liệu mà bạn
tạo ra
- Tables (Các bảng): các bảng hệ thống và bảng dữ liệu của cơ sở dữ
liệu đó
- Views (khung nhìn): những phần trích ra từ cơ sở dữ liệu đợc lu lại và
có thể truy nhập nh đối với các bảng
Trang 21- Stored procedures (các thủ tục lu trữ): các lệnh giao tác SQL đã đợc
biên dịch dùng để quản lý dữ liệu
- Users (ngời sử dụng): tên những ngời sử dụng đợc phép truy nhập các
đối tợng cơ sở dữ liệu
- Roles (vai trò): vai trò của ngời sử dụng trong cơ sở dữ liệu.
- Rules (luật): các ràng buộc trên dữ liệu áp dụng cho các bảng.
- Defaults (các mặc định): các luật mặc định có thể áp dụng cho các cột
của bảng (không tuyệt đối)
2.6 Oracle Server làm việc với các cơ sở dữ liệu nh thế nào?
b Mỗi phép cài đặt Oracle Server gồm 2 loại cơ sở dữ liệu: cơ sở
dữ liệu hệ thống và cơ sở dữ liệu do ngời sử dụng tạo ra
Cơ sở dữ liệu hệ thống gồm các cơ sở dữ liệu nh master, model, msdb
và tmpdb còn cơ sở dữ liệu ngời sử dụng gồm pubs- cơ sở dữ liệu ví dụ vàcác cơ sở dữ liệu mới do chính ngời dùng tạo ra
c Mỗi cơ sở dữ liệu Oracle Server gồm 3 loại file: file dữ liệu (chứa
tất cả các bảng) và file redo log (ghi lại lộ trình giao dịch transaction log),file control (điều khiển các hoạt động của hệ thống)
File redo log này ghi lại lịch sử của tất cả các giao dịch trên cơ sở dữliệu Mọi thay đổi đối với dữ liệu đều đợc coi là giao dịch và Oracle Server
sẽ ghi nhận những thay đổi đó vào file redo log trớc khi áp dụng thay đổi đólên dữ liệu Khi Oracle Server ghi vào file redo log thì nó sẽ ghi trực tiếp vào
đĩa chứ không qua bộ nhớ cache, trái lại các thay đổi dữ liệu đợc thực hiệnthông qua bộ nhớ cache
Vai trò của file redo log: nếu trong hệ thống có sự cố, khi OracleServer khởi động lại, nó có thể khôi phục lại trạng thái trớc đó dựa vào giaodịch Nếu giao dịch cha đợc xác nhận thì Oracle Server sẽ sử dụng lộ trìnhgiao dịch để quay lui Nếu giao dịch đã đợc xác nhận, Oracle Server dùng lộtrình giao dịch để đảm bảo rằng việc ghi dữ liệu đã đợc thực hiện đúng đắn,sau đó nó sẽ thực hiện thay đổi với dữ liệu bị mất sau sự cố nhng vẫn còntrong bộ nhớ Trong khi Oracle Server đang phục hồi dữ liệu thì bạn khôngthể truy nhập vào cơ sở dữ liệu Sau đây là biểu đồ ở mức khái niệm của mộtcơ sở dữ liệu Oracle Server và các file của nó:
Thông tin về lộ trình giao dịch đợc lu trong các file redo log (một hoặcnhiều bản)
Chú ý
- Các cơ sở dữ liệu của Oracle Server đợc lu trong các file chứ khôngphải trong các thiết bị
Trang 22- Mỗi cơ sở dữ liệu lu dữ liệu của nó trong các file dữ liệu và lu thôngtin về lộ trình giao dịch trong file redo log.
- Các file cơ sở dữ liệu và file redo log có thể tự giãn ra hay co lại, bạncũng có thể chọn điểm bắt đầu co giãn và kích thớc tối đa cho chúng
3 Sao lu và phục hồi dữ liệu
3.1 Khái niệm sao lu
Bản sao lu là một bản sao dữ liệu có định dạng nằm trên đĩa hay băng
từ Bản sao lu của một cơ sở dữ liệu bao gồm các bảng dữ liệu và bảng hệthống hay metadata cần cho việc tái tạo cơ sở dữ liệu
Bạn có thể sử dụng bản sao lu để khôi phục lại dữ liệu trong trờng hợp
có sự cố Trong ORACLE Server, bạn sao lu một cơ sở dữ liệu và bản ghi lộtrình giao dịch (transaction redo log) của nó cùng một lúc
Dữ liệu đợc sao lu ra đĩa hay băng từ trên cùng một máy chủ hoặc vàomáy chủ khác Nếu 2 máy chạy không cùng một lúc, thì có thể sao lu dữ liệucủa máy chạy trớc vào máy sau (máy này hiện không hoạt động) gọi là warmstandby- trong trờng hợp máy thứ nhất có sự cố thì máy thứ hai sẽ đợc đa vào
sử dụng Nếu điều kiện phần cứng cho phép, có thể sử dụng hệ thống bó củaMicrosoft (MCS Microsoft Clustering System) MCS cho phép bó 2 máyOracle Server vào nhau và hoạt động nh một hệ quản trị cơ sở dữ liệu duynhất, trờng hợp máy thứ nhất có sự cố thì máy thứ hai có thể thay thế ngaylập tức Dù phơng pháp bó có thể chống lại những hỏng hóc phần cứng nhngvẫn cần phải sao lu dữ liệu
Transaction redo Log file của Oracle Server
Các kỹ thuật sao lu dữ liệu đều liên quan đến lộ trình giao dịch của cơ
sở dữ liệu đó Lộ trình giao dịch chính là cơ chế thực hiện giao dịch củaORACLE Server Để hiểu đợc những lựa chọn và yêu cầu trong khi sao lu,bạn cần tìm hiểu vai trò của giao dịch và lộ trình giao dịch trong OracleServer
Nh đã biết, mỗi phép sửa đổi dữ liệu trong Oracle Server đợc coi làmột giao dịch, tức là tập các thao tác trong phép sửa đổi đợc coi là một nhómthao tác, giao dịch chỉ thành công khi tất cả các thao tác hoàn thành OracleServer hoàn thành giao dịch bằng việc ghi nhận sự thay đổi dữ liệu vàotransaction redo log rồi thay đổi cơ sở dữ liệu Quá trình đó đợc minh hoạtrong sơ đồ sau:
Oracle Server ghi các thông tin về trạng thái mới và trạng thái cũ củadữ liệu vào transaction redo log Nếu giao dịch bị thất bại giữa chừng do lỗihay bởi lệnh ROLLBACK, Oracle Server sẽ đọc các thông tin trongtransaction redo log, undo các thay đổi bằng cách ghi lại các giá trị cũ vào cơ
sở dữ liệu theo trình tự ngợc lại
Vì Oracle Server không ghi trực tiếp các thay đổi dữ liệu vào đĩa mà ghiqua cache nên trạng thái hiện thời của một cơ sở dữ liệu bao gồm các trangdữ liệu trên đĩa và trang dữ liệu trên cache Một số sự cố làm cho OracleServer không thể ghi đợc những thay đổi từ cache vào đĩa, khi đó dữ liệu trên
đĩa bị mất Trong trờng hợp này, bạn có thể nối các file dữ liệu trên đĩa vớitransaction redo log để nhận đợc trạng thái gần nhất cuả cơ sở dữ liệu trớc sự
cố Kỹ thuật cụ thể thực hiện điều này phụ thuộc vào kiểu sao lu, tuy nhiêncần nhấn mạnh rằng với bất cứ kiểu nào thì transaction log đều cần thiết
Trang 233.2 Các kiểu sao lu của Oracle Server
Oracle Server có 4 kiểu sao lu:
a Sao lu đầy đủ: bạn sao lu toàn bộ cơ sở dữ liệu cùng với lộ trình giao
dịch của nó Kiểu sao lu này mất nhiều thời gian và ảnh hởng đến hiệu năngcủa hệ thống; hơn nữa cách sao lu này cũng cha đủ để phục hồi toàn bộ cơ sởdữ liệu (chẳng hạn trong trờng hợp sự cố xảy ra giữa 2 lần sao lu mà có một
số giao dịch đã đợc xác định, tức là client coi nh dữ liệu trong cơ sở dữ liệu
đã đợc cập nhật nhng thực ra nó không thể khôi phục lại đợc) thì phải cầnthêm kiểu sao lu khác nh sao lu sai khác
b Sao lu file: chỉ sao lu một file hay nhóm file Với những cơ sở dữ liệu
lớn tới hàng chục hay hàng trăm gigabyte thì việc sao lu riêng từng file haynhóm file sẽ thuận tiện hơn Khi khôi phục lại các nhóm file, bạn phải ápdụng transaction log để đa cơ sở dữ liệu về trạng thái ổn định
c Sao lu sai khác: bạn sao lu các thay đổi đối với cơ sở dữ liệu tính từ lần
sao lu đầy đủ cuối cùng, đa các thay đổi đó vào transaction log Vì chỉ sao lucác trang dữ liệu bị thay đổi so với lần sao lu đầy đủ trớc đó nên việc sao lu
và khôi phục có phạm vi nhỏ và nhanh hơn sao lu đầy đủ Tuy nhiên nếu chỉ
sử dụng một bản sao lu kiểu này thì khi phục hồi, Oracle Server không thểxác định giao dịch đã kết thúc cha, có những thay đổi nào và nó đã đợc xácnhận cha Cách khắc phục là tạo nhiều bản sao lu tại nhiều thời điểm
d Sao lu transaction redo log: chỉ sao lu transaction redo log của giao
dịch, ghi nhận các giao dịch kể từ lần sao lu (đầy đủ hay sai khác) cuối cùnghoặc từ lần sao lu transaction redo log cuối cùng Kiểu sao lu này có u điểm
là có thể sử dụng transaction redo log để phục hồi dữ liệu tới trạng thái gần
nh tại thời điểm xảy ra hỏng hóc Nếu sự cố không làm cho máy chủ ngnghoạt động thì có thể kịp sao lu một bản transaction redo log trớc khi đóng lại
và khôi phục Tuy nhiên nó cũng có nhợc điểm là bản sao lu transaction redolog không có khả tích luỹ, bạn phải ghi lại tất cả transction log theo đúngtrình tự xây dựng nó
Khi sao lu một cơ sở dữ liệu, bạn chỉ cần dùng bản sao lu sai kháccuối cùng sau lần sao lu đầy đủ, sau đó bạn khôi phục bản sao lu transactionredo log theo đúng trình tự tạo ra nó hoặc các thao tác khôi phục khôngthành công Do tính tích luỹ, các bản sao lu sai khác sau lớn hơn bản trớc,trái lại kích thớc bản sao lu transaction redo log chỉ phụ thuộc vào lợng hoạt
động tính từ lần back up trớc
3.3 Ngăn chặn các sự cố
Các sự cố xảy ra với cơ sở dữ liệu có thể rơi vào các mức độ nghiêmtrọng sau:
a Ngời sử dụng có thể vô tình hay cố ý làm hỏng dữ liệu: Trờng
hợp này bạn sẽ khôi phục lại trạng thái dữ liệu tại một điểm thời gian trớckhi xảy ra sự cố, nếu bạn có càng nhiều bản sao lu càng tốt
b Cơ sở dữ liệu bị sai hỏng: Nếu đó là sai hỏng về các chỉ số, bạn có thể
tạo lại các chỉ số đó Nếu là sai hỏng dữ liệu, thì bạn có thể xuất dữ liệu sangmột bảng khác và xây dựng lại bảng ban đầu mà không cần xây dựng lạitoàn bộ cơ sở dữ liệu Tệ hơn, bạn có thể phải xây dựng lại cả cơ sở dữ liệucho tới điểm sai hỏng
Trang 24c Lỗi hệ thống: Nếu cả cơ sở dữ liệu không hoạt động đợc hoặc một ổ cứng
bị hỏng, và cả cơ sở dữ liệu bị mất mà transaction log nằm trên một ổ riêngthì bạn có thể dùng nó để xây dựng lại toàn bộ cơ sở dữ liệu ban đầu trên ổmới Tuy nhiên nếu bị mất cả transaction log thì bạn chi có thể phục hồi lạitrạng thái của lần sao lu tốt gần nhất
3.4 Các kỹ thuật sao lu và phục hồi
a Sao lu:
Các kiểu tập tin CSDL khác nhau của Oracle đòi hỏi việc sao lu tơngứng khác nhau Một số tập tin chỉ sử dụng các lệnh sao lu của hệ điều hành,song có loại tập tin đòi hỏi một giao tiếp trực tiếp với CSDL tuỳ thuộc vàoyêu cầu từng tập tin
Có hai kiểu sao lu cơ bản là: Sao lu lạnh (Cold backup) và sao lu nóng(Hot backup):
- Sao lu lạnh (Cold backup): Đóng toàn bộ CSDL và tiến hành sao lu
tất cả các tập tin vật lý bằng hệ điều hành Phơng pháp này không làm xung
đột tính toàn vẹn hay tính nhất quán vì mọi thay đổi trong quá trình sao lukhông xảy ra
- Sao lu nóng (Hot backup): Phơng pháp này cho phép thực hiện sao lu
mà không cần đóng CSDL Trớc hết nó đặt các tablespace vào trạng thái sao
lu Các bớc thực hiện nh sau:
Đặt tablespace vào trạng thái sao lu
Sao chép các tập tin vật lý liên quan đến tabelspace
Tắt trạng thái sao lu của tablespace
Lặp lại các bớc trên cho đến khi tất cả các tablespace đợc sao lu
Sao lu các tập tin control
Sao chép các tập tin redo log trực tuyến
Cụ thể sao lu:
- Tập tin control:
Tập tin control ảnh: đây chỉ là tạo thêm các tâp tin control mà CSDL
sẽ phải ghi các thay đổi vào thay vì chỉ ghi vào một tập tin control, điều nàylàm cho các tập tin control an toàn hơn đảm bảo luôn có nhiều phiên bản trêncác ổ đĩa vật lý khác nhau Ta chỉ thêm vào giá trị các tham sốCOTROL_FILES trong tập tin INIT.ORA các tập tin control ảnh Ví dụ nh:Control_files=(/u03/oradata/norm/control.crt,/u05/oradata/norm/control.crt)
Tập tin control trực tuyến:
ALTER DATABASE BACKUP CONTROLFILE TO
'/u10/admin/norm/arch/bk-cotrol.ctl';
Tập tin truy vết:
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
- Tập tin redo log: Dùng các lệnh của HĐH
b Phục hồi
- Phục hồi hỏng hóc CSDL:
Tabespace:
phục hồi CSDL: dùng khi tablespace system bị hỏng
phục hồi tablespace: nếu có tablespace bị hỏng
Trang 25 phục hồi tập tin dữ liệu
Recover database;
Recover tablespace users;
Recover datafile '/u03/oradata/norm/rbs01.dbf';
Tập tin control: Để phục hồi từ dữ liệu đã sao lu ta dùng lệnh
Recover database using backup controlfile;
Tập tin redo log:
Kết nối internal Khởi động CSDL (startup mount)
Thực hiện recovery database xuất hiện dấu nhắc gõ
Connect internal và khởi động lại, CSDL sẵn sànglàm việc
- Phục hồi toàn bộ CSDL:
Đóng thể hiện CSDL hiện hành
Hồi phục các tập tin dữ lệu từ đĩa hay băng từ
Kết nối internal và khởi động lại CSDL
Thực hiện lệnh: RECOVER DATABASE AUTOMATIC;
3.5 Sao lu OLTP và dữ liệu DSS
ở phần trớc bạn đã biết các cơ sở dữ liệu hiện nay có 2 loại dữ liệuchủ yếu: dữ liệu xử lý giao dịch trực tuyến (OLTP) và dữ liệu của hệ trợ giúpquyết định Chiến lợc khôi phục dữ liệu sau sự cố của mỗi loại dữ liệu làkhác nhau
Nếu cơ sở dữ liệu chứa dữ liệu tức là nó dựa trên giao dịch và khi máychủ bị ngng có thể gây mất dữ liệu Bạn cần cung cấp một hệ thống sao lu để
có thể khôi phục cơ sở dữ liệu lại trạng thái trớc sự cố
Nếu cơ sở dữ liệu chỉ chứa dữ liệu DSS, bạn chỉ cần một bản sao lu vớimột tập dữ liệu DSS ‘sạch’ Nếu có sự cố xảy ra, cơ sở dữ liệu sẽ đợc khôiphục từ bản sao lu đó và đa hệ thống trở lại làm việc
Nếu có cơ sở dữ liệu gồm cả 2 loại, bạn có thể phân dữ liệu thành cácfile và nhóm file, bạn chỉ cần cung cấp các bản sao gần đây của phần OLTP
Để khôi phục hệ thống DSS, bạn chỉ cần sao lu cơ sở dữ liệu nhng với
hệ thống OLTP, bạn phải sao lu cả cơ sở dữ liệu và transaction log
4 An toàn bảo mật dữ liệu
Việc quản lý bảo mật dữ liệu trên Oracle Server bắt đầu từ mật khẩu
đăng nhập (login) Các ứng dụng client dùng login để kết nối với Oracle
Trang 26Server Login có thể là của Oracle Server hoặc của Windows 2000 Server màOracle Server có thể chứng thực.
Khi một login truy nhập đợc vào một Oracle Server nào đó thì ngời sửdụng có thể thực hiện một trong hai loại tác vụ sau:
Các tác vụ mức Server: các tác vụ quản trị hệ thống đợc chia thànhtừng nhóm các tác vụ gọi là Server roles Theo đó, mỗi đăng nhập ứng vớimột Server role đợc phép thực hiện các tác vụ quản trị tơng ứng mà khôngcần phải dùng đăng nhập của ngời quản trị hệ thống chỉ để thực hiện một vàitác vụ quản trị.Các tác vụ mức cơ sở dữ liệu: dữ liệu đợc lu trữ và truy nhậptheo các database object Mọi đối tợng trong cơ sở dữ liệu đều thuộc mộtthực thể xác định, đợc gọi là database object owner Các chủ đối tợng này đ-
ợc xác định trong cơ sở dữ liệu nh là các database user, mặc dầu không phảitất cả các database user đều phải sở hữu các đối tợng Database user đợc liênkết với database role Database role là nhóm các quyền đợc gán cho databaseuser
Hình10: Hai mức truy nhập của login
Oracle Server cho phép thiết lập nhiều chế độ bảo mật khác nhauthông qua ORACLE Enterprise Manager hoặc SQL*PLUS Ví dụ, bạn có thể
định nghĩa các đăng nhập cho ngời sử dụng mới và sắp xếp vào các nhómngời sử dụng chung mục đích Bạn có thể tiến hành phân quyền sử dụng theotừng nhóm và theo từng ngời sử dụng riêng biệt
4.1 Nhóm ngời sử dụng
Mọi ngời sử dụng trong hệ thống đều thuộc về một nhóm tổng thể cótên là public, tuy nhiên, một ngời sử dụng chỉ có thể nằm trong một nhómduy nhất Các nhóm đợc sử dụng để phân quyền cho nhiều ngời sử dụngchung mục đích Các nhóm đợc lu trong từng CSDL, do đó có thể thêm mới,cập nhật hoặc xoá bỏ các nhóm ngời sử dụng
4.2 Ngời sử dụng
a Tạo ngời sử dụng mới
Bạn có thể thêm ngời sử dụng của một CSDL bằng cách sử dụng thực
đơn Create Users trong môi trờng DBA Studio Khi đó nhập các thông tincần thiết trong hội thoại, phân quyền sử dụng đối với CSDL, và phân ngời sửdụng mới vào một nhóm xác định
Roles Server
Trang 27Cú pháp tạo ngời sử dụng mới:
CREATE USER use
INDENTIFIED [ BY PASSWORD/ EXTERNALITY]
[DIFAULT TABLESPACE tablespace}
[TEMPORARY TABLESPACE tablespace}
{quota [integer [K/M] UNLIMITED] ON TABLESPACE
{ quota [integer [K/M] UNLIMITED] ON TABLE
SPACE ] ]PASSWORDEXPISE]ACCOUNT {LOCK/
UNLOCK}
PROFILE [profile/deault}]
Trong đó:
user là: tên ngời sử dụng
password : là mật khẩu ngời sử dụng
externality: chỉ ra rằng ngời sử dụng đợc xác nhận bởi hệ điều hành
identifed: mật khẩu của user
default tablespace: chỉ định tablespace dành cho user (mặc định làtablespace system)
temporary tablespace: chỉ ra tablespace tạm cho user trong khi thao tác
quota: cho phép user sử dụng khoảng trống trên tablespace là bao nhiêu
profile: thiết lập môi trờng của user
b Thay đổi thuộc tính của user
5.1 Quyền hệ thống (System Privilege)
Có 126 quyền hệ thống, thông tin về system privilege đợc đặt trongview DBA_SYS_PRIVS, thông tin về session hiện thời đợc đặt trong viewSESSION_PRIVS
Trang 28[WITH ADMIN OPTION]
Trong đó:
system_priv: quyền đợc gán
role: tên role đợc gán
public: gán quyền hệ thống cho tất cả các user
WITH ADMIN OPTION: cho phép ngời đợc gán quyền có thể gán quyềncho ngời khác
b.Thu hồi quyền hệ thống
[with GRANT OPTION]
b Thu hồi object privilege
CREATE ROLE role [ NOT INDENTIFIED/ INDENTIFIED
{BY password/ EXTERNALLY}]
Role: là tên role
NOT INDENTIFIED: không cần xác nhận lại role khi role đợc kích hoạt
INDENTIFIED: yêu cầu xác nhận role
Trang 29 BY password: mật khẩu tơng ứng khi xác nhận role
EXTERNALLY: user cần xác định bởi dịch vụ bên ngoài
6.2 Sửa đổi Role
ALTER ROLE role [ NOT INDENTIFIED/ INDENTIFIED
{BY password/ EXTERNALLY}]
6.3 Gán Role
GRANT ROLE [, role]
TO {user/role/PUBLIC}
[,{user/role/PUBLIC}]
[WITH ADMIN OPTION]
6.4 Điều khiển Role
Một user có thể có nhiều role, vì vầy ta cần chỉ ra role mặc định chouser
ALTER USER user DEFAULT ROLE
{role [,role] / ALL[ EXCEPT role [,role] ]/ NONE}
6.5 Kích hoạt và ngng kích hoạt Role
Khi một role đợc kích hoạt user có thể sử dụng quyền chứa trong role.Ngợc lại sẽ không sử dụng các quyền có trong role nếu role ngng kích hoạt
SET ROLE {role [ INDENTIFIED BY PASSWORD]
[, role [ INDENTIFIED BY PASSWORD]]
/ ALL [ EXCEPT role [ , role ] ]/ NONE }
Trong đó:
ALL: kích hoạt tất cả các role
NONE: Ngng kích hoạt các role
6.6 Thu hồi Role
REVOKE role [, role ]
FROM{ user/role/PUBLIC}
[, { user/role/PUBLIC}]
Trong đó:
Role: tên role thu hồi
User: tên ngời có role thu hồi
Public: thu hồi role của các user
6.7 Xoá Role
DROP ROLE role
6.8 Hiển thị thông tin các Role
SELECT role, password_required FROM tên view
Tên view đợc cho trong bảng sau
DBA_ROLES Các role có trong database
DBA_ROLE_PRIVS Các role gán cho user hay role
Trang 30ROLE_ROLE_PRIVS Các role gán cho role
DBA_SYS_PRIVS Các quyền hệ thống gán cho user hay role
ROLE_SYS_PRIVS Các quyền hệ thống gán cho user
ROLE_TAB_PRIVS Các table privilege gán cho role
SESION_ROLES Các role đang đợc kích hoạt bởi ngời dùng
7 Nạp dữ liệu
Oracle Server cung cấp nhiều công cụ để nhập dữ liệu, trong đó đángchú ý nhất là SQL*loader một tiện ích cho phép bạn có thể chuyển đổi dữliệu theo ý muốn để đa dữ liệu từ nguồn này sang nguồn khác Có thể sửdụng phơng pháp nạp dữ liệu trực tiếp hay sử dụng SQL*loader
Schema: là tên ngời chủ của bảng
Table: là tên bảng
sub_query: câu lệnh dùng để lấy dữ liệu để thực hiện nạp dữ liệu
LOGGING: cho phép sinh ra các thực thể tơng ứng trong redo log khi nạpdữ liệu
NO LOGGING: ngợc lại
7.2 Tạo file nguồn cho việc nạp dữ liệu
- Tạo file điều khiển: Việc tạo file điều khiển nhằm: Chỉ ra tên, vị trí
của file dữ liệu ánh xạ các dữ liệu nhập vào các cột của table tơng ứng Đặctả điều kiện cho việc nạp dữ liệu và khuôn dữ liệu cho các cột của table
- Cú pháp tạo một file điều khiển
LOAD DATA
INFILE filename
INTO TABLE table_name
(field_name1 POSITION (start:end) CHAR
field_name2 POSITION (start:end) CHAR)
Trong đó:
Filename: là tên file nguồn
Table_name: là tên bảng chứa dữ liệu
Field_namei: là tên cột thứ i của bảng
Start:end: độ rộng cột tơng ứng
- Thực hiện quá trình nạp dữ liệu:
>SQLLDR usename/password CONTROL= control_filename
LOG= logfile [keyword=value ]
Trong đó:
Username/password: tên và mật khẩu ngời sử dụng
Trang 31 CONTROL: tên contro file
1.1 Định nghĩa bảng
Để tạo bảng và tổ chức bảng, bạn có thể dựa vào tiện ích lập biểu đồcơ sở dữ liệu của Oracle Server và các lệnh giao tác SQL Các công cụ GUIcủa Enterprise Manager không phải lúc nào cũng có sẵn, tuy nhiên giao diệngiữa Transact –SQL và Oracle Server luôn sẵn sàng
a Tạo một bảng
Kích chuột phải vào nút Create Enterprise Manager với cơ sở dữ liệu
đã chọn, chọn Table/Creat và nhập vào tên bảng, cùng các thông số và địnhdạng của bảng, bạn sẽ nhìn thấy hộp thoại Design Table
Cách thứ hai để tạo bảng là dùng lệnh CREATE TABLE trong môi ờng SQL*PLUS:
tr-Cú pháp:
CREATE TABLE [schema.] table
(column datatype [, column datatype]… ) ) [ TABLESPACE tablespace ]
column datatype: tên cột và kiểu dữ liệu củacột
tablespace: tên tablespace chứa bảng
PCTFREE: % không gian trống thuộc block trên mỗi dòng dữ liệu
PCTUSED: Vùng trống nhỏ nhất đợc sử dụng trên mỗi block
INITRANS: Số lợng transaction entries cho mỗi block
MAXTRANS: Số lợng tối đa transaction entries cho mỗi block
STORAGE: Cách thức vùng trống đợc cấp phát cho mỗi table
LOGING / NOLOGING: Việc tao table đợc lu vào redo log file có/không
CACHE / NOCACHE: Dữ liệu trong table có đợc truy xuất qua cache haykhông
Trang 32b Đặt tên bảng
Tên bảng phải thoả mãn các qui định đặt tên chuẩn Chủ sở hữu bảng
và sở hữu cơ sở dữ liệu tham chiếu đầy đủ đến một bảng bao gồm tên cơ sởdữ liệu, tên ngời sở hữu và tên bảng, nếu bạn đang ở trong một cơ sở dữ liệuthì không cần đa tên cơ sở dữ liệu đó Nếu bạn là chủ sở hữu cơ sở dữ liệu đóthì bạn không cần đa tên ngời sở hữu
c Bảng tạm thời
Nếu bạn đặt tên bảng bắt đầu bằng dấu # thì Oracle Server sẽ tạo ramột bảng tạm thời trong cơ sở dữ liệu tempdb, bảng này chỉ có ý nghĩa trongphiên làm việc của bạn và bị xoá ngay sau khi kết thúc phiên
Nếu tên bảng bắt đầu bằng 2 dấu # thì bảng tạm thời này mang tínhtổng thể, nó vẫn nằm trong cơ sở dữ liệu tempdb nhng những ngời khác đều
có thể nhìn thấy và truy nhập nó Oracle Server sẽ xoá nó sau khi kết thúcphiên
Với những tên bảng phức tạp, bạn có thể đa tên đó trong cặp dấu (“),khi đó bạn không đợc dùng nó làm dấu phân cách câu hỏi Bạn cũng có thểdùng cặp dấu ([,]) để bao tên bảng
d Định nghĩa cột
Tên cột phải tuân theo các giới hạn giống nh với tên bảng Mỗi cộttrong cơ sở dữ liệu có một kiểu dữ liệu giới hạn loại dữ liệu chứa trong đó.Oracle Server có sẵn một số kiểu dữ liệu; ngoài ra ngời dùng có thể tự địnhnghĩa kiểu mới và đa thêm các ràng buộc cho dữ liệu trong cột, tuy nhiên
điều này lại giới hạn loại câu hỏi, do đó nên tránh xu hớng này Vì OracleServer lu trữ dữ liệu trong các trang 8 K, chiều dài tối đa của một hàng là
u ý: không thể chèn trực tiếp giá trị vào cột có thuộc tính định danh
nếu bạn không bỏ thuộc tính này bằng câu lệnh SET IDENTITY_INSERT
<tên bảng> ON Để đợc sử dụng câu lệnh này bạn phải là chủ sở hữu củabảng
1.2 Thay đổi cấu trúc bảng
- Lệnh ALTER TABLE
Bạn có thể dùng lệnh ALTER TABLE để thêm các cột vào bảng, bạncũng có thể thêm các ràng buộc
- Thêm một cột mới:
ALTER TABLE Customer
ADD Adress VARCHAR(50) NULL
Sửa đổi các tính chất của cột, chẳng hạn thay đổi kiểu dữ liệu:
ALTER TABLE Customer
ALTER COLUMN Adress CHAR(20) NULL
- Xoá cột:
ALTER TABLE Customer
Trang 33DROP COLUMN Adress
Ví dụ: CREATE VIEW CA_Authors
SELECT * FROM Authors
WHERE state = ‘CA’
Có thể dùng lệnh UNION để kết hợp các view lại với nhau thành mộttập, kết quả tạo ra là một view đợc phân vùng Khi cập nhật view đó, OracleServer dựa vào các giá trị để biết đợc thông tin mới hay giá trị sửa đổi thuộcbảng nào
Có thể đa hàm vào view và nhận kết quả của nó bằng cách đa các phần
tử hàm vào khai báo view, ví dụ với hàm AVG:
CREATE VIEW TypeYTDSales (TitleType, AvgYTDSales)
AS SELECT type, AVG(YTD_Sales)
FROM titles
GROUP BY type
Có thể tạo một view mật mã bằng cách thêm WITH ENCRYPTIONvào khai báo view Mục đích của mã hoá là lu trữ định nghĩa view ở dạng mãhoá, không đọc đợc bằng các công cụ của Enterprise Manager Điều này cóích khi bạn vận chuyển cơ sở dữ liệu và định nghĩa view chứa các thông tin
độc quyền
Có thể kiểm tra view trong Enterprise Manager bằng cách kéo xuống
từ nút Views trong cơ sở dữ liệu và chọn Properties Trong hộp thoại này bạncũng có thể cấp quyền cho views Ngoài ra bạn cũng có thể thay đổi viewtrong Transact –SQL bằng lệnh ALTER VIEW:
ALTER VIEW CA_Authors AS
SELECT au_lname, au_fname FROM Authors
WHERE state = ‘CA’
CREATE VIEW CA_Authors AS
SELECT au_lname, au_fname FROM Authors WHERE state = ‘CA’
1.4 Bảng hệ thống và view theo chuẩn ANSI
Theo mô hình quan hệ, tất cả dữ liệu về các bảng của cơ sở dữ liệu đợcchứa trong bảng hệ thống Oracle Server có 2 loại bảng hệ thống: bảng
Trang 34catalog mô tả và quản lý tất cả các bảng dữ liệu; một số cơ sở dữ liệu khác
nh master và msdb chứa các bảng dữ liệu hoạt động nh là bảng hệ thống trêntoàn bộ máy chủ
Bạn có thể quan sát các bảng hệ thống bằng cách kích chuột phải vàotên máy chủ trong Enterprise Manager và chọn Edit Oracle ServerRegistration
View theo chuẩn ANSI
Dựa trên các bảng hệ thống, một tập view theo chuẩn ANSI đợc địnhnghĩa trong mỗi cơ sở dữ liệu và đợc kế thừa từ cơ sở dữ liệu mẫu; chúngtrích ra một phân thông tin từ các bảng hệ thống Có thể quan sát các viewnày trên cây view của Enterprise Manager, dới nút Oracle Server Views
Mỗi view có INFORMATION_SCHEMA của ngời chủ sở hữu, vàphải tham chiếu ngời sở hữu để định danh view Ví dụ để xem danh sách cácbảng trong một cơ sở dữ liệu, bạn đa câu hỏi truy vấn cho view TABLE:
SELECT * FROM INFORMATION_SCHEMA.TABLES
u điểm của view ANSI là nó trả ra một bảng mà bạn có thể thao tác;nhợc điểm là phải tham chiếu tên ngời sở hữu
1.5 Ràng buộc cột
Ràng buộc là một cách quan trọng để giới hạn các giá trị trong cột
- Chỉ số: Oracle Server sử dụng các chỉ số là một phơng pháp gián tiếp,
tìm nhanh dữ liệu từ bảng mà không cần phải quét trực tiếp cả bảng đó Chỉ
số cũng là công cụ chính để tăng cờng hiệu năng câu hỏi truy vấn Có 2 loạichỉ số: chỉ số bó và không bó
- Chỉ số bó (clustered Indexes): Chỉ số bó sắp xếp lại dữ liệu theo trình
tự phù hợp với cột chỉ số Oracle Server sẽ lu dữ liệu của bảng theo trình tựchỉ ra trong chỉ số bó Để tạo một chỉ số bạn dùng lệnh T –SQL CREATEINDEX
- Chỉ số không bó (nonclustered Indexes): Bạn có thể tạo thêm các chỉ
số không bó, các chỉ số này không ảnh hởng đến trình tự vật lý của dữ liệunhng lại tăng cờng hiệu năng của câu hỏi truy vấn và thờng đợc dùng để tối uhoá câu hỏi
- Xoá chỉ số: Có thể xoá chỉ số bằng câu lệnh DROP INDEX:
DROP INDEX cust_name
Hoặc bằng cách kéo thả trong Enterprise Manager
- Ràng buộc duy nhất: Oracle Server có thể tạo tính duy nhất cho các
giá trị trong một cột bằng cách sử dụng các chỉ số Khi tạo một chỉ số duynhất trên một cột hoặc kết hợp của nhiều cột, Oracle Server sẽ loại bỏ cácphép chèn hay cập nhật bảng đó để không thể tạo ra các giá trị trùng nhau
- Chỉ số duy nhất: Có thể dùng một chỉ số để tạo tính duy nhất, khi đó
bạn thêm một chỉ số với từ khoá UNIQUE:
CREATE UNIQUE INDEX cust_name
ON Customer (cust_name)