Chủ Nhật, 22 tháng 8, 2021

Bật và tắt Container Databases (CDB) và Pluggable Databases (PDB) trong Oracle Database 12c

Mục đích: Hướng dẫn cách Bật và tắt Container Databases (CDB) và Pluggable Databases (PDB) trong Oracle Database 12c

  • Container Database (CDB)
  • Pluggable Database (PDB)
    • Sử dụng SQL*Plus 
    • ALTER PLUGGABLE DATABASE
    • Tự động bật Pluggable Database (PDB)
    • Duy trì trạng thái PDB (từ 12.1.0.2 trở đi)

Container Database (CDB)

Giống như bình thường non-cdb hoặc 10g, 11g

$ sqlplus / as sysdba

--Start
Cú pháp: STARTUP [NOMOUNT | MOUNT | RESTRICT | UPGRADE | FORCE | READ ONLY]

SQL> startup -- sẽ tự động nomount, mount và open

SQL> startup nomount
SQL> startup mount
SQL> startup force
SQL> startup open read only

--Shutdown
SQL> SHUTDOWN IMMEDIATE
SQL> shutdown ABORT

Pluggable Database (PDB)

Pluggable databases có thể được bật và tắt khi sử dụng các lệnh SQL*Plus hoặc lệnh ALTER PLUGGABLE DATABASE

Sử dụng SQL*Plus 

Các lệnh SQL*Plus để bật và tắt pluggable database, khi được kết nối với pluggable database với tư cách là người dùng có quyền (ví dụ như sysdba)
$ sqlplus /  as sysdba

SQL> SHOW CON_NAME

CON_NAME
------------------------------
CDB$ROOT
SQL>

SQL> SHOW CON_ID

CON_ID
------------------------------
1

SQL> ALTER SESSION SET CONTAINER=pdb1;

SQL> SHOW CON_NAME

CON_NAME
------------------------------
PDB1

STARTUP FORCE;
STARTUP OPEN READ WRITE [RESTRICT];
STARTUP OPEN READ ONLY [RESTRICT];
STARTUP UPGRADE;
SHUTDOWN [IMMEDIATE];

Hoặc kết nối vào pdb1 khi đang ở CDB$ROOT ta thực hiện câu lệnh:
SQL> connect system/oracle@pdb1

Một số ví dụ được hiển thị bên dưới.

STARTUP FORCE;
SHUTDOWN IMMEDIATE;

STARTUP OPEN READ WRITE RESTRICT;
SHUTDOWN;

STARTUP;
SHUTDOWN IMMEDIATE;

ALTER PLUGGABLE DATABASE

Lệnh ALTER PLUGGABLE DATABASE có thể được sử dụng cho cả CDB hoặc PDB.

Các lệnh sau có sẵn để mở và đóng PDB hiện tại khi được kết nối với PDB với tư cách là người dùng đặc quyền.

SQL> ALTER SESSION SET CONTAINER=pdb1;

SQL> SHOW CON_NAME

CON_NAME
------------------------------
PDB1

ALTER PLUGGABLE DATABASE OPEN READ WRITE [RESTRICTED] [FORCE];
ALTER PLUGGABLE DATABASE OPEN READ ONLY [RESTRICTED] [FORCE];
ALTER PLUGGABLE DATABASE OPEN UPGRADE [RESTRICTED];
ALTER PLUGGABLE DATABASE CLOSE [IMMEDIATE];

Một số ví dụ được hiển thị bên dưới.

ALTER PLUGGABLE DATABASE OPEN READ ONLY FORCE;
ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;

ALTER PLUGGABLE DATABASE OPEN READ WRITE;
ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;

Các lệnh sau để mở và đóng một hoặc nhiều PDB khi được kết nối với CDB với tư cách là người dùng đặc quyền.

ALTER PLUGGABLE DATABASE <pdb-name-clause> OPEN READ WRITE [RESTRICTED] [FORCE];
ALTER PLUGGABLE DATABASE <pdb-name-clause> OPEN READ ONLY [RESTRICTED] [FORCE];
ALTER PLUGGABLE DATABASE <pdb-name-clause> OPEN UPGRADE [RESTRICTED];
ALTER PLUGGABLE DATABASE <pdb-name-clause> CLOSE [IMMEDIATE];

Mệnh đề <pdb-name-clause>:

  • Một hoặc nhiều PDB, được chỉ định dưới dạng danh sách được phân tách bằng dấu phẩy.
  • Từ khóa ALL để chỉ tất cả PDB.
  • Từ khóa ALL EXCEPT (thực hiện mở/đóng tắt cả ngoài trừ), theo sau là một hoặc nhiều PDB trong danh sách được phân tách bằng dấu phẩy, để chỉ ra một tập hợp con của các PDB.

Một số ví dụ được hiển thị bên dưới.

ALTER PLUGGABLE DATABASE pdb1, pdb2 OPEN READ ONLY FORCE;
ALTER PLUGGABLE DATABASE pdb1, pdb2 CLOSE IMMEDIATE;

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

ALTER PLUGGABLE DATABASE ALL EXCEPT pdb1 OPEN;  --Open mọi PDB trừ pdb1
ALTER PLUGGABLE DATABASE ALL EXCEPT pdb1 CLOSE IMMEDIATE;  --Close mọi PDB trừ pdb1

