# Oracle FAQ (Curso DBA UTN)

Esta página o sección necesita una revisión de ortografía y gramática. Puedes ayudar editándolo

## Preguntas frecuentes

Esta es una lista de consultas frecuentes referidas a la base de datos Oracle.

### Instalacion
#### Como saber que bases de datos estan instaladas en un servidor?

    La forma mas simple es mirar el archivo /etc/oratab (/var/opt/oracle/oratab en Solaris). Alli deberia listarse todas las instancias del equipo, su oracle home, y si se inicial automaticamente con el comando dbstart. Sin embargo, puede ocurrir que el DBA creo una base manualmente y se olvido de agregarla a este archivo. Otra manera es ir, en cada oracle home instalado, al directorio $ORACLE_HOME/dbs y buscar los initSID.ora (o spfileSID.ora).

#### Como verificar si la base de datos se encuentra configurada en modo ARCHIVELOG o en modo NOARCHIVELOG?

    Esto es posible verificarlo mediante las siguientes acciones:
    1 - Comando ARCHIVE LOG LIST
    2 - Ver el parametro LOG_MODE en V$DATABASE

#### Donde puedo encontrar la URL para acceder a Enterprise Manager?

    Se puede consultar el archivo $ORACLE_HOME/install/readme.txt buscando la linea "Enterprise Manager Database Control URL - (ORACLE_SID) :".
    Alli se puede observar la URL correspondiente de la forma http://[HOST]:[PUERTO]/em
    Tambien es posible ver la URL al iniciarlo: export ORACLE_SID=XXX; emctl start dbconsole

### Administración
#### Como determinar el tamaño general de una base de datos

La parte mas grande del la base de datos está compuesta por los datafiles. Para saber cuantos megabytes estan asignados a todos los datafiles:
Para conocer el tamaño total de los archivos temporales:
Para conocer el tamaño de todos los redo-logs en linea:
Todo lo anterior en una única consulta:
Otra consulta para concer el tamaño de la base de datos donde "Free space" indica la suma del espacio libre de todos los datafiles:
Para conocer el espacio libre y el espacio utilizado por cada tablespace de la base de datos:
Para generar las sentencias ALTER que permitan hacer un RESIZE de los datafiles que tienen espacio libre, es posible utilizar la siguiente consulta:
-- Es necesario especificar el tamaño del bloque en en parámetro &&blocksize

### SQL Tuning
#### Como ver los SQL Profiles activos en una instancia?

    La siguiente es una lista de todas las vistas con incumbencia en el SQL Advisor:

#### ¿ Cuáles son las intrucciones para generar un link entre a distintas bases ?

    Para crear un Database Link es necesario, primero, tener el privilegio "CREATE DATABASE LINK" o ser un usuario DBA (notar sin embargo que un usuario DBA no puede crear un database link en el esquema de otro usuario).
    Ademas del privilegio es necesario conocer el usuario y contraseña de la base destino a donde deseamos conectarnos, asi como tambien su TNS STRING. El string usualmente es un alias (que tiene que estar definido en el tnsnames.ora del servidor). El comando final es:
    Nota: no es recomendable usar PUBLIC database links por cuestiones de seguridad. Cualquier usuario en la base puede ver y utilizar un database link publico.

### RMAN
#### ¿Como puedo duplicar una base de datos en otro servidor?

    En este ejemplo llamamos PROD y TEST a las bases origen y destino respectivamente. Como primera medida debemos tomar un backup full de la base y archive logs. Vamos a suponer que usamos catalogo de recuperacion y que podemos conectarnos al mismo desde ambos equipos. Es posible realizar el pasaje sin usar catalogo (transfiriendo un backup del control file tomado posteriormente a la toma del backup full).
    Con el backup listo (o en tramite ;) ) realizamos un backup del spfile de PROD:
    En nuestro equipo destino copiamos todo el backup de RMAN respetando la estructura de directorios donde fue tomada. Si no tenemos esa estructura, es posible restaurar recatalogando cada archivo de backup (CATALOG BACKUP PIECE '/new/path/to/backupfile';).
    Luego levantamos la base TEST (nomount) utilizando el pfile generado anteriormente. Recordar reemplazar los parametros del pfile necesarios:
    Si queremos restaurar los datafiles en otra estructura de directorios, entonces agregar estas lineas para convertir los nombres de los archivos durante el restore:
    Finalmente corremos el RMAN conectado como target a la base origen y como auxiliary a la base destino que queremos crear.
    Y finalmente ejecutamos el duplicate:

### Vistas
#### ¿Cuales son las vistas indispensables para la administración diaria de la base de datos?

ALL_VIEWS; USER_VIEWS;
ALL_OJECTS; USER_OBJECTS;
ALL_CATALOG; USER_CATALOG;
ALL_TABLES; USER_TABLES;
ALL_TAB_COLUMNS; USER_TAB_COLUMNS;
ALL_TAB_COMMENTS; USER_TAB_COMMENTS;
ALL_COL_COMMENTS; USER_COL_COMMENTS;
ALL_INDEXES; USER_INDEXES;
ALL_IND_COLUMNS; USER_IND_COLUMNS;
ALL_SEQUENCES; USER_SEQUENCES;
ALL_SYNONYMS; USER_SYNONYMS;
ALL_DEPENDENCIES; USER_DEPENDENCIES;