Mòdul ASGBD

ASGBD - Configuració Oracle

Configuració de l’entorn

Variables d’entorn essencials

🐧 En Linux

Pots veure o configurar aquestes variables amb:

  $ echo $ORACLE_SID
  $ echo $ORACLE_HOME
  $ export ORACLE_SID=orclcdb
  $ export NLS_LANG=SPANISH_SPAIN.WE8MSWIN1252
  $ env       # Llista totes les variables d’entorn
    

Exemple de configuració

  export ORACLE_HOME=/opt/oracle/product/21c/dbhome_1
  export ORACLE_BASE=/opt/oracle
  export ORACLE_SID=costera
  export PATH=$ORACLE_HOME/bin:$PATH
  export NLS_LANG=SPANISH_SPAIN.WE8MSWIN1252
    

🖥️ En Windows

  • Des de cmd amb ECHO (el path)
  • La resta de configuracions, des del registre de windows (REGEDIT)
  > echo %PATH%
  > set
      

Pots modificar-les (el PATH) des de Propietats del sistema → Variables d'entorn.

stop

Per vore les varibles d'entorn d'ORACLE s'ha de fer amb el (REGEDIT) i dins buscar ORACLE_HOME per exemple

Pots modificar-les des del Registre (regedit)

🔧 Exercici pràctic suggerit

Comprova el valor actual del teu ORACLE_SID, i canvia’l a una altra instància com “costera” o “ribera”. Després obre el regedit i comprova on apunta ORACLE_HOME.

Altres variables d'entorn interessants en REGEDIT

Bones pràctiques

Configuració de les connexions

stop

⚠️⚠️ En Windows, no deixar APIPA activat. Posar IP manualment

⚠️⚠️ Permetre el port 1521 en el Firewall 🛡️🧱🔥

Components clau per connectar-se a Oracle

Per establir una connexió entre un client i una base de dades Oracle, es necessita:

📁 Fitxers implicats (ubicació típica)

Fitxer sqlnet.ora

Defineix l'ordre de cerca per resoldre noms:

  SQLNET.AUTHENTICATION_SERVICES = (NONE)
  NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)
    

🛠️ Eines per configurar la xarxa

Exemple:

  $ netca     # Inicia l’assistent gràfic (en Linux o CMD)
  $ netmgr    # (també gràfic)
    

🔍 Verificació amb tnsping

Permet comprovar si la configuració funciona i si el listener està responent:

Esta verificació té sentit si es fa des d'una màquina distinta al servidor

  $ tnsping orcl
    

Eixida esperada:

  Used parameter files:
  /opt/oracle/product/21c/dbhome_1/network/admin/sqlnet.ora
  
  Used TNSNAMES adapter to resolve the alias
  Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))...)
  OK (10 msec)
    

⚠️ Errors habituals

✅ Bones pràctiques

Primera connexió

      $ sqlplus / as sysdba
      C:\Users\enric> sqlplus / as sysdba
      .............
      SQL> show con_name
      SQL> select name from v$database;
      SQL> show user
      SQL> show pdbs
      SQL> show sga
    

Navegar per les PDBs

      $ sqlplus / as sysdba
      SQL> show con_name
      SQL> select name from v$database;
      SQL> show user
      SQL> show pdbs
      SQL> alter session set CONTAINER=PDB1;
      SQL> show pdbs
      SQL> alter session set CONTAINER=PDB2;
      SQL> show pdbs
      SQL> alter session set CONTAINER=cdb$root;
      SQL> show pdbs
    

🔧 Exercicis pràctics suggerits

✔️Instal·lar Oracle Instant Client (sqlplus) en altra màquina de la mateixa xarxa, configurar i fer: tnsping.

✔️Instal·lar SQL Developer en altra màquina de la mateixa xarxa, configurar nova connexió i provar .

stop

Abans de continuar....

Fem un repàs de SQL

Accés al Repàs ..

Configuració de la instància

📘 Què és la instància?

Una instància Oracle necessita una configuració específica per funcionar correctament: memòria, rutes, noms, processos, etc. Aquesta configuració es defineix mitjançant fitxers de paràmetres.

Fitxers de paràmetres

Crear un PFILE a partir d’un SPFILE

SQL> CREATE PFILE FROM SPFILE;

Crear un SPFILE a partir d’un PFILE

SQL> CREATE SPFILE FROM PFILE;

Ubicació típica: (en windows)

$ORACLE_BASE/database/spfileSID.ora

On SID és el nom de la CDB

⚠️ El fitxer spfile no es pot manipular directament, o es produirà un error. Els valors del fitxer s'han de modificar mitjançant sentències SQL ( ALTER SYSTEM SET )

Dins del fitxer spfile___ es guaden els valors dels paràmetres de la instància, que es carregen en memòria només esta arranca.

Tipus de paràmetres

Consultar paràmetres actuals

Consulta de paràmetres:

SQL> SHOW PARAMETER   o   SQL> SHOW PARAMETER sga;
SQL> SHOW SPPARAMETER   o   SQL> SHOW SPPARAMETER sga;

SHOW PARAMETERS->Consulta els valors actuals en ús per la instància.
SHOW SPPARAMETERS ->Consulta els valors que hi ha desats a l’SPFILE (Server Parameter File)

Consulta de totes les fonts dels valors:

SQL> SELECT name, value, isspecified, isdefault 
FROM v$parameter 
WHERE name LIKE 'sga%';

Modificar un paràmetre

Per exemple, modificar la mida de la SGA:

SQL> ALTER SYSTEM SET sga_target=800M SCOPE=SPFILE;

(cal reiniciar perquè tingui efecte)

Reinici de la instància

Per aplicar canvis definitius:

SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
  

Resum d'ordres útils

⚠️ Bones pràctiques

Comptes d’administració

👤 Comptes d'administració predeterminats

Quan es crea una base de dades Oracle (CDB o PDB), es generen automàticament diversos comptes especials:

Aquests comptes es creen automàticament en el moment de crear la base de dades amb l’eina DBCA o amb SQL.

Rols associats

📍 Ubicació dels comptes

Els comptes SYS i SYSTEM s’ubiquen dins la CDB (contenidor principal) i també dins de cada una de les PDB. Estos comptes són uns comptes "especials" anomenats COMUNS, que están en totes les PDBs i en la CDB principal

Es pot canviar de contenidor amb:

SQL> ALTER SESSION SET CONTAINER = nom_pdb;

Canvi de contrasenya

  SQL> ALTER USER system IDENTIFIED BY nova_contrasenya;
  SQL> ALTER USER pdbadmin IDENTIFIED BY segura123;
    

Bones pràctiques

🔍 Consultar rols assignats

  SQL> SELECT * FROM dba_role_privs WHERE grantee = 'SYSTEM';
    

🧪 Exemple pràctic

Crear un nou usuari administrador dins una PDB:

  SQL> ALTER SESSION SET CONTAINER = nom_pdb;
  SQL> CREATE USER admin_pdb IDENTIFIED BY 1234;
  SQL> GRANT dba TO admin_pdb;
    

Arrancada i parada de la instància Oracle

Com arranca una instància Oracle?

Una instància Oracle pot estar en diferents estats:

Ordres per arrancar pas a pas:

  SQL> STARTUP NOMOUNT;
  SQL> STARTUP MOUNT;
  SQL> ALTER DATABASE OPEN;
    

Arrancada completa

Per arrancar la base de dades directament a mode OPEN:

SQL> STARTUP;
stop

⚠️ Necessites rols SYSDBA o SYSOPER per fer aquesta acció.

Parada de la instància

Opcions disponibles:

Exemples:

  SQL> SHUTDOWN IMMEDIATE;
  SQL> SHUTDOWN NORMAL;
  SQL> SHUTDOWN ABORT;
    

En Windows

Executar sqlplus / as sysdba com a usuari oracle o administrador:

  C:\> sqlplus / as sysdba
  SQL> STARTUP;
  SQL> SHUTDOWN IMMEDIATE;
    

🐧 En Linux

Cal que les variables d’entorn estiguin ben configurades:

  $ . oraenv
  $ sqlplus / as sysdba
  SQL> STARTUP;
  SQL> SHUTDOWN IMMEDIATE;
    

Gestionar contenidors (PDB)

Després d'obrir la CDB, cal obrir les PDB individualment si no estan configurades per obrir-se automàticament:

  SQL> ALTER PLUGGABLE DATABASE ALL OPEN;
  SQL> ALTER PLUGGABLE DATABASE nom_pdb OPEN;
    

Per tancar-les:

  SQL> ALTER PLUGGABLE DATABASE ALL CLOSE IMMEDIATE;
  SQL> ALTER PLUGGABLE DATABASE nom_pdb CLOSE IMMEDIATE;
    

Bones pràctiques

Comprovar estat

  SQL> SELECT status FROM v$instance;
  SQL> SELECT name, open_mode FROM v$pdbs;
    

Configuració de l’emmagatzematge

Què és un tablespace?

Un tablespace és una unitat lògica d’emmagatzematge dins d’Oracle. Està format per un o més fitxers de dades (datafiles) que resideixen al disc i contenen les dades reals de la base de dades.

stop

Cada datafile pot estar en un disc físic diferent

Els usuaris guarden les seues dades en els tablespaces, com per exemple USERS, TEMP, SYSTEM, etc.

Crear tablespaces addicionals ajuda a organitzar les aplicacions que es creen sobre la base d'esquemes

Utilitzar tablespaces és fonamental per a la seguretat

Mètodes de gestió de l’espai

Tipus de tablespaces

Consultar informació d’emmagatzematge

Consulta dels tablespaces:

  SQL> SELECT tablespace_name, status from dba_tablespaces;
    

Consulta dels fitxers de dades:

  SQL> SELECT file_name, tablespace_name from dba_data_files;
    

Crear un nou tablespace manualment

Exemple de creació amb gestió manual:

  SQL> CREATE TABLESPACE dades 
  DATAFILE '/opt/oracle/oradata/COSTERA/dades01.dbf' SIZE 10M;
    

Exemple amb autoextensió activada:

  SQL> CREATE TABLESPACE dades 
  DATAFILE '/opt/oracle/oradata/COSTERA/dades01.dbf' 
  SIZE 10M 
  AUTOEXTEND ON 
  NEXT 5M 
  MAXSIZE 100M;
    

Afegir un fitxer de dades a un tablespace

  SQL> ALTER TABLESPACE dades 
  ADD DATAFILE '/opt/oracle/oradata/COSTERA/dades02.dbf' SIZE 20M;
    

Ubicació per defecte (si no s’especifica)

Si no s’indica ruta explícita, Oracle fa servir la variable:

DB_CREATE_FILE_DEST

Exemple de creació automàtica:

  SQL> CREATE TABLESPACE dades;
    

Bones pràctiques

Exemple complet

  CREATE TABLESPACE aplicacio 
  DATAFILE '/opt/oracle/oradata/COSTERA/aplicacio01.dbf' 
  SIZE 20M 
  AUTOEXTEND ON 
  NEXT 5M 
  MAXSIZE UNLIMITED;
  
  CREATE USER us_aplicacio IDENTIFIED BY 1234 
  DEFAULT TABLESPACE aplicacio 
  QUOTA UNLIMITED ON aplicacio;

  // Des de dins de l'usuari
  CREATE table tabla1 ( codi number(6),  Nom varchar2(40) )  TABLESPACE aplicacio;

  CREATE index indice1 on tabla1(nom DESC) TABLESPACE aplicacio;
    

Diccionari de dades

📘 Què és el diccionari de dades?

El diccionari de dades d’Oracle és un conjunt de vistes especials que contenen metadades sobre:

El diccionari és gestionat automàticament per Oracle i està format per milers de vistes prefixades per:

El diccionari s'emmagatzema en l'esquema de SYS. El DD pertany a SYS

SYS està present en CDB$ROOT i en totes les PDB

Les dades del DD estan en MAJÚSCULES

🔍🔍 Consultes habituals

📂 Taules i columnes

  -- Taules creades per l’usuari actual
  SELECT table_name FROM user_tables;
  
  -- Columnes d’una taula concreta
  SELECT column_name, data_type, data_length 
  FROM user_tab_columns 
  WHERE table_name = 'EMPLEATS';
    

👤 Usuaris i rols

  -- Llista d’usuaris
  SELECT username FROM dba_users;
  
  -- Rols assignats a un usuari
  SELECT * FROM dba_role_privs WHERE grantee = 'SYSTEM';
    

🔐 Privilegis

  -- Privilegis d’usuari
  SELECT * FROM user_sys_privs;
  
  -- Privilegis de rol
  SELECT * FROM role_sys_privs WHERE role = 'DBA';
    

📁 Estructures d’emmagatzematge

  -- Fitxers de dades
  SELECT file_name, tablespace_name, bytes/1024/1024 AS MB 
  FROM dba_data_files;
  
  -- Espai lliure
  SELECT tablespace_name, file_id, block_id, bytes/1024/1024 AS MB 
  FROM dba_free_space;
    

📘 Bones pràctiques

Consell final

El diccionari de dades és clau per conèixer l'estat intern de la base de dades, i resulta imprescindible per a administradors i desenvolupadors.

🧾 Quadern de bitàcola (Redo Log Files)

📒 Què és?

El quadern de bitàcola en Oracle (en anglès, log file o redo log) és un concepte clau per garantir la recuperació de dades i la integritat del sistema en cas de fallada.

El 'quadern' es composa d'un grup de fitxers especials que Oracle utilitza per registrar tots els canvis que es fan a la base de dades, abans que aquests es confirmen físicament als fitxers de dades

També conegut com: Redo log files, Fitxers de redo, Fitxers de registre de redo

Els fitxers redo log són fitxers essencials que enregistren totes les modificacions fetes a la base de dades. Aquest registre permet a Oracle recuperar les dades en cas de fallada abans que les dades siguin escrites definitivament als fitxers de dades.

🔧 Per a què serveix?

🗂️ Tipus de redo logs:

També s'anomenen ONLINE REDO LOG i OFFLINE REDO LOG

🔁 Funcionament cíclic

Oracle utilitza un conjunt de fitxers redo log en mode circular (anells). Quan un fitxer es plena, s’escriu al següent. Quan es completa un cicle, torna a començar pel primer.

Com més grups de redo logs tinguis, més eficiència i seguretat ofereix el sistema.

Estructura típica

Una instància pot tenir múltiples grups de redo logs, cadascun amb un o més membres (fitxers físics replicats):

   GROUP 1 → redo01.log
   GROUP 2 → redo02.log
   GROUP 3 → redo03.log
   
stop

Normalment hi ha tres fitxers Redo Log, que van rotant. Quan un es plena, pasa al següent, i quan l'últim es plena, pasa altra vegada al primer

El procés de memòria LGWR s'encarrega de fer açò.

    (forçar rotació dels fitxers Redo Log)
    SQL> alter system switch logfile;
    

Afegir un nou grup de redo logs

    SQL> ALTER DATABASE ADD LOGFILE GROUP 4 
    ('/opt/oracle/oradata/NOM_BBDD/redo04.log') SIZE 50M;
    

Afegir un membre (fitxer addicional) a un grup existent

    SQL> ALTER DATABASE ADD LOGFILE MEMBER 
    '/opt/oracle/oradata/NOM_BBDD/redo01b.log' TO GROUP 1;
    

🔍 On es troben?

Pots veure on estan consultant el DD:
     SELECT member FROM v$logfile; 
     select * from v$log; 

📍 Ubicació típica dels redo logs

/opt/oracle/oradata/NOM_BBDD/redo0X.log

(Es defineix durant la creació de la base de dades amb DBCA)

⚠️En un entorn de producció, estos fitxers deurien estar en un disc físic diferent al que conté els datafiles

En cas d’error amb els redo logs

Poden impedir l’inici de la base de dades. Per exemple, si s’esborra un fitxer o falla un disc.

Es pot fer servir una ordre com:

SQL> ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 1;

⚠️ Només per a casos d’emergència!


ARCHIVELOG o Offline Redo Log

stop

El Online Redo Log ve activat per defecte, però el Offline Redo Log ve desactivat per defecte

El procés de memòria ARCH s'encarrega de portar el Offline Redo Log, també conegut com ARCHIVELOG.

ARCHIVELOG guarda fora de línia els arxuis redo log que no estan actius. D’esta manera, quan es fa la transició de l’últim al primer, abans el primer s’ha guardat fora de línia, i no hi ha perill de sobreescriure transicions que ocupen massa espai

Com activar el ARCHIVELOG

SQL> archive log list
SQL> alter system set log_archive_dest_1='LOCATION=/archivelog/carpeta/arch' SCOPE=SPFILE;
SQL> alter system set log_archive_format='arch_%r_%t_%s.arc' scope=spfile;
SQL> alter system set LOG_ARCHIVE_START=TRUE SCOPE=spfile;
SQL> shutdown immeditate; startup mount;
SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list
SQL> select name, log_mode from v$database;
SQL> ALTER SYSTEM SWITCH LOGFILE;

Bones pràctiques

🧾 Fitxers log

Què són els fitxers log?

Els logs en Oracle fan referència als fitxers de registre que el sistema genera automàticament per monitorar l’activitat, errors i operacions internes. Aquests fitxers són imprescindibles per a qualsevol tasca de diagnòstic o auditoria.

Tipus de logs

📁 Ubicació dels fitxers

El fitxer d’alertes sol anomenar-se:

alert_SID_.log

🔍 Consultar l’alert log

Es pot visualitzar amb qualsevol editor de text, però també es pot consultar des de SQL amb:

  SQL> SELECT value FROM v$diag_info WHERE name = 'Diag Trace';
    

També pots consultar entrades recents:

  $ tail -f alert_costera.log   # En temps real (Linux)
    

📞 Listener log

El fitxer de registre del listener mostra informació sobre connexions, errors i temps de resposta.

Ubicació típica:

  $ORACLE_BASE/diag/tnslsnr/<host>/listener/trace/listener.log
    

Recomanacions

Ordre útil

  SQL> SELECT name, value FROM v$diag_info;
    

Això te mostra totes les rutes del sistema de diagnòstic: logs, trace, incidents, etc.

Tablespaces i Datafiless

link

Ús d'sqlplus

link

Gestió de Dates en ORACLE

link