Instance Parameters – CDB / PDB
Para alterar os parâmetros de um CDB, basicamente procedemos da mesma forma utilizada anteriormente nos bancos non-CDB. Adicionalmente podemos utilizar a clausula container.
ALTER SYSTEM SET parameter_name=value;
ALTER SYSTEM SET parameter_name=value CONTAINER=CURRENT;
ALTER SYSTEM SET parameter_name=value CONTAINER=ALL;
Vale lembrar que na arquitetura Multitenant, o SPFILE está “ligado” ao CDB.
Os valores dos parâmetros estão associados ao CDB e servem como valores padrão para todos os outros PDBs.
Valor default do parâmetro no CDB:
SQL> show con_name
CON_NAME
----------
CDB$ROOT
SQL> show parameter ddl_lock
NAME TYPE VALUE
------------------------ -------- -------
ddl_lock_timeout integer 0
Valor default do parâmetro no PDB:
[oracle@oracle01 ~]$ sqlplus sys@pdb1 as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Tue Nov 26 10:46:50 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options
SQL> show parameter ddl_lock
NAME TYPE VALUE
------------------------ -------- --------
ddl_lock_timeout integer 0
Alterando o parâmetro no CDB:
SQL*Plus: Release 12.1.0.1.0 Production on Tue Nov 26 10:48:02 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options
SQL> show con_name
CON_NAME
-----------
CDB$ROOT
SQL> alter system set ddl_lock_timeout=10 CONTAINER=ALL;
System altered.
SQL> show parameter ddl_lock
NAME TYPE VALUE
------------------------ -------- -------
ddl_lock_timeout integer 10
Podemos verificar que o parâmetro também foi alterado no PDB:
[oracle@oracle01 ~]$ sqlplus sys@pdb1 as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Tue Nov 26 10:50:52 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options
SQL> show parameter ddl_lock
NAME TYPE VALUE
------------------------ -------- ------
ddl_lock_timeout integer 10
É possível ter valores de parâmetros diferentes para um PDB. Para isso, consultamos a view V$PARAMETER ou V$SYSTEM_PARAMETER verificando a coluna ISPDB_MODIFIABLE.
SQL> select name,ispdb_modifiable from v$system_parameter
where ispdb_modifiable='TRUE';
SQL> CONNECT sys@pdb1 AS SYSDBA
Connected.
SQL> show con_name
CON_NAME
------------
PDB_TESTE1
SQL> ALTER SYSTEM SET ddl_lock_timeout=20;
System altered.
SQL> show parameter ddl_lock
NAME TYPE VALUE
------------------------ -------- ------
ddl_lock_timeout integer 20
SQL> select PDB_UID, NAME, VALUE$ from pdb_spfile$;
PDB_UID NAME VALUE$
---------- ----------------- -------
3012057083 ddl_lock_timeout 20
SQL> select VALUE, ISPDB_MODIFIABLE, CON_ID
from V$SYSTEM_PARAMETER
where name ='ddl_lock_timeout'; 2 3
VALUE ISPDB CON_ID
----------- ----- ----------
10 TRUE 0
20 TRUE 3
Os parâmetros alterados a nível de PDB:
- São carregados na memória após o close do PDB
- São armazenados no dicionário após o close do CDB
- Se aplica apenas para os parâmetros ISPDB_MODIFIABLE=TRUE
A persistência dos parâmetros no CDB e PDB possuem as mesmas implicações de antes. Os parâmetros estáticos só terão efeito se você reiniciar o banco de dados enquanto parâmetros dinâmicos entrarão em vigor imediatamente.
Além disso, se você desplugar um PDB e depois replugar em outro CDB, os parâmetros alterados serão transferidos também.
Uma observação importante, é que ao utilizar CONTAINER=ALL na alteração do parâmetro no CDB, o valor desse parâmetro também será alterado em todos os PDBs, mesmo que ele já tenha sido alterado no PDB.
ALTER SYSTEM SET parameter_name=value CONTAINER=ALL;
Referências
- SGA Instance Parameters in CDB and PDB
- Multitenant Configure Instance Parameters of CDB and PDB 12c R1
Abraço