Practicas UNDO

download Practicas UNDO

of 51

Transcript of Practicas UNDO

Practicas Tema 6Espacio de UNDOAutor Eduardo Bayn Cascajo Profesor: Santiago Blanco Asignatura: Administracin de Base de Datos 22/12/2011

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Practicas tema 6, el espacio de undo1. Conectado como usuario system o sysdba a la base de datos, consultar la vista database_properties. Observar los distintos parmetros de los que se nos ofrece informacin en la vista. Arrancamos la BD y nos conectamos como usuario sysdba:

Comprobamos los distintos parmetros existentes que nos ofrece la vista database_properties:

Pgina 1 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Pgina 2 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

2. Consultar el fichero de inicializacin de la base de datos y averiguar cuales de los parmetros de undo estn definidos y su valor actual. Podemos hacer desde dentro de la consola de Oracle o desde un terminal de Ubuntu:

3. Averiguar cuntos espacios de undo estn definidos en la base de datos (nombre, caractersticas de almacenamiento, ...) Comprobamos la vista dba_tablespaces consultando las siguientes columnas:

Y la vista:

4. En qu sistema/s de ficheros estn definidos los anteriores espacios de almacenamiento?, cul es su tamao? Visualizamos la vista dba_data_files sobre nuestro tablespace UNDOTBS1:

Y podemos ver las caractersticas obtenidas:

Pgina 3 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

5. Consultar el valor actualmente activo de los parmetros de undo en la base de datos. Para consultar el valor actual de los parmetros undo de la BD demos usar el siguiente comando: Y los datos obtenidos:

6. Intentar asignar el segmento de rollback r01 a la transaccin actual. Se genera error?, en caso afirmativo cul? cul es el valor de undo_suppress_errors? Intentamos asignar el segmento de rollback r01 a una transaccin actual:

La transaccin se completa, y a continuacin comprobaremos en la vista de los parmetros si se han modificado:

Podemos observar que la vista no cambi y no aparece el parmetro indicado. 7. Modificar dinmicamente el valor del parmetro undo_suppress_errors, cul es el resultado? Para ello alteraremos el sistema sobre la vista inidicada undo_suppress_errors:

No se puede inicializar el parmetro, es debido a que el complemento puede haberse quedado obsoleto.

Pgina 4 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

8. Crear un segundo espacio de almacenamiento de undo con las siguientes caractersticas: Nombre... UNDO02 Localizacin... /home/oracle/oracle/product/10.2.0/oradata/asir1/undo02.dbf Tamao... 1M Autoextensible... 2M, hasta 3M Comprobar su creacin. Creamos un espacio de almacenamiento undo con las caractersticas mencionadas:

Y comprobaremos su creacin sobre la vista dba_data_files:

Pgina 5 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

9. Crear un espacio de almacenamiento de undo con las siguientes caractersticas: Nombre... UNDO03 Localizacin... /home/oracle/oracle/product/10.2.0/oradata/asir1/undo03.dbf Tamao... 1M Definir la clusula storage por defecto: initial 100k, next 100k y maxextents 50. Creamos el espacio de almacenamiento segn las caractersticas impuestas:

No podemos crear el espacio undo con la clausula storage y las caractersticas estipuladas no podemos ya que es una opcin invalida en la creacin de tablespaces. 10. Modificar el espacio de undo por defecto, de forma que sea a partir de este momento UNDO02. Comprobarlo antes y despus de hacerlo. Comprobamos el espacio undo actual por defecto:

Alteramos el sistema para poner por defecto a partir de ahora el espacio UNDO02 creado anteriormente:

Volvemos a comprobar que el parmetro recin cambiado es ahora nuestro tablespace por defecto:

Pgina 6 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

11. Modificar el fichero de inicializacin comentando la lnea correspondiente a la variable undo_tablespace. cul es el espacio de undo que se habilita? (recuerde que al cerrar la base de datos era UNDO02, ver ejercicio anterior). Vamos a comprobar que pasa al parar y arrancar de nuevo la sesin y la base de datos, a ver que tablespace undo se nos muestra tras haber hecho el cambio anterior: Paramos la BD:

Y la volvemos a arrancar:

Nos conectamos como sysdba o system y comprobamos el estado de los tablespaces undo por defecto:

Pgina 7 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

12. Modificar el fichero de inicializacin y asignar a la variable undo_tablespace el valor UNDO02. Parar y arrancar la base de datos. Ahora modificaremos el fichero de inicializacin para que asigne por defecto el undo_tablespace a undo02. Para ello nos dirigimos a nuestro archivo de inicializacin initasir01.ora en mi caso: y editamos la siguiente lnea:

Podemos observas como estaba anteriormente la configuracin y con la almohadilla comentamos la configuracin anterior. Nos desconectamos de la BD y la arrancamos de nuevo para que tomen efecto los cambios realizados:

Comprobamos el estado actual del tablespace undo tras haberlo cambiado:

Pgina 8 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

13. Estimar el valor ptimo para el espacio de undo usando el Undo Advisor. Generar un informe de texto a partir de las estadsticas en base de datos. Se determina el periodo de tiempo a analizar seleccionando los identificadores de snap apropiados a partir de la vista DBA_HIST_SNAPSHOT. Generamos el informe necesario:

Y comprobamos los datos obtenidos dentro de las fechas especificadas:

Se crea un script para invocar Undo Advisor y determinar el nmero de tarea. Crearemos el archivo en el home del usuario: Y la aadimos las siguientes lneas:

Pgina 9 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Creamos el procedimiento:

Si no nos encuentra el fichero directamente, debemos especificar la ruta como he hecho yo en el segundo intento de la creacin. Entonces comprobamos el estado de la vista dba_advisor_findings:

Y seleccionamos filas sobre dba_advisor_findings cuando su task_id=79:

Se genera el informe usando el script de bd awrrpt.sql.

Y vemos el informe que se genera: Current Instance ~~~~~~~~~~~~~~~~ DB Id DB Name Inst Num Instance ----------- ------------ -------- -----------2628620926 ASIR1 1 asir1

Pgina 10 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Specify the Report Type ~~~~~~~~~~~~~~~~~~~~~~~ Would you like an HTML report, or a plain text report? Enter 'html' for an HTML report, or 'text' for plain text Defaults to 'html' Enter value for report_type: text Type Specified: text

Instances in this Workload Repository schema ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DB Id Inst Num DB Name Instance Host ------------ -------- ------------ ------------ -----------* 2628620926 1 ASIR1 asir1 asir-Virtual Box1 Using 2628620926 for database Id Using 1 for instance number

Specify the number of days of snapshots to choose from ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Entering the number of days (n) will result in the most recent (n) days of snapshots being listed. Pressing without specifying a number lists all completed snapshots.

Enter value for num_days: 1 Listing the last day's Completed Snapshots Snap Instance DB Name Snap Id Snap Started Level ------------ ------------ --------- ------------------ ----asir1 ASIR1 35 21 Dec 2011 10:31 1 36 21 Dec 2011 12:16 1

Specify the Begin and End Snapshot Ids ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Enter value for begin_snap: 35 Begin Snapshot Id specified: 35 Enter value for end_snap: 36 End Snapshot Id specified: 36

Pgina 11 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

declare * ERROR at line 1: ORA-20200: The instance was shutdown between snapshots 35 and 36 ORA-06512: at line 42 Disconnected from Oracle Database 10g Release 10.2.0.1.0 Production

El resultado es un fichero en el directorio actual, que contiene dicho informe, en nuestro caso no se genera por motivo del error que da en la parte de la final de la generacin del informe. 14. Borrar el espacio de undo UNDO02. Visualizamos los tablespaces undo en uso e intentamos eliminar el undo02:

No podemos borrarlo ya que el tablespace est actualmente en uso.

15. Asignar UNDOTBS1 como nuevo espacio de undo. Borrar el espacio UNDO02. En el ejercicio se nos pide cambiar al espacio UNDO_RBS1 pero yo al menos no tengo ese, tengo el UNDOTBS1 que es al que lo cambiar:

Comprobamos que se ha modificado correctamente:

Pgina 12 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Y borramos el espacio UNDO02:

16. Parar y arrancar la base de datos (debe recordarse que en el fichero initCURSOxx.ora el parmetro undo_tablespace tiene el valor UNDO02). Paramos la base de datos, como system o sysdba:

A continuacin la arrancamos:

17. Comentar el parmetro undo_tablespace en el fichero de inicializacin, y arrancar la base de datos. Qu espacio de undo tiene asignado? Iremos al fichero de inicializacin y comentaremos el parmetro undo_tablespace en el fichero /home/oracle/oracle/product/10.2.0/db_1/dbs/initasir1.ora:

Pgina 13 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Paramos y arrancamos de nuevo la BD y comprobamos el valor que ha tomado por defecto:

Comprobamos el valor del tablespace:

18. Comentar todos los parmetros correspondientes a undo en el fichero de inicializacin, parar y arrancar la base de datos. Comprobar los valores de undo, qu observa? Volvemos al fichero de inicializacin y comentamos todas las lneas correspondientes a los tablespaces undo:

Volvemos a parar y arrancar la base de datos:

Al iniciar la BD he tenido que dar la ruta entera del archivo initasir1.ora porque no estaba actuando sobre este fichero como yo pensaba:

Pgina 14 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Comprobamos el valor de los tablespaces:

Entonces ahora si que podemos ver que las lneas estn correctamente comentadas. 19. Borrar el espacio de undo UNDOTBS1. Habilitar de nuevo la gestin automtica de undo y, parar y arrancar la base de datos. Comprobar los valores de undo, qu espacio de undo se usa? Comprobamos el estado de los valores UNDOTBS1 sobre la vista dba_data_files:

Borramos el espacio UNDOTBS1:

Paramos la BD

y modificamos los cambios en el fichero de inicializacin

Pgina 15 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Volvemos a arrancar la base de datos: *Al intentar volver a arrancar la base de datos se me presenta el siguiente problema:*

Y no hay manera de arrancar la base de datos. He buscado por foros alguna solucin al problema pero no la he encontrado. Seguir los ejercicios con una copia que tena de la mquina virtual. Lo que he hecho, para intentar seguir los ejercicios con los mismos parmetros es copiar el fichero initasir1.ora a esta copia de la VM y ser con el fichero de inicializacin que haga todos los ejercicios a partir de ahora.

20. En el ejercicio anterior, se genera algn mensaje de error en el fichero de alertas? A consecuencia de no haber podido realizar el anterior ejercicio, tampoco puedo hacer este.

Pgina 16 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

21. Crear un espacio llamado PRUEBA, que no sea de undo, e intentar asignarlo como espacio de undo. Qu sucede? Nombre... PRUEBA Localizacin... /home/oracle/oracle/product/10.2.0/oradata/asir1/prueba01.dbf Tamao... 1M Arrancamos la BD, sobre el fichero de inicializacin initasir1.ora y creamos el tablespace, sin ser undo, segn lo especificado:

Intentamos asignarlo como espacio de undo:

No podemos asignarlo como tablespace undo debido a que no est creado especficamente para esto o no existe.

Pgina 17 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

22. Crear de nuevo el espacio de undo UNDO_RBS1 y asignarlo como tal. Nombre... UNDO_RBS1 Localizacin.../home/oracle/oracle/product/10.2.0/oradata/asir1/rbs0 1.dbf Tamao... 1M Siguiente extensin... 500k Tamao mximo... 2M El paso de borrar este espacio undo es en el ejercicio 19, que ha sido en el cual he tenido esos problemas y no lo he podido borrar, por lo que har ser crear ese tablespace undo que nos propone el ejercicio y se los asignar a la BD: Creamos el tablespace segn lo indicado:

Y se lo asignamos:

Comprobamos que se ha modificado correctamente:

Pgina 18 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

23. Obtener la descripcin completa de las vistas siguientes (consultar tambin la documentacin en lnea): DBA_UNDO_EXTENTS V$UNDOSTAT V$ROLLSTAT Realizar las consultas que se proponen en el ejercicio. Comprobamos la vista dba_undo_extents:

Pgina 19 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Visualizamos v$undostat que muestra datos estadsticos relativos a consumo de espacio de undo, longitud de las consultas ejecutadas,... Se devuelven valores nulos si se trabaja en modo manual.

Pgina 20 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Por ltimo comprobamos la vista v$rollstat que en modo automtico refleja el comportamiento de los segmentos de undo en el espacio de undo:

24. Habilitar el modo de gestin manual de undo. Parar y arrancar la base de datos. Nos dirigimos al fichero de inicializacin correspondiente (initasir1.ora) y habilitamos la gestin manual:

Paramos y volvemos a arrancar la base de datos:

Pgina 21 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Comprobamos los parmetros undo a ver si se modificaron correctamente:

Efectivamente comprobamos que el modo manual est funcionando:

25. Obtener la descripcin completa de las vistas siguientes (consultar tambin la documentacin en lnea): - DBA_SEGMENTS - DBA_ROLLBACK_SEGS - V$ROLLNAME - V$ROLLSTAT

Descripcin de la vista dba_segments:

Pgina 22 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Descripcin de dba_rollback_segs:

Descripcin de v$rollname

Descripcin de v$rollstat

Pgina 23 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

26. Averiguar cuantos espacios de undo dedicados a gestin automtica existen en la base de datos y ponerlos fuera de lnea (comprobar este punto). Para ello visualizamos la vista dba_tablespaces para ver cuales son de tipo UNDO:

Ahora vamos a ponerlos todos en fuera de lnea (offline) y lo comprobaremos:

Y la comprobacin de que as estn volviendo a realizar una consulta sobre dba_tablespaces de tipo UNDO:

Pgina 24 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

27. Averiguar de cuntos segmentos de "rollback" dispone la base de datos y cules de ellos estn activos. dem para el nmero de segmentos fuera de lnea. Para ello realizamos una cuenta sobre la vista dba_rollback_segs sobre aquellos que su estado sea online (activo):

Vamos a ver que segmentos de rollback corresponden a la base de datos:

Pgina 25 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Y ahora los segmentos de tipo UNDO que pertenecen a la BD:

Por ltimo comprobamos el nmero de segmentos que estn fuera de lnea, es decir offline:

Pgina 26 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

28. Averiguar si existe un espacio de almacenamiento de nombre RBS, si no crearlo. En adelante se trabajar con este espacio de almacenamiento exclusivo para los segmentos de "rollback". Nombre... RBS Localizacin... /home/oracle/oracle/product/10.2.0/db_1/dbs/rbs_manual01.dbf Tamao... 1M Comprobaremos si existe el espacio de almacenamiento con nombre RBS:

Podemos cerciorarnos de que no hay ninguno con ese nombre, realizando la siguiente consulta:

Entonces, procederemos a crearlo, segn las caractersticas propuestas:

Pgina 27 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

29. Crear un segmento de "rollback" pblico, en el espacio de almacenamiento anterior, llamado RP01. Creamos un segmento de rollback pblico sobre el espacio anterior RBS que se llamar RP01:

Nos muestra este error porque debe haber como mnimo un segmento activado que no sea SYSTEM. Por lo que seguimos los siguientes pasos para poder crearlo correctamente: *Creamos un segmento de rollback en el espacio SYSTEM y lo activamos:

*Creamos los segmentos oportunos en el espacio dedicado a rollback:

*Borramos o desactivamos el segmento creado en SYSTEM:

Pgina 28 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

30. Observar los parmetros de almacenamiento con que se ha creado el segmento RP01. Cules son?, cules son los del espacio de almacenamiento RBS? Visualizamos dba_rollback_segs para los parmetros del segmento RP01:

Realizamos la misma operacin para para ver los parmetros del espacio de almacenamiento RBS:

31. Crear un segmento de "rollback" privado llamado RPR01. Creamos el segmento:

Parece que no puedo crearlo porque el tablespace RBS no es un segmento del sistema, aunque segn lo hecho en el ejercicio 29 debera de serlo, por lo que para poder hacer este ejercicio he realizado los siguientes pasos: *Activar de nuevo el segmento r_borrar que perteneca al sistema:

*Crear el segmento de rollback RPR01 segn la prctica, pero tampoco se puede:

Pgina 29 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

*Por lo que crear el segmento de rollback pero esta vez dando unos datos especficos para poder crearlo:

*Vuelvo a desactivar el segmento r_borrar:

*Comprobamos que se ha creado el nuevo espacio de rollback:

32. Activar los segmentos de "rollback" creados anteriormente. Comprobamso que el estado de dichos segmentos es de fuera de linea (offline):

Activamos amos:

Pgina 30 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

33. Averiguar cules de los segmentos de "rollback" anteriores son pblicos y cules privados. Para ello visualizamos la vista dba_rollback_segs y lo saremos segn el propietario (owner) sea SYS o PUBLIC:

Pgina 31 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

34. Averiguar en que espacios de almacenamiento est definido cada uno de los segmentos de "rollback" de la base de datos. Lo vemos sobre la vista dba_rollback_segs:

Pgina 32 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

35. Averiguar cules son los parmetros de almacenamiento de los segmentos de "rollback". Los parametros de almacenamiento de los segmentos de rollback:

36. Desactivar los segmentos de "rollback" RP01 y RPR01. Los desactivamos de nuevo:

37. Parar y arrancar la base de datos, comprobar de nuevo cules de los segmentos de "rollback" son pblicos y cules privados. Qu sucede con los segmentos de "rollback" RP01 y RPR01? Paramos y arrancamos la base de datos:

Pgina 33 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Comrpobamos de nuevo el estado de los segmentos de rollback, para ver cuales son pblicos y cuales privados:

Aparentemente no ha habido ningn cambio. 38. Modificar el init.ora de la base de datos de forma que est declarado el segmento de "rollback" RPR01. Parar y arrancar la base de datos. Nos dirigimos al fichero initasir1.ora que es con el que estamos actuando y modificamos el siguiente parametro:

Esta lnea la he tenido que aadir yo manualmente, ya que en mi fichero de inicializacin no aparece, no se si para futuros ejercicios esto causar problemas. Paramos y arrancamos la base de datos:

Pgina 34 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

39. Volver a realizar los ejercicios 26 y 27. Averiguamos cuantos espacios de undo dedicados a gestin automtica existen en la base de datos y los ponemos fuera de lnea:

No se muestra el espacio de rollback que hemos aadido a mano y el resto ya estn offline. A continuacin averiguaremos cuantos segmentos de rollback dispone la base de datos y cuales estn activados:

Y veamos cuales son:

Pgina 35 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

40. Desactivar el segmento de "rollback" RP01.

41. Intentar borrar los segmentos de "rollback" RP01 y RPR01, qu sucede? Intentamos borrar estos segmentos:

El segmento rp01 no da problema porque est desactivado. Probamos con el segmento rpr01:

No podemos borrarlo porque actualmente est activo.

42. Desactivar el segmento de "rollback" RPR01 y borrarlo Desactivamos el segmento de rollback RPR01:

Y procedemos a borrarlo:

Pgina 36 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

43. Realizar una parada y arranque de la base de datos (sin modificar el init.ora ni la variable donde se declaran los segmentos de "rollback"). Cul es el resultado? Modificar el init.ora y volver a arrancar la base de datos. Paramos y arrancamos la base de datos sin modificar ningn parmetro del fichero initasir1.ora:

El resultado es que al haber borrado los segmentos con los que la base de datos estaba actuando no puede arrancar y tenemos que recuperarla. Para recuperar el sistema he seguido los siguientes pasos: 1- Arrancar la base en estado NO MOUNT:

2- Cambiar el parmetro UNDO_TABLESPACE para que no apunte alTBS de undo con problemas y as permitir que la base sea abierta:

3- Subir a la base de datos:

Pgina 37 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

4- Con la base abierta creamos un nuevo tablespace de UNDO:

5- Modificamos nuevamente al parmetro UNDO_TABLESPACE paraque apunte al nuevo tablespace de UNDO (luego podemos borrar al tablespace que estaba dando problemas):

6- Paramos limpiamente la base y la volvemos a arrancar:

Los pasos para solucionar este problema los he seguido de este blog que comentaba que tena el problema: http://rodolfocandido.blogspot.com/2008/09/ora-01092-oracleinstance-terminated.html

Pgina 38 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

44. Crear de nuevo los segmentos de "rollback" atenindose a los siguientes parmetros de almacenamiento: - minextents 1 - maxextents 1 - initial 100k - next 100k Creamos el nuevo segmento de rollback segn lo especificado:

No se puede porque el valor MINEXTENTS para segmentos de rollback debe ser mayor a 1, lo intentamos dndole el valor 2.

Tampoco podemos, en este caso por el valor de MAXEXTENTS.

45. Idem pero modificando los siguientes parmetros: - minextents 2 - maxextents 20 Lo creamos segn los nuevos parmetros:

Pgina 39 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

46. Crear un segmento de "rollback" pblico llamado RP02 con los mismos parmetros que los anteriores y adems: -pctincrease 50 Creamos el segmento de rollback:

No se puede porque dicho parmetro no est permitidos para este tipos de segmentos.

47. Crear un segmento de "rollback" pblico llamado RP02 con los mismos parmetros que los anteriores. Creamos el segmento de rollback rp02:

48. Crear un segmento de "rollback" pblico llamado RP03 con un optimal de 50k. Idem con un optimal de 300K. Creamos este nuevo segmento de rollback con las opciones especificadas:

No podemos debido a que el tamao que le hemos dado es demasiado pequeo. Probamos a crear el segmento pero con un tamao optimal=300:

Pgina 40 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

49. Decrementar el tamao de los segmentos de "rollback" RP02 y RP03. Activar RP02 y RP03, repetir la operacin. Reducimos el tamao de los segmentos de rollback recin creados:

No podemos porque no estn activos. Activamos los segmentos y repetimos la operacin:

Reducimos su tamao ahora que estn activos:

Pgina 41 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

50. Desactivar todos los segmentos de "rollback" (incluido el SYSTEM). Antes de desactivarlos, comprobamos que segmentos hay activos:

Cambiamos el estado de aquellos segmentos que estn activos:

Pgina 42 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Podemos cambiar a OFFLINE todos los segmentos salvo el SYSTEM que podemos ver al final de la pgina anterior que nos muestra un error informando que dicho segmento no puede cambiar su estado a OFFLINE.

51. Borrar todos los segmentos de "rollback" de la base de datos (excepto el SYSTEM). Solo podremos borrar un segmento si este est activo, comprobamos que estn todos as:

Pgina 43 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Podemos ver que estn todos OFFLINE salvo SYSTEM por lo que procedemos a borrarlos (los que no son del sistema):

52. Intentar borrar el segmento de "rollback" SYSTEM, qu sucede? Comprobamos el estado del segmento de rollback SYSTEM:

Intentamos borrarlo:

No se puede borrar dicho segmento.

Pgina 44 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

53. Crear segmentos de "rollback" pblicos RP01, RP02, RP03, ... RP20 con los parmetros: - minextents 2 - maxextents 20 - initial 100k - next 100k - optimal 500K Editaremos un fichero llamado crea_segmentos.sql, que contiene todas las sentencias de creacin:

*Me ha dado error al ejecutarlo ya que el tablespace RBS no es de SYSTEM, por lo que tenemos que repetir los pasos del ejercicio 29 y luego seguir:*

Pgina 45 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

Ejecutamos desde Oracle los segmentos de la siguiente forma:

Pero solo puedo crear los 3 primeros, el resto no puedo debido a que cuando creamos el tablespace RBS solo se le podan asignar tres segmentos de rollback como mximo. He intentado cambiar el tamao de este parmetro pero no ha habido manera, la nica opcin que se me ocurre es crear un nuevo tablespace con un tamao predeterminado sin limite para albergar todos los segmentos de rollback que desemos, pero en prinicipio para esta prctica terminar con el tablespace RBS y los segmentos que me deja aadir. 54. Poner todos los segmentos anteriores en lnea. Creamos un fichero que se llame por ejemplo enlnea_segmentos.sql y que contendr todas las sentencias del tipo: Alter ROLLBACK SEGMENT RP01 online;

Y lo ejecutamos desde la base de datos de la siguiente manera:

Pgina 46 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

55. Poner todos los segmentos anteriores en lnea. Modificar los segmentos de "rollback" RP01 y RP02, indicando los siguientes parmetros: -minextents 1 -initial 200k Intentamos modificar los anteriores segmentos con los parmetros especificados:

No podemos por el tipo de opcin que deseamos modificar, ya que no est permitido. 56. Intentar crear el segmento de "rollback" RP21 con las mismas caractersticas que los anteriores pero sin poseer los privilegios necesarios para realizarlo (conectarse como usuario SCOTT). Nos autenticamos como usuarios SCOTT:

E intentamos crear un segmento de rollback RP21 con las mismas caractersticas que los anteriores:

No podemos crearlo por falta de privilegios, aunque si los tuviramos tampoco podramos porque, como he comentado anteriormente, no hay mas espacio en este tablespace para mas segmentos de rollback.

Pgina 47 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

57. Intentar borrar el segmento de "rollback" RP21 y el RP20 sin poseer los privilegios necesarios para realizarlo, desactivarlos previamente (conectarse como usuario SCOTT). Seguiremos autenticados como usuario Scott e intentamos borrar poner offline uno de los segmentos creados, en mi caso el rp3 por ejemplo:

No podemos por falta de privilegios con el usuario Scott.

58. Intentar modificar los segmentos de "rollback" RP19 y el RP18, sin poseer los privilegios necesarios para realizarlo, conectarse como usuario SCOTT, asignando: -maxextents 25 -next 200k -optimal 1M Como usuario Scott intentamos cambiar los segmentos de rollback pero en vez de los nmeros rp19 y rp18 lo har sobre los segmentos rp02 y rp03:

No podemos hacerlo por falta de privilegios con este usuario.

59. Conectarse como usuario SYSTEM y realizar el ejercicio anterior. Nos conectamos como system o sysdba e intenamos modificar el segmento de rollback:

No est permitido, segn la documentacin, porque el tipo del segmento est en autoallocate o no lo permite su poltica de asignacin de extensiones.

Pgina 48 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

60. Realizar una insercin en la tabla SCOTT.DEPT, conectarse como SCOTT, previamente asignar a la transaccin el segmento de "rollback" RP19. Los valores sern los siguientes: -DEPTNO 50 -DNAME INFORMATICA -LOC MURCIA Nos conectamos como usuario SCOTT:

Asignamos a la transaccin el segmento de rollback rp03 que es uno de los que yo dispongo:

Realizamos una insercin en la tabla SCOTT.DEPT con las filas especificadas:

61. Modificar el parmetro OPTIMAL de los segmentos de "rollback" RP01 a RP10, fijndolo en 100K. Es posible?, tiene sentido? Como usuario Scott no podremos, por lo que nos autenticaremos como SYSTEM o SYSDBA y lo realizaremos:

Si que se puede realizar sin ningn problema.

Pgina 49 de 50

Eduardo Bayn Cascajo

Administracin de BD Oracle 10g

62. Consultar el valor del parmetro OPTIMAL de los segmentos de "rollback" definidos en la base de datos. Para ello debemos hacer un JOIN entre las vistas dba_rollback_segs y v$rollstat:

Pgina 50 de 50