Salta el contingut
 

Pràctica guiada: Paràmetres de configuració

Joan Puigcerver Ibáñez

j.puigcerveribanez@edu.gva.es

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Què són els paràmetres de configuració?

Els paràmetres de configuració de la base de dades, també coneguts com a paràmetres d’inicialització, defineixen el comportament i la configuració de la instància d’Oracle.

Els paràmetres poden ser de dos tipus.

Paràmetres Dinàmics

  • Es poden modificar en temps real, sense necessitat de reiniciar la base de dades.
  • Les modificacions poden aplicar-se:
  • A nivell de sessió, amb ALTER SESSION
  • A nivell de sistema, amb ALTER SYSTEM

Paràmetres Estàtics

  • Paràmetres del sistema (SYSTEM).
  • Requereixen reiniciar la base de dades per a aplicar els canvis.
  • Solen tindre un impacte major en l’arquitectura interna d’Oracle.
  • Les modificacions s’han de fer en el SPFILE.

  • La configuració de la instància d’Oracle es gestiona mitjançant un fitxer anomenat SPFILE (Server Parameter File), que es llig automàticament quan s’inicia la instància.

  • El SPFILE conté els valors dels paràmetres de configuració.

Ubicació del SPFILE

Segons el sistema operatiu, el SPFILE es troba en una ubicació diferent:

  • En Linux/Unix:

    $ORACLE_BASE/dbs/spfile<SID>.ora
    
    Exemple: spfileXE.ora

  • En Windows:

    %ORACLE_BASE%\database\spfile<SID>.ora
    

SID (System Identifier) és el nom de la instància de la base de dades.

Podeu consultar els fitxers SPFILE disponibles amb SHOW PARAMETER spfile.

SHOW PARAMETER spfile;
NAME             TYPE        VALUE
---------------- ----------- ------------------------------
spfile           string      /opt/oracle/dbs/spfileXE.ora

Consulta de Paràmetres

Informes

Des de l'extensió SQL Developer per a Visual Studio Code, podem consultar els informes (reports), en aquest cas, per consultar tots els paràmetres de configuració de la base de dades.

  • Premeu el desplegable de la barra lateral esquerra i seleccioneu l'opció Reports.
  • Seleccioneu l'informe Database Parameters.
  • Ací podeu triar entre veure:
    • All Parameters: tots els paràmetres.
    • Non-default Parameters: només els paràmetres que no tenen el valor per defecte.

Informe de paràmetres de configuració

Figura 1. Informe de paràmetres de configuració

Consultes sobre les vistes de diccionari de dades

També podem consultar els paràmetres de configuració mitjançant consultes SQL sobre les vistes de diccionari de dades.

  • v$parameter: mostra els paràmetres de configuració actuals.
  • v$system_parameter: mostra els paràmetres de configuració que es poden canviar en temps d'execució.
  • v$spparameter: mostra els paràmetres de configuració del fitxer spfile, que sols es poden canviar reiniciant la base de dades.
ud1/parameters.sql
-- Paràmetres de la sessió actual
select name, value, default_value, ismodified
from v$parameter
where name in ('nls_date_format', 'nls_timestamp_format', 'nls_numeric_characters', 'optimizer_mode', 'query_rewrite_enabled', 'recyclebin');

-- Paràmetres del sistema
select name, value, default_value, ismodified
from v$system_parameter
where name in ('nls_date_format', 'nls_timestamp_format', 'nls_numeric_characters', 'optimizer_mode', 'query_rewrite_enabled', 'recyclebin');

-- Paràmetres del fitxer spfile
select *
from v$spparameter
where name in ('nls_date_format', 'nls_timestamp_format', 'nls_numeric_characters', 'optimizer_mode', 'query_rewrite_enabled', 'recyclebin');

Modificació de Paràmetres

L’ordre general per a modificar un paràmetre és:

ALTER SESSION SET paràmetre = valor;
ALTER SYSTEM SET paràmetre = valor [SCOPE = {SPFILE | MEMORY | BOTH}];

Explicació dels camps:

  • ALTER SYSTEM:
    Aplica el canvi a tot el sistema (totes les sessions).

  • ALTER SESSION:
    Aplica el canvi només a la sessió actual.

  • SCOPE:
    Indica on i quan té efecte el canvi. Només s’utilitza amb ALTER SYSTEM.

Valor de SCOPE Descripció
SPFILE Modifica el valor al fitxer SPFILE. Els canvis s’apliquen en el següent arrenc de la instància.
MEMORY El canvi té efecte immediat, però no es guarda al SPFILE (es perd en reiniciar).
BOTH El canvi es fa tant en memòria com en el SPFILE.

Només els paràmetres dinàmics permeten SCOPE=MEMORY o SCOPE=BOTH.
Els estàtics sols poden canviar-se amb SCOPE=SPFILE (requereixen reinici).

Exercici: canvi de paràmetres

Paràmetre Valor
nls_date_format DD/MM/YYYY
nls_timestamp_format DD/MM/YYYY HH24:MI:SS
nls_numeric_characters ,
optimizer_mode First_rows_100
query_rewrite_enabled false
recyclebin off
  1. Modifica els paràmetres anteriors a nivell de sessió:

    Solution
    ALTER SESSION SET NLS_DATE_FORMAT ='DD/MM/YYYY';
    ALTER SESSION SET nls_timestamp_format ='DD/MM/YYYY HH24:MI:SS';
    ALTER SESSION SET nls_numeric_characters =', ';
    ALTER SESSION SET optimizer_mode = First_rows_100;
    ALTER SESSION SET query_rewrite_enabled = false;
    ALTER SESSION SET recyclebin = off;
    
  2. Comprova els canvis realitzats a nivell de sessió.

    Solution
    select *
    from NLS_SESSION_PARAMETERS
    where parameter in ('NLS_DATE_LANGUAGE', 'NLS_DATE_FORMAT', 'NLS_TIMESTAMP_FORMAT', 'NLS_TIMESTAMP_TZ_FORMAT','NLS_ISO_CURRENCY', 'NLS_TERRITORY');
    
  3. Modifica els mateixos paràmetres a nivell de sistema, amb els canvis permanents (requereix reinici de la base de dades).

    Solution
    ALTER SYSTEM SET NLS_DATE_FORMAT ='DD/MM/YYYY' scope=SPFILE;
    ALTER SYSTEM SET nls_timestamp_format ='DD/MM/YYYY HH24:MI:SS' scope=SPFILE;
    ALTER SYSTEM SET nls_numeric_characters =', ' scope=SPFILE;
    ALTER SYSTEM SET optimizer_mode = First_rows_100 scope=BOTH;
    ALTER SYSTEM SET query_rewrite_enabled = false scope=BOTH;
    ALTER SYSTEM SET recyclebin = off scope=SPFILE;
    
  4. Comprova els canvis realitzats a nivell de sistema.

    Solution
    select *
    from v$system_parameter
    where name in ('nls_date_format', 'nls_timestamp_format', 'nls_numeric_characters', 'optimizer_mode','query_rewrite_enabled', 'recyclebin');
    

Exercici: canvi d'idioma

  • Busca el paràmetre relacionat amb l’idioma de les dates (ajuda’t de v$nls_parameters) i mostra’n el valor actual.
  • Assigna-li el valor corresponent a l’alemany.
  • Torna a mostrar el valor del paràmetre.
  • Mostra el mes actual (haurà de vore’s el mes en alemany):

    SELECT TO_CHAR(SYSDATE, 'Month') AS mes FROM dual;
    
  • Torna a deixar el valor per defecte.

  • Mostra el mes actual (haurà de vore’s amb l'idioma per defecte):
📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.