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 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
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
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
------------------------------------ ----------- ------------------------------
ddl_lock_timeout integer 0
Valor default do parâmetro no PDB:
[oracle@oracle01 ~]$ sqlplus sys@pdb1 as sysdbaSQL*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 2013Copyright (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
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
ddl_lock_timeout integer 10
SQL> select name,ispdb_modifiable from v$system_parameter
where ispdb_modifiable='TRUE';
SQL> CONNECT sys@pdb1 AS SYSDBA
Connected.
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
[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.
where ispdb_modifiable='TRUE';
SQL> CONNECT sys@pdb1 AS SYSDBA
Connected.
SQL> show con_name
CON_NAME
------------------------------
PDB_TESTE1
CON_NAME
------------------------------
PDB_TESTE1
SQL> ALTER SYSTEM SET ddl_lock_timeout=20;
System altered.
SQL> show parameter ddl_lock
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
ALTER SYSTEM SET parameter_name=value CONTAINER=ALL;
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.
Referências:
Abraço
Alex Zaballa
0 comentários:
Postar um comentário