bai 01 - kham pha kien truc csdl oracle

39
Nhóm 7 Khám phá kiến trúc Cơ sở dữ liệu Oracle (Exploring the Oracle Database Architecture) Mục tiêu bài học : Liệt kê các thành phần kiến trúc chủ yếu của CSDL Oracle Giảng giải các cấu trúc bộ nhớ Mô tả các xử lý hậu cảnh (Background process) Mối tượng quan giữa các cấu trúc lưu trữ luận lý và vật lý Bài học này sẽ cung cấp một cái nhìn chi tiết về kiến trúc CSDL Oracle, về cấu trúc luận lý (logical), vật lý (physical) và các thành phần của nó. Oracle Database Hệ quản trị CSDL quan hệ Oracle cung cấp một phương pháp mở, thông minh và hợp nhất cho việc quản lý thông tin. Một CSDL là một tập hợp dữ liệu hợp nhất. Mục đích của CSDL là để lưu trữ và lấy ra những thông tin liên quan. CSDL Oracle quản lý một khối lượng lớn dữ liệu trong môi trường nhiều người dùng, nên cùng lúc có thể có nhiều user truy cập vào cùng một dữ liệu. Tuy nhiên nó cũng ngăn chặn những truy cập trái phép và cung cấp các giải pháp hiệu quả để khôi phục các sự số. Nối kết với Server

Upload: minh-chuyen

Post on 01-Jul-2015

277 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Bai 01 - Kham pha kien truc CSDL Oracle

Nhóm 7

Khám phá kiến trúc Cơ sở dữ liệu Oracle(Exploring the Oracle Database Architecture)

Mục tiêu bài học : Liệt kê các thành phần kiến trúc chủ yếu của CSDL Oracle Giảng giải các cấu trúc bộ nhớ Mô tả các xử lý hậu cảnh (Background process) Mối tượng quan giữa các cấu trúc lưu trữ luận lý và vật lý

Bài học này sẽ cung cấp một cái nhìn chi tiết về kiến trúc CSDL Oracle, về cấu trúc luận lý (logical), vật lý (physical) và các thành phần của nó.

Oracle Database

Hệ quản trị CSDL quan hệ Oracle cung cấp một phương pháp mở, thông minh và hợp nhất cho việc quản lý thông tin.

Một CSDL là một tập hợp dữ liệu hợp nhất. Mục đích của CSDL là để lưu trữ và lấy ra những thông tin liên quan.

CSDL Oracle quản lý một khối lượng lớn dữ liệu trong môi trường nhiều người dùng, nên cùng lúc có thể có nhiều user truy cập vào cùng một dữ liệu. Tuy nhiên nó cũng ngăn chặn những truy cập trái phép và cung cấp các giải pháp hiệu quả để khôi phục các sự số.

Nối kết với Server

User có thể nối kết với máy chủ Oracle trong 3 cách sau :

User đăng nhập vào hệ điều hành chạy Oracle Instance và khởi chạy một ứng dụng hay công cụ truy xuất CSDL trên hệ thống. Đường dẫn truyền tin được thiết lập sử dụng cơ chế truyền tin xử lý nội tại có sẳn trên hệ điều hành máy chủ.

User khởi chạy một ứng dụng hay công cụ trên máy tính cục bộ và nối kết qua mạng tới máy tính chạy CSDL Oracle (gọi là cấu hình Client/Server), phần mềm mạng được sử dụng để truyền tin giữa user và máy chủ CSDL (back-end). Hệ

Page 2: Bai 01 - Kham pha kien truc CSDL Oracle

thống CSDL kiến trúc client/server có 2 phần : máy tính ở phía đầu (front end hay client) và máy tính ở phía sau (back end hay server) được nối kết thông qua mạng.

- Client là ứng dụng CSDL khởi tạo yêu cầu cho một tác vụ dược thực hiện trên máy chủ CSDL. Trạm làm việc client có thể được tối ưu hóa công việc của nó như không cần dung lượng đĩa cứng lớn. Thường client chạy trên máy tính khác với máy chủ CSDL. Nhiều client có thể truy xuất đồng thời đến máy chủ CSDL.

- Server chạy phần mềm CSDL Oracle và điều khiển các chức năng được yêu cầu cho việc truy xuất dữ liệu dùng chung, đồng thời. Server nhận và xử lý các yêu cầu gốc từ các ứng dụng client. Máy tính quản lý server có thể được tối ưu hóa các nhiệm vụ của nó như có thể có dung lượng đĩa cứng lớn và bộ xử lý nhanh.

User truy xuất đến máy phục vụ ứng dụng thông qua một công cụ (như Web Browser) trên máy cục bộ (client). Máy phục vụ ứng dụng tương tác với máy phục vụ CSDL phía cuối với tư cách client.

Tổng quan về kiến trúc CSDL Oracle

Page 3: Bai 01 - Kham pha kien truc CSDL Oracle

Một CSDL Oracle bao gồm một instance và CSDL liên kết với nó. Instance bao gồm cấu trúc bộ nhớ và các xử lý hậu cảnh. Mỗi lần một instance được khởi động, một bộ nhớ chia sẻ gọi là System Global Area (SGA) được cấp phát và các xử lý hậu cảnh cũng được khởi động.

Database bao gồm cả cấu trúc vật lý và luận lý. Vì 2 cấu trúc này tách rời nên việc quản lý dữ liệu theo cấu trúc lưu trữ vật lý không gây ảnh hưởng tới cấu trúc luận lý.

Kết nối với CSDL

Connection : truyền tin giữa user process và một instance Session : Kết nối cụ thể của user tới một instance thông qua user process

Các connection và các session liên quan đến user process nhưng ý nghĩa khác nhau.

Connection là đường dẫn truyền tin giữa một User Process và một Instance. Đường dẫn truyền tin được thiết lập sử dụng cơ chế truyền tin nội tại sẳn có (trên máy tính chạy cà hai user process và Oracle Database) hay phần mềm mạng (khi các máy tính khác nhau chạy ứng dụng CSDL và Oracle Database và truyền tin thông qua mạng).

Một Session đại diện tình trạng của user hiện hành đăng nhập vào Instance (có thể hiểu như một phiên làm việc của User). Ví dụ: khi user khởi tạo SQL*Plus, user phải cung cấp tên đăng nhập và mật mã và sau đó Session sẽ được thiết lập cho user. Session tồn tại từ lúc user kết nối cho tới khi user ngắt kết nối hay thoát khỏi ứng dụng CSDL.

Trong trường hợp nối kết chuyên dụng (dedicated connection), Session được phục vụ bởi xử lý chuyên dụng thường trực.

Với kiến trúc phục vụ dùng chung ( shared server ) Session được phục vụ bởi một Server Process sẳn có được chọn từ pool.

Nhiều Session có thể được tạo và tồn tại đồng thời cho một CSDL sử dụng chung tên đăng nhập.

Page 4: Bai 01 - Kham pha kien truc CSDL Oracle

Tương tác với CSDL Oracle

1. Instance khởi động trên máy tính cài đặt CSDL, thường gọi là Host hay Database Server.

2. User khởi động ứng dụng phát sinh một User Process. Ứng dụng cố gắng thiết lập nối kết với Server. (connection có thể được tạo từ 1 trong 3 mô hình kết nối).

3. Server chạy listener. Listener có trình điều khiển các dịch vụ mạng Oracle - Oracle Net Services). Server dò yêu cầu kết nối từ ứng dụng và tạo server process chuyên dụng (dedicated server) thay mặt cho user process.

4. User chạy câu lệnh DML và chấp nhận transaction (commit).5. Server process nhận câu lệnh và kiểm tra shared pool (một thành phần của

SGA) tìm câu lệnh SQL tương tự trong vùng SQL dùng chung (shared SQL area), nếu không được tìm thấy thì một vùng SQL dùng chung mới được cấp phát cho câu lệnh để phân tích và xử lý câu lệnh.

6. Server process lấy các dữ liệu cần thiết từ tập tin dữ liệu (table) hay từ các giá trị được lưu trong SGA.

7. Server Process thay đổi dữ liệu trong SGA. Khi transaction được chấp nhận (commit) , xử lý hậu cảnh LogWriter (LGWR) ngay lập tức ghi transaction vào tập tin redo log. Xử lý Database Writer (DBWn) ghi các block được thay đổi vào đĩa thường trực (như đĩa cứng).

8. Nếu transaction thành công, server process gửi thông báo qua mạng tới ứng dụng. Nếu thất bại, một thông báo lỗi được truyền tới ứng dụng.

9. Xuyên suốt toàn bộ thủ tục này, xử lý hậu cảnh khác chạy xem xét các điều kiện yêu cầu can thiệp. Hơn nữa, database server quản lý các transaction của user khác và ngăn cản cạnh tranh giữa các transaction yêu cầu dữ liệu giống nhau.

Các cấu trúc của máy chủ CSDL Oracle

Page 5: Bai 01 - Kham pha kien truc CSDL Oracle

Sau khi khởi động Instance, phần mềm Oracle liên kết Instance với CSDL cụ thể (gọi là quá trình gắn kết CSDL). CSDL sau đó sẵn sàng được mở và các user có quyền có thể truy xuất CSDL. Nhiều instance có thể được thi hành đồng thời trên cùng máy tính, mỗi instance truy xuất CSDL vật lý riêng của nó.

Kiến trúc Oracle Database bao gồm một số các thành phần cấu trúc có liên quan với nhau.

Oracle Instance sử dụng các cấu trúc bộ nhớ và các xử lý (Process) để quản lý và truy xuất CSDL. Tất cả các cấu trúc bộ nhớ tồn tại trong bộ nhớ chính của máy tính tạo thành Database Server. Các Process là các công việc,làm việc trong bộ nhớ của các máy tính này. Một Process được định nghĩa như một “chuỗi điều khiển” hay một cơ chế trong hệ điều hành có thể chạy một chuỗi các bước.

Các cấu trúc bộ nhớ của CSDL Oracle

Page 6: Bai 01 - Kham pha kien truc CSDL Oracle

Cấu trúc bộ nhớ - Memory Structureso SGA

Database buffer cache Redo log buffer Shared pool Large pool Java pool Streams pool

o PGA

Cấu trúc tiến trình – Process Structureso Tiến trình hậu cảnh - Background Process

DBWn LGWR CKPT SMON PMON RECO

Page 7: Bai 01 - Kham pha kien truc CSDL Oracle

ARCn Others

o User process và Server process

Cấu trúc lưu trữ - Storage Structureso Vật lý - Physical

Control files Data files Online redo log files

o Luận lý - Logical

Database Schema Tablespace Segment Extent Block

CSDL Oralce tạo ra và sử dụng bộ nhớ cho nhiều mục đích khác nhau. Chẳng hạn, để lưu trữ mã chương trình đang chạy, dữ liệu được chia sẻ giữa các user, các vùng dữ liệu dành riêng cho mỗi người dùng kết nối.

Có hai kiến trúc bộ nhớ cơ bản gắn kết với instance: System Global Area (SGA): nhóm các cấu trúc bộ nhớ chia sẻ, gọi là SGA,

bao gồm dữ liệu và thông tin điều khiển cho một Instance. SGA được dùng chung bởi tất cả các xử lý Server (Server Process) và xử lý hậu cảnh (Background Process). Ví dụ về dữ liệu được lưu trong SGA bao gồm Cached Data Block và Share SQL Area.

Program Global Area (PGA): vùng bộ nhớ bao gồm dữ liệu và thông tin điều khiển cho một xử lý server hoặc xử lý hậu cảnh. PGA là bộ nhớ không chia sẻ tạo ra bởi Oracle Database khi Server Process hay Background Process được khởi động. PGA là vùng nhớ chỉ được sử dụng duy nhất bởi Server Process. Mỗi Server Process và Background Process có PGA của riêng nó.

SGA là vùng nhớ lưu trữ dữ liệu và thông tin điều khiển cho instance. SGA bao gồm các cấu trúc dữ liệu sau:

Database Buffer Cache: chứa các khối dữ liệu lấy từ database Redo log buffer: chứa thông tin redo (sử dụng cho việc khôi phục instance) cho

đến khi nó được ghi vào các tập tin Redo log vật lý được lưu trữ trên đĩa.

Page 8: Bai 01 - Kham pha kien truc CSDL Oracle

Shared pool: là một phần trong SGA và được sử dụng khi thực hiện phân tích câu lệnh (parse phase). Các thành phần của Shared pool gồm có: Library cache và Data Dictionary Cache

Large pool: vùng tùy chọn cung cấp các phân bổ bộ nhớ lớn cho các xử lý lớn nào đó, như các hoạt động sao lưu và phục hồi dữ liệu và các xử lý server vào/ra (I/O).

Java pool: sử dụng cho các đoạn mã Java và dữ liệu trong máy ảo Java (JVM). Streams pool: sử dụng bởi Oracle Streams để lưu trữ thông tin được yêu cầu.

Khi khởi động instance sử dụng Enterprise Manager hay SQL*Plus, tổng số bộ nhớ cấp phát cho SGA được hiển thị.

Program Global Area (PGA) là vùng bộ nhớ chứa dữ liệu và thông tin điều khiển cho từng Server Process. Server Process phục vụ các yêu cầu của client. Mỗi Server Process có vùng nhớ PGA riêng của nó, vùng nhớ này được tạo ra khi Server process khởi động. Server Process độc quyền truy xuất đến vùng nhớ PGA.

Với hạ tầng SGA động, các kích thước của Database buffer cache, Shared pool, Large pool, Java pool, Streams pool có thể thay đổi mà không cần phải tắt instance.

CSDL Oracle sử dụng các tham số khởi tạo, để tạo và quản lý kiến trúc bộ nhớ. Cách tốt nhất để quản lý bộ nhớ là cho phép CSDL tự động quản lý và làm cho nó phù hợp với người sử dụng. Người sử dụng có thể đặt tham số khởi tạo xác định kích thước bộ nhớ mục tiêu (MEMORY_TARGET) và tham số khởi tạo kích thước bộ nhớ tối đa (MEMORY_MAX_TARGET).

Database Buffer Cache

• Là 1 phần của SGA• Chứa những bản sao các khối dữ liệu đọc từ các tập tin dữ liệu (Data File)• Được chia sẻ bởi tất cả các user hiện hành

Page 9: Bai 01 - Kham pha kien truc CSDL Oracle

Database buffer cache là 1 phần của SGA, chứa những bản sao của các khối dữ liệu đọc từ các tập tin dữ liệu. Tất cả các user đang kết nối đồng thời đến instance chia sẽ truy xuất đến Database buffer cache.

Khi User Process yêu cầu một mẫu dữ liệu riêng biệt, đầu tiên nó sẽ tìm kiếm trong Database buffer cache. Nếu xử lý tìm thấy dữ liệu sẵn sàng trong bộ nhớ cache (thuật ngữ : cache hit), nó sẽ đọc dữ liệu trực tiếp từ bộ nhớ. Nếu xử lý không thể tìm được dữ liệu trong cache (thuật ngữ : cache miss), nó phải sao chép khối dữ liệu từ tập tin dữ liệu trên đĩa vào một buffer ở trong cache trước khi truy xuất dữ liệu. Việc truy xuất dữ liệu thông qua cache hit nhanh hơn truy xuất dữ liệu thông qua cache miss. Database buffer cache được quản lý bởi thuật toán phức tạp, sử dụng kết hợp các danh sách LRU (Least Recently Used) và thuật toán Touch Count.

Redo Log Buffer

• Là 1 buffer vòng (sử dụng luân phiên) trong SGA• Chứa thông tin về những thay đổi đối với CSDL• Chứa các mục khôi phục, có thông tin để khôi phục những thay đổi tạo ra bởi các câu lệnh DML hoặc DDL

Page 10: Bai 01 - Kham pha kien truc CSDL Oracle

Redo log buffer là một bộ nhớ trung gian xoay vòng trong SGA (dữ liệu mới sẽ tiếp tục được nạp lên đầu sau khi buffer đã được sử dụng hết), lưu giữ thông tin những thay đổi đã làm cho CSDL. Redo log buffer chứa thông tin về những thay đổi đối với CSDL. Thông tin này được lưu trữ trong các mục khôi phục (redo entries). Redo entry chứa những thông tin cần thiết để tái cấu trúc (hay lấy lại) những thay đổi do các câu lệnh DML, DDL hay các tác vụ nội đã làm cho CSDL. Các Redo entry được sử dụng để khôi phục CSDL nếu cần thiết.

Các Redo Entry được sao chép bởi các xử lý của CSDL Oracle từ vùng bộ nhớ của user đến Redo log buffer trong SGA. Các mục khôi phục chiếm giữ không gian tuần tự và liên tiếp trong buffer. Xử lý hậu cảnh LGWR ghi Redo log buffer vào tập tin redo đang hoạt động (hoặc nhóm các tập tin) trên đĩa.

Shared Pool

• Là 1 phần của SGA• Bao gồm:

– Library Cache Vùng SQL chia sẻ

– Data Dictonary Cache– Các cấu trúc điều khiển

Page 11: Bai 01 - Kham pha kien truc CSDL Oracle

Shared pool là một phần của SGA, chứa Library Cache, Data Dictonary Cache, cache kết quả truy vấn SQL, cache kết quả PL/SQL, buffer cho các thông điệp thi hành song song, và các cấu trúc điều khiển.

Data Dictonary là một tập hợp các table và các view chứa thông tin liên quan đến CSDL, các cấu trúc và các user của nó. CSDL Oracle truy cập vào từ điển dữ liệu thường xuyên trong suốt quá trình phân tích câu lệnh SQL. Việc truy cập này là cần thiết cho các hoạt động tiếp theo của CSDL Oracle.

Vì từ điển dữ liệu được truy cập thường xuyên bởi CSDL Oracle nên hai vùng đặc biệt trong bộ nhớ được chỉ định để chứa từ điển dữ liệu. Một vùng gọi là Data Dictonary Cache, hay còn gọi là cache dòng vì nó chứa dữ liệu theo dòng thay cho buffer (chứa dữ liệu theo khối). Một vùng khác trong bộ nhớ chứa từ điển dữ liệu là Library Cache. Tất cả các user process sử dụng CSDL Oracle đều chia sẻ 2 cache này để truy cập thông tin Data Dictonary.

CSDL Oracle đưa mỗi câu lệnh SQL nó chạy vào Shared SQL area (cũng như vùng SQL riêng nằm trong PGA). CSDL Oracle nhận diện khi 2 user cùng thi hành cùng một câu lệnh SQL và tái sử dụng vùng SQL chia sẻ cho những user khác nhằm tiết kiệm bộ nhớ.

Khi một câu lệnh SQL mới được phân tích. Oracle cấp phát bộ nhớ từ shared pool để lưu vùng SQL chia sẽ. Kích thước của bộ nhớ tùy thuộc vào độ phức tạp của câu lệnh.

CSDL Oracle xử lý các đơn vị chương trình PL/SQL (thủ tục, hàm, gói, khối ẩn danh, các trigger) khá giống với cách nó xử lý câu lệnh SQL đơn. Oracle Database cấp phát vùng nhớ chia sẽ lưu mẫu đơn vị chương trình đã được biên dịch, được phân tích. Oracle Database cấp phát vùng nhớ riêng lưu giữ các giá trị cụ thể cho các session chạy đơn vị chương trình bao gồm các biến cục bộ, toàn cục, các biến đóng gói và các buffer cho việc thi hành SQL. Nếu có nhiều hơn một user cùng chạy một đơn vị chương trình thì một

Page 12: Bai 01 - Kham pha kien truc CSDL Oracle

vùng nhớ chia sẻ, duy nhất được dùng cho tất cả các user, những đơn vị chương trình không dùng chung được chép vào các vùng SQL riêng của user.

Các câu lệnh SQL riêng lẽ chứa trong đơn vị chương trình PL/SQL được xử lý giống các câu lệnh SQL khác. Bất chấp nguồn gốc của chúng trong các đơn vị chương trình PL/SQL.

Cache kết quả truy vấn SQL và cache kết quả hàm PL/SQL mới có ở CSDL Oracle 11g.

Cấp phát và tái sử dụng bộ nhớ cho Shared pool

Nói chung, mọi mục trong shared pool (vùng SQL chia sẽ hay dòng từ điển dữ liệu) vẫn tồn tại cho tới khi nó được dọn dẹp tùy thuộc vào thuật toán LRU. Bộ nhớ cho các mục không được sử dụng đều đặn được giải phóng nếu các mục mới yêu cầu bộ nhớ trong shared pool. Thuật toán LRU cho phép các mục trong share pool được sử dụng bởi nhiều session vẫn tồn tại trong bộ nhớ càng lâu càng hữu ích, thậm chí nếu xử lý gốc tạo ra các mục bị ngắt. Kết quả giúp tối thiểu việc xử lý các câu lệnh SQL trong hệ CSDL đa người dùng.

Khi một câu lệnh được gửi đến CSDL Oracle để thi hành, những bước cấp phát bộ nhớ sau đây được tự động thực hiện:

1. Oracle Database kiểm tra Shared pool, xem vùng chia sẻ SQL có sẳn sàng tồn tại một câu lệnh giống hệt hay không. Nếu có, vùng SQL chia sẻ đó được sử dụng cho việc thi hành các trường hợp của câu lệnh mới đến sau. Nếu không có, CSDL Oracle cấp phát một vùng SQL chia sẻ mới trong Shared pool. Trong cả 2 trường hợp, vùng SQL riêng của user được gắn kết với vùng SQL chia sẻ chứa câu lệnh.

2. Sau đó, CSDL Oracle cấp phát vùng SQL riêng đại diện cho session. Vị trí của vùng SQL riêng phụ thuộc vào kiểu kết nối được thiết lập cho session.

Page 13: Bai 01 - Kham pha kien truc CSDL Oracle

Oracle Database cũng vứt bỏ các vùng SQL chia sẽ từ shared pool trong các trường hợp sau :

Khi gói DBMS được sử dụng để cập nhật hay xóa các thống kê về table,cluster hay index. Tất cả các vùng SQL chia sẽ chứa các câu lệnh tham khảo tới đối tượng của lược đồ đã phân tích được dọn khỏi shared pool.

Nếu đối tượng lược đồ được tham khảo trong câu lệnh SQL và đối tượng đó sau đó bị thay đổi, vùng SQL chia sẽ được đánh dầu không hợp lệ và câu lệnh phải được phân tích lại ở lần sử dụng kế.

Nếu bạn thay đổi tên CSDL toàn cục (Global Database Name), tất cả các thông tin được vứt bỏ khỏi shared pool.

DBA có thể thực hiện lệnh vứt bỏ tất cả các thông tin trong shared pool để đánh giá hoạt động, sử dụng lệnh ALTER SYSTEM FLUSH SHARED_POOL.

Large Pool

Nhà quản trị CSDL có thể định cấu hình vùng nhớ tùy chọn gọi là Large pool để cấp phát bộ nhớ lớn cho :

• Bộ nhớ session cho shared server và giao diện Oracle XA• Các xử lý server vào/ra• Hoạt động sao lưu và khôi phục CSDL Oracle.

Bằng việc cấp phát bộ nhớ session từ Large pool cho shared server, Oracle XA, hoặc các buffer truy vấn song song, CSDL Oracle có thể sử dụng shared pool nguyên thủy cho việc lưu tạm SQL chia sẻ và tránh sự hoạt động vượt quá, nguyên nhân làm rút gắn bộ nhớ SQL dùng chung.

Page 14: Bai 01 - Kham pha kien truc CSDL Oracle

Hơn nữa, bộ nhớ cho các tác vụ sao lưu và khôi phục, cho các xử lý server vào/ra và cho các buffer song song được cấp phát đến vài trăm KB. Large pool có thể thõa mãn các yêu cầu bộ nhớ lớn như vậy chứ không phài share pool.

Large pool không có danh sách LRU.

Java pool và Streams pool

• Bộ nhớ Java pool được sử dụng trong bộ nhớ server cho tất cả các đoạn mã và dữ liệu Java trong máy ảo Java (JVM) • Bộ nhớ Streams pool chỉ được sử dụng bởi Oracle Streams để:– Lưu trữ các thông điệp hàng đợi buffer– Cung cấp bộ nhớ cho các tiến trình Oracle Streams

Bộ nhớ Java pool được sử dụng trong bộ nhớ server cho tất cả các đoạn mã và dữ liệu Java của session cụ thể trong máy ảo Java (JVM). Bộ nhớ Java pool được sử dụng theo nhiều cách khác nhau, dựa vào chế độ CSDL Oracle đang chạy.

Các thống kê của Java pool Advisor cung cấp thông tin về bộ nhớ lưu trữ thư viện (library cache memory) được sử dụng cho Java và dự báo cách thay đổi kích thước Java pool có thể ảnh hưởng đến tốc độ phân tích. Java Pool Advisor được bật khi statistics_level được thiết lập cho TYPICAL hay cao hơn. Các thống kê này khởi động lại khi advisor bị tắt.

Streams pool được sử dụng độc quyền bởi Oracle Streams. Streams pool lưu trữ các thông điệp hàng đợi buffer, và nó cung cấp bộ nhớ cho Oracle Stream để nắm bắt và áp dụng các xử lý. Nếu không thay đổi, mặc định kích thước của Stream pool là 0. Kích thước của Streams pool sẽ tăng lên tự động theo nhu cầu của Oracle Streams.

Kiến trúc xử lý

• Xử lý phía user (user process) – Được khởi động khi 1 user hoặc 1 xử lý tự động kết nối vào CSDL Oracle

Page 15: Bai 01 - Kham pha kien truc CSDL Oracle

• Xử lý phía CSDL (Database process)– Xử lý phía server (Server process) : kết nối đến Oracle instance và khởi động khi

user thiết lập 1 session.– Các xử lý hậu cảnh (Background process) : được khởi động khi Oracle instance

