【Oracle 12c 多租户专题】PDB的内存资源管理
原文链接:https://oracle-base.com/articles/12c/multitenant-memory-resource-management-for-pdbs-12cr2 在12.2之前的版本,我们根本没有办法控制一个单独的PDB能使用的内存总量。导致的结果就是“一个糟糕的邻居”可能占用大量内存从而导致同一个实例下其他PDB的性能下降。在Oracle 12.2中,你可以控制某单个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内存参数设置PDB内存参数的过程和设置一个普通实例的存储参数并没有什么区别。下面的例子是修改SGA_TARGET参数。 检查CDB的当前设置: CONN / AS SYSDBA
SHOW PARAMETER sga_target;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_target big integer 2544M
SQL>
检查PDB的当前设置: CONN / AS SYSDBA
ALTER SESSION SET CONTAINER=pdb1;
SHOW PARAMETER sga_target;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_target big integer 0
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>
当我们尝试给PDB制定一个比所处的CDB更大的SGA时将会报如下的错误: SQL> ALTER SYSTEM SET sga_target=3G SCOPE=BOTH;
ALTER SYSTEM SET sga_target=3G SCOPE=BOTH
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-56747: invalid value 3221225472 for parameter sga_target; must be smaller
than parameter sga_target of the root container
SQL>
如果你不再想控制这个参数的值,你可以把它设置为0或者reset掉。 ALTER SYSTEM SET sga_target=0 SCOPE=BOTH;
ALTER SYSTEM RESET sga_target;
监控PDB的内存使用Oracle提供了一些视图来监控PDB的资源使用(例如CPU、I/O、内存)。每个视图包含相同的信息,只是保留时间不同。 例子如下: CONN / AS SYSDBA
SET LINESIZE 150 COLUMN pdb_name FORMAT A10 COLUMN begin_time FORMAT A26 COLUMN end_time FORMAT A26 ALTER 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_bytes FROM v$rsrcpdbmetric r,cdb_pdbs p WHERE r.con_id = p.con_id ORDER BY p.pdb_name;
-- Last hours samples for PDB1
SELECT r.con_id,r.shared_pool_bytes FROM v$rsrcpdbmetric_history r,cdb_pdbs p WHERE r.con_id = p.con_id AND p.pdb_name = 'PDB1' ORDER BY r.begin_time;
-- All AWR snapshot information for PDB1.
SELECT r.snap_id,r.con_id,r.shared_pool_bytes FROM dba_hist_rsrc_pdb_metric r,cdb_pdbs p WHERE r.con_id = p.con_id AND p.pdb_name = 'PDB1' ORDER BY r.begin_time; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |