Entendendo a Visão v$parameter

Varias vezes nos perguntamos se parâmetro “Y” ou Parâmetro “X” é dinâmico (precisa restartar o banco ou não) ou mesmo se o parâmetro serve apenas para a instância, até mesmo se é um parâmetro de seção ou global.

Bom, vamos tentar facilitar o entendimento desses parâmetros abaixo.

Conforme no Note ID [43750.1] temos a referencia desta visão.
Vamos tentar identificar os campos dela e veremos como é facil de trabalhar com esta tabela para descobrir insformações sobre qualquer parâmetro.

SQL> desc v$parameter
 Name                                      Null?    Type
 ----------------------------------------- -------- -------------
 NUM                                                NUMBER
 NAME                                               VARCHAR2(80)
 TYPE                                               NUMBER
 VALUE                                              VARCHAR2(512)
 DISPLAY_VALUE                                      VARCHAR2(512)
 ISDEFAULT                                          VARCHAR2(9)
 ISSES_MODIFIABLE                                   VARCHAR2(5)
 ISSYS_MODIFIABLE                                   VARCHAR2(9)
 ISINSTANCE_MODIFIABLE                              VARCHAR2(5)
 ISMODIFIED                                         VARCHAR2(10)
 ISADJUSTED                                         VARCHAR2(5)
 ISDEPRECATED                                       VARCHAR2(5)
 DESCRIPTION                                        VARCHAR2(255)
 UPDATE_COMMENT                                     VARCHAR2(255)
 HASH                                               NUMBER
 

Bom segue abaixo o que cada campo faz.

NUM = Numero id do parâmetro.

Name = Nome do parâmetro.

Type = Tipo do parâmetro (não vou explicar aqui já que farei uma query com decode que explicará o campo)

Value = Valor do parâmetro.

Display_value = Valor em que é mostrado caso você efetue um “show parameter”
Antes que ocorram questionamentos, existem parâmetros de memória (por exemplo) que possam vir com o valor em bytes como “104857600” neste campo mostraria “100M”

Isdefault = Mostra “TRUE” ou “FALSE” se o valor é padrão do oracle ou não.

Isses_modifiable = Informa se o valor é modificalvel por “ALTER SESSION”. Mostra “TRUE” ou “FALSE”.

Issys_modifiable = Informa se o valor é modificalvel por “ALTER SYSTEM”. Neste parâmetros temos 3 campos.
IMMEDIATE = O parâmetro pode ser alterado via “ALTER SYSTEM” e é immediato ou seja não é necessário reboot do sistema.
DEFERRED = O parâmetro pode ser alterado via “ALTER SYSTEM” mas deferá ser reiniciado o banco para fazer efeito.
FALSE = O parâmetro não pode ser alterado via “ALTER SYSTEM”.

Isinstance_modifiable = Indica se o parâmetro pode ser diferente para duas instâncias sobre o mesmo Database.

Ismodified = Informa o tipo de mofificação do parâmetro. Neste parâmetros temos 3 campos.
MODIFIED = Parâmetro modificado via “ALTER SESSION”.
SYSTEM_MOD = Parâmetro modificado via “ALTER SYSTEM”.
FALSE = Parâmetro não modificado após startup da instancia.

Isadjusted = Caso o parâmetro não seja Primo este campo ajusta para um numero primo.

Isdeprecated = insdica se o parâmetro é ou não depreciado. Mostra “TRUE” ou “FALSE”.
Este campo é o responsável pelo erro “ORA-32006: %s initialization parameter has been deprecated” caso estiver como TRUE.

Description = campo de descrição.

Update_comment = Responsável por guardar os comentários caso você adicione algum na hora de trocar o parâmetro.

Hash = Mostra o hash do parâmetro.

Caso você tenha o Oracle 11G você ainda pode ter esta coluna.
Isbasic = Indica se é um parâmetro basico do banco. Mostra “TRUE” ou “FALSE”.

Após toda esta descrição da visão vamos ao que interessa.

Caso você queira saber se o seu parâmetro é dinâmico, ou seja se ele altera sem ter a necessidade de reiniciar a instância até mesmo se da de utilizar parâmetros diferentes por instâncias.

SQL> set lines 150
SQL> COL NAME FOR A30
SQL> COL ALTER_SESSION FOR A15
SQL> COL ALTER_SYSTEM FOR A15
SQL> COL ALTERADO_POR_SID FOR A16
SQL> select t.name,
       t.ISSES_MODIFIABLE "ALTER_SESSION",
       t.ISSYS_MODIFIABLE "ALTER_SYSTEM",
       T.Isinstance_modifiable "ALTERADO_POR_SID",
       decode(t.type,
              1,
              'BOOLEANO',
              2,
              'STRING',
              3,
              'INTEIRO',
              4,
              'ARQUIVO DE PARAMETRO',
              5,
              'RESERVADO',
              6,
              'BIG INTEGER') "TIPO DE DADOS"
  from v$parameter t
 where name LIKE LOWER('%&NOME%');
Enter value for nome: date
old  19:  where name LIKE LOWER('%&NOME%')
new  19:  where name LIKE LOWER('%date%')

NAME                           ALTER_SESSION    ALTER_SYSTEM    ALTERADO_POR_SID TIPO DE DADOS
------------------------------ ---------------- --------------- ---------------- --------------------
nls_date_language              TRUE             FALSE           FALSE            STRING
nls_date_format                TRUE             FALSE           FALSE            STRING
fixed_date                     FALSE            IMMEDIATE       TRUE             STRING

SQL> /
Enter value for nome: index_cost
old  19:  where name LIKE LOWER('%&NOME%')
new  19:  where name LIKE LOWER('%index_cost%')

NAME                           ALTER_SESSION    ALTER_SYSTEM    ALTERADO_POR_SID TIPO DE DADOS
------------------------------ ---------------- --------------- ---------------- --------------------
optimizer_index_cost_adj       TRUE             IMMEDIATE       TRUE             INTEIRO

SQL> /
Enter value for nome: audit_file
old  19:  where name LIKE LOWER('%&NOME%')
new  19:  where name LIKE LOWER('%audit_file%')

NAME                           ALTER_SESSION    ALTER_SYSTEM    ALTERADO_POR_SID TIPO DE DADOS
------------------------------ ---------------- --------------- ---------------- -------------------
audit_file_dest                FALSE            DEFERRED        TRUE             STRING

Temos os três tipos de parametros nestes exemplos.

Use sem moderação.

%name Entendendo a Visão v$parameter

Autor: Leandro Lana

Trabalho com banco de dados Oracle desde 2006, já trabalhei com as plataformas 9i, 10G, 11G e 12C.

Trabalhando atualmente como consultor Oracle na MigraTI Soluções em TI como administrador de banco de dados Oracle, SQL-Server e DB2.

Contato: leandro.lana@migrati.com.br

Fone: (47) 9191-6052 / (47) 3328 0996

Certificações:

OCA 10G.

OCP 10G.

OCE Linux.

OCE RAC/Cluster.

MCP SQL-Server 2008.

MCITP SQL-Server 2008.

DB2 Fundamentals.