khởi động

Các xử lý trong hệ thống CSDL Oracle có thể được chia thành 2 nhóm chính: User process : chạy ứng dụng hoặc mã lệnh công cụ Oracle Các xử lý CSDL Oracle : chạy mã lệnh server CSDL Oracle (bao gồm các xử lý

server và xử lý hậu cảnh)

Khi user chạy chương trình ứng dụng hoặc công cụ Oracle như SQL *Plus, CSDL Oracle tạo ra User process để chạy ứng dụng của user. CSDL Oracle cũng tạo ra một Server process để thi hành các lệnh do user process thực hiện.

Thêm vào đó, server Oracle cũng có một tập các xử lý hậu cảnh cho một instance. Các xử lý hậu cảnh tương tác với nhau và với hệ điều hành để quản lý cấu trúc bộ nhớ, thực hiện vào/ra một cách đồng bộ để ghi dữ liệu vào đĩa, và thực hiện các công việc được yêu cầu khác.

Cấu trúc xử lý thay đổi cho các cấu hình CSDL Oracle khác nhau, tùy thuộc vào hệ điều hành và tùy chọn CSDL Oracle. Mã lệnh cho các user được kết nối có thể được định cấu hình như dedicated server hay shared server.

Dedicated server : với mỗi user, ứng dụng chạy bởi user process được phục vụ bởi xử lý server chuyên dụng.

Shared server : Một bộ điều độ (dispatcher) hướng các yêu cầu session mạng đến pool của các xử lý server chia sẽ. Một xử lý server chia sẽ phục vụ mọi yêu cầu client.

Page 16: Bai 01 - Kham pha kien truc CSDL Oracle

Các cấu trúc xử lý

Server processCSDL Oracle tạo ra các server process để giải quyết các yêu cầu của user process kết nối đến instance. Trong một số trường hợp, khi ứng dụng và CSDL Oracle hoạt động trên cùng máy tính, có thể gom user process và server process tương ứng vào một xử lý đơn để giảm chi phí hệ thống. Tuy vậy, khi ứng dụng và CSDL Oracle hoạt động trên những máy tính khác nhau, user process luôn luôn giao tiếp với CSDL Oracle thông qua server process riêng.

Server process có thể thực hiện 1 hoặc nhiều việc sau: Phân tích và chạy các câu lệnh SQL đưa ra thông qua ứng dụng Đọc các khối dữ liệu cần thiết từ tập tin dữ liệu trên đĩa vào Database buffer cache

trong SGA (nếu khối dữ liệu chưa có trong SGA) Trả về kết quả theo cách mà ứng dụng có thể xử lý thông tin.

Background processĐể tối đa hóa hiệu suất và đáp ứng nhiều user, một hệ thống CSDL Oracle đa xử

lý sử dụng thêm một số các xử lý CSDL Oracle gọi là các xử lý hậu cảnh. Mỗi instance CSDL Oracle có thể có nhiều xử lý hậu cảnh.

Các xử lý hậu cảnh hậu cảnh thường thấy trong môi trường non-RAC, non-ASM có thể bao gồm các xử lý sau :

- Database writer process (DBWn)

Page 17: Bai 01 - Kham pha kien truc CSDL Oracle

- Log writer process (LGWR)- Checkpoint process (CKPT)- System monitor process (SMON)- Process monitor process (PMON)- Recoverer process (RECO)- Job queue process - Archiver processes (ARCn)- Queue monitor processes (QMNn)

Các xử lý hậu cảnh khác có thể được tìm thấy trong những cấu hình cao hơn như RAC. Xem view tên V$BGPROCESS để có nhiều thông tin hơn về các xử lý hậu cảnh.Ở đa số các hệ điều hành, các xử lý hậu cảnh được tự động tạo ra khi một instance khởi động.

Database Writer Process (DBWn)

Ghi các buffer hiệu chỉnh (dirty buffer) trong Database buffer cache vào đĩa:• Không đồng bộ khi thực hiện các xử lý khác• Định kỳ đưa ra checkpoint

Database writer process (DBWn) ghi các nội dung trong buffer vào các tập tin dữ liệu. Các xử lý DBWn chịu trách nhiệm ghi các buffer đã hiệu chỉnh trong vùng trữ đệm của CSDL vào đĩa cứng. Mặc dù DBW0 là thích hợp cho phần lớn các hệ thống, bạn có thể định cấu hình thêm các xử lý (DBW1 đến DBW9 và DBWa đến DBWj) để cải thiện hiệu suất ghi nếu hệ thống thay đổi dữ liệu lớn. Các xử lý DBWn thêm này không hữu dụng trên hệ thống vi xử lý đơn.

Khi một buffer trong Database buffer cache được thay đổi, nó được đánh dấu ‘dirty’ và được đưa vào danh sách LRUW (danh sách các dirty buffer) và được lưu theo thứ tự SCN (system change nember). Thứ tự này phù hợp với thứ tự redo ghi trong redo logs cho những buffer này, nhằm giúp cho việc khôi phục khi cần thiết được chính xác. Khi số

Page 18: Bai 01 - Kham pha kien truc CSDL Oracle

buffer trống trong buffer cache xuống dưới ngưỡng giới hạn thì DBWn ghi các dirty buffer vào tập tin dữ liệu theo thứ tự trong danh sách LRUW.

Số tối đa các xử lý DBWn tối đa là 20. Nếu User không chỉ rõ trong lúc khởi động, oracle database xác định cách thiết lập DB_WRITE_PROCESSS dựa trên số các CPUs và các nhóm vi xử lý.

Điều kiện ghi các buffer đã được thay đổi vào đĩa : Khi server process không thể tìm thấy buffer trống có thể sử dụng sau khi quét

một số ngưỡng của buffer, nó ra tín hiệu cho cho DBWn ghi các dirty buffer vào đĩa không đồng bộ trong khi thực hiện các xử lý khác.

DBWn định kỳ ghi buffer để đưa ra checkpoint (điểm khôi phục), là vị trí trong hồ sơ khôi phục giúp khôi phục instance. Vị trí hồ sơ này được xác định bởi dirty buffer củ nhất trong vùng trữ đệm.

Trong tất cả các trường hợp, DBWn tiến hành ghi đa khối để tăng hiệu quả. Số khối được ghi khác nhau tùy theo hệ điều hành.

LogWriter Process (LGWR)

• Ghi redo log buffer vào tập tin redo log trên đĩa• Điều kiện ghi:

– Khi user process xác nhận transaction– Khi Redo log buffer đầy 1/3– Trước khi tiến trình DBWn ghi các buffer đã thay đổi vào đĩa

Xử lý LGWR chịu trách nhiệm quản lý redo log buffer bằng cách ghi các mục redo log buffer vào tập tin redo log trên đĩa.

Page 19: Bai 01 - Kham pha kien truc CSDL Oracle

Redo log buffer là buffer vòng. Khi LGWR ghi vào đĩa, server process có thể sao chép những mục mới đè lên những mục đã được ghi vào đĩa. LGWR bình thường ghi đủ nhanh để đảm bảo có chỗ trong buffer cho các mục mới. Điều kiện để LGWR ghi :

– Khi user process xác nhận transaction– Khi Redo log buffer đầy 1/3– Trước khi tiến trình DBWn ghi dirty buffer vào đĩa

Trước khi DBWn có thể ghi buffer được thay đổi, tất cả các mẫu tin redo được liên kết với những thay đổi của buffer phải được ghi vào đĩa (write-ahead protocol). Nếu DBWn tìm thấy một số các mẫu tin redo chưa được ghi, nó ra tín hiệu cho LGWR ghi các mẫu tin redo vào đĩa và đợi cho LGWR hoàn tất ghi redo log buffer trước khi nó có thể ghi các data buffer. LGWR ghi vào log group hiện hành. Nếu một trong các tập tin trong log group bị hư hay không sẵn sàng, LGWR tiếp tục ghi vào các tập tin khác trong log group và ghi lỗi vào tập tin dò vết (trace file) và trong hồ sơ cảnh báo của hệ thống. Nếu tất cả các tập tin trong log group bị hư hoặc nếu log group không sẵn sàng thì LGWR không thể tiếp tục thực hiện chức năng.

Khi user thực hiện câu lệnh COMMIT, LGWR đưa mẫu tin chấp nhận (commit) vào redo log buffer và ghi mẫu tin này vào đĩa ngay lập tức, cùng với các mục redo của transaction. Những thay đổi tương ứng với các khối dữ liệu được trì hoãn cho đến khi LGWR ghi xong (gọi là fat commit mechanism)

Khi User chấp nhận transaction, transaction dược gán một số hiệu của hệ thống (system change number – SCN ), SCN cũng được ghi vào các mục redo trong redo log . SCN được ghi trong redo log vì thế các tác vụ khôi phục có thể được đồng bộ trong Real application Cluster và các CSDL phân tán.

Checkpoint Process (CKPT)

• Ghi thông tin checkpoint trong :– Tập tin điều khiển– Mỗi tiêu đề tập tin dữ liệu

Page 20: Bai 01 - Kham pha kien truc CSDL Oracle

Checkpoint là một cấu trúc dữ liệu xác định số thay đổi hệ thống (System Change Number - SCN) trong hồ sơ redo của CSDL. Checkpoint là thành phần chủ yếu trong việc khôi phục. Khi checkpoint xảy ra, CSDL phải cập nhật tiêu đề của tất cả các tập tin dữ liệu để ghi lại chi tiết checkpoint. Việc này do xử lý CKPT thực hiện. Xử lý CKPT không ghi các khối vào đĩa, việc này do DBWn thực hiện.

Giám sát SYSTEM_STATISTICS trong Oracle Enterprise Manager cho biết số các yêu cầu Checkpoint đã hoàn tất.

System Monitor Process (SMON)

• Thực hiện khôi phục khi khởi động instance• Dọn dẹp các phần tạm thời không được sử dụng

Page 21: Bai 01 - Kham pha kien truc CSDL Oracle

SMON chịu trách nhiệm thi hành khôi phục khi khởi động instance nếu cần thiết, đồng thời dọn dẹp các segment tạm thời không còn sử dụng. Nếu bất kỳ các transaction bị ngắt bị bỏ qua trong lúc instance khôi phục do lỗi đọc tập tin hay do offline, xử lý SMON khôi phục chúng khi tablespace hay tập tin online trở lại.

SMON kiểm tra thường xuyên xem khi nào xử lý này được yêu cầu. Các xử lý khác cũng có thể gọi SMON nếu cần.

Process Monitor Process (PMON)

• Thực hiện khôi phục khi user process thất bại– Dọn dẹp Database buffer cache– Giải phóng tài nguyên đã được sử dụng bởi user process

• Giám sát các session trong thời gian rảnh rỗi• Đăng ký tự động các dịch vụ CSDL với listener

Page 22: Bai 01 - Kham pha kien truc CSDL Oracle

PMON chịu trách nhiệm khôi phục xử lý khi user process thất bại, dọn dẹp Database buffer và giải phóng tài nguyên mà user process đang sử dụng. Chẳng hạn đặt lại trạng thái các bảng transaction, mở các khóa, xóa ID xử lý khỏi danh sách các xử lý đang hoạt động.

PMON định kỳ kiểm tra trạng thái của dispatcher và các server process, khởi động lại những cái đã ngừng chạy mà không do CSDL Oracle tắt. PMON cũng đăng ký thông tin về instance và các xử lý dispatcher với listener mạng.

Giống SMON, PMON kiểm tra định kỳ xem khi nào nó được yêu cầu, hoặc có thể được gọi từ các xử lý khác.

Recoverer Process

• Sử dụng với cấu hình CSDL phân tán• Tự động kết nối đến các CSDL khác liên quan đến các transaction phân tán đáng nghi• Tự động giải quyết các transaction đáng nghi• Xóa bỏ các dòng liên quan đến các transaction đáng nghi

Page 23: Bai 01 - Kham pha kien truc CSDL Oracle

Recoverer process (RECO) là xử lý hậu cảnh sử dụng trong cấu hình CSDL phân tán, tự động giải quyết các thất bại liên quan đến các transaction phân tán. Xử lý RECO tự động kết nối đến các CSDL khác liên quan đến transaction phân tán đáng nghi. Khi xử lý RECO thiết lập lại kết nối giữa các server CSDL liên quan, nó tự động giải quyết tất cả các transaction đáng nghi, xóa khỏi bảng transaction chưa giải quyết của CSDL bất cứ dòng nào liên quan đến các transaction đáng nghi đã giải quyết.

Nếu RECO thất bại trong việc kết nối với server từ xa, nó sẽ thử kết nối lại sau một khoảng thời gian (khoảng thời gian này tăng dần lên).

Archiver Processes (ARCn)

• Sao chép tập tin redo log đến một thiết bị lưu trữ được chỉ định sau khi có sự chuyển đổi log (log switch) xảy ra.• Thu thập các dữ liệu khôi phục transaction và truyền dữ liệu đó đến điểm đến dự phòng

ARCn sao chép tập tin redo log đến thiết bị lưu trữ được chỉ định sau khi có sự chuyển đổi log xảy ra. Tiến trình ARCn xảy ra khi CSDL hoạt động trong chế độ ARCHIVELOG và cho phép tự động lưu trữ.

Nếu lường trước được việc lưu trữ một khối lượng lớn, có thể tăng số tiến trình ARCn lên bằng tham số LOG_ARCHIVE_MAX_PROCESSES. Câu lệnh ALTER SYSTEM có thể tự động thay đổi giá trị tham số này để tăng giảm số tiến trình ARCn.

Các xử lý khác

• Xử lý Manageability Monitor (MMON) : thi hành các nhiệm vụ hậu cảnh liên quan đến quản lý như :

Cảnh báo khi giá trị đưa ra vi phạm giá trị ngưỡng Lấy các giá trị thống kê cho các đối tượng SQLđã được thay đổi gần đây.

Page 24: Bai 01 - Kham pha kien truc CSDL Oracle

• Xử lý Lightweight Manageability Monitor (MMNL) : Thi hành các nhiệm vụ thường xuyên liên quan đến quản lý nhẹ (ghi lại lịch sử session, tính toán giá trị…)• Xử lý Memory manager (MMAN) : Thực thi các tác vụ quản lý bộ nhớ tự động (quản lý bộ nhớ để tránh thiếu bộ nhớ, tránh hiệu suất buffer cache thấp).• CJQ0: Chạy các công việc của user trong thực thi theo khối (tạo ra hàng đợi, lựa chọn công việc để chạy…)• QMNx: giám sát các hàng đợi thông báo Streams Advanced Queuing

Server process và Database Buffer Cache

Buffers:• Pinned• Clean• Free or unused• Dirty

Buffer trong Database buffer cache có thể ở 1 trong 4 trạng thái:- Pinned: Các phiên làm việc không được ghi vào 1 khối cùng 1 lúc. Các phiên

làm việc phải đợi để truy cập vào khối.- Clean: nếu nội dung trong buffer không còn được tham chiếu đến.

Page 25: Bai 01 - Kham pha kien truc CSDL Oracle

- Free hoặc Unused: Buffer trống vì instance mới khởi động, gần giống trạng thái clean nhưng chưa được sử dụng.

- Dirty: nội dung buffer đã thay đổi và phải được ghi vào đĩa

Cấu trúc lưu trữ CSDL

Các tập tin tạo thành CSDL Oracle được tổ chức như sau:- Tập tin điều khiển (Control files): chứa thông tin về CSDL (thông tin cấu trúc

CSDL vật lý như tên, vị trí), là các tập tin then chốt, nếu không có sẽ không mở được các tập tin dữ liệu

- Tập tin dữ liệu (Data files): chứa dữ liệu của ứng dụng hoặc dữ liệu của người dùng, kể cả siêu dữ liệu và từ điển dữ liệu

- Online redo log files: cho phép khôi phục CSDL. Thường có 2 tập tin, tạo nên bởi các redo entries (redo records) chứa thông tin về tất cả các thay đổi đối với dữ liệu nhằm mục đích khôi phục khi hệ thống có sự cố.

Các tập tin sau cũng quan trọng để CSDL có thể chạy thành công:- Tập tin tham số (Parameter file): được sử dụng để xác định instance được cấu

hình như thế nào khi khởi động- Tập tin mật khẩu (Password file): cho phép SYSDBA, SYSOPER, SYSASM

kết nối đến CSDL và thực hiện các tác vụ quản trị- Tập tin sao lưu (Backup files): được sử dụng để khôi phục CSDL, thường khôi

phục khi có lỗi xảy ra làm hư hỏng hoặc xóa mất tập tin gốc

Page 26: Bai 01 - Kham pha kien truc CSDL Oracle

- Archived redo log files: chứa lịch sử các thay đổi dữ liệu tạo ra bởi instance. Sử dụng những tập tin này và bản sao lưu CSDL, người sử dụng có thể khôi phục tập tin bị mất.

- Trace files: Mỗi xử lý hậu cảnh hay server process có thể ghi vào tập tin theo dấu của nó. Khi một lỗi nội tại xảy ra, được tìm thấy bởi process, process sẽ ghi thông tin lỗi vào tập tin theo dấu. Một số thông tin do nhà quản trị CSDL ghi, một số thông tin khác dành cho Oracle Support Services.

- Alert log file: đây là những mục theo dấu đặc biệt. Alert log của một CSDL là một tập tin các thông điệp và lỗi theo thứ tự thời gian. Mỗi instance có một tập tin alert log.

Cấu trúc CSDL luận lý và vật lý

CSDL có cấu trúc luận lý và cấu trúc vật lý.

Tablespaces:1 database được chia thành các đơn vị lưu trữ luận lý gọi là các tablespace.

Tablespace nhóm các cấu trúc luận lý có liên quan lại với nhau. VD tablespace thường

Page 27: Bai 01 - Kham pha kien truc CSDL Oracle

nhóm tất cả các đối tượng ứng dụng để đơn giản hóa hoạt động quản trị. Người sử dụng có thể có 1 tablespace cho dữ liệu ứng dụng và 1 tablespace cho chỉ mục ứng dụng.

CSDL, Tablespace và t p tin d li uậ ữ ệMối quan hệ giữa CSDL, Tablespace, tập tin dữ liệu được minh họa trong hình.

Mỗi CSDL được chia thành các Tablespace luận lý. Các tập tin dữ liệu được chia ra rõ ràng cho mỗi Tablespace để lưu trữ vật lý dữ liệu. Nếu đó là tablespace TEMPORARY thay cho tập tin dữ liệu, tablespace sẽ có 1 tập tin tạm thời.

Schemasschema là 1 tập hợp các đối tượng CSDL do người sử dụng làm chủ. Đối tượng

schema là cấu trúc luận lý liên quan trực tiếp đến dữ liệu CSDL. Các đối tượng schema bao gồm các cấu trúc như tables, views, sequences, stored procedures, synonyms, indexes, clusters, database links… Thông thường, đối tượng schema bao gồm tất cả mọi thứ mà ứng dụng tạo ra trong CSDL.

Data blocks (Các kh i d li u):ố ữ ệỞ mức độ nhỏ nhất, dữ liệu trong CSDL Oracle được lưu trữ trong các khối dữ

liệu. 1 khối dữ liệu tương ứng với 1 số lượng byte xác định của không gian CSDL vật lý trên đĩa cứng. Kích thước khối dữ liệu được xác định cho mỗi tablespace khi nó được tạo ra. 1 CSDL sử dụng và cấp phát không gian lưu trữ thông qua Oracle data blocks.

