Container Database là gì? Quy trình tạo Container Database bằng DBCA

Đã kiểm duyệt nội dung
Đánh giá
Container Database là kiến trúc multitenant trong Oracle, cho phép một instance database vật lý duy nhất chứa và vận hành nhiều Pluggable Database. Từ kinh nghiệm triển khai môi trường Oracle 12c+ dạng multitenant, mình thấy việc hiểu rõ CDB, PDB và cách quản lý chúng là bắt buộc trước khi đưa kiến trúc này vào sản xuất. Trong bài viết này, mình sẽ giúp bạn hiểu rõ hơn về Container Database, từ các thành phần cấu tạo, lợi ích khi sử dụng đến quy trình tạo Container Database bằng DBCA chi tiết.
Những điểm chính
Đối với mình, Container Database không chỉ là một mô hình quản lý cơ sở dữ liệu hiện đại mà còn là nền tảng giúp tối ưu tài nguyên, tăng khả năng mở rộng và đơn giản hóa việc vận hành trong môi trường doanh nghiệp. Để giúp bạn hiểu rõ hơn, nội dung dưới đây sẽ tập trung vào các khía cạnh quan trọng:
- Khái niệm: Hiểu rõ Container Database là một mô hình kiến trúc multitenant, có vai trò quan trọng trong việc hợp nhất và quản lý nhiều cơ sở dữ liệu trên một nền tảng duy nhất.
- Thành phần chính: Nắm vững các thành phần cốt lõi của Container Database, giúp bạn hiểu rõ cấu trúc và cách các cơ sở dữ liệu logic.
- Lợi ích: Nhận thức được các lợi ích vượt trội như tối ưu tài nguyên, đơn giản hóa quản trị và tăng tốc độ triển khai, giúp bạn hiểu rõ giá trị chiến lược mà kiến trúc CDB mang lại cho doanh nghiệp.
- Cấu trúc truy vấn và quản lý: Hiểu rõ cách phân tách Data Dictionary và vai trò của các CDB_ view, giúp bạn truy vấn và giám sát dữ liệu hiệu quả trên toàn bộ CDB hoặc trong từng PDB riêng lẻ.
- Cách tạo và triển khai: Nắm vững quy trình 10 bước để tạo một Container Database bằng DBCA, giúp bạn có thể tự mình triển khai một môi trường multitenant trong thực tế.
- Biết thêm Vietnix là nhà cung cấp dịch vụ hosting, VPS tối ưu dành cho doanh nghiệp.
- Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến Container Database.

Container Database là gì?
Container Database (CDB) trong Oracle là mô hình cơ sở dữ liệu multitenant, trong đó một phiên bản database vật lý duy nhất lưu trữ và phục vụ nhiều cơ sở dữ liệu logic tách biệt cho các ứng dụng khác nhau. Kiến trúc này cho phép hợp nhất nhiều database vào chung một nền tảng nhưng vẫn giữ không gian dữ liệu riêng, giúp tối ưu tài nguyên, đơn giản hóa quản trị, hỗ trợ di chuyển và nâng cấp linh hoạt cho các môi trường on‑premises lẫn cloud.

Với kiến trúc multitenant như Container Database, hiệu năng I/O và khả năng xử lý đồng thời là yếu tố rất quan trọng để tránh nghẽn khi nhiều PDB cùng truy vấn hoặc chạy batch. Nếu bạn đang cần một hạ tầng VPS tốc độ cao để triển khai Oracle CDB/PDB cho môi trường test, staging hoặc production gọn nhẹ, có thể cân nhắc các gói VPS tốc độ cao tại Vietnix với ổ NVMe Enterprise và CPU đời mới, giúp truy xuất dữ liệu nhanh và ổn định hơn cho workload database.
Website nhanh hơn – Bán được nhiều hàng hơn
- Chiếm lĩnh TOP Google, hút traffic.
- Mua sắm mượt mà, tăng tỷ lệ chốt đơn.
- Chuyên gia kỹ thuật đồng hành 24/7.

