沃趣科技 周天鹏
原文链接 https://oracle-base.com/articles/12c/multitenant-memory-resource-management-for-pdbs-12cr2
原文链接 https://oracle-base.com/articles/12c/multitenant-memory-resource-management-for-pdbs-12cr2
如果你的CDB中只有一个PDB,那么你就不需要做这些限制,因为你本来就想让这个单独的PDB用掉实例的所有内存。
下列参数都可以在PDB级别进行设置:
-
关于哪些值可以设置也有一些限制,官方文档中给出了详细的解释
(http://docs.oracle.com/database/122/ADMIN/using-oracle-resource-manager-for-pdbs-with-sql-plus.htm#ADMIN-GUID-A3459A8B-A36A-44D4-9FCD-75CA0E3D3252),总结如下:
设置PDB内存参数
检查CDB的当前设置:
CONN / AS SYSDBA SHOW PARAMETER sga_target; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ sga_target big integer 2544M SQL>
设置PDB的SGA_TARGET参数:
SQL> ALTER SYSTEM SET sga_target=1G SCOPE=BOTH;System altered. SQL> SHOW PARAMETER sga_target; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ sga_target big integer 1G SQL>
如果你不再想控制这个参数的值,你可以把它设置为0或者reset掉。
ALTER SYSTEM SET sga_target=0 SCOPE=BOTH; ALTER SYSTEM RESET sga_target;
Oracle提供了一些视图来监控PDB的资源使用(例如CPU、I/O、内存)。每个视图包含相同的信息,只是保留时间不同。
-
例子如下:
CONN / AS SYSDBASET LINESIZE 150COLUMN pdb_name FORMAT A10COLUMN begin_time FORMAT A26COLUMN end_time FORMAT A26ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS'; ALTER SESSION SET NLS_TIMESTAMP_FORMAT='DD-MON-YYYY HH24:MI:SS.FF'; -- Last sample per PDB.SELECT r.con_id, p.pdb_name, r.begin_time, r.end_time, r.sga_bytes, r.pga_bytes, r.buffer_cache_bytes, r.shared_pool_bytesFROM v$rsrcpdbmetric r, cdb_pdbs pWHERE r.con_id = p.con_idORDER BY p.pdb_name;-- Last hours samples for PDB1SELECT r.con_id, p.pdb_name, r.begin_time, r.end_time, r.sga_bytes, r.pga_bytes, r.buffer_cache_bytes, r.shared_pool_bytesFROM v$rsrcpdbmetric_history r, cdb_pdbs pWHERE r.con_id = p.con_idAND p.pdb_name = 'PDB1'ORDER BY r.begin_time;-- All AWR snapshot information for PDB1.SELECT r.snap_id, r.con_id, p.pdb_name, r.begin_time, r.end_time, r.sga_bytes, r.pga_bytes, r.buffer_cache_bytes, r.shared_pool_bytesFROM dba_hist_rsrc_pdb_metric r, cdb_pdbs pWHERE r.con_id = p.con_idAND p.pdb_name = 'PDB1'ORDER BY r.begin_time;
-
例子如下: