Học Oracle – Kiến thức cơ bản cho người mới bắt đầu

ngày 01-03-2017

Lịch sử ra đời

Năm 1977 một chàng trai trẻ có tên là Lawrence Ellision sau khi đã đọc và tìm hiểu về mô hình quan hệ (relational model) của công ty máy tính IBM đã quyết định thành lập công ty Oracle. Sau đó hai năm (1979), công ty này đã phát hành sản phẩm đầu tay của mình chính là CSDL Oracle phiên bản 2.0, nó không những là một sản phẩm CSDL quan hệ mà còn tích hợp ngôn ngữ truy vấn có cấu trúc SQL. Năm 1983 phiên bản 3 được phát hành với các thay đổi trong ngôn ngữ SQL, mở rộng hiệu suất và các cải tiến. Năm 1985 phiên bản 5 ra đời đánh dấu một sự kiện quan trọng vì nó được áp dụng theo công nghệ khách chủ. Năm 1997 Oracle giới thiệu phiên bản 8, tiếp đến là phiên bản 8i (ver 8.1.5) hỗ trợ nhiều tính năng mới và việc phát triển ứng dụng CSDL trên Internet. Và với phiên bản Oracle 12c ra đời năm 2014 với nhiều tính năng nổi bật như hỗ trợ điện toán đám mây, dữ liệu lớn (big data),… , Oracle đã có thể cung cấp đa dạng các giải pháp lưu trữ và xử lý dữ liệu chuyên nghiệp cho các khách hàng theo nhiều hướng ứng dụng khác nhau. 


Kiến trúc cơ bản của Oracle

Oracle được kiến trúc theo mô hình 3 lớp: lớp dữ liệu, lớp xử lý và lớp bộ nhớ.
 
Kien truc co ban cua Oracle

Hình 1: Mô hình 3 lớp


Lớp dữ liệu (File systems)

Lớp dữ liệu bao gồm các tập tin dữ liệu được tổ chức lưu trữ tại các đĩa cứng của một hoặc nhiều máy chủ khác nhau (tính phân tán của CSDL Oracle). Khi có các yêu cầu truy xuất từ phía các máy trạm, các thành phần bên trong dữ liệu đã được các xử lý bên dưới nạp đúng phần dữ liệu cần truy xuất trước đó từ đĩa cứng vào bên trong bộ nhớ của máy chủ. Điều này sẽ giúp cho tốc độ truy xuất được hiệu quả hơn.
Thông thường bên trong một CSDL Oracle sẽ có nhiều loại tập tin dữ liệu khác nhau. Tiêu biểu là một số loại tập tin sau:
  • Tập tin tham số (init file): là tập tin chứa các thông tin cơ sở liên quan đến tên CSDL, vị trí của các tập tin điều khiển, các tham số ...
  • Tập tin điều khiển (control file): là tập tin chứa các thông tin liên quan đến ngày giờ tạo CSDL, vị trí của CSDL...
  • Tập tin dữ liệu (database file): là tập tin chứa dữ liệu thật sự của CSDL.
  • Tập tin lưu vết (redo log file): là tập tin chứa các hành động cập nhật dữ liệu (thêm, sửa, huỷ) bên trong các giao tác.


Lớp xử lý bên dưới (Background processes)

Lớp xử lý bên dưới tại máy chủ sẽ đảm bảo cho mối quan hệ giữa phần CSDL vật lý và phần hiển thị trong bộ nhớ được khớp nhau. Cũng giống như lớp dữ liệu, các xử lý được chia ra làm nhiều loại khác nhau. Một số xử lý tiêu biểu như sau:
  • Xử lý ghi vào CSDL (database writer): xử lý này được tự động thực hiện khi dữ liệu trên vùng đệm của bộ nhớ máy tính bị đầy, khi đó hệ thống sẽ đọc và ghi xuống CSDL các dòng dữ liệu bị thay đổi và sau đó giải phóng vùng đệm bộ nhớ máy tính.
  • Xử lý ghi vào tập tin log (log writer): xử lý này được tự động thực hiện để ghi nhận xuống tập tin log các thông tin dữ liệu bên trong quá trình thực hiện giao tác. Điều này sẽ làm an toàn dữ liệu hơn khi giao tác chưa kết thúc nhưng thông tin vẫn được lưu trữ.


