openplanning

Cấu trúc database và tính năng đám mây trong Oracle 12c

  1. Giới thiệu
  2. 4 đặc tính nổi trội của Oracle 12c
  3. Cấu trúc Oracle 12c
  4. Làm việc với Oracle thông qua SQLPlus

1. Giới thiệu

Trong tài liệu này tôi sẽ giới thiệu với các bạn cấu trúc Oracle 12c và các tính năng dám mây mới được giới thiệu trong phiên bản này.

2. 4 đặc tính nổi trội của Oracle 12c

Oracle Database 12c có 4 đặc tính nổi trội:
  • Thứ nhất, có thể hợp nhất tới 252 cơ sở dữ liệu thành phần (đều là sản phẩm của Oracle) vào trong 1 cơ sở dữ liệu “mẹ” (container database), qua đó tối ưu hóa tài nguyên điện toán, giảm chi phí đầu tư vào hạ tầng phần cứng. Nếu trong hệ thống CSDL trước đây, 1 máy chủ cài đặt tối đa 50 CSDL thành phần cần 20GB bộ nhớ thì với công nghệ mới Database 12c, dung lượng tài nguyên bộ nhớ có thể giảm tới 6 lần.
  • Thứ hai, tự động hóa cơ chế tối ưu hóa dữ liệu để quản lý hệ thống thiết bị lưu trữ. Thao tác di chuyển dữ liệu vào lớp lưu trữ thích hợp được tiến hành tự động với công nghệ Data Heat Map: dựa trên bản đồ nhiệt đánh dấu mức độ thường xuyên truy cập của dữ liệu, giải pháp của Oracle sẽ giúp doanh nghiệp quyết định chuyển những dữ liệu ít truy cập vào thiết bị lưu trữ phù hợp (dữ liệu ít khi truy cập được chuyển vào lưu trữ trên thiết bị có chi phí rẻ hơn, dữ liệu thường xuyên truy cập được lưu trữ trên thiết bị lưu trữ có tốc độ cao và chi phí đắt hơn).
  • Thứ ba, có tính năng biên tập (Redaction), có tác dụng che giấu dữ liệu nhạy cảm khi cung cấp dữ liệu cho người sử dụng cuối. Ví dụ với mã số thẻ tín dụng, những người làm công tác quản trị nhân sự có thể nhìn thấy toàn bộ các con số của mã số thẻ, còn những bộ phận khác chỉ nhìn được 4 số cuối. Tính năng bảo mật mới này sẽ giúp các tổ chức, doanh nghiệp cảm thấy an toàn hơn khi hợp nhất các CSDL trong đám mây.
  • Thứ tư, giúp doanh nghiệp tìm thêm cơ hội kinh doanh từ dữ liệu lớn (Big Data) gồm cả dữ liệu phi cấu trúc (chẳng hạn như từ mạng xã hội) và các dữ liệu có cấu trúc thông thường.

3. Cấu trúc Oracle 12c

Trước hết chúng ta cần so sánh cấu trúc Oracle 11g12c
Cấu trúc Oracle bao gồm:
  1. Phần mềm Oracle
  2. Và các Database
ORACLE 11G
Sau khi cài đặt phần mềm Oracle Database 11g bạn có thể tạo một hoặc nhiều Database (Thông thường bạn chỉ cần tạo một Database). Trong mỗi Database bạn có thể tạo một hoặc nhiều SCHEMA, mỗi SCHEMA là hệ thống các bảng, và các đối tượng như function (hàm), procedure (thủ tục), package, ... Cấu trúc của Oracle 11g giống hình minh họa dưới đây:
ORACLE 12C
Oracle 12c thực sự có sự thay đổi căn bản về cấu trúc so với Oracle 11g. Oracle 12c thực sự là một cơ sở dữ liệu đám mây.
Khái niệm database trong 11g tương ứng với khái niệm Container Database (CDB) trong 12c. Cụ thể sau khi cài đặt phần mềm Oracle 12c bạn có thể tạo 1 hoặc nhiều Container Database (CDB). (Thực tế là chỉ cần 1).
Trong Oracle 12C có một khái niệm mới là CDB$ROOT (Hoặc gọi là CDB Root), CDB$Root là một Plugin Database đặc biệt), là một đối tượng nằm trong CDB. Các SCHEMA có thể gắn vào trên CDB$ROOT. Hoặc có các Plugin Database (PDB) thông thường khác có gắn vào CDB$ROOT. Mỗi Plugin Database chứa 0 hoặc nhiều SCHEMA.
PDB$SEED là một Plugin database mẫu (Template) nó được sử dụng để làm mẫu (mặc định) để tạo ra một Plugin Database mới. Tất nhiên bạn có thể lấy một Plugin Database bất kỳ nào đó làm mẫu để tạo ra một Plugin Database mới.

