Thứ Ba, 23 tháng 6, 2020

Cơ bản về Oracle Database 12c/18c/19c/21c

1. 4 đặc tính nổi trội của Oracle 12c/18c/19c/21c


Kết quả hình ảnh cho oracle 12c1. 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/18c/19c/21c, dung lượng tài nguyên bộ nhớ có thể giảm tới 6 lần.

2. 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).

3. 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.

4. 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.

2. Cấu trúc Oracle Database 12c/18c/19c/21c

Trước hết chúng ta cần so sánh cấu trúc Oracle 11g và 12c/18c/19c/21c
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/18c/19c/21c


Oracle 12c/18c/19c/21c thực sự có sự thay đổi căn bản về cấu trúc so với Oracle 11gOracle 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/18c/19c/21c . Cụ thể sau khi cài đặt phần mềm Oracle  12c/18c/19c/21c 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/18c/19c/21c 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.
3. Sử dụng SQL*Plus để kiểm tra CDB, PDB trong Oracle Database 12c/18c/19c/21c
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 hoặc sys với vai trò dba:
$ sqlplus system/Abc#123 as sysdba
hoặc
$ sqlplus / a 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:
SQL> connect scott/oracle
+ Hoặc kết nối vào với vai trò Database Admin:
SQL> connect system/oracle as sysdba
SQL> connect sys/oracle as sysdba
Cotainer là gì, bạn có thể tưởng tượng giống đời thực như sau:
Phân biệt các loại container, công dụng và kích thước từng loại

3.1. Kiểm tra xem Database có là Container Database (CDB)

Khi bạn cài đặt Oracle 12c/18c/19c/21c 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;

3.2. 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

- Các câu lệnh khác chuyển qua lại giữa pdb1 và cdb$root:
SHOW CON_NAME
ALTER SESSION SET container = pdb1;
ALTER SESSION SET container = cdb$root;

3.3. 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 PDBview 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)
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;
3.4. Xem thông tin các Plugin Database (PDB)

Hai view CDB_PDBS và DBA_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ả.
- Các PDB hiện có:
SQL> show pdbs\
   CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                                MOUNTED
         4 PDB2                                MOUNTED
- Các câu lệnh khác chuyển qua lại giữa pdb1 và cdb$root:
SHOW CON_NAME
ALTER SESSION SET container = pdb1;
ALTER SESSION SET container = cdb$root;
show pdbs
- Bật/tắt PDB (mức pdb1 hoặc cdb$root đều được):
SQL> ALTER PLUGGABLE DATABASE pdb1 OPEN;
SQL> ALTER PLUGGABLE DATABASE pdb1, pdb2 OPEN READ ONLY FORCE;

SQL> ALTER PLUGGABLE DATABASE pdb1 CLOSE IMMEDIATE;
SQL> ALTER PLUGGABLE DATABASE pdb1, pdb2 CLOSE IMMEDIATE;

SQL> ALTER PLUGGABLE DATABASE ALL OPEN;
SQL> ALTER PLUGGABLE DATABASE ALL CLOSE IMMEDIATE;

SQL> ALTER PLUGGABLE DATABASE ALL EXCEPT pdb1 OPEN;
SQL> ALTER PLUGGABLE DATABASE ALL EXCEPT pdb1 CLOSE IMMEDIATE;
- Có thể bật tắt như sau:
SQL> SHOW CON_NAME
SQL> ALTER SESSION SET container = pdb1;

SQL> startup

SQL> SHOW CON_NAME
SQL> ALTER SESSION SET container = pdb2;

SQL> startup

- Truy vấn thông tin các PDB:
COLUMN PDB_NAME FORMAT A15

SELECT PDB_ID, PDB_NAME, STATUS FROM DBA_PDBS ORDER BY PDB_ID;
SELECT PDB_ID, PDB_NAME, STATUS FROM CDB_PDBS  ORDER BY PDB_ID;
SELECT name, open_mode FROM v$pdbs;

NAME                              OPEN_MODE
------------------------------ ----------
PDB$SEED                      READ ONLY
PDB1                                READ WRITE
3. Bật Oracle Enterprise Manager Express
SQL> SELECT DBMS_XDB_CONFIG.gethttpport FROM dual;
SQL> EXEC DBMS_XDB_CONFIG.sethttpsport(5500);
SQL> SELECT DBMS_XDB_CONFIG.gethttpsport FROM dual;
https://192.168.182.128:5500/em/login , sau đó nhập user: sys, password oracle, container name cdb$root (hoăc pdb1,..)

-----------

@ Trần Văn Bình - Founder of Oracle DBA Việt Nam 
#OracleTutorial #OracleDBA #OracleDatabaseAdministration #học oracle database #oca #ocp #oce

ĐỌC NHIỀU

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