12C CBD模式下参数文件管理

Posted wenzhongyan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了12C CBD模式下参数文件管理相关的知识,希望对你有一定的参考价值。

在12C数据库和11G以前版本的数据库一样只存在一个初始化参数文件,一个服务器参数文件可以被认为是一个数据库的初始化参数,维护系统运行的数据库服务器。通过设计一个服务器端的初始化参数文件。在一个服务器参数文件中存储的初始化参数是持久的,在任何更改的参数的情况下,当一个实例正在运行时,可以持续整个实例关机和启动。此安排不需要手动更新初始化参数,可以使用ALTER SYSTEM语句更改并永久的生效,在12C的参数文件与11G之前的参数文件区别在于12CPDB继承CDB数据库的参数设置,我们通过以下案例来学习12C数据库的参数文件管理是。
[oracle@12crac2 ~]$ sqlplus / "as sysdba"
SQL*Plus: Release 12.1.0.1.0 Production on 星期五 5月 20 16:22:53 2016
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
连接到: 
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options
SQL> col pdb_name for a30
SQL> SELECT PDB_NAME,CON_UID,PDB_ID,STATUS FROM DBA_PDBS;
PDB_NAME     CON_UID     PDB_ID STATUS
------------------------------ ---------- ---------- -------------
PDBORCL          2355717672    3 NORMAL
PDB$SEED         4151145250    2 NORMAL
PDB数据库状态
SQL> select name,con_id,open_mode from v$pdbs;
NAME       CON_ID OPEN_MODE
------------------------------ ---------- ----------
PDB$SEED    2 READ ONLY
PDBORCL     3 READ WRITE


在这里举例修改optimizer_index_cost_adj参数,来验证PBD数据的继承关系,我们在CDB$ROOT容器修有改optimizer_index_cost_adj参数值为20,同时pdborcl拔插数据库optimizer_index_cost_adj的值也被更改为20, 但我们在PDB数据库修改参数不影响CDB$ROOT容器数据库的参数。
SQL> show con_Name
CON_NAME
------------------------------
CDB$ROOT
SQL> show parameter optimizer_index_cost_adj
NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
optimizer_index_cost_adj      integer  100
SQL> alter session set container=pdborcl;
会话已更改。
SQL> show parameter index
NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
optimizer_index_cost_adj      integer  100
SQL> alter session set container=cdb$root;
会话已更改。
SQL> alter system set optimizer_index_cost_adj=20;
系统已更改。
SQL> alter session set container=pdborcl;
会话已更改。
SQL> show parameter optimizer_index_cost_adj
NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
optimizer_index_cost_adj      integer  20
SQL> alter system set optimizer_index_cost_adj=30;
系统已更改。
SQL> show parameter optimizer_index_cost_adj
NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
optimizer_index_cost_adj      integer  30
SQL> alter session set container=cdb$root
  2  ;
会话已更改。
SQL> show parameter optimizer_index_cost_adj
NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
optimizer_index_cost_adj      integer  20


参数文件中的参数并不是所有的参数可以在PDB数据库中进行修改,可以通过视图V$paramter中的ISPDB_MODIFIABLE字段判断,值为FALSE时参数不能在PDB数据库中修有改,值为TRUE可被修有改。本例以参数processes为实验 。
SQL> SELECT NAME,ISPDB_MODIFIABLE FROM V$PARAMETER WHERE  NAME='processes';
NAME       ISPDB
-------------------- -----
processes      FALSE
SQL> alter system set processes=1000 scope=spfile;
alter system set processes=1000 scope=spfile
*
第 1 行出现错误:
ORA-65040: 不允许从可插入数据库内部执行该操作
我们来看下最关心的一些内存参数的情况
SQL> SELECT name, ispdb_modifiable
  2    FROM V$PARAMETER
  3   WHERE NAME like '%sga%'
  4      or NAME like '%buffer%'
  5      or name like '%pga%'
  6  /
NAME                                                                             ISPDB_MODIFIABLE
-------------------------------------------------------------------------------- ----------------
sga_max_size                                                                     FALSE
pre_page_sga                                                                     FALSE
use_indirect_data_buffers                                                        FALSE
lock_sga                                                                         FALSE
pga_aggregate_limit                                                              FALSE
sga_target                                                                       FALSE
db_block_buffers                                                                 FALSE
buffer_pool_keep                                                                 FALSE
buffer_pool_recycle                                                              FALSE
log_buffer                                                                       FALSE
unified_audit_sga_queue_size                                                     FALSE
pga_aggregate_target                                                             FALSE
12 rows selected

可以看到全是FALSE这就意为着,PDB模式下的内存管理全都是由CDB统一管理分配,如果你想单独对某个PDB指定内存使用的进行分配限制,就需要通过ORACLE的资源管理器进行操作。


以上是关于12C CBD模式下参数文件管理的主要内容,如果未能解决你的问题,请参考以下文章

12c多租户管理五(修改pdb打开模式)

12c多租户管理五(修改pdb打开模式)

Oracle 12C CDBPDB常用管理命令

Oracle 12C CDBPDB常用管理命令

Oracle12c功能增强 新特性之管理功能的增强

oracle 12c 13姨