Thành phần chính của Container Database
Thành phần chính của Container Database trong kiến trúc multitenant của Oracle được tổ chức quanh một cơ sở dữ liệu gốc chứa tài nguyên dùng chung và nhiều cơ sở dữ liệu có thể cắm hoạt động độc lập cho từng ứng dụng. Mỗi loại thành phần đảm nhận một vai trò riêng trong quản lý metadata, cấp phát tài nguyên và triển khai workload. Cụ thể về các thành phần như sau:
- Container Database (CDB): Là một Oracle database theo kiến trúc multitenant, bao gồm container gốc (root) và nhiều pluggable database (PDB), dùng chung một instance và tài nguyên hệ thống.
- CDB$ROOT (root container): Lưu trữ metadata chung (common metadata), user chung và các đối tượng hệ thống mà các PDB có thể truy cập.
- PDB$SEED: Là PDB mẫu ở trạng thái chỉ đọc, được Oracle cung cấp sẵn để clone nhanh các PDB mới.
- Pluggable Database (PDB): Là các database logic độc lập, có schema, user và dữ liệu riêng; chia sẻ tài nguyên instance và một phần metadata từ root, đồng thời có metadata riêng để vận hành độc lập.
- Application root và Application PDB (tùy chọn): Dùng trong Application Container để nhóm nhiều PDB theo cùng một ứng dụng, cho phép chia sẻ schema và logic ứng dụng trên nhiều tenant.

Lợi ích khi sử dụng Container Database
Sử dụng Container Database trong kiến trúc multitenant giúp hợp nhất nhiều database trên cùng nền tảng, giảm dư thừa tài nguyên và đơn giản hóa vận hành cho DBA. Một số lợi ích tiêu biểu gồm:
- Tận dụng tài nguyên hiệu quả: Nhiều PDB chia sẻ cùng background process, SGA/PGA và một phần metadata từ CDB, giúp giảm số lượng instance, tiết kiệm CPU, RAM và storage so với mô hình database riêng lẻ.
- Hợp nhất nhiều database: Cho phép gom nhiều ứng dụng hoặc hệ thống vào cùng một CDB, giảm số lượng máy chủ, VM và đơn giản hóa hạ tầng.
- Quản trị tập trung: DBA có thể thực hiện các tác vụ như backup, patch, upgrade ở mức CDB và áp dụng cho nhiều PDB (tùy loại cấu hình), thay vì xử lý riêng lẻ từng database.
- Provisioning và cloning nhanh: Có thể tạo hoặc clone PDB nhanh từ PDB$SEED hoặc PDB khác, phù hợp cho dev/test, UAT và triển khai môi trường mới.
- Linh hoạt di chuyển và mở rộng: PDB có thể plug/unplug giữa các CDB tương thích, hỗ trợ di chuyển giữa server, data center hoặc cloud, đồng thời dễ dàng mở rộng bằng cách thêm PDB mới.
- Cô lập ứng dụng ở mức cao: Mỗi PDB có schema, user và dữ liệu riêng, đảm bảo tách biệt logic và dữ liệu giữa các ứng dụng trong cùng một CDB.

Cấu trúc dictionary và các view trong CDB/PDB
Trong kiến trúc multitenant, Oracle tổ chức data dictionary và các view sao cho mỗi container (CDB root, PDB) vừa có vùng metadata riêng, vừa kế thừa phần dùng chung từ root. Cách phân tách và hợp nhất này bảo đảm mỗi PDB nhìn thấy dictionary như một database độc lập, trong khi vẫn giảm trùng lặp định nghĩa hệ thống. Cụ thể như sau:
- Phân tách data dictionary giữa CDB root và PDB: Oracle lưu trữ định nghĩa các đối tượng hệ thống, package PL/SQL và metadata chung một lần ở CDB$ROOT, còn mỗi PDB có data dictionary riêng chứa metadata cho schema và đối tượng thuộc PDB đó. Khi kết nối vào một PDB, ứng dụng nhìn thấy dictionary như union giữa phần chung ở root và phần riêng của PDB, nên các view quản trị trong PDB trông tương tự như trên một non‑CDB.
- Nhóm view USER_, ALL_, DBA_, CDB_: Hệ thống view dạng USER_ hiển thị đối tượng thuộc chính người dùng hiện tại; ALL_ hiển thị đối tượng người dùng được cấp quyền truy cập; DBA_ hiển thị đối tượng toàn database cho user có quyền DBA. Trong môi trường multitenant, thêm tiền tố CDB_ (như CDB_USERS, CDB_TABLESPACES, CDB_PDBS) cho phép common user khi kết nối vào root xem metadata tổng hợp cho root và các PDB mà user được cấp quyền.
- Cách truy vấn view trong CDB và PDB: Khi kết nối vào CDB$ROOT, DBA dùng CDB_ view để giám sát toàn CDB (thông tin từng PDB, session, tablespace…) hoặc dùng DBA_ view để xem metadata chỉ riêng root. Khi kết nối vào một PDB cụ thể, truy vấn DBA_, ALL_, USER_ chỉ trả về dữ liệu trong PDB đó, giúp mỗi PDB vận hành tách biệt và đơn giản hóa việc quản trị như với một database độc lập.

Quy trình tạo Container Database bằng DBCA
Quy trình tạo Container Database bằng DBCA qua giao diện đồ họa gồm các bước từ đăng nhập server, khởi chạy DBCA, chọn kiểu CDB, cấu hình lưu trữ đến thiết lập tham số và tạo PDB. Dưới đây là các bước chính cần thực hiện:
Bước 1: Đăng nhập vào server và mở DBCA:
Bạn dùng SSH client đăng nhập trực tiếp bằng user oracle trên máy chủ database. Sau đó, bạn chạy lệnh dbca để khởi động công cụ Database Configuration Assistant ở chế độ giao diện đồ họa.

Bước 2: Chọn chế độ tạo database:
Tại màn hình đầu tiên của DBCA, bạn chọn Create a database, tiếp tục chọn kiểu cấu hình Advanced configuration để có đầy đủ tùy chọn khi tạo Container Database.


Bước 3: Chọn loại database và template:
Bạn chọn loại database là Oracle Single Instance Database (hoặc kiểu phù hợp môi trường) và chọn template như General Purpose or Transaction Processing, Data Warehouse hoặc Custom Database tùy mục đích sử dụng.

Bước 4: Khai báo tên database và bật chế độ CDB:
Bạn nhập Global Database Name, SID và đánh dấu tùy chọn Create as Container database. Sau đó, bạn chọn thêm tùy chọn Use Local Undo tablespace for PDBs (nếu phiên bản hỗ trợ) và khai báo số lượng PDB sẽ tạo cùng database, gồm tên hoặc tiền tố tên PDB.

Bước 5: Cấu hình vị trí lưu trữ datafile:
Tại đây, bạn chọn sử dụng đường dẫn mặc định theo template hoặc chỉ định đường dẫn riêng cho datafile, có thể bật tùy chọn Oracle Managed Files (OMF) để đơn giản hóa việc tạo thêm datafile và tablespace về sau.

Bước 6: Thiết lập Fast Recovery Area và chế độ archive:
Bạn cấu hình đường dẫn Fast Recovery Area và dung lượng lưu trữ, đồng thời có thể bật chế độ ARCHIVELOG bằng tùy chọn Enable archiving để phục vụ backup và khôi phục.

Bước 7: Cấu hình listener và tính năng bảo mật:
Bạn chọn listener hiện có hoặc tạo listener mới để đăng ký kết nối cho database. Tiếp theo, bạn có thể chọn thêm các tính năng như Database Vault, Label Security nếu có license phù hợp.


Bước 8: Thiết lập bộ nhớ, process và charset:
Bạn điều chỉnh dung lượng SGA, PGA, số process tối đa, chọn bộ ký tự (thường là AL32UTF8 nếu cần hỗ trợ đa ngôn ngữ) và chọn chế độ kết nối Dedicated hoặc Shared server cho phù hợp khối lượng truy cập.


Bước 9: Cấu hình Enterprise Manager và mật khẩu quản trị:
Ở bước này, bạn quyết định có cấu hình EM Express/Cloud Control hay không, sau đó đặt mật khẩu cho các user quản trị (có thể dùng chung một mật khẩu cho SYS/SYSTEM và user quản trị khác nếu được cho phép).


Bước 10: Xem lại cấu hình và tạo CDB:
Bạn kiểm tra lại toàn bộ thông tin ở màn hình Summary, đảm bảo tùy chọn Create database đã được bật, rồi nhấn Finish để DBCA tạo Container Database và các PDB theo cấu hình. Quá trình này có thể mất từ vài phút đến vài chục phút tùy tài nguyên hệ thống.