Pluggable Database (PDB) tự động bật

Patchset 12.1.0.2 đã giới thiệu khả năng duy trì trạng thái bật của các PDB, vì vậy bạn có thể không nên triển khai tính năng được thảo luận trong phần này.

Trước 12.1.0.2, khi CDB được khởi động, tất cả các PDB vẫn ở chế độ mount. Không có cơ chế mặc định nào để tự động bật chúng khi CDB được bật. Cách để đạt được điều này là sử dụng trigger trên CDB để bật một số hoặc tất cả PDB.

CREATE OR REPLACE TRIGGER open_pdbs 
  AFTER STARTUP ON DATABASE 
BEGIN 
   EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN'; 
END open_pdbs;
/

Bạn có thể tùy chỉnh trigger nếu bạn không muốn tất cả các PDB được bật.

Duy trì trạng thái khi bật PDB (từ 12.1.0.2)

Patchset 12.1.0.2 đã giới thiệu khả năng duy trì trạng thái bật của các PDB khi CDB khởi động lạiĐiều này được thực hiện bằng cách sử dụng lệnh ALTER PLUGGABLE DATABASE.

Chúng ta sẽ bắt đầu bằng cách xem kết quả bình thường của quá trình CDB khởi động lạiLưu ý rằng các PDB đang ở chế độ READ WRITE trước khi khởi động lại, nhưng ở chế độ MOUNTED sau đó.

SELECT name, open_mode FROM v$pdbs;

NAME                           OPEN_MODE
------------------------------ ----------
PDB$SEED                       READ ONLY
PDB1                           READ WRITE
PDB2                           READ WRITE

SQL> 


SHUTDOWN IMMEDIATE;
STARTUP;


SELECT name, open_mode FROM v$pdbs;

NAME                           OPEN_MODE
------------------------------ ----------
PDB$SEED                       READ ONLY
PDB1                           MOUNTED
PDB2                           MOUNTED

SQL>

Tiếp theo, chúng ta mở cả hai pluggable database, nhưng chỉ lưu trạng thái của PDB1.

ALTER PLUGGABLE DATABASE pdb1 OPEN;
ALTER PLUGGABLE DATABASE pdb2 OPEN;
ALTER PLUGGABLE DATABASE pdb1 SAVE STATE;

View DBA_PDB_SAVED_STATES hiển thị thông tin về trạng thái đã lưu của container.

COLUMN con_name FORMAT A20
COLUMN instance_name FORMAT A20

SELECT con_name, instance_name, state FROM dba_pdb_saved_states;

CON_NAME             INSTANCE_NAME        STATE
-------------------- -------------------- --------------
PDB1                 cdb1                 OPEN

SQL>

Khởi động lại CDB bây giờ cho chúng ta một kết quả khác.

SELECT name, open_mode FROM v$pdbs;

NAME                           OPEN_MODE
------------------------------ ----------
PDB$SEED                       READ ONLY
PDB1                           READ WRITE
PDB2                           READ WRITE

SQL> 


SHUTDOWN IMMEDIATE;
STARTUP;


SELECT name, open_mode FROM v$pdbs;

NAME                           OPEN_MODE
------------------------------ ----------
PDB$SEED                       READ ONLY
PDB1                           READ WRITE --> do pdb1 SAVE STATE ở bước trên
PDB2                           MOUNTED    --> do pdb2 không SAVE STATE 
SQL>

Trạng thái đã lưu có thể được loại bỏ bằng cách sử dụng câu lệnh sau.

ALTER PLUGGABLE DATABASE pdb1 DISCARD STATE;

COLUMN con_name FORMAT A20
COLUMN instance_name FORMAT A20

SELECT con_name, instance_name, state FROM dba_pdb_saved_states;

no rows selected

SQL>

Dưới đây là danh sách ngắn gọn về một số lưu ý sử dụng được giải thích trong  documentation.

  • Trạng thái chỉ được lưu và hiển thị trong DBA_PDB_SAVED_STATES nếu container đang ở chế độ READ ONLY hoặc READ WRITECác lệnh ALTER PLUGGABLE DATABASE ... SAVE STATE lưu lại trạng thái hiện tại để không ở chế độ MOUNTED, nhưng không được ghi lại, vì đây là trạng thái mặc định sau khi khởi động lại CDB.
  • Giống như các ví dụ khác về lệnh ALTER PLUGGABLE DATABASE, các PDB có thể được xác định riêng lẻ, dưới dạng danh sách được phân tách bằng dấu phẩy, sử dụng từ khóa ALL hoặc ALL EXCEPT.
  • Mệnh đề INSTANCES có thể được thêm vào khi sử dụng trong môi trường RAC. Mệnh đề có thể xác định các trường hợp riêng lẻ, dưới dạng danh sách được phân tách bằng dấu phẩy, sử dụng từ khóa ALL hoặc ALL EXCEPTBất kể mệnh đề INSTANCES nào, các lệnh SAVE/DISCARD STATE chỉ ảnh hưởng đến instance hiện tại.

Tham khảo thêm:

Hy vọng hữu ích cho bạn.
=============================
* 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
hoặc
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 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

=============================
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,khóa học pl/sql, 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 dataguard, oracle goldengate, mview, oracle exadata, oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, oracle oca, oracle ocp, oracle ocm

ĐỌC NHIỀU

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