ExtentsMức độ tiếp theo của không gian CSDL luận lý là extent. 1 extent là 1 dãy xác

định các khối dữ liệu liên tiếp nằm trên cùng 1 thiết bị lưu trữ, được sử dụng để lưu trữ 1 kiểu thông tin xác định.

SegmentsTrên extent là segment. 1 segment là 1 tập hợp extent cấp phát cho 1 cấu trúc luận

lý. Các loại segment:- Data segments: mỗi table non-clustered, non-indexed có 1 data segment, ngoại

trừ các bảng ngoài, bảng tạm toàn cục, bảng phân vùng có 1 hoặc nhiều data segment. Tất cả dữ liệu trong các bảng được lưu trữ trong các extent của data segment. Đối với các bảng phân vùng, mỗi phân vùng có 1 data segment. Mỗi cluster có 1 data segment. Dữ liệu của các bảng nằm trong cluster được lưu trữ trong data segment của cluster.

- Index segments: 1 index có 1 index segments để lưu trữ dữ liệu. Đối với index phân vùng, mỗi phân vùng có 1 index segment.

- Undo segments: 1 tablespace UNDO được tạo ra cho mỗi instance. Tablespace này bao gồm nhiều segment undo chứa các thông tin undo tạm thời. Thông tin trong undo segment được sử dụng để tạo ra các thông tin CSDL, để roll back những giao dịch chưa xác nhận của user.

Page 28: Bai 01 - Kham pha kien truc CSDL Oracle

- Temporary segments: được tạo ra bởi CSDL Oracle khi 1 câu lệnh SQL cần thêm không gian tạm thời để thi hành xong. Khi thi hành xong, các extent của temporary segment được trả về instance.

CSDL Oracle tự động cấp phát không gian. Khi các extent của segment đầy, các extent mới được thêm vào. Vì các extent được cấp phát khi cần thiết nên các extent của 1 segment có thể không liên tiếp trên đĩa cứng.

Tablespaces và các tập tin dữ liệu

• Tablespaces bao gồm 1 hoặc nhiều tập tin dữ liệu• Tập tin dữ liệu chỉ thuộc về 1 tablespace

CSDL được chia thành các tablespace, là các đơn vị lưu trữ luận lý mà có thể được sử dụng để nhóm các cấu trúc luận lý liên quan. 1 CSDL được chia thành 1 hoặc nhiều tablespace. 1 hoặc nhiều tập tin dữ liệu được tạo ra rõ ràng cho mỗi tablespace để lưu trữ vật lý dữ liệu của tất cả các cấu trúc luận lý trong 1 tablespace.

Người sử dụng có thể tạo ra các tablespace tập tin lớn, chỉ có 1 tập tin rất lớn. Kích thước có thể lớn tối đa ở mức mà kiến trúc ID dòng cho phép. Kích thước tối đa là kích thước của 1 block nhân lên với 236, VD 128TB cho kích thước block 32KB. Tablespace tập tin nhỏ thường bao gồm nhiều tập tin dữ liệu kích thước không lớn.

Tablespace SYSTEM and SYSAUX

Page 29: Bai 01 - Kham pha kien truc CSDL Oracle

• Tablespace SYSTEM and SYSAUX là các tablespace bắt buộc được tạo ra khi tạo ra CSDL. Chúng phải luôn trực tuyến.• Tablespace SYSTEM được sử dụng cho các chức năng lõi (VD như các bảng từ điển dữ liệu)• Tablespace phụ SYSAUX được sử dụng cho các thành phần CSDL bổ sung (như Enterprise Manager Repository).

Mỗi CSDL Oracle phải có tablespace SYSTEM và SYSAUX, được tự động tạo ra khi CSDL được tạo ra. Mặc định hệ thống tạo ra tablespace tập tin nhỏ. Bạn cũng có thể tạo ra tablespace tập tin lớn, cho phép CSDL Oracle quản lý tập tin siêu lớn với kích thước 8 exabytes.

1 tablespace có thể trực tuyến (có thể truy cập) hoặc ngoại tuyến (không truy cập được). Tablespace SYSTEM luôn trực tuyến khi mở CSDL. Nó lưu trữ các bảng hỗ trợ các chức năng lõi của CSDL, nhý các bảng từ ðiển dữ liệu.

Tablespace SYSAUX là tablespace bổ trợ cho tablespace SYSTEM. Nó lưu trữ rất nhiều thành phần CSDL, và nó phải trực tuyến cho các hoạt động chính xác của các thành phần CSDL.

Chú ý: tablespace SYSAUX có thể ngoại tuyến để khôi phục tablespace, trong khi tablespace SYSTEM không được. Cả 2 tablespace đều có thuộc tính chỉ đọc.

Segments, Extents, and Blocks- Segments tồn tại trong tablespace- Segments là tập hợp các extents- Extents là tập hợp các blocks (các khối dữ liệu)- Các khối dữ liệu được ánh xạ từ các khối trên đĩa cứng

Các đối tượng CSDL như bảng, chỉ mục được lưu trữ như các segment trong tablespace. Mỗi segment bao gồm 1 hoặc nhiều extent. 1 extent bao gồm các khối dữ liệu liên tiếp, có nghĩa là mỗi extent chỉ tồn tại trong 1 tập tin dữ liệu duy nhất. Khối dữ liệu là đơn vị vào ra nhỏ nhất trong CSDL.

Page 30: Bai 01 - Kham pha kien truc CSDL Oracle

Khi CSDL yêu cầu 1 tập các khối dữ liệu từ hệ điều hành, hệ điều hành ánh xạ các khối này đến hệ thống tập tin thực hoặc khối dữ liệu trên thiết bị lưu trữ. Vì vậy, người sử dụng không cần biết địa chỉ vật lý của bất kỳ dữ liệu nào trong CSDL. Điều này cũng có nghĩa là 1 tập tin dữ liệu có thể ở trên vài đĩa cứng.

Kích thước của khối dữ liệu có thể được thiết lập khi mới tạo CSDL. Mặc định là 8KB. Nếu CSDL của người sử dụng hỗ trợ ứng dụng nhà kho dữ liệu có các bảng và chỉ mục lớn, kích thước khối lớn hơn sẽ có lợi hơn.

Nếu CSDL hỗ trợ ứng dụng mà đọc ghi ngẫu nhiên, đặt kích thước khối nhỏ hơn sẽ có lợi hơn. Kích thước khối tối đa phụ thuộc vào hệ điều hành. Kích thước tối thiểu là 2KB, hiếm khi được sử dụng. Tối đa là 64KB.