lời mở đầu
Trong thời đại thông tin ngày nay, bài toán cơ bản và cốt yếu là: làm thế nào lưu trữ thông tin an toàn, chắc chắn, đồng thời lại truy cập chính xác và dễ dàng chúng. Theo thời gian, yêu cầu của bài toán ngày càng cao với lượng thông tin cần lưu trữ, xử lý ngày càng nhiều và đa dạng.
Các nhà tin học đã đưa ra nhiều lời giải đáp cho bài toán trên. Các giải pháp ngày càng hoàn chỉnh cùng với sự hoàn thiện của lý thuyết và công nghệ. Hệ quản trị cơ sở dữ liệu (CSDL) Oracle là một trong
48 trang |
Chia sẻ: huyen82 | Lượt xem: 1867 | Lượt tải: 2
Tóm tắt tài liệu Tìm hiểu Hệ quản trị CSDL 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
những giải pháp tốt nhất, được công nhận trên thị trường tin học thế giới hiện nay.
Oracle (thực chất là Oracle8i) là CSDL đã được triển khai trên mô hình client/server, đặc biệt là triển khai trên các Web site. Với tất cả dữ liệu được quản lý một cách chuyên nghiệp và được lưu trữ an toàn trong các server chính của Oracle, chúng ta có thể chắc chắn rằng các nhân viên có thể truy cập các thông tin mới nhất nhằm thực hiện các quyết định kinh doanh một cách sáng suốt.
Đối với các CSDL lớn thì việc sử dụng Oracle trong quản lý là hoàn toàn hợp lý. Nó được thừa nhận là đảm bảo tính an toàn dữ liệu cao, quản lý lưu trữ rất mềm dẻo. Nó không chỉ cung cấp khả năng quản lý hệ thống dữ liệu phức tạp cho các doanh nghiệp lớn mà còn cung cấp các công cụ hữu hiệu để bảo trì hệ thống, dễ dàng cho việc phân tán dữ liệu đến người dùng, quản lý tốt các tài nguyên có sẵn của hệ thống.
Hiện nay, ở Việt Nam thị trường dành cho hệ quản trị Oracle còn rất ít do nhiều nguyên nhân mà đặc biệt là vấn đề kinh tế . Tuy nhiên với sự bùng nổ dữ liệu cùng với sự phát triển rất nhanh chóng của xã hội thì việc đưa Oracle vào trong các bài toán quản lý trên diện rộng đã, đang và sẽ được triển khai ở Việt Nam.
Với ý nghĩa phát triển như vậy em đã chọn đề tài “Tìm hiểu Hệ Quản trị CSDL Oracle trong môi trường Windows Server 2000” làm đề án môn học.
Khái niệm Tài liệu phần mềm là một thuật ngữ riêng trong đề án được đưa ra để chỉ đối tượng cần quản lý. Hệ thống Quản lý Tài liệu phần mềm nguồn trên mạng là một hệ thống quản lý mới, trên thị trường cũng chưa thấy phổ biến những hệ thống tượng tự. Đây là một hệ thống làm việc trên mạng ứng dụng trong lĩnh vực Công nghệ Phần mềm (phục vụ các nhóm làm việc phát triển phần mềm quy mô một cơ quan, một viện nghiên cứu, một công ty,...); là một hệ thống có các đặc trưng tiêu biểu cho hệ quản lý ứng dụng theo mô hình quan hệ (có nhiều đối tượng tương tác, nhiều mối quan hệ chéo nhau, nhiều nhu cầu liên kết, lọc dữ liệu, tổng hợp thông tin...).
Qua quá trình tìm hiểu, nghiên cứu, đề án này em chia thành 3 phần như sau:
Phần mở đầu
Phần nội dung
Chương 1. Tổng quan về hệ quản trị CSDL Oracle8
Chương2 . Sử dụng ngôn ngữ lập trình trong CSDL Oracle
Chương 3. Tổng quan về Oracle Developer/2000
Phần kết luận
Phần nội dung
Chương I
Tổng quan về hệ quản trị csdl oracle
Giới thiệu chung về CSDL Oracle8
Oracle là một công ty phần mềm lớn của Mỹ với công nghệ siêu đẳng trong hệ thống quản lý CSDL cũng như các sản phẩm bảo mật Internet nổi tiếng như: Hệ quản trị CSDL Oracle, Developer 2000, Designer 2000. Hiện nay, Hệ quản trị CSDL Oracle được đánh giá là ưu việt nhất đối với các chức năng tiên tiến như: phân tán, sao bản, bảo mật cao, tính nhất quán dữ liệu, thủ tục chạy ngầm (Procedure Stored), đoạn mã xử lý sự kiện kích hoạt (Trigger), khoá dữ liệu trên từng hàng. Hệ CSDL Oracle đảm bảo chạy thông suốt trên nhiều phần cứng và trên nhiều HĐH khác nhau. Nó hỗ trợ các nghi thức mạng và nó cũng là CSDL đầu tiên trên thế giới tích hợp Web. Đặc biệt từ khi Oracle8 được đưa ra đã đánh dấu sự xâm nhập của Oracle vào lĩnh vực CSDL quan hệ - đối tượng với khả năng quản lý các kiểu dữ liệu không quan hệ, đồng thời cũng hứa hẹn tính năng hỗ trợ CSDL quy mô lớn.
Chúng ta đã biết, một CSDL là một tập hợp dữ liệu của một tổ chức được lưu trữ trong máy tính, được nhiều người sử dụng và việc thực hiện nó được chi phối bằng một mô hình dữ liệu. Và một hệ quản trị CSDL là một phần mềm cho phép khai thác một cách hợp lý một CSDL, nói cách khác, phần mềm này cho phép mô tả, lưu giữ, thao tác, xử lý các tập hợp dữ liệu tạo nên CSDL đồng thời nó bảo đảm sự an toàn và bí mật của các dữ liệu trong môi trường có nhiều người sử dụng.
Dữ liệu
Công cụ
OS
Oracle Server
SQL
ứng dụng
Hình 1 Kiến trúc phân lớp của CSDL Oracle
PL/SQL
CSDL Oracle8 hay Oracle8 Server sẽ được cài đặt trên máy chủ cho nhiều người sử dụng đồng thời. Đây là hệ quản trị CSDL tốt nhất cho phép quản lý mọi thông tin. Oracle8 Server cung cấp việc quản trị dữ liệu cho hàng loạt các ứng dụng phức tạp nhưng mềm dẻo nhằm phân tán dữ liệu cho người sử dụng một cách an toàn, tin cậy và hiệu quả, đồng thời sẵn sàng khả năng tăng quy mô để đạt được năng lực tối ưu từ các tài nguyên thiết bị sẵn có. Hệ quản trị CSDL Oracle bao gồm CSDL Oracle, các môi trường phát triển thiết kế phần mềm Designer 2000, các công cụ Developer 2000 và các trình ứng dụng viết trên đó được hoạt động theo mô hình xử lý Client/Server (khách/chủ). Oracle8 Server thích ứng hoàn toàn với bộ công cụ phát triển Oracle Designer, Oracle Developer do chúng đều dựa trên cùng một ngôn ngữ chuẩn mở rộng Oracle PL/SQL. Các ứng dụng tạo ra sẽ tối ưu xử lý trên CSDL Oracle.
CSDL Oracle bao gồm các lớp như sau:
- Mức ngoài cùng là lớp ứng dụng.
- Sau đó là lớp các công cụ CDE (Cooporative Development Environment) và các ngôn ngữ SQL, PL/SQL.
- Mức tiếp theo là lớp của Oracle Server và HĐH.
- Trong cùng là lớp dữ liệu.
Mô hình này đảm bảo được các yêu cầu đối với một hệ quản trị CSDL lớn (các tính năng toàn vẹn dữ liệu, bảo mật CSDL,...). Ngoài ra, nó còn cung cấp những điều kiện thuận lợi cho việc nâng cấp và phát triển các ứng dụng.
Oracle8 Server tích hợp chặt chẽ với Oracle Application Server giúp cho việc triển khai các ứng dụng sử dụng công nghệ Web. Công nghệ Web cho khả năng tăng số người sử dụng và giảm chi phí thiết bị, phần mềm cũng như giảm lượng thông tin truyền trên mạng đồng thời kết nối với các mạng diện rộng như Internet. Cùng với công cụ tự động phát sinh ứng dụng Web động Oracle Designer Web Generator, việc xây dựng các mô đun tra cứu dựa trên các trình duyệt xét (Web Browser) sẽ nhanh chóng và giảm được chi phí.
Oracle8 Server cho phép quản lý mọi loại dữ liệu từ dữ liệu thông thường đến dữ liệu multimedia như ảnh, video, văn bản phức hợp (rich text) kể cả dữ liệu phi cấu trúc dùng trong quản lý tra cứu nguồn dữ liệu văn bản lớn.
Oracle8 Server có cấu trúc quản lý tập trung và khai thác phân tán. Khả năng phân tán dữ liệu xuống các cơ sở trong hệ thống tương lai được hỗ trợ mạnh bởi Oracle8 Server. Oracle8 Server Enterprise Edition cho phép dữ liệu được cập nhật ở mọi nơi tự động lan truyền tới CSDL trung tâm và ngược lại mà không phải dùng đến các hình thức gửi tệp hay E-mail. Việc quản trị CSDL dễ dàng nhờ các công cụ trực quan đi kèm Oracle Enterprise Manager cho phép quản trị toàn bộ hệ thống thông tin một cách tập trung, qua Web và từ trạm làm việc.
Oracle8 Server cho phép bảo mật dữ liệu và phân quyền theo nhóm người sử dụng một cách chi tiết và chặt chẽ ở mức CSDL. Oracle8 Server cũng cung cấp khả năng dò xét tích hợp, tin cậy và mềm dẻo đảm bảo tất cả các truy cập dữ liệu được ghi lại ở các mức độ chi tiết thích hợp cho việc tìm ra các thao tác bất hợp pháp. Với một tuỳ chọn Oracle8 Advanced Networking Option của phiên bản xí nghiệp (Enterprise Edition), các luồng dữ liệu truyền trên mạng có thể được mã hoá qua nhiều giao thức mạng khác nhau. Oracle8 Server cho phép tăng tốc độ hoạt động đáng kể nhờ vào kỹ thuật khoá mức hàng trong môi trường nhiều người sử dụng đồng thời.
Oracle8 Server là CSDL đầu tiên hỗ trợ tiếng Việt theo chuẩn đang dùng hiện nay.
Kiến trúc Oracle Server
Oracle là một hệ thống quản lý cơ sở dữ liệu (CSDL) cung cấp cách quản lý thông tin lớn, dễ và hoàn toàn thống nhất. Một Oracle bao gồm một CSDL và một Oracle Instance. Oracle quản lý và xử lý dữ liệu dựa trên ngôn ngữ SQL.
Việc định nghĩa và xử lý dữ liệu được thực hiện trên một bảng (hoặc bảng đối tượng) bởi các câu lệnh SQL. Trong đó, sử dụng các câu lệnh của ngôn ngữ định nghĩa dữ liệu (DDL: Data Definition Language) để thiết lập dữ liệu. DDL bao gồm các lệnh tạo và sửa đổi CSDL và các bảng, sử dụng các lệnh xử lý dữ liệu (DML: Data Manipulation Language) để cập nhật, xoá, tìm kiếm dữ liệu trong một bảng của CSDL. Ngoài ra Oracle còn có một ngôn ngữ thủ tục PL/SQL dùng để thủ tục hoá các câu lệnh SQL.
Một CSDL Oracle được tạo ra dựa trên cấu trúc vật lý và cấu trúc logic. Vì hai loại cấu trúc này là riêng biệt trong CSDL Oracle nên việc lưu trữ vật lý dữ liệu có thể không cần tham chiếu đến cấu trúc lưu trữ logic của CSDL đó.
Một cấu trúc vật lý của CSDL Oracle gồm các file mà hệ điều hành đưa ra để tạo nên CSDL. Một CSDL Oracle bao gồm:
một hoặc nhiều file dữ liệu (data file).
hai hoặc nhiều Redo log file.
một hoặc nhiều file điều khiển (control file).
Một cấu trúc logic của CSDL Oracle gồm có:
một hoặc nhiều tablespace (Đơn vị lưu trữ logic của một CSDL).
lược đồ đối tượng (Schema object) của CSDL đó.
Khi một CSDL được khởi động thì một vùng hệ thống toàn cục (SGA: System Global Area) được cấp phát và các tiến trình nền (Background Process) của Oracle được khởi động. SGA là một vùng của bộ nhớ sử dụng cho việc chia sẽ thông tin của CSDL bởi các người sử dụng. Sự kết hợp của các tiến trình nền và vùng đệm bộ nhớ gọi là một Oracle Instance.
Cấu trúc của một Oracle Instance được miêu tả theo hình vẽ sau:
Vùng hệ thống toàn cục
SGA
Điều khiển hệ thống
SMON
Tiến trình Khôi phục
RECO
Điều khiển tiến trình
PMON
USER
USER
USER
Các tiến trình người sử dụng
USER
Lưu CSDL
DBWR
Lưu thông tin sửa đổi
LGWR
Khai triển
ARCH
Các tiến trình của ORACLE
Hình 2: Cấu trúc của một Oracle Instance
Một Oracle Instance có hai tiến trình: tiến trình người sử dụng (user process) và tiến trình phục vụ (server process: là tiến trình của Oracle).
Các tiến trình người sử dụng là việc thực hiện một chương trình ứng dụng hoặc một chạy một công cụ của Oracle (như việc chạy Form builder của Oracle).
Tiến trình phục vụ thực hiện công việc để các tiến trình người sử dụng và các tiến trình nền cùng duy trì công việc cho Oracle.
Khi người sử dụng và các tiến trình phục vụ ở trên các máy khác nhau của một mạng hoặc nếu các tiến trình người sử dụng cùng chia sẽ các tiến trình phục vụ thông qua các tiến trình điều hành (Dispartcher Process) thì việc truyền thông tin giữa các tiến trình người sử dụng và tiến trình phục vụ thông qua công cụ SQL*Net (SQL*NET là một công cụ dùng để định nghĩa ra các nhãn giả (Alias) cho CSDL. Các tiến trình người sử dụng sẽ truy nhập đến CSDL Oracle thông qua nhãn giả này). Công cụ này giúp cho các tiến trình người sử dụng lấy CSDL trên Server để tính toán và xử lý.
Kiến trúc Oracle Server có thể chia làm 3 phần cơ bản: Tiến trình, cấu trúc bộ nhớ và các file. Nó được thể hiện ở hình dưới đây:
Hình 3 - Kiến trúc Server dữ liệu Oracle
SGA
Shared Pool
Data Buffer Cache
Redo Log
Buffer
PMON
LCKn
RECO
SMON
LGWR
DBWR
Server
User
CKPT
ARCH
Parameter Files
Data Files
Control Files
Redo Log Files
Offline Storage
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
Một CSDL Oracle là một sự kết hợp dữ liệu mà các dữ liệu này được lấy ra như một đơn vị thao tác. Mục đích chung của CSDL là lưu trữ và tìm kiếm các thông tin có quan hệ với nhau. CSDL Oracle được tổ chức dưới dạng tập các cấu trúc vật lý và tập các cấu trúc logic.
2.1.1 Các cấu trúc logic của một CSDL
a) Tablespace:
Một CSDL được chia thành các đơn vị lưu trữ logic gọi là các tablespace. Một tablespace được sử dụng để nhóm các cấu trúc dữ liệu logic có quan hệ với nhau. Ví dụ: tablespace thường nhóm các bảng có quan hệ của một chương trình ứng dụng để đơn giản cho các thao tác quản lý.
Quan hệ giữa CSDL, không gian lưu trữ và các file dữ liệu được miêu tả như sau:
Một CSDL chia thành một hoặc nhiều tablespace, một tablespace bao gồm nhiều file dữ liệu để lưu trữ vật lý của tất cả các cấu trúc logic (như bảng quan hệ (Table)), bảng đối tượng (Object Table), kiểu đối tượng (Object Type), khung nhìn (View),...) trong một tablespace.
CSDL
Tablespace
của hệ thống
Tablespace
của người sử dụng
DATA1.ORA
DATA2.ORA
DATA3.ORA
Hình 4
Kích thước các file dữ liệu trong một tablespace bằng tổng khả năng lưu trữ của tablespace.
Khả năng lưu trữ của các tablespace của một CSDL phải bằng tổng khả năng lưu trữ của CSDL đó.
Để sử dụng Oracle được tối ưu thì Oracle buộc một người sử dụng trước tiên là phải tạo ra một kho chứa (Repository) để lưu CSDL. Kho chứa có ít nhất là hai tablespace (một tablespace tạm thời (temporary tablespace) và một tablespace mặc định (default tablespace) cho người sử dụng kho chứa đó và đứng trên hệ thống để cấp đầy đủ tất cả các quyền cần thiết để người sử dụng đó có thể làm được tất cả các thao tác trên kho chứa.
b) Data block, Extend, Segment:
Oracle cấp phát một không gian CSDL logic cho tất cả dữ liệu trong CSDL. Các đơn vị cho việc cấp phát không gian đó là các Data Block, các Extend và các Segment. Mối quan hệ giữa chúng được thể hiện trong hình vẽ sau:
Hình 5
Tại mức thấp nhất của không gian, Oracle lưu trữ dữ liệu ở trong các data block (khối dữ liệu). Một Data Block tương đương với một số byte của không gian CSDL vật lý trên đĩa. Oracle sử dụng Data Block làm đơn vị cho không gian lưu trữ trong các file dữ liệu (Datafile). Một Data Block là một đơn vị nhỏ nhất cho các thao tác (I/O) trên một CSDL.
Mức tiếp theo của không gian CSDL logic được gọi là Extent. Một Extent bao gồm một số các Data Block kề nhau đã được cấp phát để lưu trữ một kiểu nào đó của dữ liệu.
Đơn vị lưu trữ logic ở mức tiếp theo đó là các Segment. Một Segment được hình thành từ tập một số cá Extent mà các Extent này đã được cấp phát cho một kiểu nào đó của cấu trúc dữ liệu. Ví dụ như: dữ liệu của các bảng được lưu trữ trong đoạn dữ liệu của chính nó còn dữ liệu của các chỉ số (Index) được lưu trữ trong đoạn chỉ số, trong khi đó dữ liệu của một thuộc tính của bảng được lưu trong một Extent, còn một giá trị cụ thể của một thuộc tính được lưu trong một Data Block.
Khi cấp phát không gian cho một Segment, Oracle làm việc theo cơ chế sau: cấp đầy đủ các Extent cho cấu trúc dữ liệu được lưu trữ trong Segment. Khi các Extent đang tồn tại trong đoạn đã đầy dữ liệu thì Oracle sẽ cấp Extent khác cho Segment này.
Một Segment và tất cả các Extent của nó được lưu trong cùng một Tablespace. Trong một Tablespace thì một Segment có thể hình thành từ nhiều file dữ liệu trong đó mỗi một Extent của Segment lấy dữ liệu từ nhiều file. Thông thường thì một Extent chỉ lấy dữ liệu từ một file dữ liệu.
c) Lược đồ và các đối tượng của một lược đồ
Lược đồ là sự kết hợp của các đối tượng trong CSDL. Các đối tượng của lược đồ là các cấu trúc logic dùng để tham chiếu trực tiếp đến CSDL. Các đối tượng của lược đồ bao gồm nhiều cấu trúc như: table, view, sequence, các thủ tục lưu trữ, Synonym, bảng chỉ số, cấu trúc cluster, và các liên kết CSDL (trong Oracle thì không có sự liên hệ giữa một Tablespace và lược đồ tức là các đối tượng trong cùng một lược đồ có thể ở trong các Tablespace khác nhau và một Tablespace có thể giữ các đối tượng từ nhiều lược đồ khác nhau).
2.1.2 Các cấu trúc vật lý của một CSDL (Oracle files)
CSDL khi đang ở trạng thái tĩnh tập hợp 4 loại file: parameter file, control file, datafile, redo log file.
a) Các file tham số (Parameter file)
Khi chúng ta khởi động một Oracle instance hay nói cách khác là khi một tiến trình nền bắt đầu và cấu trúc bộ nhớ được định hình thì file tham số xác định kích thước và chế độ hoạt động của CSDL. Đây là một file text bình thường chứa tham số có dạng:
var_name =
cho phép khai báo cấu hình của CSDL, nếu không khai báo thì nó lấy giá trị ngầm định. Có 4 tham số phải khai báo là:
db_name =
control_file =
rollback_segment =
shared_pool_size =
file này còn gọi là init file có sẵn trong thư mục Database khi cài Oracle có tên là INIT+ + '.ORA'.
Người quản trị CSDL chịu trách nhiệm tạo ra và sửa đổi nội dung của file tham số.
b) Các file dữ liệu (Datafile)
Mọi CSDL Oracle đều có một hoặc nhiều file dữ liệu vật lý. Các file dữ liệu của một CSDL chứa tất cả các dữ liệu của CSDL đó. Dữ liệu trên các cấu trúc CSDL logic như: Table, View,...được lưu trữ vật lý trong các file dữ liệu đã được Oracle cấp phát cho CSDL đó.
Đặc trưng của các datafile là:
- Một datafile chỉ kết nối với một CSDL.
- Các file của CSDL có thể có một tập hợp các đặc trưng cho phép chúng tự động mở rộng khi CSDL thiếu vùng lưu trữ.
- Một hoặc nhiều datafile tạo thành một đơn vị lưu trữ gọi là tablespace. Sự phân bố các datafile vào trong các tablespace đem lại hiệu quả rõ rệt trong sự thực thi.
- Thông tin ở một bảng (table) trong CSDL có thể nằm ở nhiều datafile hoặc nếu ở nhiều bảng thì có thể phân bố trên một tập hợp các datafile.
Sử dụng datafile
Dữ liệu trong CSDL được truy nhập trong suốt quá trình hoạt động bình thường của CSDL và lưu trữ trong vùng nhớ của CSDL. Chẳng hạn, một user muốn truy nhập một phần dữ liệu trong bảng CSDL, nếu thông tin được yêu cầu chưa sẵn sàng trong vùng nhớ của CSDL thì nó sẽ được đọc từ các datafile thích hợp và được lưu vào bộ nhớ.
Dữ liệu vừa sửa đổi hoặc tạo mới không cần phải ghi ngay vào các datafile. Nhằm giảm đi sự truy nhập đĩa và tăng hiệu quả của sự thực hiện, dữ liệu được chia phần trong bộ nhớ và chúng đồng thời được ghi vào các datafile. Điều này được quyết định bởi tiến trình DBWR của Oracle.
Số lượng các datafile có thể định dạng được giới hạn bởi tham số của Oracle là MAXDATAFILES.
c) Các file đăng nhập lại (Redo log file)
Mọi CSDL có một tập hợp gồm từ hai Redo log file trở lên. Redo log file chứa thông tin sử dụng cho việc khôi phục lại các sự cố hệ thống. Redo log file được hiểu là các file đăng nhập lại, lưu giữ tất cả những thay đổi của CSDL. Chức năng chính của chúng là ghi lại tất cả những thay đổi tạo ra đối với CSDL. Sự trục trặc trong hệ thống ngăn cản việc viết vào CSDL những dữ liệu đã có sự thay đổi, song sự thay đổi này vẫn được ghi nhận nhờ các Redo log file.
Redo log file phải làm việc tốt khi có các lỗi phần cứng (trong một khoảng chấp nhận được) và ngược lại chúng cũng được bảo vệ. Nếu thông tin được nhập lại bị mất, chúng ta không thể khôi phục lại hệ thống. Oracle bảo vệ Redo log file bằng cách lưu nhiều bản sao của chúng trên đĩa.
Sử dụng Redo log file
Thông tin trên các Redo log file được sử dụng để khôi phục CSDL mà các sự cố hệ thống hoặc môi trường đã ngăn cản việc ghi dữ liệu vào các datafile của CSDL.
Chẳng hạn, khi dòng điện đột ngột bị mất làm sự hoạt động của CSDL bị ngừng, dữ liệu trong bộ nhớ không ghi được vào các datafile và chúng sẽ mất đi. Tuy nhiên, sau khi có điện, nếu mở CSDL ra thì bất kỳ một dữ liệu đã mất cũng sẽ được khôi phục. Bằng cách đưa các thông tin trong các Redo log file mới nhất vào trong các datafile của CSDL, Oracle chính xác là đã phục hồi lại CSDL ngay tại thời điểm xảy ra sự mất điện.
d) Các file điều khiển (Control file)
Mọi CSDL đều có một control file. Đây là file nhị phân dùng để xác định cấu trúc vật lý của CSDL. Control file chứa các thông tin sau:
- datafiles name: Chứa các tên và sự định vị các datafile và các redo log file của CSDL.
- mốc thời gian tạo CSDL.
Sử dụng Control file
Control file chứa thông tin được sử dụng để khởi động một instance (thông tin định vị các Datafile và các Redo log file). Mỗi lần khởi động một instance, Oracle sử dụng control file để nhận biết trạng thái CSDL và các Redo log file, chúng phải được mở để tiến hành các hoạt động của CSDL. Nếu cấu trúc vật lý của CSDL có sự thay đổi (như khi một Datafile hay một Redo log file được tạo mới) thì Oracle cho phép Control file của CSDL đó tự động sửa đổi để tương thích với sự thay đổi đó.
Do vậy, Control file rất cần thiết phải được bảo vệ. Cũng như các Redo log file, Oracle bảo vệ Control file bằng nhiều cách, chẳng hạn như Oracle cung cấp một cơ chế lưu giữ rất nhiều bản sao của Control file.
Trong các loại file trên, ta thấy rằng quan trọng nhất là Datafile; Redo log file và Control file là các file hỗ trợ cho các chức năng trong CSDL. Tất cả các file này phải được hiện diện, mở và sẵn sàng khi sử dụng bất kỳ dữ liệu nào của CSDL. Không có các file này chúng ta không thể truy cập được vào CSDL.
e) Từ điển dữ liệu
Mỗi CSDL có một từ điển dữ liệu. Một từ điển dữ liệu bao gồm các table, view chỉ được sử dụng để tham chiếu dữ liệu của CSDL.
Từ điển dữ liệu được thiết lập khi một CSDL được tạo ra. Để luôn lưu được trạng thái của CSDL thì tại các thời điểm xảy ra một hành động cụ thể của từ điển sẽ được cập nhật tự động bởi Oracle.
2.2 Cấu trúc bộ nhớ và các tiến trình
2.2.1 Cấu trúc bộ nhớ
Oracle sử dụng bộ nhớ dùng chung (shared memory) cho nhiều mục đích khác nhau, bao gồm việc chứa dữ liệu và các chỉ mục (index) cùng với việc lưu giữ các mã chương trình dùng chung. Bộ nhớ dùng chung này được chia thành nhiều phần nhỏ gọi là các vùng bộ nhớ. Các vùng bộ nhớ cơ bản kết hợp với Oracle là System Global Area và Program Global Area.
a) Vùng nhớ hệ thống toàn cục (System Global Area)
Thể hiện là một phương tiện để truy cập dữ liệu trong Database file. Một thể hiện của Oracle Server là sự kết hợp giữa bộ nhớ đệm và tiến trình nền. Bất cứ khi nào Oracle Server bắt đầu, một vùng nhớ hệ thống toàn cục (SGA) được cấp phát, đồng thời các tiến trình nền cũng được khởi động.
SGA là nhóm của cấu trúc bộ nhớ của hệ thống được cung cấp cho các chương trình của Oracle hoạt động. SGA là vùng bộ nhớ dùng chung được Oracle sử dụng để chứa dữ liệu và các thông tin điều khiển cho một Oracle instance. SGA được định vị khi Oracle instance bắt đầu và mất đi khi Oracle instance kết thúc. Mỗi một Oracle instance bắt đầu cấp phát một SGA riêng. Nếu nhiều người sử dụng kết nối đồng thời, dữ liệu trong SGA sẽ được chia sẻ.
Thông tin trong SGA gồm 3 thành phần: Shared pool, Database buffer cache, Redo log buffer. Mỗi thành phần này có kích thước cố định và được tạo ra ngay khi instance khởi động.
Shared pool
Là vùng của SGA chứa các cấu trúc bộ nhớ dùng chung như Shared SQL Area nằm trong 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._.
Các file đính kèm theo tài liệu này:
- 3497.doc