Vietnix – Nhà cung cấp dịch vụ hosting và VPS hiệu năng cao dành cho doanh nghiệp
Vietnix cung cấp đa dạng giải pháp thuê hosting website, thuê VPS uy tín với hạ tầng được tối ưu về hiệu năng, đáp ứng nhu cầu vận hành website và hệ thống doanh nghiệp. Dịch vụ được xây dựng trên nền tảng phần cứng mạnh mẽ, kết hợp các công nghệ bảo mật và tối ưu tài nguyên nhằm đảm bảo tốc độ truy cập ổn định và độ tin cậy cao. Bên cạnh đó, hệ thống hỗ trợ kỹ thuật hoạt động liên tục giúp xử lý nhanh các sự cố phát sinh, giảm thiểu gián đoạn trong quá trình vận hành. Liên hệ ngay!
Thông tin liên hệ:
- Website: https://vietnix.vn/
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường Bảy Hiền, Thành Phố Hồ Chí Minh
Câu hỏi thường gặp
CDB và PDB là gì?
Container Database (CDB) là một cơ sở dữ liệu Oracle chạy theo kiến trúc multitenant, trong đó instance vật lý duy nhất quản lý metadata hệ thống và tài nguyên dùng chung cho nhiều cơ sở dữ liệu con. Pluggable Database (PDB) là cơ sở dữ liệu logic cắm vào CDB, chứa dữ liệu và schema ứng dụng riêng, vận hành như một database độc lập nhưng dùng chung SGA, background process và redo/control file của CDB.
Làm sao tôi biết cơ sở dữ liệu của mình là CDB hay PDB?
Bạn có thể kiểm tra bằng cách chạy truy vấn SELECT CDB FROM V$DATABASE; nếu kết quả là YES thì đó là CDB, nếu NO thì là non‑CDB. Ngoài ra, có thể xem view như CDB_PDBS hoặc thử SHOW CON_NAME/SHOW CON_ID để biết đang kết nối vào root container hay một PDB cụ thể.
Container Docker có cơ sở dữ liệu không?
Container Docker chỉ là một môi trường chạy tiến trình, nhưng có thể chạy một hệ quản trị cơ sở dữ liệu bên trong như MySQL, PostgreSQL, Oracle XE… thông qua image tương ứng. Khi chạy database trong container, dữ liệu thường được lưu trên volume gắn kèm (-v my-db-volume:/var/lib/mysql) để đảm bảo dữ liệu vẫn tồn tại khi container dừng hoặc khởi động lại.
Dữ liệu CDB là gì?
Dữ liệu ở mức CDB chủ yếu là metadata và đối tượng hệ thống dùng chung, bao gồm data dictionary, control file, redo log, undo, temp và các tablespace hệ thống của root container. Dữ liệu ứng dụng (bảng, index, schema nghiệp vụ) lại được lưu trong từng PDB, trong khi CDB chỉ giữ thông tin cấu hình và quản lý các PDB đó.
Một tệp CDB chứa bao nhiêu PDB?
Giới hạn số lượng PDB phụ thuộc phiên bản và license; Oracle Database 19c cho phép tối đa 3 PDB trên mỗi CDB mà không cần mua thêm license Multitenant, còn với license đầy đủ thì có thể tạo nhiều PDB hơn theo giới hạn kỹ thuật của phiên bản. Trong tài liệu kiến trúc, Oracle minh họa một CDB có root, PDB$SEED và nhiều PDB ứng dụng và số lượng PDB được khuyến nghị thường gắn với tài nguyên phần cứng và yêu cầu hiệu năng thực tế.
Container Database là một kiến trúc cơ sở dữ liệu multitenant mạnh mẽ của Oracle, mang lại nhiều lợi ích vượt trội về tối ưu hóa tài nguyên, đơn giản hóa quản trị và tăng cường tính linh hoạt. Việc hiểu rõ các thành phần, cấu trúc và quy trình tạo CDB sẽ là chìa khóa để các quản trị viên cơ sở dữ liệu khai thác tối đa tiềm năng của kiến trúc này, qua đó xây dựng một hạ tầng dữ liệu hiệu quả, đáng tin cậy và sẵn sàng cho mọi thách thức trong kỷ nguyên số. Cảm ơn bạn đã theo dõi bài viết!
THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM
Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày















