PHẦN MỞ ĐẦU 1
PHẦN NỘI DUNG 3
CHƯƠNG I: TỔNG QUAN VỀ HỆ QUẢN TRỊ CSDL ORACLE 3
I. Giới thiệu chung về CSDL Oracle8 3
II. Kiến trúc Oracle Server 6
2.1 Cấu trúc của CSDL và cách quản lý không gian lưu trữ dữ liệu trong Oracle 8
2.1.1 Các cấu trúc logic của một CSDL 8
2.1.2 Các cấu trúc vật lý của một CSDL (Oracle files) 11
2.2 Cấu trúc bộ nhớ và các tiến trình 15
2.2.1 Cấu trúc bộ nhớ 15
2.2.2 Các tiến trình 18
III. Các tính năng của Hệ quản trị cơ sở dữ liệu Oracle 23
3.1 An toàn và bảo mật trong Oracle 24
3.1.1 Quản lý người dùng 24
3.1.2 Cơ chế phân quyền 24
3.2 Tính toàn vẹn dữ liệu và cơ chế khoá 25
3.2.1 Toàn vẹn dữ liệu 25
3.2.2 Cơ chế khoá (lock) 26
IV. Liên kết dữ liệu 27
4.1 Equijoins 27
4.2 Non-equijoins 27
4.3 Outer joins 27
4.4 Self joins 27
CHƯƠNG II : SỬ DỤNG NGÔN NGỮ LẬP TRÌNH TRONG CSDL ORACLE 28
I. Ngôn ngữ SQL 28
1.1 Ưu điểm của SQL 28
1.2 Soạn thảo, thực thi một chương trình 29
1.3 Kết xuất màn hình 30
II. Các thành phần của SQL 30
2.1 Các schema object 30
2.2. Kiểu dữ liệu (Datatype) 31
2.3 Dữ liệu rỗng (Null) 33
3.1 Curval và Nextval 34
3.2 Level 35
3.3 Rowid 35
3.4 RowNum 36
IV. Các lệnh SQL 36
4.1 Tổng quan về tập lệnh 36
4.2 Phân loại tập lệnh 36
V. PL/SQL 37
5.1 SQL trong PL/SQL 37
5.2 Cấu trúc chương trình PL/SQL 37
5.3Khối PL/SQL (PL/SQL block) 38
CHƯƠNG 3: TỔNG QUAN VỀ ORACLE DEVELOPER/2000 39
I. Các đặc trưng phát triển 39
II. Các đặc trưng chính của Developer/2000 39
III. Các thành phần của Developer/2000 40
3.1 Form Builder 40
3.2 Report Builder 43
PHẦN KẾT LUẬN 44
1. Các kết quả đạt được 44
2. Kết luận 44
TÀI LIỆU THAM KHẢO 45
48 trang |
Chia sẻ: huong.duong | Lượt xem: 3241 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Tìm hiểu hệ quản trị cơ sở dữ liệu Oracle trong môi trường windows server 2000, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
rong Library Cache và các thông tin nội tại trong Data dictionary. Shared rất quan trọng vì nếu không cấp đủ bộ nhớ cho nó thì đó có thể là nguyên nhân giảm hiệu quả thực hiện công việc. Kích thước của vùng này được đặt trong tham số shared_pool_size. Shared pool bao gồm Library Cache và Data Dictionary Cache:
Library Cache
Library Cache được sử dụng để chứa các câu lệnh SQL. ở đây lưu giữ các cây phân tích cú pháp (Parse tree) và các phương án thực hiện cho mọi câu lệnh SQL. Shared SQL Area cũng được dùng để lưu các thủ tục phân tích, biên dịch các khối PL/SQL và chúng được các tiến trình người dùng chia sẻ trrong cùng một instance. Nếu có nhiều chương trình ứng dụng đồng thời đưa ra một câu lệnh SQL thì vùng này sẽ được truy nhập nhằm làm giảm dung lượng bộ nhớ cần thiết cũng như giảm thời gian phân tích và thời gian lập phương án thực hiện.
Data Dictionary Cache
Data Dictionary chứa tập hợp các bảng (tables) và các bảng logic (views) được Oracle sử dụng để tham chiếu đến CSDL. Oracle dùng Data Dictionary lưu giữ các thông tin cấu trúc logic và cấu trúc vật lý của CSDL, gồm các thông tin như:
- Thông tin về người dùng (các đặc quyền của người dùng).
- Định nghĩa các ràng buộc toàn vẹn cho các bảng CSDL.
- Phân loại tên và dữ liệu cho tất cả các cột trong bảng CSDL
Oracle dùng Data Dictionary để phân tích các câu lệnh SQL. Điều này rất cần thiết cho các thao tác của Oracle. Vì vậy, nếu không có đủ bộ nhớ cho vùng Data Dictionary Cache, chúng ta sẽ gặp phải một số vấn đề xấu khi thực hiện công việc.
Database buffer cache
Chứa tập hợp các buffer chứa phần lớn các dữ liệu được sử dụng ở lần gần nhất. Do có nhiều người sử dụng, nên để đảm bảo tính toàn vẹn cho CSDL, Oracle sinh ra các bản sao. Vùng này lưu giữ các bản sao dữ liệu.
Database buffer cache được tổ chức thành hai danh sách:
- Danh sách nháp (dirty list): Chứa vùng đệm đã sửa mà không được viết vào đĩa. Danh sách này được điều khiển bởi tiến trình DBWR để định ra khối dữ liệu nào được viết vào Database file.
- Danh sách được sử dụng tại thời điểm gần nhất (Least Recently Used - LRU): Nội dung của danh sách này gồm:
+ Vùng đệm rỗi.
+ Vùng đệm đã sử dụng.
+ Vùng đệm nháp.
Redo log buffer
Oracle sử dụng các Redo log file ghi lại tất cả những thay đổi đối với các đối tượng của người dùng và các đối tượng của hệ thống. Trước khi những thay đổi này được ghi vào các file đó, Oracle lưu chúng vào Redo log buffer. Chẳng hạn, các thông tin trong Redo log buffer được viết vào trong các Redo log file khi vùng nhớ đệm đầy hoặc khi một giao tác đưa ra một câu lệnh.
Tiến trình nền LGWR là tiến trình duy nhất ghi lại các thông tin từ Redo log buffer ra các Redo log file.
b) Program Global Area - PGA.
PGA là vùng bộ nhớ chứa dữ liệu và các thông tin điều khiển cho các quá trình của Oracle Server. Một vùng PGA được Oracle tạo ra khi một tiến trình phục vụ bắt đầu. Kích thước và nội dung của PGA phụ thuộc vào các tuỳ chọn của Oracle Server mà ta cài đặt. Vùng PGA gồm các thành phần sau:
- Stack space: Vùng này lưu giữ các biến, mảng của một session.
- Session information: Nếu chúng ta vận hành Server đa dòng thì session information được chứa trong PGA, nếu chúng ta vận hành thì session information được chứa trong SGA.
- Private SQL Area: Đây là vùng trong PGA, nơi lưu trữ các thông tin kiểu như về các biến kết nối và thời gian thực hiện các buffer.
2.2.2 Các tiến trình
Tiến trình (process) là một dòng điều khiển hay cơ chế trong điều hành hệ thống mà thực hiện một dãy công việc nào đó. Oracle có 3 kiểu tiến trình: User process, Background process, Server process. Trong đó background process và server process được gọi chung là Oracle process.
a) Tiến trình người dùng (User process)
User process hay còn gọi là Client process là sự kết nối của người dùng với hệ quản trị CSDL. Nó được tạo ra khi người dùng chạy một chương trình ứng dụng truy nhập đến CSDL qua giao diện chương trình của Oracle (khi đó Oracle cũng tạo ra các tiến trình phục vụ (Server process) để đáp ứng các yêu cầu từ phía tiến trình người dùng). Giữa tiến trình người dùng và tiến trình phục vụ luôn có sự liên hệ với nhau. Nhiệm vụ của User process là giao tiếp với người sử dụng để lấy câu lệnh SQL và PL/SQL, gửi các câu lệnh lên Server, nhận kết quả và trình diễn thông tin theo yêu cầu người dùng.
b) Tiến trình nền (Background process)
Mỗi khi Oracle instance bắt đầu, vùng nhớ hệ thống toàn cục (System Global Area - SGA) được định vị và các tiến trình nền được bắt đầu. Các tiến trình nền tương ứng với các công việc khác nhau phục vụ cho tất cả mọi người dùng CSDL. Đây là tiến trình dị bộ (xử lý ngầm) để thực hiện một số nhiệm vụ riêng. Tiến trình này bắt đầu khi CSDL start và kết thúc khi CSDL shut down. Có các loại tiến trình nền sau:
Database Write (DBWR): Các khối dữ liệu đã được sửa đổi trong vùng nhớ đệm CSDL (Database buffer cache) được viết trở lại đĩa bởi một tiến trình nền DBWR. Khi một giao tác (transaction) thay đổi dữ liệu trong một khối dữ liệu, khối dữ liệu này không cần phải ngay lập tức được ghi lên đĩa. Thường thì DBWR ghi dữ liệu lên đĩa theo một cáhoặc hiệu quả hơn. Đó là DBWR chỉ ghi khi cần đọc đến dữ liệu của vùng nhớ đệm CSDL chứ không ghi ngay mỗi khi kết thúc một giao tác. Tiến trình này quản lý vùng Database buffer. Cho nên các tiến trình của người dùng luôn luôn có thể tìm được vùng đệm rỗi.
Đối với các hệ thống sử dụng vào ra dị bộ thì chỉ có một tiến trình DBWR, còn hệ thống không sử dụng vào ra dị bộ thì sự thực hiện có thể được tăng cường hơn vì có tăng thêm nhiều tiến trình DBWR.
Log Write (LGWR): ghi lại tất cả những thay đổi tới CSDL trong vùng Redo log buffer tới đĩa bởi một itến trình nền có tên LGWR, một tiến trình nền khác là ARCH (Archiver) có thể được bắt đầu để lưu giữ các thông tin đăng nhập lại trên một thiết bị cất giữ đã định trước (tape, disk) dùng cho việc khôi phục bị thất bại.
LGWR viết Redo log buffer vào Redo log file khi:
- user đưa ra chỉ thị commit.
- vùng Redo log buffer vượt quá 1/3 kích cỡ cho phép của vùng.
- DBWR cần để xoá sạch các khối đệm cho một điểm kiểm tra hoặc quá thời gian xuất hiện.
System Monitor (SMON): Tự động thực hiện việc khôi phục instance, tái tạo kiểu không gian bảng. Tiến trình này bao gồm việc loại bỏ các segment tạm thời và khôi phục các giao tác đã mất khi hệ thống gặp sự cố.
Process Monitor (PMON): Kiểm soát tiến trình người dùng và tự động thực hiện việc khôi phục một tiến trình người dùng thất bại.
Đây là bốn tiến trình mang tính chất bắt buộc của hệ thống. Ngoài ra còn một số tiến trình tuỳ chọn sau:
Checkpoint (CKPT): Bảo đảm rằng CSDL được sửa ghi vào datafile. Tiến trình thực hiện việc gửi tín hiệu cho tiến trình DBWR nhằm thi hành việc kiểm soát và cập nhật tất cả các datafile và các control file của CSDL. Việc kiểm soát này là một sự kiện mà DBWR sẽ ghi vào datafile tất cả các database buffer đã được sửa đổi. Nếu tiến trình này không được dùng thì tiến trình LGWR sẽ đảm nhận chức năng này.
Archiver (ARCH): Viết dữ liệu từ Redo log file ra thiết bị lưu trữ trực tuyến nếu có yêu cầu. Tiến trình ARCH chỉ được kích hoạt khi hệ quản trị CSDL hoạt động trong chế độ ARCHIVELOG. Nếu hệ thống không làm việc trong chế độ này thì tiến trình ARCH không phục hồi được dữ liệu nếu xảy ra hỏng hóc trong hệ thống. Trong một số trường hợp nào đó nó có thể chạy dưới chế độ NOARCHIVELOG song đặc thù vẫn là chế độ ARCHIVELOG.
Recovery (RECO): Được sử dụng để dọn dẹp các giao tác chưa thực hiện trong một CSDL phân tán và giải quyết sự tranh chấp giữa các giao tác.
LOCK (LCKn): Các tiến trình LCKn (LCK0,..., LCK9) thực hiện việc khoá thể hiện giao nhau trong hệ thống phục vụ song song của Oracle (xử lý tình trạng bế tắc giữa các instance trong hệ tiến trình song song).
Dispatcher (Dnnn): Đây là các tiến trình nền tuỳ chọn, nó chỉ có mặt khi sử dụng cấu hình phục vụ đa dòng (Multi-threathded server configuration). ít nhất sẽ có một tiến trình này (D000,...,Dnnn) được tạo ra để sử dụng đối với mọi giao thức truyền thông. Mỗi tiến trình Dispatcher có chức năng gửi các yêu cầu từ các tiến trình người dùng đến tiến trình phục vụ dùng chung và gửi hồi đáp tới các tiến trình người dùng phù hợp.
Job Queue (SNPn): Trong cấu hình CSDL phân tán, có tất cả 36 tiến trình Job Queue (SNP0,..., SNP9, SNPA,..., SNPZ) có thể làm tươi các table snapshot. Các tiến trình này nhận biết và làm tươi bất kỳ một snapshot nào có trong lịch trình làm tươi tự động. Nếu sử dụng nhiều hơn một tiến trình Job Queue thì các tiến trình này sẽ phân chia nhau công việc làm tươi các snapshot. Các tiến trình này cũng thực hiện các công việc theo yêu cầu của DBMS_JOB package và truyền thông điệp đã xếp hàng tới các hàng khác trong CSDL khác.
Queue Monitor (QMNn): Là các tiến trình nền tự chọn thực hiện việc giám sát các thông điệp cho Oracle Advanced Queuing (Oracle AQ). Chúng ta có thể định cấu hình cho mười tiến trình Queue Monitor.
c) Tiến trình phục vụ (Server process)
Server process (còn gọi là Shadow process) giao tiếp với người dùng và tương tác với Oracle nhằm thực hiện các yêu cầu của người dùng. Khi một user chạy một ứng dụng tương ứng hoặc một hỏi đáp dữ liệu thì các tiến trình người dùng được sử dụng. Oracle sẽ đưa ra một tiến trình phục vụ để trao đổi yêu cầu với các tiến trình người dùng.
User
process
Server
process
Các tiến trình phục vụ sau khi thi hành các yêu cầu của người sử dụng và đưa trở lại kết quả cho họ.
Trước khi dữ liệu có thể truy cập được thì tiến trình phục vụ phải được thể hiện để đưa dữ liệu lên vùng nhớ đệm dùng chung. Các khối dữ liệu sau khi được thao tác, sửa đổi sẽ được viết trở lại bộ nhớ ngoài nhờ tiến trình nền DBWR. Do việc cập nhật lại dữ liệu từ vùng nhớ chung SGA ra đĩa rất tốn thời gian cho nên tiến trình CKPT sẽ đảm bảo việc cập nhật dữ liệu sẽ thực hiện vào thời điểm cần thiết. Cũng do việc cập nhật xảy ra không liên tục nên tiến trình LGWR sẽ cập nhật lại các thay đổi của Redo log buffer ra các Redo log file. Nếu lưu trữ trực tuyến thì các Redo log file sẽ được cập nhật trực tuyến sang vùng lưu trữ khác (offline storage) để phòng sự cố xảy ra đối với hệ thống.
Tiến trình phục vụ xử lý lệnh SQL thông qua những thông tin của vùng nhớ chung SGA. Program Global Area (PGA) là vùng nhớ chứa dữ liệu và thông tin điều khiển cho đơn người dùng hoặc cho tiến trình người dùng. PGA được cấp phát bởi Oracle Server khi tiến trình người dùng kết nối với CSDL Oracle và một session được thiết lập.
Các thông báo của SQL sẽ được thi hành bởi các tiến trình phục vụ, các tiến trình phục vụ sẽ đọc khối dữ liệu từ đĩa vào vùng nhớ dữ liệu được dùng chung của SGA (vùng Shared pool). Sau đó đưa ra kết quả từ các thông báo SQL. Các tiến trình phục vụ có ba giai đoạn:
- Giai đoạn phân tích: Kiểm tra cú pháp, kiểm tra quyền truy nhập, đường dẫn tìm kiếm có hiệu quả nhất rồi xác định cây phân tích...Cây phân tích sẽ được cất giữ trong vùng Shared SQL Area (thuộc một phần của Share pool trong SGA), vùng này chứa các thông tin cho việc thi hành các thông báo SQL.
User
processes
Server
processes
SGA
- Giai đoạn thi hành các thông báo: gắn cây phân tích tới vùng đệm dữ liệu
SGA
Shared pool
Database buffer
Server processes
- Giai đoạn nhận lại: nhận giữ liệu từ các thông báo của server.
User
processes
Server
processes
SGA
Như vậy, cứ khi có tiến trình người dùng thì sinh ra tiến trình phục vụ. Chẳng hạn, nếu tiến trình người dùng yêu cầu truy nhập một phần dữ liệu chưa có trong SGA, tiến trình phục vụ được sinh ra có nhiệm vụ đọc các khối dữ liệu đó từ các datafile và trong SGA. Đó là sự tương quan 1 - 1 giữa tiến trình người dùng và tiến trình phục vụ, mặc dù một phần tiến trình phục vụ có thể đồng thời kết nối với nhiều tiến trình người dùng. Cách thực hiện này làm giảm đi sự sử dụng tài nguyên của hệ thống.
Từ đó ta có thể đưa ra kết luận rằng hai kiểu tiến trình background process và server process đều là các Oracle process nhưng chúng khác nhau trong phạm vi tiến trình của mình. Các server process trao đổi các yêu cầu từ phía người dùng, còn các background process thi hành những công việc của một instance.
Các tính năng của Hệ quản trị cơ sở dữ liệu Oracle
Oracle là một hệ quản trị cơ sở dữ liệu do hãng Oracle phát triển. Hệ này hoạt động trong môi trường client/server trong đó các ứng dụng chạy trên các các trạm làm việc (client), còn hệ quản trị cơ sở dữ liệu chạy trên máy chủ (server). Oracle được đánh giá là hệ quản trị cơ sở dữ liệu mạnh với các tính năng:
- Lưu trữ các thông tin trong cơ sở dữ liệu, các phép tìm kiếm và thao tác dữ liệu phục vụ cho các ứng dụng được hệ quản trị thực hiện một cách hiệu quả với các kỹ thuật tối ưu hóa.
- Oracle thực sự đạt được các tiêu chuẩn của một hệ quản trị dữ liệu theo mô hình quan hệ, một mô hình được coi như chuẩn cho các cơ sở dữ liệu:
+ Bảo đảm tính nhất quán của dữ liệu, ngay cả trong môi trường đa người dùng.
+ Có các cơ chế đảm bảo tính toàn vẹn của cơ sở dữ liệu: các khai báo toàn vẹn tham chiếu, các ràng buộc khai báo (Constrains),các Trigger.
+ Có cơ chế bảo mật dữ liệu đối với các người dùng khác nhau.
+ Cho phép cài đặt các cơ sở dữ liệu phân tán và kèm theo là các cơ chế để đảm bảo tính nhất quán và tối ưu hóa việc thực hiện các câu hỏi phân tán.
- Các công cụ phát triển của Oracle cho phép thực hiện các câu lệnh SQL để tìm kiếm và thao tác dữ liệu chứa trong hệ quản trị CSDL.
- Có khả năng lưu trữ các đối tượng cơ sở dữ liệu để phục vụ cho các ứng dụng. Các đối tượng này thường chứa các chương trình của ngôn ngữ thủ tục PL/SQL. Đây là phương tiện rất hữu ích giúp cho người phát triển hệ thống có thể cài đặt được các quy tắc nghiệp vụ và các kiểm tra toàn vẹn dữ liệu nhất là các ràng buộc phức tạp.
- Đảm bảo tính nhất quán của cơ sở dữ liệu (trong môi trường đa người dùng) và thực hiện việc tối ưu hoá các thao tác trên cơ sở dữ liệu.
3.1 An toàn và bảo mật trong Oracle
3.1.1 Quản lý người dùng
Cơ sở dữ liệu Oracle cho phép nhiều người cùng một lúc truy nhập vào một CSDL. Vì vậy, vấn đề bảo mật là hết sức quan trọng. Mỗi CSDL có một danh sách người dùng tương ứng. Việc quản lý người dùng gồm khai báo tên người dùng (username) và mật khẩu (password) hợp lệ; chứng thực cho phép người dùng có thể truy cập cơ sở dữ liệu, giới hạn không gian đĩa được cấp phát thời gian CPU... Để khai báo người dùng trong Oracle có thể dùng hộp thoại của SQL*DBA hoặc câu lệnh SQL.
3.1.2 Cơ chế phân quyền
Sau khi tạo ra user, người quản trị Database phải gán quyền cho user để họ có thể truy nhập được vào CSDL. Quyền truy cập trong Oracle được chia thành quyền hệ thống và quyền với các đối tượng. Quyền hệ thống là quyền cho phép user tác động lên một kiểu đối tượng nào đó. Ví dụ như quyền tạo Table, Index trên bất kỳ một Tablespace nào, quyền tạo user, quyền cập nhật, tra hỏi dữ liệu trên bất kỳ table nào,... Trong Oracle có hơn 60 quyền hệ thống khác nhau. Quyền với các đối tượng cho phép user tác động lên một đối tượng cụ thể nào đó. Ví dụ quyền cập nhật dữ liệu trên table có tên EMP quyền đọc dữ liệu từ một View có tên XYZ. ..
Role là một tập các quyền, có tác dụng lớn trong việc gán một nhóm quyền cho một nhóm người dùng. Để thay đổi quyền hạn của người dùng ta chỉ cần thay đổi Role. Ngoài việc gán quyền cho người dùng, ta cũng gán được quyền cho một Role. Tuy nhiên phải tạo ra Role bằng lệnh CREATE ROLE trước khi có thể gắn quyền cho nó. Ngoài ra có thể bảo vệ Role bằng một mật khẩu ở mức CSDL hay hệ điều hành. Ta có thể làm cho Role có hiệu lực (enable) hay vô hiệu hoá (disable) nó.
3.2 Tính toàn vẹn dữ liệu và cơ chế khoá
3.2.1 Toàn vẹn dữ liệu
Một bảng có thể được nhiều người dùng truy cập đồng thời, để đảm bảo tính toàn vẹn dữ liệu. Oracle đã đưa ra các phương tiện để áp đặt các ràng buộc trong thao tác dữ liệu và các cơ chế khoá cho việc truy cập đồng thời.
áp đặt các ràng buộc toàn vẹn: đảm bảo cho dữ liệu trong CSDL luôn tuân theo các ràng buộc định trước, phù hợp với yêu cầu của hệ thống và yêu cầu nghiệp vụ. Các yêu cầu toàn vẹn dữ liệu chính trong Oracle: giá trị Null, đảm bảo không có hai hàng nào trong cùng một bảng giống nhau, toàn vẹn khi tham chiếu và đảm bảo các yêu cầu nghiệp vụ phức tạp.
Để đáp ứng được các yêu cầu về toàn vẹn dữ liệu, Oracle cung cấp các
phương tiện như các ràng buộc kiểu khai báo (Constraint), các Triggers và mã chương trình (ít dùng).
- Ràng buộc kiểu khai báo (Constraint): Thông thường, khi áp đặt các toàn vẹn dữ liệu, người ta tận dụng tối đa các Constraint. Constraint rất đơn giản, nó được khai báo ngay khi tạo bảng hay được thêm vào một bảng sẵn có. Tuy nhiên, Constraint không có khả năng tham chiếu dữ liệu khi hai bảng ở trên hai trạm khác nhau. Các Constraint được đặt tên để dễ cho việc quản lý, nếu không đặt thì Oracle sẽ tự động đặt tên. Constraint được chia thành mức cột (được khai báo trong phần khai báo cột của một bảng) và mức bảng (được khai báo sau phần khai báo cột của một bảng, áp đặt ở mức bảng hay được dùng vì có thể được sửa đổi một cách dễ dàng). Các Constraint được phân chia thành: NOT NULL, UNIQUE, CHECK (kiểm tra giá trị của một cột có thuộc một miền nhất định hay một danh sách nhất định hay không. Có thể so sánh giá trị của các cột với nhau, tham chiếu đến một hay nhiều cột. Tuy nhiên, CHECK không thể có các tham chiếu con mà tham chiếu đến các trường giả trong bảng và không dùng được các hàm SYSDATE, UID... vì giá trị của chúng biến đổi thường xuyên, NOT NULL là một dạng của constraint CHECK, DEFAULT, PRIMARY KEY và FOREIGN KEY.
- Các Trigger: dùng để áp đặt các ràng buộc phức tạp về nghiệp vụ trong CSDL. Đây là đối tượng của CSDL và được kích hoạt khi thực hiện các câu lệnh thao tác dữ liệu Insert, Update, Delete. Nó có khả năng tham chiếu tới các bảng ở xa, trong khi ràng buộc khai báo không làm được cũng như khi bảng chủ và bảng tớ ở trên hai trạm khác nhau.
3.2.2 Cơ chế khoá (lock)
Mục đích: đảm bảo việc truy cập đồng thời tới dữ liệu (người muốn đọc dữ liệu không phải chờ đợi người đang thực hiện các thay đổi lên dữ liệu đó, người muốn viết không phải đợi người đang đọc cùng dữ liệu, người muốn thực hiện thay đổi lên dữ liệu chỉ phải đợi người đang nắm quyền thay đổi nó mà thôi); đảm bảo tính nhất quán khi đọc dữ liệu (trong quá trình thực hiện một câu lệnh, một người luôn nhìn được dữ liệu nguyên bản chứ không phải dữ liệu đang bị người khác thay đổi; khi một người commit những thay đổi của mình thì cũng không ảnh hưởng tới người khác đang trong quá trình thực hiện câu lệnh của mình).
Các lớp khoá: khoá dữ liệu có tác dụng bảo vệ dữ liệu khi thực hiện các lệnh thao tác dữ liệu; khoá từ điển bảo vệ cấu trúc của các đối tượng trong cơ sở dữ liệu.
Các mức khoá: mức bản ghi, mức bảng (được chia thành EXCLUSIVE, SHARES, ROW SHARES, ROW EXCLUSIVE và SHARE ROW EXCLUSIVE (SRX). Ngoài ra, câu lệnh SQL cũng có tác dụng gây ra khoá (ví dụ LOCK TABLE IN ).
Khoá chết: Hiện tượng khoá chết có thể xảy ra, tuy nhiên nó sẽ được dò tìm bởi tiến trình nền PMON và giải quyết. Cách tốt nhất để tránh khoá chết là quy định thứ tự truy cập vào cùng một bảng trong ứng dụng.
Liên kết dữ liệu
Khi dữ liệu từ nhiều hơn một bảng trong CSDL được yêu cầu, một điều kiện join được sử dụng. Các dòng trong một bảng có thể được join tới các dòng trong bảng khác theo các giá trị chung tồn tại trong các cột tương ứng. Điều kiện join đó là các cột khoá chính và khoá ngoại.
Có hai loại điều kiện join chính là Equijoins và Non-equijoins. Ngoài ra còn có các phương pháp khác như: Outer joins, Selfjoins, Set operators.
4.1 Equijoins
Đây là cách liên kết dữ liệu giữa hai hay nhiều bảng mà quan hệ giứa hai bảng có phần bổ xung là khoá chính và khoá ngoại. Điều kiện join là phép toán eqal (=).
4.2 Non-equijoins
Non-equijoins xảy ra khi không có cột nào trong bảng thứ nhất phù hợp với một cột trong bảng thứ hai. Điều kiện join không phải là phép toán equal. Các điều kiện join thường dùng như: BETWEEN, =.
4.3 Outer joins
Sử dụng một outer join để xem các dòng mà có các điều kiện join không chuẩn.
Phép toán được sử dụng là dấu (+) .
Đặt dấu + bên cạnh của join nơi mà không có giá trị để join tới.
4.4 Self joins
Sử dụng để join các dòng trong một bảng tới các dòng trong một bảng tương tự. Nó mô phỏng hai bảng trong mệnh đề FROM bằng việc khởi tạo hai bí danh (alias) cho bảng.
Chúng ta có thể join một bảng tới chính nó bằng việc sử dụng các bí dánh bảng để mô tả như là hai bảng riêng biệt. Điều này cho phép các dòng trong một bảng được liên kết tới các dòng trong bảng tương tự.
Chương II
Sử dụng ngôn ngữ lập trình trong CSDL Oracle
Ngôn ngữ SQL
SQL (Structured Query Language) là tập lệnh truy xuất CSDL quan hệ.
Ngày nay SQL được sử dụng rộng rãi và được xem là ngôn ngữ chuẩn để truy cập CSDL quan hệ.
1.1 Ưu điểm của SQL
Ngôn ngữ không module: SQL là ngôn ngữ không module vì nó làm việc với mẩu tin và cho phép di chuyển tự động đến các mục dữ liệu. SQL cho phép làm việc với cấu trúc dữ liệu ở cấp cao hơn là phải thao tác trên từng mẩu tập tin. Các lệnh SQL cho phép đầu vào và đầu ra là một tập hợp các mẩu tin, kết quả của câu lệnh SQL có thể là đầu vào của một câu lệnh SQL tiếp theo. SQL không bắt người sử dụng phải chỉ ra phương pháp truy cập CSDL và do đó giúp người sử dụng có thể tập trung vào công việc chính. Tất cả các lệnh SQL sử dụng phương thức tối ưu hoá, người sử dụng không cần biết đến các chỉ mục, chức năng tối ưu hoá sẽ nhận biết và sử dụng một cách thích hợp.
Ngôn ngữ cho mọi người sử dụng: SQL được sử dụng dưới nhiều góc độ tuỳ theo người sử dụng, như: Người quản trị hệ thống, Người quản trị CSDL, Người quản trị việc bảo mật, Người thảo chương trình ứng dụng, Người được hệ thống hỗ trợ ra quyết định, Người sử dụng dưới dạng khác.
Ngôn ngữ hợp nhất: SQL cung cấp tập lệnh hợp nhất được sử dụng cho nhiều mục đích khác nhau, như: Truy vấn dữ liệu; Thêm, cập nhật, xoá các mẩu tin; Tạo lập, thay thế, hiệu chỉnh, hủy các object; Điều khiển việc truy cập CSDL và các object; Đảm bảo tính thống nhất và toàn vẹn dữ liệu.
Ngôn ngữ chung cho tất cả các CSDL quan hệ: Tất cả các hệ quản trị CSDL lớn đều cho phép sử dụng SQL nên chúng ta có thể áp dụng những kiến thức về SQL khi làm việc với hệ quản trị CSDL khác nhau. Hơn nữa, các ứng dụng viết bằng SQL đều có thể chuyển đổi được, do đó chúng ta có thể chuyển một ứng dụng trên hệ quản trị CSDL này sang hệ quản trị CSDL khác mà không phải hiệu chỉnh nhiều.
Nhúng SQL: Nhúng SQL (Sử dụng SQL trong các ngôn ngữ lập trình có cấu trúc) là tập hợp các lệnh sau:
- Tất cả các lệnh SQL, như: Select, Insert,...
- Các lệnh điều khiển như: Prepare, Open,.... nhằm kết các lệnh SQL chuẩn vào ngôn ngữ lập trình cấu trúc.
Oracle cung cấp các tiền biên dịch (Precompiler) cho các ngôn ngữ nhúng SQL, gồm: Tiền biên dịch Pro*Ada, Pro*C, Pro*Cobol, Pro*Fortran, Pro*Pascal, Pro*PL/I.
Các công cụ của Oracle: Hầu hết các công cụ của Oracle đều cho phép sử dụng SQL, tuy nhiên có một số đặc thù riêng khi sử dụng SQL tuỳ theo từng công cụ.
1.2 Soạn thảo, thực thi một chương trình
Thực thi chương trình trong SQL*Plus: Dùng lệnh start hay ký tự @ để định thực thi chương trình SQL*Plus:
SQL> start example.sql, hay
SQL> @example.sql
Soạn thảo chương trình: Để lưu trữ lệnh trong buffer vào tập tin dùng lệnh SAVE, ví dụ lưu nội dung buffer vào tập tin BUFFER.SQL
SQL> SAVE BUFFER.SQL
Các chú thích trong SQL*Plus: Có thể thêm các ghi chú, diễn giải khi viết các lệnh SQL. Sử dụng /* */ cho các comment dài cần để trên nhiều dòng. Sử dụng (--) cho các comment trên một dòng.
1.3 Kết xuất màn hình
Mặc nhiên kết xuất ra màn hình và trôi liên tục, nếu muốn kết qủa kết xuất ra tập tin văn bản phải SET SPOOL ON và chỉ ra tập tin chứa kết quả. Cách này rất tiện lợi cho viết chương trình sinh chương trình (Các chương trình Generate).
Ngưng kết xuất SET SPOOL OFF.
Các thành phần của SQL
2.1 Các schema object
Schema là tập hợp các cấu trúc logic của dữ liệu, được gọi là các object của schema. Một schema được sở hữu bởi một người sử dụng CSDL và được mang tên của người sử dụng. Mỗi người sử dụng có một schema duy nhất. Các object của schema (schema object) có thể được tạo lập và thao tác thông qua các lệnh SQL và bao gồm các object sau:
Các schema object: Cluster (Các bó dữ liệu), Data link (các liên kết dữ liệu), Stand-alone function (các hàm đơn lẻ), Stand-alone procedure (Các thủ tục đơn lẻ), Index (Các chỉ mục), Package (các gói thủ tục và hàm), Sequence (các dãy tuần tự), Snapshot (các bản sao dữ liệu), Synonym (Các đồng nghĩa), Table (Các bảng), Database trigger, View (Các bảng ảo), Profile, Role (vai trò), Rollback segment, Tablespace.
Các thành phần con của Schema object: Các cột trong bảng; Các ràng buộc toàn vẹn trong một bảng; Các package procedure, package function và các object khác trong một package.
Các quy tắc khi tham chiếu đến object
Cú pháp chung khi tham chiếu đến các object: Sơ đồ chung khi tham chiếu các object hoặc thành phần của object
Schema.Object.Part.@dblink
Trong đó:
object: Tên object.
schema: Schema chứa object.
part: Thành phần của object.
dblink: Tên CSDL chứa object.
Oracle giải quyết việc tham
Các file đính kèm theo tài liệu này:
- 3497.doc