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

Cấu hình, thay đổi tham số Instance Container Databases (CDB) và Pluggable Databases (PDB) in Oracle Database 12c

Mục đích: Hướng dẫn Cấu hình, thay đổi tham số Instance Container Databases (CDB) và Pluggable Databases (PDB) in Oracle Database 12c

Nội dung:
  • Cấu hình tham số Instance trong CDB (ALTER SYSTEM)
  • Cấu hình tham số Instance trong PDB (ALTER SYSTEM)
  • Thay đổi CDB (ALTER DATABASE)
  • Thay đổi PDB (ALTER PLUGGABLE DATABASE)
  • PDB_SPFILE$

Cấu hình các tham số của Instancetrong CDB (ALTER SYSTEM)

Việc cấu hình các tham số phiên bản cho CDB không khác nhiều so với cấu hình cho các cơ sở dữ liệu non-CDB. Lệnh ALTER SYSTEM được sử dụng để thiết lập các tham số, với một số cấu hình cơ sở dữ liệu được sửa đổi bằng cách sử dụng lệnh ALTER DATABASE.

Khi được kết nối với tư cách là người dùng đặc quyền và trỏ đến root container, bất kỳ lệnh ALTER SYSTEM nào theo mặc định sẽ chỉ đến root container. Điều này có nghĩa là hai lệnh sau là tương đương nhau:

alter system set parameter_name=value;
alter system set parameter_name=value container=current;


ALTER SYSTEM SET OPEN_CURSORS = 200;
ALTER SYSTEM SET OPEN_CURSORS = 200 CONTAINER = CURRENT;

Ngoài hành động mặc định, thay đổi tham số khởi tạo từ root container có thể nhắm mục tiêu tất cả các container bằng cách sử dụng cú pháp sau.

alter system set parameter_name=value container=all;

ALTER SYSTEM SET OPEN_CURSORS = 200 CONTAINER = ALL;

Bằng cách sử dụng, CONTAINER=ALL tức là các PDB đều ảnh hưởng bởi tham số này.  Tuy nhiên nếu chúng ta thay đổi cục bộ tham số này (OPEN_CURSORS=300) ở PDB1 chẳng hạn thì giá trị 200 kia bị lờ đi.

Các PDB có thể ghi đè một số cài đặt tham số bằng cách đưa ra lệnh gọi ALTER SYSTEM cục bộ từ vùng chứa. Xem tài liệu tại đây

Cấu hình tham số Instance Parameters trong PDB (ALTER SYSTEM)

Trong phần trước, tôi đã đề cập rằng các tham số của instance có thể được thiết lập cho tất cả các PDB thuộc CDB bằng cách sử dụng mệnh đề  CONTAINER=ALL của lệnh ALTER SYSTEM từ root container. Ngay cả khi thiết lập kế thừa này, PDB cục bộ có thể ghi đè cấu hình này bằng cách sử dụng ALTER SYSTEM cục bộ bên trong PDB. Chỉ một tập hợp con của các tham số khởi tạo có thể được sửa đổi cục bộ trong PDB. Chúng có thể được hiển thị bằng cách sử dụng truy vấn sau.

column name format a35
column value format a35
 
select name, value
from   v$system_parameter
where  ispdb_modifiable = 'TRUE'
order by name;

Để thực hiện thay đổi PDB cục bộ, hãy đảm bảo rằng bạn được kết nối trực tiếp với một người sử dụng đặc quyền trong PDB (user local) hoặc với một người dùng có đặc quyền của CDB (user common). Như đã đề cập trước đây, nếu mệnh đề CONTAINER không được đưa ra, container hiện tại được ăn vào các thiết lập tham số, vì vậy lệnh ALTER SYSTEM sau đây là giống nhau

conn / as sysdba
alter session set container = pdb1;

alter system set parameter_name=value;
alter system set parameter_name=value container=current;

ALTER SYSTEM SET OPEN_CURSORS = 300;
ALTER SYSTEM SET OPEN_CURSORS = 300 CONTAINER = CURRENT;

Các thay đổi tham số mức instance trong root container được lưu trữ trong SPFILE theo cách bình thường. Khi bạn thay đổi các tham số khởi tạo dành riêng cho PDB trong PDB, chúng không được lưu trữ trong SPFILE. Thay vào đó, chúng được lưu trong bảng hệ thống PDB_SPFILE$, được thảo luận bên dưới. Xem tài liệu tại đây .

Thay đổi CDB (ALTER DATABASE)

Từ góc độ CDB, lệnh ALTER DATABASE tương tự như lệnh của cơ sở dữ liệu non-CDB. Bạn chỉ cần hiểu phạm vi của những thay đổi mà bạn đang thực hiện. Một số lệnh ALTER DATABASE áp dụng cho CDB theo định nghĩa sẽ ảnh hưởng đến tất cả các PDB của CDB. Một só tham số khác chỉ nhắm mục tiêu root container. Phạm vi của lệnh ALTER DATABASE được hiển thị trong bảng trong tài liệu ở đây . Ví dụ:

ALTER DATABASE BACKUP CONTROLFILE TO '+DATA/dbs/backup/control.bkp';

ALTER DATABASE cdb ADD LOGFILE
  GROUP 4 ('/u01/logs/orcl/redo04a.log','/u02/logs/orcl/redo04b.log')
  SIZE 100M BLOCKSIZE 512 REUSE;

ALTER DATABASE DEFAULT TABLESPACE root_tbs;

