Thứ Năm, 27 tháng 4, 2017

Oracle Database Architecture (Kiến trúc Oracle Database) - Tóm tắt

Để làm việc với Oracle database thì việc nắm vững kiến trúc của nó cũng khá quan trọng. Oracle đã tạo ra 1 RDBMS thuộc hàng top trên thế giới. Do đó kiến trúc của Oracle database nhìn vào đơn giản nhưng rất phức tạp, nhưng nếu nắm vững lý thuyết thì sẽ cảm thấy rất đơn giản
Xét 1 server Oracle database cơ bản, chúng ta sẽ có 3 kiến trúc:
  • Kiến trúc bộ nhớ (memory structure)
  • Kiến trúc process (process structure)
  • Kiến trúc về lưu trữ (storage structure)
Trong đó, bộ nhớ và các process sẽ tạo thành instance, phần lưu trữ là database.
Instance + database = 1 Oracle database system.

Với nonclustered database system, mỗi database sẽ chạy trên 1 instance. Trên 1 server, bạn tạo ra 3 database, thì sẽ có 3 instance, mỗi instance chạy cho 1 database.
Với clustered database system, mỗi database sẽ chạy trên nhiều instance. VD bạn có thể có 3 server cùng chạy 1 database, mỗi server là 1 instance.
Trong phần 1 này chúng ta sẽ tìm hiểu về kiến trúc bộ nhớ, là kiến trúc cực kỳ quan trọng trong hoạt động của Oracle database.
Kiến trúc bộ nhớ của Oracle gồm 2 phần:
– System Global Area (SGA): phần bộ nhớ chia sẻ, bao gồm nhiều phần bộ nhớ nhỏ bên trong, chứa thông tin về hoạt động database, thông tin về các session, process, code thực thi, dữ liệu đọc từ phần lưu trữ lên…
– Program Global Area (PGA): phần bộ nhớ riêng cho mỗi server process (user session) hay background process.

System Global Area (SGA)

SGA là phần bộ nhớ cực kỳ quan trọng trong Oracle instance. SGA chứa các dữ liệu, thông tin hoạt động của database, và được dùng chung cho các server/background processes.
Trong SGA chia ra làm nhiều phần bộ nhớ nhỏ hơn, bao gồm:
Shared Pool

Shared pool bao gồm 1 số phần bộ nhớ nhỏ như sau:
– Library cache: chứa những câu lệnh SQL, PL/SQL của các user, cũng như parse tree, execution plan của các câu lệnh đ. Do là bộ nhớ chia sẻ, nên có thể chứa các câu lệnh giống nhau của các session, cũng như khi đã có execution plan cho 1 câu lệnh, lần tiếp theo câu lệnh đó được chạy sẽ có execution plan để chạy luôn, tiết kiệm thời gian phân tích.
– Data dictionary: chứa các database table của user SYS và SYSTEM, là các table chứa các thông tin về database, cấu trúc database, thông tin về user… để hỗ trợ trong việc thực thi các câu lệnh. Nếu phần này nhỏ, việc đọc thông tin từ data dictionary sẽ tốn thêm I/O, gọi là recursive calls
– Server Result Cache: gồm SQL query result cache và PL/SQL function result cache, chứa 1 số kết quả thực thi để có thể dùng lại cho các câu lệnh tương tự.
Database Buffer Cache
Database buffer cache là phần bộ nhớ để chứa các block dữ liệu đọc từ đĩa lưu trữ lên. Khi 1 session cần dữ liệu, Oracle sẽ kiểm tra có trong Database buffer cache chưa. Nếu có rồi (cache hit), thì đọc luôn trong buffer cache. Nếu chưa có (cache miss), Oracle sẽ phải đọc từ thiết bị lưu trữ lên.
Buffer trong Database buffer cache được quản lý theo thuật toán LRU (Least Recently Used). Những buffer cũ ít xài sẽ được xóa dữ liệu đi để lấy chỗ cho dữ liệu mới cần thiết.
Ngoài Database buffer cache, phần KEEP buffer pool được dùng để chứa những dữ liệu cần sử dụng lâu hơn, phần RECYCLE buffer pool được dùng để chứa những dữ liệu cần xóa nhanh hơn, phần nK buffer cache sẽ dùng để chứa dữ liệu từ những block khác size mặc định (vd 16k, 32k).
Redo Log Buffer
Redo log buffer là phần bộ nhớ chứa những thay đổi trên database, do các câu lệnh DML, DDL hay do các hoạt động nội bộ trong database. Khi Redo log buffer đầy 1/3 hoặc cứ sau mỗi 3 giâyLog writer process sẽ ghi vào Redo log files, để lấy chỗ cho những nội dung thay đổi mới.
Do Redo log buffer chứa những thay đổi trên database, nên để đảm bảo toàn vẹn dữ liệu, 1 transaction chỉ được coi là đã commit khi đã ghi những thay đổi trong Redo log buffer vào Redo log files, đảm bảo nếu có sự cố có thể recover được những thay đổi gần nhất.
Large Pool
Large pool có khả năng cấp phát 1 lượng lớn block buffer, dùng cho các hoạt động lớn trong database, như các transaction liên quan tới nhiều database, các parallel query, backup/restore, các hoạt động I/O của server process, Advanced Queuing memory table…
Large pool không dùng thuật toán LRU để quản lý.
Java Pool
Phần bộ nhớ này được dùng để lưu tất cả những code và data Java trong session của user, cũng như của máy ảo Java (JVM). Khi chạy export/import chẳng hạn, phần bộ nhớ này sẽ được sử dụng.


Streams Pool
Streams Pool phục vụ cho Oracle Streams. Nếu cấu hình Streams Pool bằng 0, phần bộ nhớ cho các hoạt động Streams set được cấp phát từ Shared pool và tối đa là 10% Shared pool.
Program Global Area (PGA)
Có 1 phần bộ nhớ trong hệ thống chứa thông tin về session, gọi là User Global Area (UGA).
Trong trường hợp instance dùng cấu hình shared server, UGA sẽ nằm trong SGA luôn.
Còn trường hợp instance cấu hình dedicated server, UGA sẽ nằm trong PGA.
PGA là phần bộ nhớ riêng cho mỗi server process. Ngoài UGA, PGA còn chứa Private SQL Area và SQL Work Areas.
– Private SQL Area: chứa các bind variables, thông tin về câu query (ví dụ như số dòng khi thực hiện full table scan)…
– SQL Work Areas: vùng bộ nhớ này dùng cho các hoạt động khác liên quan đến câu query như:
  • sort area dùng cho việc sắp xếp
  • hash area dùng cho thao tác hash join
  • bitmap merge area cho thao tác merge bitmap từ bitmap index scan…
Ngoài SGA và PGA, Oracle instance còn sử dụng Software code area, là 1 phần bộ nhớ riêng biệt, chứa code thực thi của Oracle. Phần bộ nhớ này là read-only, thường cố định và chỉ thay đổi khi update/reinstall software.
ĐỌC THÊM:
=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
CÁC THÀNH PHẦN KIẾN TRÚC ORACLE DATABASE, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master