Lớp bộ nhớ (Memory)

Lớp bộ nhớ bao gồm nhiều thành phần khác nhau được tổ chức lưu trữ trên vùng đệm bộ nhớ của máy tính nhằm tăng tốc độ xử lý trong Oracle, khái niệm này còn được biết đến với một tên khác là vùng toàn cục hệ thống (system global area). Một số vùng đệm tiêu biểu như sau:
  • Vùng đệm lưu trữ CSDL (database buffer cache): là nơi lưu trữ các thông tin dữ liệu đã được đọc từ các tập tin dữ liệu trên đĩa cứng.
  • Vùng đệm lưu trữ các thông tin chung thường dùng (dictionary cache): là nơi lưu trữ các bảng hệ thống của CSDL Oracle, bản thân Oracle thường xuyên sử dụng các bảng này do đó bên trong hệ thống Oracle đã quyết định đặt chúng trên bộ nhớ nhằm tránh đi việc đọc đĩa thường xuyên.
  • Vùng đệm lưu trữ lệnh SQL (SQL area): là nơi lưu trữ các lệnh SQL được thực hiện tại máy chủ mà các máy trạm truyền đến. Tại đây các lệnh sẽ được phân tích cú pháp, kiểm tra tính đúng sai trước khi thực hiện và trả về kết quả cho các máy trạm.


Giới thiệu Oracle Server

Oracle Server là một hệ quản trị CSDL cung cấp nhiều công cụ trong việc quản lý thông tin. Oracle Server là một tập hợp các tập tin vật lý, tiến trình và những cấu trúc bộ nhớ dùng để thực hiện các yêu cầu truy xuất dữ liệu, thực hiện các thao tác phục hồi và lưu trữ dữ liệu khi cần thiết.
Oracle Server có thể chạy trên một hay nhiều máy tính với những mô hình khác nhau:
  • Client – Application Server – Server: đây là mô hình 3 lớp, người dùng truy cập từ máy đơn (Client) vào máy chứa dữ liệu (Server) thông qua một trạm trung gian gọi là Application Server, dùng để thực hiện việc xử lý các yêu cầu của ứng dụng khi cần truy xuất dữ liệu.
  • Client – Server: thông qua hệ thống mạng, người dùng sẽ dùng máy tính (Client) để truy xuất CSDL được đặt trên một máy tính khác (Server) trong hệ thống mạng, truy xuất dữ liệu theo dạng này được gọi là mô hình 2 lớp.
  • Host – Base: người dùng truy xuất dữ liệu ngay tại máy dùng làm Server lưu trữ CSDL.


Những thành phần chính của Oracle Server

Oracle Server gồm có một Oracle Instance và một Oracle Database.
Thành phần chính của Oracle Server
 

Oracle Instance

Là thành phần liên kết giữa người dùng và thông tin trong Oracle Database. Một Oracle Instance chỉ được mở cho duy nhất một Oracle Database cần truy xuất.
Oracle Instance được tạo nên bởi sự kết hợp của hai thành phần là cấu trúc bộ nhớ và các tiến trình nền (Background Process) dùng để quản lý CSDL.
Vùng nhớ của Oracle Instance gọi là SGA (System Global Area) có vai trò lưu trữ thông tin của Oracle Database và được chia sẻ cho những người đang truy xuất vào cơ sở dữ liệu.
Tiến trình trong Oracle có 2 loại: tiến trình của người dùng (User Process) và tiến trình của Oracle (Oracle Process). User Process được hình thành khi người dùng sử dụng công cụ hay ứng dụng kết nối vào Oracle Instance. 
Khi đó, trên máy tính chứa Oracle Server sẽ phát sinh một tiến trình gọi là Server Process dùng để giao tiếp giữa User Process và Oracle Instance. Những xử lý bên trong Oracle Instance sẽ do các tiến trình nền (Background Process) thực hiện.


Oracle Database

Oracle Database dùng để lưu trữ và cung cấp thông tin cho người dùng. Việc quản lý dữ liệu trong Oracle Database thông qua cấu trúc lưu  trữ logic và vật lý.
Cấu trúc lưu trữ logic là những thành phần đặc trưng của Oracle Server, cấu trúc vật lý là những tập tin hệ thống tồn tại trong hệ điều hành, nơi Oracle Server đang chạy.


Cấu trúc vùng nhớ – Memory Structure

 
Oracle sử dụng cấu trúc vùng nhớ để lưu trữ thông tin trong hệ thống trong khi đang thực thi, như là mã nguồn của một chương trình đang chạy, thông tin về kết nối của các phiên làm việc, lưu vết dữ liệu vật lý trong quá trình xử lý,…
Cấu trúc vùng nhớ của Oracle bao gồm SGA và PGA. SGA (System Global Area) là một thành phần cơ bản trong Oracle Instance và được cấp phát khi Instance khởi động. Thông tin lưu trữ trong SGA có thể được sử dụng bởi tất cả các Server Process và Background Process.
PGA (Program Global Area) được cấp phát cho User Process kết nối đến Oracle Server.


System Global Area

System Global Area
Hình 2: SGA
 
SGA được cấp phát tại vùng nhớ ảo của máy tính đang chạy Oracle. SGA gồm có một số cấu trúc vùng nhớ dùng để chứa dữ liệu và quản lý các thông tin về Oracle Instance.
SGA còn được biết như là một vùng nhớ chia sẻ, thông tin về Database có thể được truy xuất bởi các tiến trình đang làm việc trên Database đó. Nếu có nhiều người dùng kết nối với một Instance thì SGA của Instance sẽ chia sẻ cho những người dùng đó.
SGA bao gồm một số cấu trúc vùng nhớ chính như: Shared Pool, Database Buffer Cache, Redo Log Buffer. Ngoài ra, còn có hai cấu trúc vùng nhớ mà SGA có thể sử dụng hay bỏ qua là Large Pool và Java Pool. Kích thước vùng nhớ của SGA phụ thuộc vào kích thước của các thành phần tạo nên nó.
SGA có một đặc tính quan trọng là ta có thể thay đổi kích thước mà không cần phải ngừng Instance của SGA cần sửa đổi. Điều này có nghĩa là kích thước của các Database Buffer Cache, Shared Pool và Large Pool của SGA có thể được thay đổi trong khi Instance đang chạy.


Tổ chức dữ liệu trên CSDL Oracle 

Vai trò quan trọng nhất của Oracle Server là lưu trữ và cung cấp thông tin cho người dùng thông qua Oracle Database. Oracle Database quản lý thông tin lưu trữ thông qua hai thành phần lưu trữ vật lý và logic.
Thành phần lưu trữ vật lý là các tập tin. Thành phần lưu trữ logic là các không gian bảng (table space). 
Tổ chức dữ liệu trên CSDL Oracle


Thành phần vật lý

Thành phần vật lý dùng để lưu trữ dữ liệu trong Oracle Database là tập hợp một số tập tin tồn tại trên máy tính cài đặt Oracle Server, các tập tin này sẽ được sử dụng khi Oracle Database đang được mở.
Dữ liệu trong Oracle Database sẽ được tổ chức lưu trữ và quản lý bởi ba loại tập tin sau:
  • Data File.
  • Redo Log File.
  • Control File.


Data File

Mỗi một Oracle Database có 1 hay nhiều Data File, Data File dùng để chứa tất cả dữ liệu của một Database. Những thành phần Logic của Database như Table, Index được lưu trữ vật lý trong các Data File của Database.
Các đặc điểm của Data File:
  • Một Data File dùng để lưu trữ dữ liệu của duy nhất một Database.
  • Kích thước của các Data File có thể tự động tăng để theo kích thước của Database.
  • Một hay nhiều Data File tạo thành một đơn vị Logic của vùng nhớ trong cơ sở trữ dữ liệu gọi là Tablespace, và một Data File chỉ quan hệ với duy nhất một Tablespace mà thôi.
