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ường tính toán phía máy chủ trong thập kỷ 90, bắt đầu với mô
Trang 1Lời cảm ơn
Trước tiên em xin chân thành cảm ơn thầy Hoàng Hữu Việt
đã tận tình hướng dẫn và giúp đỡ về tài liệu, thiết bị để em hoàn thành khoá 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òng tin tưởng của mọi người
Trang 2Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
2
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ếu trong bất kỳ một tổ chức hay cộng đồng nào, trước kia việc quản lý chỉ thực hiệ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ệu quả 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ần thiế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 cô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, Visual Basic hay thậm chí là Excell đều đã được xem xét sử dụng tuỳ theo phạm vi bà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úp của máy tính Vì vậy trong khoá luận tốt nghiệp này, em muốn đưa
ra một cá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ông việ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ức chặ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áy tí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ín hiệ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 tin cà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ển khai 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 giao tiếp hệ thống như truyền thông tin, xem thông tin hay chuyển giao thông tin giữ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ều kiện kỹ thuật và chuyên môn: một mạng máy tính với máy chủ mạnh, đường truyề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ều kiện vật chất còn nghèo nàn, trình độ khoa học kỹ thuật chưa cao như Việt Nam, những yêu cầu trên chưa thể cùng lúc đáp ứng Chương trình cần phù hợp vớ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àng lớ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ủa những “cracker” kẻ phá hoại thông tin càng cao lúc này
Trang 3Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
3
nhiệm vụ của bảo mật thông tin không chỉ đơn giản như trong các hệ tập trung trước đây là ngăn chặ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à lưu 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 khi vẫn đảm bảo cho những người sử dụng khác truy cập một cách thuận tiện nhất
Trong đề tài này, dựa trên mô hình hệ thống đang hoạt động khảo sát tại trường Đại học Vinh và các nguyên tắc quản lý chung cũng như các nguyên tắc đặc thù của Bộ giáo dục, em tiến hành phân tích những đặc trưng của các chứ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ình thự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ống quả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 trưng 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ương trình xây dựng trên đó
Bà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ây dự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ây dựng trên hệ quản trị truyền thống là Foxpro (bao gồm những phiên bản như Foxpro for Dos, Foxpro for Windows và mới đây là Visual Foxpro) hoặc Acess, các hệ này rất mạnh trong phạm vi những ứng dụng nhỏ Hiện nay xuất hiện thêm nhiều hệ quản trị mới phát huy khả năng trong các ứng dụng lớn: DB2, Oracle Server Bài toán quản lý sinh viên là kết hợp của nhiều bài toá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ọc phí nên phạm vi của nó tương đối lớn, nếu dùng Acess hay FoxPro thì không thí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ường tính toán phía má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 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ủa Server, 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ý do trê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
Trang 4Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
4
ORACLE Server cho phép ADO (ActiveX Data Object) - tập đối tượng mẫ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ệu oracle 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
CHƯƠ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ững khái niệm chung nhất về hệ quản trị ORACLE Server
Trang 5Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
5
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ần mề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ía má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, ORACLE Server được điều chỉnh để thích nghi với các vai trò khác của Server như Internet, đa quan hệ và các ứng dụng phân tán Việc sử dụng OLE DB trong ORACLE Server đã mở ra một lĩnh vực mới với câu hỏi phân tán, khả năng thự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ới hạn trong ORACLE Server, nó có thể kết nối với các nguồn dữ liệu của Informix, 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ịch trực tuyến, lưu trữ các dữ liệu động dựa trên các giao dịch xảy ra trong khoảng thờ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 đối tĩ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ân tích
ORACLE Server luôn là một hệ quản trị OLTP tốt, điểm mới trong ORACLE Server là nó được tăng cường thêm một số các đặc trưng 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ẩm phầ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 cho ngườ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): lưu trữ và lấy dữ liệu từ đĩa
Biểu diễn dữ liệu Các luật Truy nhập dữ liệu
dữ liệu
Trang 6Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
6
Hì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ập trì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à lưu 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ép phá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 cho nhiều mục đích sử dụng Các hệ này đã phát triển từ mức chỉ có khả năng lưu trữ 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ày nay 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 lưu 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ới DBMS 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 lưu 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 lưu trữ; điều này tạo nên sự khác biệt giữa các cơ sở dữ liệu, nhưng nó vẫn luôn được chứa trong một DBMS DBMS sẽ cung cấp các công cụ lưu 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 đó
Biểu diễn dữ liệu Các luật
Biểu diện dữ liệu
Truy nhập dữ liệu Các luật
Truy nhập dữ liệu
Trang 7Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
7
Hình 2: Sự phát triển của DBMS
2 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 lưu 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ới biể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ện bằ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ản trị cơ sở dữ liệu quan hệ, nhu cầu về một ngôn ngữ truy vấn để giao tiếp với dữ 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à ANSI SQL-92
Các đặc trưng 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 danh chính các hàng đó Khoá Candidate là một cột hoặc một nhóm cột đảm bảo tính duy nhất trong bảng Trong một bảng có thể có nhiều khoá Candidate bởi vì có nhiều cột hoặc nhóm cột khác nhau nhưng vẫn đảm bảo tính duy nhất của hàng trong bảng Khoá Primary là khoá Candidate duy nhất do người thiế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á thay thế (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àng trong 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ột tậ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
Trang 8Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
8
sử dụng cùng truy nhập vào cơ sở dữ liệu ORACLE Server dùng phương pháp khó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 cho mỗ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ó lưu trữ dữ liệu về cơ sở dữ liệu ORACLE Server lưu trữ catalog và những bảng hệ thống của mọi cơ sở dữ liệu trong các bảng của cơ 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ực hiệ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 SQL 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ỏi bả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ồm tấ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 hưởng đến chức năng của CSDL
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: lưu 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 trong một CSDL Tập tin dữ liệu có kích thước cố định và không bao giờ tự phát triể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 log cùng với các thông tin đồng bộ để đảm bảo rằng chúng luôn hoạt động ăn khớp với nhau
- Các tập tin phục hồi (Redo log): lưu 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ình thay đổi của CSDL Trong trường hợp hư hỏng nhưng 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
Trang 9Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
9
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ên ngườ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 gian bả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 Trong quá trình tạo CSDL Oracle tự động tạo không gian bảng hệ thống (tablespace system) đó là nơi chứa từ điển dữ liệu của toàn bộ CSDL Trong quá trình tạo tập tin dữ liệu ta có thể để nó ở không gian bảng hệ thống hoặc không gian bả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ập hợ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 lưu 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 lưu trữ dữ liệu trong oracle, dữ liệu
được lưu 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ện giống như những CSDL quen thuộc đã học
- 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ười dù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 được index 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
Trang 10Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
10
- Nhóm (Cluster): Là một phương pháp tuỳ chọn để lưu 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 lưu 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ện mộ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ột CSDL 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ông tin xác định
Mức lưu trữ dữ liệu cao hơn vùng là đoạn (segment), một đoạn là một tậ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ông việ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 globol area)
Oracle instance là một thể hiện của Oracle nó là sự kết hợp các tiến trình và cấu trúc bộ nhớ của oracle Server Một thể hiện của Oracle gồm hai loạ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ến trì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ụ Oracle, 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ến trì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:
Trang 11Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
11
- Bộ đệm CSDL (data buffer): nó dùng để lưu 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à data buffer cache, buffer cache chứa các khối dữ liệu đã biến đổi cũng như chưa biến đổi
- Bộ đệm redo log (redo log buffer): nó lưu trữ các mục redo các quá
trình thay đổi của CSDL, các mục redo này được lưu trong tập tin redo log online 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ởi tạ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ột chuỗ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ình Oracle
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ến trì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ười dù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ẽ được quả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ỗi thể 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ập tin 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ệu redo log, khi một chuyển tác được xác lập và bộ đệm redo log đầy log writer ghi các mục redo log vào các tập tin redo log online
Trang 12Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
12
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 database writer, sự kiện này gọi là một checkpoint
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 segment tạm không dùng nữa và nối lại các extern trống trên đĩa để tạo không gian liê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ác tà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ớ lưu trữ khi chú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ác khoảng đã định nó cố gắng kết nối CSDL từ xa và thực hiện commit hay rollback 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ột cô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 được phá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ực hiện như sau:
- Khởi động một thể hiện của Oracle
Trang 13Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
13
- 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:
- Bảo mật hệ thống bao gồm đều khiển việc truy xuất và sử dụng CSDL:
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, đặc quyền bao gồm:
Trang 14Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
14
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 cho cá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 lưu 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ồm không gian (tablespace) mặc định, không gian tạm thời, không gian quota:
- 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ấp quota trong tablespace
- Tablespace tạm thời: Mỗi user có một table space tạm thời, khi user thự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ời vào một tablespace riêng
- Các giới hạn lưu trữ (quota) tablespace: Oracle có thể giới hạn một không gian đĩa định sẵn để cung cấp cho các đối tượng trong một schema Các quota 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ách client 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 ứng dụng xuống tầng mạng, và ở phía Server thì nó đi theo chiều ngược lại Ta coi cá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 đó
Trang 15Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
15
Làm thế nào mà các client rất khác nhau này có thể giao tiếp được với Server? Câu trả 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ện mạ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ụng giữ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ương phá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
Có hai loại IPC qua mạng: loại theo liên kết và loại quảng bá Truyền thô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ông client - 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ải thự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 ứng dụ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ác nhau, 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ì
Interproces s
Communicati on
oracle Server Client
Application
Data
Netword Componens
Netword Componens
Physical Netword
Trang 16Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
16
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à giao thức dòng dữ liệu mức logic - logical data stream protocol (còn gọi là giao thứ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ác thẻ 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êu cầ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 nhưng các ứng dụng client vẫn chưa thể giao tiếp được với DBMS Vì nếu ứng dụng client giao tiếp với DBMS thông qua giao thứ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ành dòng dữ liệu TDS, giải mã dòng dữ liệu TDS để nhận kết quả trả về Phía Server 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êu cầu của client, từ kết quả trả về cho client thành dòng dữ liệu TDS Đáp ứng yê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ượng làm nhiệm vụ dịch dữ liệu cho giao thức bậc thấp TDS và thể hiện giao diện chuẩn cho client Oracle Server có 3 loại giao diện khác nhau: ODBC (Open Database 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
Tabular Data Stream (TDS)
oracle Server
Client Application
Data
Netword Componens
Netword Componens
Physical
Netword
Open Data Services Database API
Components
Trang 17Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
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 Ngay trong Database API Components và Open Data Services cũng không bao gồ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ữa cá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 Components củ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 tin truyền qua tầng mạng vật lý kết nối giữa client và Server Khi nhận các gói tin từ tầng mạng vật lý, IPC Components thực hiện cắt bỏ các thông tin mạng, trả lại dữ liệu ở dạng TDS cho tầng Database API Components và Open Data Services
OLE DB
Provider
ADO
DB Library
ODBC Driver
Oracle Server
data
Trang 18Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
18
Hì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ầu liê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 client thành dữ liệu dạng TDS để gửi cho Server Khi trình điều khiển cơ sở dữ liệu yê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ức giao 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 được thiế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) trong mạ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ều khiể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ới ORACLE Server
Datta Client Application Oracle Server
ODS(Open Data Services)
IPC Mechanism (name pipes,RPC,Sockets)
IPC Mechanism
(name pipes,RPC,Sockets)
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 19Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
19
Hì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ện thuậ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ên tắ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ột Server khác
OLE DB Driver
Storage Engine
Netword Libraries Netword Components
Netword Libraries Netword Components Data
Trang 20Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
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ấu hì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ôi lựa chọn phiên bản Enterprise của Oracle cài đặt trên Windown 2000 Server
Các yêu cầu về hệ thống:
- Bộ nhớ : tối thiểu 96 MB, nên có bộ nhớ 128 MB
- Dung lượng ổ đĩa 600 MB
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à Eterprise Manager Trong đó SQL*PLUS là môi trường chuẩn nó cung cấp giao diện dòng lệnh rất thuận tiện cho người dùng Trái lại môi trường Enterprise
ODBC Driver
Other OLE DB Provider
ODBC OLE DB Provider
SQL Server OLE DB Provider
oracle OLE DB Provider
Other SQL Sources
Other SQL Sources
Other
SQL
Sources
Other SQL Sources
Other SQL Sources
Trang 21Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
21
Manager 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àn hì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ại dấu nhắc SQL> Còn đối với môi trường Enterprise Manager ta chỉ việc click chuộ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
Mỗ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ấu trú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ó được Oracle 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 lưu 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ố:
Trang 22Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
22
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ời Log_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 CSDL SQL_Trace Chỉ định tập tin SQL sẽ thực hiện khi tạo
CSDL
Tạo và lưu các File tham số:
Kích hoạt Oracle Enterprise Manager Console/Truy nhập vào với mật khẩu hệ thống/Kích hoạt oracle instance manager, File tham số được lưu 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:
- 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ến của lệnh Startup, bao gồm:
- Startup nomount: Khởi động instance không kết nối CSDL
Trang 23Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
23
- Startup mount: Khởi động instance mount database nhưng vẫn đóng
nó
- 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ến trình nền
Shutdown CSDL gồm 3 giai đoạn:
- Đóng CSDL
- Thu hồi kết nối
- Dừng
Để 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ào cho 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ý chưa commit đều bị rollback
- Abort: Kết nối chấm dứt và các thao tác chưa 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 Create database:
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ởi tạ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 24Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
[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ụng
LOGFILE 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 log file group
MAXLOGHISTORY: số lượng tối đa các redo log trong một group
DATAFILE 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ời
mount 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 ORACLE
Server Có thể dùng Enterprise Manager để đặt cấu hình cho một Oracle
Server 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 lưu trong các cơ sở dữ liệu
Một cơ 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ộc hoặ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 lưu trong các bảng Mỗi bảng chỉ thuộc về một cơ sở dữ liệu và mỗi cơ
Trang 25Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
- Views (khung nhìn): những phần trích ra từ cơ sở dữ liệu được lưu lại
và có thể truy nhập như đối với các bảng
- Stored procedures (các thủ tục lưu 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?
Trước hết cần lưu ý một số điểm cơ bản sau:
a Mỗi cơ sở dữ liệu Oracle Server gồm 2 loại bảng: bảng hệ thống
và bảng dữ liệu ứng dụng
Bảng hệ thống, được gọi là system catalog (danh mục hệ thống) chỉ chứa các thông tin mô tả bảng dữ liệu (theo nghĩa đó có thể hiểu bảng hệ thống là metadata) cùng các đối tượng khác như ràng buộc, trigger và các thủ tục có sẵn Bảng dữ liệu gồm các bảng do người sử dụng tạo ra để chứa
dữ liệu Khi thêm vào một bảng mới, Oracle Server sẽ thêm các thông tin về đặc trưng của bảng vào bảng hệ thống tương ứng
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
Trang 26Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
Thông tin về lộ trình giao dịch được lưu trong các file redo log (một hoặc nhiều bản)
3 Sao lưu và phục hồi dữ liệu
3.1 Khái niệm sao lưu
Bản sao lưu 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 lưu 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 lưu để khôi phục lại dữ liệu trong trường hợp có sự cố Trong ORACLE Server, bạn sao lưu 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 lưu ra đĩa hay băng từ trên cùng một máy chủ hoặc vào máy chủ khác Nếu 2 máy chạy không cùng một lúc, thì có thể sao lưu
dữ liệu củ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à warm standby- 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ủa Microsoft (MCS Microsoft Clustering System) MCS cho phép bó 2 máy Oracle Server vào nhau và hoạt động như một hệ quản trị
cơ sở dữ liệu duy nhất, trường hợp máy thứ nhất có sự cố thì máy thứ hai có thể thay thế ngay lậ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 nhưng vẫn cần phải sao lưu dữ liệu
Trang 27Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
27
Transaction redo Log file của Oracle Server
Các kỹ thuật sao lưu 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ủa ORACLE Server Để hiểu được những lựa chọn và yêu cầu trong khi sao lưu, bạn cần tìm hiểu vai trò của giao dịch và lộ trình giao dịch trong Oracle Server
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óm thao tác, giao dịch chỉ thành công khi tất cả các thao tác hoàn thành Oracle Server hoàn thành giao dịch bằng việc ghi nhận sự thay đổi dữ liệu vào transaction 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ủa
dữ liệu vào transaction redo log Nếu giao dịch bị thất bại giữa chừng do lỗi hay bởi lệnh ROLLBACK, Oracle Server sẽ đọc các thông tin trong transaction 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à ghi qua 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 trang dữ liệu trên đĩa và trang dữ liệu trên cache Một số sự cố làm cho Oracle Server 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ới transaction 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 lưu, tuy nhiên cần nhấn mạnh rằng với bất cứ kiểu nào thì transaction log đều cần thiết
3.2 Các kiểu sao lưu của Oracle Server
Oracle Server có 4 kiểu sao lưu:
a Sao lưu đầy đủ: bạn sao lưu toàn bộ cơ sở dữ liệu cùng với lộ trình
giao dịch của nó Kiểu sao lưu này mất nhiều thời gian và ảnh hưởng đến hiệu năng của hệ thống; hơn nữa cách sao lưu này cũng chưa đủ để 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 lưu 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 nhưng thực ra nó không thể khôi phục lại được) thì phải cần thêm kiểu sao lưu khác như sao lưu sai khác
b Sao lưu file: chỉ sao lưu 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 lưu riêng từng file hay nhó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
áp dụng transaction log để đưa cơ sở dữ liệu về trạng thái ổn định
Trang 28Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
28
c Sao lưu sai khác: bạn sao lưu các thay đổi đối với cơ sở dữ liệu tính từ
lần sao lưu đầy đủ cuối cùng, đưa các thay đổi đó vào transaction log Vì chỉ sao lưu các trang dữ liệu bị thay đổi so với lần sao lưu đầy đủ trước đó nên việc sao lưu và khôi phục có phạm vi nhỏ và nhanh hơn sao lưu đầy đủ Tuy nhiên nếu chỉ sử dụng một bản sao lưu 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 chưa, có những thay đổi nào
và nó đã được xác nhận chưa Cách khắc phục là tạo nhiều bản sao lưu tại nhiều thời điểm
d Sao lưu transaction redo log: chỉ sao lưu transaction redo log của
giao dịch, ghi nhận các giao dịch kể từ lần sao lưu (đầy đủ hay sai khác) cuối cùng hoặc từ lần sao lưu transaction redo log cuối cùng Kiểu sao lưu 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ủ ngưng hoạt động thì có thể kịp sao lưu 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 lưu transaction redo log không có khả tích luỹ, bạn phải ghi lại tất cả transction log theo đúng trình tự xây dựng nó
Khi sao lưu một cơ sở dữ liệu, bạn chỉ cần dùng bản sao lưu sai khác cuối cùng sau lần sao lưu đầy đủ, sau đó bạn khôi phục bản sao lưu transaction redo log theo đúng trình tự tạo ra nó hoặc các thao tác khôi phục không thành công Do tính tích luỹ, các bản sao lưu sai khác sau lớn hơn bản trước, trái lại kích thước bản sao lưu 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êm trọ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ước khi xảy ra sự cố, nếu bạn có càng nhiều bản sao lưu 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 sang mộ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ại toà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ệu cho tới điểm sai hỏng
c 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êng thì 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ại trạng thái của lần sao lưu tốt gần nhất
Trang 29Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
29
3.4 Các kỹ thuật sao lưu và phục hồi
a Sao lưu:
Các kiểu tập tin CSDL khác nhau của Oracle đòi hỏi việc sao lưu
tương ứng khác nhau Một số tập tin chỉ sử dụng các lệnh sao lưu 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ào yêu cầu từng tập tin
Có hai kiểu sao lưu cơ bản là: Sao lưu lạnh (Cold backup) và sao lưu
nóng (Hot backup):
- Sao lưu lạnh (Cold backup): Đóng toàn bộ CSDL và tiến hành sao
lưu 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
lưu không xảy ra
- Sao lưu nóng (Hot backup): Phương pháp này cho phép thực hiện
sao lưu mà không cần đóng CSDL Trước hết nó đặt các tablespace vào
trạng thái sao lưu Các bước thực hiện như sau:
Đặt tablespace vào trạng thái sao lưu
Sao chép các tập tin vật lý liên quan đến tabelspace
Tắt trạng thái sao lưu của tablespace
Lặp lại các bước trên cho đến khi tất cả các tablespace được sao lưu Sao lưu các tập tin control
Sao chép các tập tin redo log trực tuyến
Cụ thể sao lưu:
- 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ày
là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ên cá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
Trang 30Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
30
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
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 lưu 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õ
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 lưu 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ệu chủ yếu: dữ liệu xử lý giao dịch trực tuyến (OLTP) và dữ liệu của hệ trợ giúp quyế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
Trang 31Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
31
Nếu cơ sở dữ liệu chỉ chứa dữ liệu DSS, bạn chỉ cần một bản sao lưu với mộ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ôi phục từ bản sao lưu đó 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ác file 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 lưu cơ sở dữ liệu nhưng với hệ thống OLTP, bạn phải sao lưu 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 Server 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ành từng nhóm các tác vụ gọi là Server roles Theo đó, mỗi đăng nhập ứng với một Server role được phép thực hiện các tác vụ quản trị tương ứng mà không cầ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ài tác vụ quản trị.Các tác vụ mức cơ sở dữ liệu: dữ liệu được lưu trữ và truy nhập theo các database object Mọi đối tượng trong cơ sở dữ liệu đều thuộc một thự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ải tất cả các database user đều phải sở hữu các đối tượng Database user được liên kết với database role Database role là nhóm các quyền được gán cho database user
Các đối tượng
cơ sở
dữ liệu
Applicatio
n Roles Server
Trang 32Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
32
Oracle Server cho phép thiết lập nhiều chế độ bảo mật khác nhau thô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óm người sử dụng chung mục đích Bạn có thể tiến hành phân quyền sử dụng theo từ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óm duy nhất Các nhóm được sử dụng để phân quyền cho nhiều người sử dụng chung mục đích Các nhóm được lưu 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 tin cầ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
Cú 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 TABLE SPACE
{ quota [integer [K/M] UNLIMITED] ON TABLE
{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
Trang 33Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
5.1 Quyền hệ thống (System Privilege)
Có 126 quyền hệ thống, thông tin về system privilege được đặt trong view DBA_SYS_PRIVS, thông tin về session hiện thời được đặt trong view SESSION_PRIVS
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ền cho người khác
b.Thu hồi quyền hệ thống
Trang 34Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
[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
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}
Trang 35Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
35
[,{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 cho user
ALTER USER user DEFAULT ROLE
{role [,role] / ALL[ EXCEPT role [,role] ]/ NONE}
6.5 Kích hoạt và ngƣng 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 ngưng 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: Ngưng 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
ROLE_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
Trang 36Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
36
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 đó đáng chú ý 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ạp dữ 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 Đặc tả đ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
Trang 37Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
37
- 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
CONTROL: tên contro file
LOG: tên log_file
II.1.5 Quản lý dữ liệu
1 Định nghĩa dữ liệu
Enterprise Manager có 2 tập công cụ phục vụ cho làm việc với cơ sở
dữ liệu Tập thứ nhất là các phương thức mang tính đồ họa để tạo và truy vấn bảng (DBA Studio), tập thứ 2 là các đối thoại của SQL*PLUS
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ụ GUI của Enterprise Manager không phải lúc nào cũng có sẵn, tuy nhiên giao diện giữ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à định dạ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 trường SQL*PLUS:
Cú pháp:
CREATE TABLE [schema.] table
(column datatype [, column datatype]… ) [ TABLESPACE tablespace ]
Trang 38Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
38
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 lưu vào redo log file có/ không
CACHE / NOCACHE: Dữ liệu trong table có được truy xuất qua cache hay không
b Đặ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ệu thì 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 ra một bảng tạm thời trong cơ sở dữ liệu tempdb, bảng này chỉ có ý nghĩa trong phiê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ính tổng thể, nó vẫn nằm trong cơ sở dữ liệu tempdb nhưng 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úc phiê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ột trong 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ự định nghĩ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ì Oracle Server lưu trữ dữ liệu trong các trang 8 K, chiều dài tối đa của một hàng là
8060 byte
e Thuộc tính định danh
Trong một bảng bạn có thể có một cột tự động tăng, sử dụng từ khoá Identity Mỗi bảng chỉ được có một cột thuộc tính định danh và cột đó không
Trang 39Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
CNTT
39
được cho phép giá trị NULL Thuộc tính định danh được dùng cho tất cả các kiểu dữ liệu số (integer, smallint, tinyint, decimal, numeric, float)
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ủa bả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ạn cũ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
DROP 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ột tập, kết quả tạo ra là một view được phân vùng Khi cập nhật view đó, Oracle Server dựa vào các giá trị để biết được thông tin mới hay giá trị sửa đổi thuộc bả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
Trang 40Khoá luận tốt nghiệp Nguyễn Công Nhật - Lớp 40A -
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ạn cũng có thể cấp quyền cho views Ngoài ra bạn cũng có thể thay đổi view trong Transact –SQL bằng lệnh ALTER VIEW:
ALTER VIEW CA_Authors AS
SELECT au_lname, au_fname FROM Authors
WHERE state = „CA‟
- Cập nhật View
Có thể dùng các câu lệnh giao tác SQL như INSERT, UPDATE, DELETE để cập nhật view Nếu bạn cập nhật cột xác định view thì sẽ gây ảnh hưởng đến view đó, do vậy để tránh điều này bạn dùng WITH CHECK OPTION:
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 được chứa trong bảng hệ thống Oracle Server có 2 loại bảng hệ thống: bảng catalog 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ên toà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ào tên máy chủ trong Enterprise Manager và chọn Edit Oracle Server Registration
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 định nghĩa trong mỗi cơ sở dữ liệu và được kế thừa từ cơ sở dữ liệu mẫu; chúng trích ra một phân thông tin từ các bảng hệ thống Có thể quan sát các view này trên cây view của Enterprise Manager, dưới nút Oracle Server Views