Tôi sẽ đề cập tới các lệnh tạo một Plugin mới từ SEED hoặc từ 1 PDB nào đó ở phần dưới của tài liệu này.
Về mặt lưu trữ trên ổ cứng, Oracle 12c có cấu trúc như hình minh họa dưới đây:
Trong đó:
Controlfiles
Mỗi cơ sở dữ liệu Oracle có một tập tin kiểm soát, đó là một tập tin nhị phân nhỏ mà ghi lại cấu trúc vật lý của các cơ sở dữ liệu. Các tập tin kiểm soát bao gồm:
  • Tên cơ sở dữ liệu
  • Tên và địa điểm của các datafiles liên quan và các file redo log
  • Các dấu thời gian của việc tạo ra cơ sở dữ liệu
  • Số tuần tự hiện thời của log (log sequence number)
  • Thông tin Checkpoint
Các tập tin điều khiển phải có sẵn cho việc ghi bởi cơ sở dữ liệu Oracle bất cứ khi nào cơ sở dữ liệu đang mở. Nếu không có sự kiểm soát tập tin, cơ sở dữ liệu không thể được gắn kết và phục hồi là rất khó khăn.
datafiles
Datafiles là các file vật lý được lưu trữ trên ổ cứng. Những file này được sử dụng để lưu trữ dữ liệu trên ổ cứng.
tempfiles
Tempfiles là các file vật lý được lưu trữ trên ổ cứng. Những file này được sử dụng để lưu trữ dữ liệu tạm thời trên ổ cứng.
redo logs
Cấu trúc quan trọng nhất đối với hoạt động phục hồi là các redo log, trong đó bao gồm hai hoặc nhiều tập tin đã được phân bổ trước (preallocated files), nó lưu trữ tất cả các thay đổi trên cơ sở dữ liệu cũng như chúng xuất hiện. Mỗi đối tượng của cơ sở dữ liệu Oracle có một redo log liên quan để bảo vệ cơ sở dữ liệu trong trường hợp một đối tượng nào đó bị hỏng.

4. Làm việc với Oracle thông qua SQLPlus

SQL Plus là một cửa sổ giao tiếp dạng Console đơn giản cho phép bạn gõ lệnh SQL lên đó. Thông thường chúng ta làm việc với một công cụ trực quan hơn (Không có sẵn khi bạn cài xong Oracle) mà bạn cần cài đặt thêm, có thể là các phần mềm do một công ty thứ 3 cung cấp.
Để vào SQLPlus bạn có thể vào từ CMD:
-- Đăng nhập vào Oracle sử dụng user database system, với vai trò Database Admin (dba)
-- Chú ý: Nếu bạn chưa đăng nhập vào user nào sử dụng cú pháp:
system/Abc#123 as sysdba

-- Nếu bạn đã kết nối vào một user, muốn chuyển sang user khác sử dụng cú pháp:
connect username/password

-- Hoặc kết nối vào với vai trò Database Admin.
connect username/password as sysdba
Bạn vừa đăng nhập vào Database.
Kiểm tra xem Database có là Container Database (CDB)
Khi bạn cài đặt Oracle 12c nếu bạn chọn cài đặt theo kiểu Container Database (CDB), thì database của bạn sẽ là một CDB, ngược lại nó là một Non-CDB (Giống mô hình của Oracle 11g)
Trên SQLPlus bạn có thể kiểm tra xem Database của mình có là CDB hay không.
-- Truy vấn View chứa các Database.

SELECT CDB FROM V$DATABASE;
Kiểm tra ID hoặc tên của Container hiện tại
-- Xem thông tin ID của Container hiện tại.

SHOW CON_ID


-- Xem thông tin tên của Container hiện tại:

SHOW CON_NAME
Thông tin các Container trong Container Database (CDB)
View V$CONTAINERS cung cấp tất cả các thông tin về các Container bên trong CDB, bao gồm Plugin gốc (CDB$Root) và các Plugin DB (PDB). Để xem các thông tin này, bạn có thể truy vấn từ một user thông thường, mà user đó nằm trong Container gốc (CDB$Root). Nếu user nằm trong PDB, view này sẽ chỉ hiển thị các thông tin cho PDB đó.
-- Sét đặt độ dài cột hiển thị (Cho dễ nhìn)
-- (Không bắt buộc).

COLUMN NAME FORMAT A8


-- Truy vấn thông tin các Container.
SELECT NAME, CON_ID, DBID, CON_UID, GUID FROM V$CONTAINERS ORDER BY CON_ID;
Xem thông tin các Plugin Database (PDB)
Hai view CDB_PDBSDBA_PDBS cung cấp thông tin về các PDBs có liên hệ với CDB, bao gồm cả tình trạng của mỗi PDB. Để xem thông tin này, truy vấn phải được chạy bởi một user thông thường trên Container gốc (CDB$Root). Khi user trên một container là một PDB, tất cả các truy vấn trên View này không trả về kết quả.
-- Sét đặt độ dài cột hiển thị (Cho dễ nhìn)
-- (Không bắt buộc).

COLUMN PDB_NAME FORMAT A15


-- Truy vấn thông tin các PDB
SELECT PDB_ID, PDB_NAME, STATUS FROM DBA_PDBS ORDER BY PDB_ID;