ITPub博客

首页 > 数据库 > Oracle > 【CDB】怎样修改PDB的内存参数

【CDB】怎样修改PDB的内存参数

原创 Oracle 作者:恩强Boy 时间:2021-01-12 16:53:13 0 删除 编辑

多租户环境中的内存参数管理(CDB PDB

1.  哪些参数可以在PDB 中修改

随着多租户数据库的数显,容器数据库(CDB )和相关的可插拔数据库( PDB )之间的内存管理仍然出现着一些问题。在处理 12c 及以上版本的多租户数据库时,意味着 CDB 中的特定参数的值被一个或多个 pdb 继承。有些参数可以在 PDB 级别修改,并覆盖从 CDB 继承的内容。要确定哪些参数可以从 PDB 中修改, v$system_parameter 视图中的 ispdb_modifiable 列必须为 true 。如果 ispdb_modifiable true ,则该参数从 CDB 继承该值,直到 PDB 使用 alter system set 命令修改该值。

2.  修改参数的方式

1)  连接到PDB

SQL> ALTER SESSION SET CONTAINER= PDB1 ;

2)  进入到PDB 后,我们需要知道哪些参数是可以修改的,可以使用下面的 SQL 语句找到这些参数, ispdb_modifiable 必须为 true

SQL> SELECT NAME FROM V$SYSTEM_PARAMETER

WHERE ISPDB_MODIFIABLE = 'TRUE'

ORDER BY NAME;

3)  使用以下命令进行修改

SQL> ALTER SYSTEM SET PGA_AGGREGATE_TARGET= 800M  SCOPE=SPFILE;

(由于修改的是PDB1 的静态参数,需要重启 PDB1 生效。注意修改单个 PDB 的参数,只需要重启相应 PDB 即可)

现在已经修改了参数,我们可以在PDB 级别的 v$parameter 视图上看到这个更改。如果你想看到的参数的设置范围( CDB or PDB ),我们可以使用视图 v$system_paramete 。下面的 SQL 将显示 CDB PDB PGA_AGGREGATE_TARGET 参数(注意 con_id 列)

4)  进入到CDB

SQL> alter session set container=cdb$root;

5)  执行以下查询

SQL> col name for a30

SQL> col value for a 20

SQL> col DISPLAY_VALUE for a 10

SQL> set linesize 200

SQL> SELECT NAME, VALUE, DISPLAY_VALUE, CON_ID

FROM V$SYSTEM_PARAMETER

WHERE NAME = 'pga_aggregate_target'

ORDER BY NAME;

NAME                              VALUE                 DISPLAY_VA    CON_ID

------------------------------ -------------------- ---------- ----------

pga_aggregate_target            1666187264              1589M               0

pga_aggregate_target           838860800               800M                3

上面结果显示,0 号容器( CDB )的 PGA 1589M 3 号容器的 PGA 800M

SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

         2 PDB$SEED                       READ ONLY  NO

          3 PDB1                           READ WRITE NO

         4 PDB2                           READ WRITE NO

         5 PDB3                           READ WRITE NO

再结合show pdbs 命令,可知 3 号容器就是修改的 PDB1 容器

3.  总结

可以通过多个初始化参数控制PDB 的内存使用情况。当我们以 PDB 作为当前容器设置初始化参数时,这些参数控制当前的 PDB 的内存使用情况。当为一个 PDB 设置了这些参数中的一个或多个时,请确保 CDB 和其他 PDB 有足够的内存可用。

当我们在PDB 级别修改完 pga_aggregate_target 参数后,需要重启该PDB 生效。然后我们可以尝试在 PDB 级别创建 pfile

SQL> alter session set container=pdb1;

SQL> create pfile='/home/oracle/initpdb1.ora' from spfile;

$ cat /home/oracle/ initpdb1.ora

*.pga_aggregate_target=838860800

生成的pfile 内容仅有我们修改的一行。

 

 

---- end ----


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31529886/viewspace-2749437/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论
勤奋,专注和练习

注册时间:2018-04-03

  • 博文量
    67
  • 访问量
    136712