Data File có thể chứa dữ liệu của nhiều Schema Object bên trong Tablespace, lưu trữ vật lý, và những Shema Object có thể được lưu trữ trên nhiều Data File khác nhau. Khi dữ liệu được lưu trữ trên nhiều đĩa thì ta không thể biết được Shema Object được lưu trữ trên Data File nào.
Data File cũng có trạng thái Online và Offline như Tablespace. Trạng thái của Data File thường thay đổi theo Tablespace mà nó liên kết.
Khi Database quản lý vùnng nhớ của Tablespace theo cách Locally Managed thì các Temporary Tablespace sẽ có những Temporary Data Files tương ứng, gọi tắt là TempFile. Những TempFile này không thể chuyển sang trạng thái chỉ đọc và không thể đổi tên của chúng.
Thông tin của TempFile được lưu trữ trong các View của Dictionary là  DBA_TEMP_FILES và V$TEMPFILE, không có trong DBA_DATA_FILES hay trong view V$DATAFILE. 


Redo Log File

Mỗi một Oracle Database có 2 hay nhiều Redo Log File, tập hợp những File này trong một CSDL được gọi là Redo Log của CSDL đó. Một Redo Log tạo thành những Redo Entry, còn gọi là Redo Record.
Chức năng chính của Redo Log là dùng để ghi lại những thông tin trong CSDL bị thay đổi.
Trong trường hợp Database gặp sự cố trước khi dữ liệu thay đổi được ghi nhận chắc chắn xuống các Data File thì những thông tin trong Redo Log sẽ được sử dụng trong việc phục hồi dữ liệu về trạng thái trước khi dữ liệu thay đổi.


Control File

Mỗi một Oracle Database có 1 Control File, dùng để chứa tất cả các thông tin về cấu trúc vật lý của một Database như là: tên Database, nơi lưu trữ của Data File và Redo Log File, Time stamp tạo Database. Mỗi Control File chỉ dùng cho một Database duy nhất.
Khi một Instance của Oracale Database được khởi động, Control File của nó được sử dụng để xác định vị trí của các Data File và Redo Log File, các File này phải được mở trong quá trình làm việc với Database.
Nội dung của Control File sẽ được Oracle cập nhật tự động và liên tục khi cấu trúc lưu trữ vật lý của Database có thay đổi.
Nội dung của Control File chỉ có thể bị thay đổi bởi Oracle, bất kỳ DBA hay người dùng nào cũng không thể sửa nội dung Control File của Database.
Khi những thành phần vật l‎ý của Database như Data File, Redo Log File có sự thay đổi như thêm mới File, sửa tên của File hay xóa File ra khỏi Database thì Control File sẽ ghi nhận lại những thông tin đó. Những thông tin này được sử dụng:
  • Trong quá trình mở một Database Oracle, tìm được những Data File và Redo Log File của Database.
  • Trong trường hợp phục hồi dữ liệu, Oracle có thể tìm được những tập tin được yêu cầu.
Bên cạnh đó, Control File còn lưu thông tin về Checkpoint. Cứ mỗi 3 giây, Checkpoint Process (CKPT) sẽ ghi vào Control File vị trí Checkpoint trong Online Redo Log File. Thông tin này dùng trong quá trình phục hồi dữ liệu của Database, báo cho Database biết là không cần thực hiện việc phục hồi dữ liệu trong trường hợp dữ liệu được ghi chắc chắn vào các Data File.
Control File là một tập tin quan trọng để Oracle có thể mở một Database, do đó người quản trị cần thực hiện việc sao chép và lưu trữ các Control File trên nhiều ổ đĩa vật lý khác nhau để sử dụng trong các trường hợp bị hư hỏng.
 
Tìm hiểu các khóa học Quản trị cơ sở dữ liệu Oracle tại đây

 

Thành phần Logic

Dữ liệu trong Oracle Database được tổ chức và quản lý dựa vào những thành phần Logic, là những thành phần hỗ trợ DBA và người dùng trong việc lưu trữ và sử dụng thông tin trên Oracle Server.
Thành phần Logic trong Oracle Database bao gồm 2 đơn vị lưu trữ là Tablespace và các Schema Object.
  • Tablespace

Một Database được chia thành nhiều đơn vị lưu trữ ở mức Logic, những đơn vị lưu trữ đó gọi là Tablespace.
Các đặc điểm của Tablespace:
  • Tablespace chỉ thuộc về một Database duy nhất.
  • Một Tablespace bao gồm một hay nhiều tập tin vật lý dùng để lưu trữ dữ liệu, đó là Data File.
Trong Oracle Database luôn có một Tablespace do Oracle tạo ra trong quá trình tạo Database có tên là SYSTEM. Đây là vùng nhớ quan trọng của Database, dùng để lưu trữ tất cả những thông tin về Database như định nghĩa cấu trúc của các đối tượng, thông tin cấp phát và sử dụng vùng nhớ của các đối tượng, ....
Tablespace được tạo nên bởi sự kết hợp của một hay nhiều đơn vị lưu trữ Logic gọi là Segment, một Segment được chia thành nhiều Extent và trong Extent thì có nhiều Data Block liên tục nhau.
Hoc Oracle Trung tam tin hoc

Hình 3: Tổ chức của Tablespace

  • Data Block

Là đơn vị lưu trữ Logic nhỏ nhất được Oracle sử dụng trong việc đọc và ghi dữ liệu trong Oracle Database.
Kích thước của Data Block sẽ được xác định thông qua tham số DB_BLOCK_SIZE.
Data Block trong Oracle Database gồm có 3 vùng chính là: Header, Data và Free Space.
Header là vùng chứa thông tin chung của Block, như là địa chỉ của Block và loại Segment chứa Block là Data, Index, Rollback hay Temporary.
Vùng Data dùng lưu trữ dữ liệu của các dòng trong bảng. Các dòng của một bảng dữ liệu có thể nằm trên nhiều Block khác nhau.
Free Space là vùng nhớ nằm giữa Header và Data, vùng nhớ này giúp kích thước của Header và Data có thể tăng lên khi cần, trong trường hợp thêm hay sửa dữ liệu của bảng.
  • Extent

Tập hợp nhiều Data Block liên tiếp nhau sẽ tạo thành một đơn vị lưu trữ Logic lớn hơn gọi là Extent. Số lượng Data Block của một Extent tùy thuộc vào kích thước được chỉ định cho Extent khi tạo đối tượng Table.
Khi người dùng tạo một Table thì Oracle sẽ tự động cấp phát cho Table một Data Segment, trong Data Segment sẽ có một Extent với số lượng Data Block tùy thuộc vào kích thước của Extent.
Nếu không gian lưu trữ trong các Data Block của một Extent trong Segment bị đầy thì Oracle sẽ tự động cấp phát thêm một Extent cho Segment. Kích thước của Extent mới cấp phát có thể lớn hơn hay bằng kích thước của Extent ban đầu.
Số Extent được cấp phát cho một Segment có thể được xác định thông qua các tham số khi tạo Table, như là MINEXTENT, MAXEXTENT.
  • Segment

Segment là tập hợp một số Extent dùng để chứa toàn bộ thông tin của cấu trúc lưu trữ Logic bên trong Tablespace, như là Table.
Oracle Database sử dụng 4 loại Segment khác nhau để lưu trữ thông tin:
  • Data Segment.
  • Index Segment.
  • Temporary Segment.
  • Rollback Segment.
Những Segment này sẽ được cấp phát cho những đối tượng ở những thời điểm khác nhau. Ví dụ Data Segment sẽ được cấp phát cho Table khi thực hiện câu lệnh tạo Table, còn Temporary Segment được cấp phát khi thực hiện các câu lệnh SQL hay câu lệnh tạo bảng tạm.
 
(Trích giáo trình Oracle – Trung Tâm Tin Học, ĐH KHTN)
 

 

ai
Trung Tâm Tin Học
ai
Trung Tâm Tin Học
Chào mừng bạn đến với Trung Tâm Tin Học.
Bạn đang cần hỗ trợ thông tin gì ạ? Hãy Chat ngay với chúng tôi nhé.