12c - 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:


Abraço


Alex Zaballa

0 comentários: