EJERCICIOS GESTIÓN INSTANCIA ORACLE 1. Localiza el fichero init.ora (y spfile.ora si existe) de nuestra BD. C:\oraclexe\app\oracle\product\11.2.0\server\config\scripts Nos vamos a equipo. Unidad C:\ Pinchamos en Oraclexe. Pinchamos en app. Pinchamos en Oracle. Pinchamos en product. Pinchamos en la carpeta 11.2.0 Pinchamos en Server. Pinchamos en la carpeta confing. Pinchamos en la carpeta scripts. Y encontramos el archivo init.ora En mi caso no existe el archivo spfile.ora 2. Anota el valor de los parámetros: control_files, sessions y undo_tablespace. Abrimos el archivo init.ona con nuestro blog de nota o con un programa de lector de archivos como el notepad. Control files: Sessions: undo_tablespace: 3. Arranca la BD (startup) y anota el valor de los parámetros: Total System Global Area, Fixed Size, Variable Size y Database Buffers. (ORA01081: no se puede iniciar ORACLE cuando ya se está ejecutando cierre primero Si encontráis el siguiente error es porque la BD ya está abierta y no es necesario arrancarla). Vemos que nuestra base de datos está conectada. Lo que tenemos que realizar es cerrarla con el comando shutdown. Una vez que ya está cerrada, la volvemos a arrancar con el comando startup. Nos ofrecerá los parámetros de total system gobal área, fixed size, variable size, datataba buffers, redo buffers. 4. Investiga el valor de los siguientes parámetros: SQL> show parameter processes SQL> show parameter sga_target SQL> show parameter sga_max_size SQL> show parameter db_block_size SQL> show parameter log_buffer SQL> show parameter db_cache_size SQL> show parameter shared_pool_size 5. Arranca sólo la instancia (NOMOUNT) y consultar algún parámetro. Qué ocurre al acceder a V$CONTROLFILE (por ejemplo, con un describe) y por qué. En mi caso cerramos primero la base de datos con el comando shutdown. La volvemos a inicializar con el comenado startup nomount. Al arrancar sólo la instancia, podemos consultar los parámetros del init (o el spfile), ya que este fichero se lee justo antes de arrancar la instancia. Pero, al indicar NOMOUNT, todavía NO SE HA ABIERTO EL FICHERO DE CONTROL, por lo que no tendremos acceso a su contenido y tampoco a las tablas estáticas del DD que están almacenadas en la BD, cuyos ficheros tampoco se han abierto. Al ponder desc v$controlfile; O también describe v$controlfile Vemos los datos de la tabla. Escribimos una seleccionamos todos sobre la table v$controlfile. Indicamos select * from v$controlfile; Pero en este caso nos dice que no hay filas seleccionadas. 6. Montar la BD. Consultar V$CONTROLFILE. Para obtener nombre y ruta del control file: SQL>select name from v$controlfile; Qué sucede al intentar leer de la tabla DBA_USERS. Al montar la BD, se abre el fichero de control leyendo su contenido, de forma que ya sabemos la ubicación y el nombre de cada uno de los ficheros que componen la BD. La BD no la hemos abierto por lo que no podemos ver la tabla DBA_USERS. Primero montamos la base de datos, con alter database mount; Para obtener nombre y ruta del control file: SQL>select name from v$controlfile; El archivo de la base de datos donde está montada. Ponemos select count(*) from v$logfile; Nos indica que hay dos archivos log. Qué sucede al intentar leer de la tabla DBA_USERS. Que no existe dba_users en la base de datos. 7. Abrir la BD y leer DBA_USERS. Para abrir la base de datos. sql>alter database open; Si la leemos, nos dice que no existe. 8. Cierra la BD (shutdown) Indicamos shutdown 9. Impide las conexiones de usuarios, de modo que el DBA sí pueda conectarse. Intenta conectarte como hr y comprueba que no puedes. Volver a permitir conexiones de usuarios. Logueada como sysdba: • Si la BD está parada SQL>STARTUP RESTRICT • Si la BD está arrancada SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION; Desde SQL.Command Line inicio otra sesión logueada ahora como hr SQL>connect hr y comprobaré que no me dejará conectarme 10. Recuperación de la BD (se realiza si no funciona la base de datos) En algunas ocasiones Oracle muestra errores muy generales (error en el enlace, en la conexión, archivos corruptos...) que nos impiden seguir manejando la BD (ya que aunque la instancia permanece abierta la BD está montada (pero cerrada) y por eso no permite acceder a datos). Es recomendable intentar recuperar la BD y solucionar el error. Logueadas as sysdba: SQL> recover database; Media recovery complete. SQL> alter database open; Database altered. Cuando esto no nos resuelve el problema es aconsejable (en la misma sesión, es decir, seguimos loguedos as sysdba) cerrar la instancia y volverla abrir montando la BD, hacerle entonces el recovery y luego abrir la BD. SQL> shutdown immediate OK SQL> startup mount OK SQL> recover database; Media recovery complete. SQL> alter database open; Database altered. 11. Cerrar la BD y abrirla en modo READ ONLY, y crear una tabla. Activar modo READ WRITE y volver a crear la tabla. Para abrir la BD en modo READ ONLY, primero debemos arrancar la BD sin abrirla (MOUNT), si no está ya en ese estado (si está abierta la cerraremos). Lo primero que hacemos es conectarnos al sys Ponemos connect sys as sysdba Cerramos la base de datos con shutdown La inicializar con el comenado startup nomount. Para abrir la BD en modo READ ONLY sql>alter database open read only; sql>create table system.mitabla(c1 varchar2(2)) tablespace users; Como hemos visto, en modo readonly no podemos crear una tabla pues los ficheros de la BD están en modo de sólo lectura. Si abrimos la BD en modo normal (readwrite), no tendremos problemas para crear la tabla. No tiene que funcionar porque solo está en lectura. Cerramos la base de datos con shutdown La inicializar con el comenzado startup mount Y realizo un alter database open read write; Creamos una tabla create table system.mitabla(c1 varchar2(2)) tablespace users;