ALTER DATABASE DATAFILE '/u02/oracle/cdb_01.dbf' ONLINE;

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE root_temp;

Thay đổi PDB (ALTER PLUGGABLE DATABASE)

Việc sửa đổi một PDB được thực hiện bằng cách trỏ đến container có liên quan (alter session set container=) và sử dụng lệnh ALTER PLUGGABLE DATABASE, nhưng vì lý do tương thích ngược, lệnh ALTER DATABASE sẽ hoạt động đối với hầu hết các sửa đổi có thể. Không có gì ngạc nhiên khi các sửa đổi có thể có đối với PDB là một tập hợp con của những sửa đổi có thể có đối với cơ sở dữ liệu CDB hoặc non-CDB.

Hãy nhớ rằng, để nhắm mục tiêu PDB, bạn phải kết nối với dịch vụ trỏ đến PDB tương ứng hoặc kết nối với root container và chuyển sang PDB container. Một số sửa đổi PDB có thể được hiển thị bên dưới.

conn / as sysdba
alter session set container = pdb1;

-- Phiên bản mặc định cho PDB.
alter pluggable database default edition = ora$base;

-- Kiểu tablespace mặc định cho PDB.
alter pluggable database set default bigfile tablespace;
alter pluggable database set default smallfile tablespace;

-- Tablespaces mặc định cho PDB.
alter pluggable database default tablespace users;
alter pluggable database default temporary tablespace temp;

-- Thay đổi global name. Điều này sẽ thay đổi tên container và
- tên của dịch vụ mặc định được đăng ký với listener.
alter pluggable database open restricted force;
alter pluggable database rename global_name to pdb1new;
alter pluggable database close immediate;
alter pluggable database open;

-- Thay đổi múi giờ cho PDB.
alter pluggable database set time_zone='GMT';

-- Thực hiện offline/online cho PDB 
alter pluggable database datafile '/u01/app/oracle/oradata/cdb1/pdb1/pdb1_users01.dbf' offline; alter pluggable database datafile '/u01/app/oracle/oradata/cdb1/pdb1/pdb1_users01.dbf' online; alter pluggable database datafile '/u01/app/oracle/oradata/cdb1/pdb1/pdb1_users01.dbf' resize 1g autoextend on next 1m; -- Ghi log bổ sung cho PDB. alter pluggable database add supplemental log data; alter pluggable database drop supplemental log data;

Ngoài ra, có một cơ chế để kiểm soát kích thước tối đa của PDB và lượngtemp được chia sẻ mà nó có thể sử dụng.

-- Giới hạn tổng dung lượng lưu trữ của PDB (datafile và local temp files).
alter pluggable database storage (maxsize 5g);

-- Giới hạn dung lượng temp được sử dụng trong các temp file được chia sẻ.
alter pluggable database storage (max_shared_temp_size 2g);

-- Kết hợp cả 2 
alter pluggable database storage (maxsize 5g max_shared_temp_size 2g);

-- Xóa bỏ các giới hạn đó
alter pluggable database storage unlimited;

PDB_SPFILE$

Như đã đề cập trước đây, các tham số khởi tạo cho PDB được lưu trữ trong một bảng hệ thống được gọi là PDB_SPFILE$Không có nhiều thông tin về nó trong tài liệu chính, nhưng nó sẽ được thảo luận trong ghi chú MOS sau đây.

Các tài liệu khuyến khích chúng ta sử dụng V$PARAMETER, V$SYSTEM_PARAMETER và V$SPPARAMETER, mà tất cả bao gồm một cột CON_ID, chứ không phải là truy vấn bảng PDB_SPFILE$.

Không rõ 100% bảng PDB_SPFILE$ được quản lý như thế nào Ví dụ: ghi chú MOS này cho biết các tham số đặt lại vẫn còn trong bảng, nhưng được đánh dấu là đã xóa, nhưng dường như không có bất kỳ thứ gì trong row cho biết một giá trị được đánh dấu là đã xóa.

Rõ ràng có những tình huống mà nội dung của bảng PDB_SPFILE$ có thể gây ra vấn đề và cần sự can thiệp thủ công. Trong lưu ý MOS sau đây, khuyến nghị là xóa thủ công một tham số cụ thể khỏi bảng và khởi động lại PDB.

Một kịch bản đã gây ra sự cố cho tôi liên quan đến việc tạo một PDB từ một phiên bản non-CDB. Vào cuối quá trình, tôi đã để lại các thông số mức PDB trong bảng  PDB_SPFILE$ mà tôi không muốn và việc đặt lại chúng ở mức PDB dường như không có bất kỳ tác động nào. Để giải quyết điều này tôi đã làm như sau.

Nhận danh sách các tham số, bao gồm PDB_UID.

set linesize 120
column pdb_name format a10
column name format a30
column value$ format a30

select ps.db_uniq_name,
       ps.pdb_uid,
       p.name as pdb_name,
       ps.name,
       ps.value$
from   pdb_spfile$ ps
       join v$pdbs p on ps.pdb_uid = p.con_uid
order by 1, 2, 3;

Xóa các tham số cấp PDB khỏi bảng, sử dụng giá trị PDB_UID .

delete from pdb_spfile$ where pdb_uid = {your PDB_UID value};
commit;

Khởi động lại  container database.

Nó khá căng và như tôi đã cảnh báo ở trên, đây không phải là một khuyến nghị!

Để biết thêm thông tin, hãy xem:

Hy vọng hữu ích với 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
=============================
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