Вы находитесь на странице: 1из 171

1

CR GBSYS 2017
Administración de
Bases de Datos Oracle 12c

Manual de Prácticas

CR GBSYS 2017
Contenido

3 - Instalando la Base de Datos Oracle 12c ..................................................................... 6


Ejercicio 3.1 – Tareas de Pre-Instalación ..................................................................... 6
Ejercicio 3.2 – Instalación ............................................................................................. 10
Resumen de Instalación .................................................................................................... 10
Preguntas......................................................................................................................... 13
Respuestas ...................................................................................................................... 15
4 - Creando una Base de Datos Oracle........................................................................... 17
Ejercicio 4.1 – Creando una base de datos con DBCA ............................................. 17
Preguntas......................................................................................................................... 22
Respuestas ...................................................................................................................... 25
5. Interactuando con la Base de Datos Oracle .............................................................. 27
Ejercicio 5.1 - Trabajando con SQL*Plus .................................................................... 27
Ejercicio 5.2 - Trabajando con SQL*Plus .................................................................... 27
Ejercicio 5.3 – Configurando SQL Developer ............................................................. 28
Ejercicio 5.4 - Trabajando con SQL Developer .......................................................... 29
Preguntas......................................................................... ¡Error! Marcador no definido.
Respuestas ...................................................................... ¡Error! Marcador no definido.
6 – Administración de la Instancia de Oracle................................................................. 34
Ejercicio 6.1 - Puesta en marcha y apagado de su base de datos con SQL * Plus
.......................................................................................................................................... 34
Ejercicio 6.2 - Puesta en marcha y apagado de su base de datos con EM ........... 36
Ejercicio 6.3 - Visualización de los parámetros con el EM ....................................... 41
Preguntas......................................................................................................................... 41
Respuestas ...................................................................................................................... 43
7 – Administración de Estructuras de almacenamiento de Oracle ............................ 44
Ejercicio 7.1 - Uso del EM para Crear Tablespaces................................................... 44
Ejercicio 7.2 - Uso de EM para modificar un Tablespace ......................................... 50
Ejercicio 7.3 - Uso de Enterprise Manager para borrar un Tablespace ................. 53
Preguntas......................................................................................................................... 54
Respuestas ...................................................................................................................... 58
8 - Administrando los usuarios de la Base de Datos ..................................................... 59
Ejercicio 8.1 - Uso de Enterprise Manager para crear un usuario de la Base de
Datos ................................................................................................................................ 59
Ejercicio 8.2 - Uso de Enterprise Manager para Otorgar privilegios del sistema . 61
Ejercicio 8.3 - Uso de Enterprise Manager para otorgar Privilegios de Objeto .... 66
Ejercicio 8.4 - Uso de Enterprise Manager para Crear y Administrar los Roles .... 71
Ejercicio 8.5 - Uso de Enterprise Manager para crear y administrar perfiles ....... 73
Preguntas......................................................................................................................... 78
Respuestas ...................................................................................................................... 80
9 - Administración de Objetos de Bases de Datos ........................................................ 82
Ejercicio 9.1 - Creación de Tablas y Restricciones .................................................... 82
3

CR GBSYS 2017
Ejercicio 9.2 - Utilizando Restricciones, Vistas y Secuencias ................................... 86
Preguntas......................................................................................................................... 87
Respuestas ...................................................................................................................... 89
10 - Manipulando la Información de la Base de Datos ................................................. 89
Ejercicio 10.1 - El aislamiento de transacción, Consistencia de la Lectura y
COMMIT ........................................................................................................................... 89
Ejercicio 10.2 - Uso de Data Pump para la exportación a través del Controlador
de Bases de Datos del Enterprise Manager ............................................................... 93
Ejercicio 10.3 - Uso de la DataPump de Importación a través de impdp ............ 96
Ejercicio 10.4 - Usando SQL*Loader ........................................................................... 96
Preguntas......................................................................................................................... 97
Respuestas ...................................................................................................................... 99
12 - Programando en Oracle con PL/SQL ..................................................................... 100
Ejercicio 12.1 - Creación y uso de las funciones, Procedimientos y Paquetes ... 100
Ejercicio 12.2 - Utilizando Triggers DML ................................................................... 102
Preguntas....................................................................................................................... 105
Respuestas .................................................................................................................... 106
13 - Asegurando la Base de Datos ................................................................................ 106
Ejercicio 13.1 - Creación y Uso de Perfiles con Contraseña .................................. 106
Ejercicio 13.2 - Habilitación de Auditoría .................................................................. 110
Preguntas....................................................................................................................... 111
Respuestas .................................................................................................................... 114
14 - Configurando la Red Oracle .................................................................................... 114
Ejercicio 14.1 - Creación de un Listener con el EM................................................. 114
Ejercicio 14.2 - Creación de un Alias del Servicio de Red Oracle ......................... 116
Ejercicio 14.3 - Configuración del Registro del Servicio Dinámico ....................... 117
Preguntas....................................................................................................................... 118
Respuestas .................................................................................................................... 121
15 – Administración de Servidores Compartidos ......................................................... 123
Ejercicio 15.1 - Configurando y Verificando los Servidores Compartidos ............ 123
Ejercicio 15.2 - Configuración de un Cliente para elegir el Tipo de Conexión .... 124
Preguntas....................................................................................................................... 126
Respuestas .................................................................................................................... 129
16 - Administración de Rendimiento de Base de Datos ............................................. 131
Ejercicio 16.1 - Reparación de Objetos Inválidos.................................................... 131
Ejercicio 16.2 - Reparación de los Índices que no están en uso .......................... 133
Ejercicio 16.3 - Automatizando la Recolección de Estadísticas ............................. 135
Ejercicio 16.4 - Opcional ............................................................................................. 137
Preguntas....................................................................................................................... 138
Respuestas .................................................................................................................... 140
17 - Monitoreo de Oracle ................................................................................................ 140
Ejercicio 17.1 - Generando un Reporte ADDM ........................................................ 141
Ejercicio 17.2 - Configuración de Alertas.................................................................. 142
Preguntas....................................................................................................................... 143
4

CR GBSYS 2017
Respuestas .................................................................................................................... 145
18 – Administración del Undo......................................................................................... 146
Ejercicio 18.1 - Creación del Tablespace Undo con el EM. .................................... 146
Ejercicio 18.2 - Monitoreo de Undo con SQL*Plus .................................................. 148
Preguntas....................................................................................................................... 148
Respuestas .................................................................................................................... 152
19 - Tratando con el Bloqueo ......................................................................................... 154
Ejercicio 19.1 - Bloqueo Automático y Manual ........................................................ 154
Ejercicio 19.2 - El Comando SELECT…FOR UPDATE .............................................. 155
Ejercicio 19.3 - Detección y Solución de contención de Bloqueo ......................... 156
Ejercicio 19.4 - Resolución Automática de Bloqueos .............................................. 158
Preguntas....................................................................................................................... 159
Respuestas .................................................................................................................... 161
20 - Administración de la Globalización de las Bases de Datos Oracle .................... 161
Ejercicio 20.1 - Configurando la Globalización y Ambientación del Cliente ........ 161
Ejercicio 20.2 - Controlar la Globalización con la sesión ........................................ 162
Ejercicio 20.3 - Haciendo ajustes a la Zona Horaria ............................................... 165
Preguntas....................................................................................................................... 166
Respuestas .................................................................................................................... 169

CR GBSYS 2017
3 - Instalando la Base de Datos Oracle 12c

En este ejercicio se instalará la base de datos Oracle 12c en su ordenador y usted


podrá crear la base de datos de arranque. Puede realizar esta tarea, ya sea en un
equipo con Windows o Unix/Linux.
Recuerde que debe crear el usuario y grupo de cuentas y verificar en el sistema los
requisitos antes de iniciar la instalación. El software de base de datos Oracle 12c
puede descargarlo la para su plataforma desde (http://otn.oracle.com).
________________________________________________________________

Ejercicio 3.1 – Tareas de Pre-Instalación

1. Inicie sesión en el equipo como usuario root ó administrador

2. Valide Prerrequisitos y tareas de preinstalación. (Nota: Todos los


prerrequisitos y tareas de preinstalación ya han sido efectuadas en
su maquina virtual. Por lo que se recomienda en este caso solo
verificarlos)

En Unix/Linux

Validar versión de kerner


# uname -r

Verificar paquetes requeridos

# rpm -q binutils compat-db control-center gcc gcc-c++


glibc glibc-common gnome-libs libstdc++
libstdc++-devel make pdksh sysstat
xscreensaver libaio

Configurar Unix/Linux para Oracle

RAM y espacio de swap disponible:


# grep MemTotal /proc/meminfo
# grep SwapTotal /proc/meminfo

Espacio en Disco

# df -h

6
Crear usuarios y grupos

# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/useradd -m -g oinstall -G dba oracle
# id oracle

Cambiar contraseña de Oracle


# passwd oracle
Changing password for user oracle.
New password:
Retype new password:
passwd: all authentication tokens updated
successfully.

Crear directorios como usuario root

# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/app/oracle

Cambiar parámetros del kernel

# cat >> /etc/sysctl.conf <<EOF


> kernel.shmall = 2097152
> kernel.shmmax = 536870912
> kernel.shmmni = 4096
> kernel.sem = 250 32000 100 128
> fs.file-max = 65536
> net.ipv4.ip_local_port_range = 1024 65000
> EOF
# /sbin/sysctl –p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_max = 262144
7
Valide los cambios

# /sbin/sysctl -a | grep shm


# /sbin/sysctl -a | grep sem
# /sbin/sysctl -a | grep file-max
# /sbin/sysctl -a | grep ip_local_port_range
# /sbin/sysctl -a | grep rmem_default
# /sbin/sysctl -a | grep rmem_max
# /sbin/sysctl -a | grep wmem_default
# /sbin/sysctl -a | grep wmem_max

Modifique el .profile default del shell que utilizará

cat >> /etc/profile <<EOF


if [ \$USER = "oracle" ]; then
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
EOF

cat >> /etc/csh.login <<EOF


if ( \$USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
umask 022
endif
EOF

En el archivo /home/oracle/.bash_profile agregue las siguientes


instrucciones:

# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.1.0/orcl; export
ORACLE_HOME
ORACLE_SID=ORCL; export ORACLE_SID
PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export
LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOM
E/rdbms/jlib; export
CLASSPATH
8
LD_ASSUME_KERNEL=2.4.1; export LD_ASSUME_KERNEL
ulimit -u 16384 -n 65536

Ejecute el siguiente comando para permitir a todos los usuarios


(temporalmente) escribir a la terminal XWindows

# xhost +

En Windows

Todas las tareas de Pre-instalación son ejecutadas por OUI

3. Inicie sesión en el equipo como usuario de oracle (en Unix/Linux) o un


usuario que es un miembro del grupo Administradores en Windows.

4. Inserte el CD de la base de datos Oracle 12c en la unidad de CD-ROM. El


programa de instalación debería empezar automáticamente. Si no, ejecute
Setup.exe (Windows).

En Unix/Linux cambie al directorio /stage/Disk1/database y luego


ejecute runInstaller.

$ ./runInstaller

En Windows ejecute SETUP.EXE desde el CDROM de instalación

9
Ejercicio 3.2 – Instalación

5. Inicie la instalación

Resumen de Instalación
1. Seleccione método de instalación
o Seleccione: Basic Installation
o Oracle Home Location: /u01/app/oracle/product/11.1.0/db_1
o Installation Type: Enterprise Edition (1.3GB)
o UNIX/LINUX DBA Group: oinstall
o Asegúrese que “Create Starter Database” está seleccionado
o Global Database Name: orcl
o Enter the Database Password and Confirm Password : oracle
o Oprima Next
2. Especificar directorio de inventario y credenciales
o Inventory Directory: /u01/app/oracle/oraInventory
o Operating System group name: oinstall
o Oprima Next
3. Product-specific Prerequisite Checks
o Si a seguido las instrucciones, no deberá tener ninguna dificultad en este paso. Si se
detecta algún problema, corríjalo antes de continuar.
o Oprima Next
4. Summary
o Presenta pantalla con el resumen de productos instalados.
o Oprima Install.
5. Configuration Assistants
o Los asistentes Oracle Net, Oracle Database se ejecutaran automáticamente
6. Execute Configuration Scripts
o Al final de la instalación aparecerá una ventana indicando los scripts que deben
ejecutarse con usuario root (en ventana aparte). Inicie sesioón como root y ejecute los
scrips indicados.
o Oprima OK cuando termine.
7. Fin de la instalación
o Tome nota de los URLs indicados en el resumen y luego oprima Exit.
8. Felicitaciones! Su nueva instalación de Oracle Database 12c Release 2 esta lista y funcionando.

En Windows, seleccione la opción de instalación avanzada y haga click en


Siguiente; para Unix/Linux haga click en Siguiente en la pantalla de bienvenida.

En Unix/Linux, se le pedirá que confirme la ubicación del directorio de


inventario y el grupo de instalación. Verificar la información presentada y haga
click en Siguiente.

10
Si está instalando en Unix/Linux en algún momento de la instalación se le
pedirá que ejecute un script como usuario root. Ejecútelo en una nueva
ventana de terminal y ejecutar la secuencia de comandos y, a continuación,
haga clic en Continuar. En OUI

6. Verificar el origen y el destino de las ubicaciones de los archivos en la


pantalla de Especificación de las ubicaciones de los archivos. Introduzca un
nombre para ORACLE_HOME (16 caracteres o menos) y, a continuación,
presione en Siguiente.

7. Cuando se le pregunte por la edición de Oracle para ser instalada, elija


Enterprise Edition y, a continuación, haga click en Siguiente.

8. El OUI realizará la verificación de los prerrequisito para la instalación. Si


existen errores deben corregirse y, a continuación, haga click en Siguiente.

Si esta instalando e En Windows y su PC no tiene IP fija, deberá crear y


configurar un “Adaptador de Bucle Invertido” ó “Loopback Adaptor” en inglés.

9. En la pantalla de Selección de Configuración de Base de datos, seleccione


una base de datos de propósito general y haga clic en Siguiente.

10. Introduzca un nombre de base de datos y SID. Elija un nombre para la base
de datos en el formato database.domain como orcl.haunting.com y un
SID de ORCL. Deje el conjunto de caracteres y otras opciones como se
encuentra y presione Siguiente para continuar.

11. Cuando se le pregunte si desea utilizar el Controlador de Base de Datos o el


grid de control de la red para gestionar la base de datos, seleccione el
Controlador de Base de Datos y haga click en Siguiente.

12. En la pantalla de opción de almacenamiento de archivos, seleccione Sistema


de archivos como el tipo de almacenamiento
y un camino para los datafiles, o dejar la opción predeterminada y haga
click en Siguiente.

13. En la pantalla de Respaldo y Recuperación de dejar el valor predeterminado


de copias de seguridad y haga click en Siguiente.

14. Seleccione "Usar la misma contraseña para todas las cuentas" en la


siguiente pantalla e introduzca y confirme una contraseña que recuerde
fácilmente, tal como oracle. A continuación, haga click en Siguiente.

11
15. Chequear los parámetros de la instalación en la pantalla de resumen y haga
click en Instalar para comenzar la instalación de Bases de Datos Oracle 12c.

16. Supervise la instalación en la siguiente pantalla y, luego, revise la actividad


de examen como asistente de configuración. Esto puede tomar algún
tiempo para completarse. La finalización del Asistente de Configuración de
base de datos, presionando Aceptar en el cuadro de diálogo y después
analice la información sobre los puertos configurados. Haga click en Salir
para finalizar la Instalación Universal de Oracle.

17. Inicie su explorador Web y conéctese al sitio web del Enterprise Manager
accediendo a la siguiente dirección http://localhost:5500/em.
Introduzca un nombre de usuario de sistema con la contraseña que usted
especificó en el paso 14 y haga click en Iniciar sesión, la pantalla de
concesión de licencias aparece presionando click en Aceptar para visualizar
el sitio web de su Enterprise Manager (De aquí en adelante, EM) para su
base de datos.

18. Cierre el navegador. Felicidades, usted ha instalado exitosamente Oracle


Base de datos 12c en su ordenador.

12
Preguntas
1. Describa los beneficios del Instalador Universal de Oracle para su
Administración. ¿Cuál de las siguientes son características clave para OUI?
(Elija todas las opciones que apliquen)
A. OUI se ejecuta igual en todas las plataformas en las que corre
Oracle.
B. Despliegues basados en Web se pueden ejecutar usando OUI.
C. OUI está escrito usando un lenguaje basado en .NET ideal para las
plataformas Windows.
D. OUI es una aplicación basada en texto que no requiere interfaces
gráficas.
E. Instalaciones no atendidas pueden utilizarse usando OUI.

2. El archivo oratab contiene la siguiente información (Elija dos opciones


correctas).
A. Una lista de todos los productos Oracle instalados en la computadora.
B. Una lista de todas las instancias de la Base de Datos y Oracle homes
instaladas en la computadora.
C. Información específica de la versión acerca de cada producto Oracle
y la Base de Datos en la computadora.
D. Información de inicio para las instancias de la Base de Datos en la
computadora.
E. Información para el Enterprise Manager para la administración de las
Bases de Datos en la computadora.

3. Cuando se está instalando Oracle en sistemas basados en Unix/Linux, ¿Cuál


de las siguientes cuentas y grupos debe crear antes de iniciar la instalación?
(Escoja tres opciones correctas)
A. La cuenta de usuario root.
B. La cuenta de usuario oracle.
C. La cuenta de grupo oracle.
D. La cuenta de usuario oinstall.
E. La cuenta de grupo oinstall.
F. La cuenta de grupo dba.

4. Instalando Oracle en un computador Windows requiere que usted haya


iniciado sesión como? (Elija la mejor opción)
A. El usuario oracle.
B. Un usuario que es miembro del grupo del Dominio de
Administradores.
C. Un usuario que es miembro del grupo oinstall.
D. Un usuario que es miembro local del grupo Administradores.

13
E. Cualquier usuario con privilegios de inicio de sesión en la
computadora.

5. ¿Cuál de las siguientes variables de ambiente deben establecerse en las


computadoras basadas en sistemas Unix/Linux antes de iniciar la instalación
de Oracle? (Escoja todas la opciones correctas)
A. ORACLE_HOME
B. ORACLE_BASE
C. ORACLE_SID
D. LD_LIBRARY_PATH
E. Todas las anteriores.
F. Ninguna de las anteriores

6. Cuando se está decidiendo entre la edición Enterprise y la Estándar de


Oracle, ¿cuál de las siguientes características necesarias requieren que
compre e instale la edición Enterprise?
A. Clusters de Aplicación Real.
B. Autenticación de N-niveles.
C. Soporta varios CPUs en la plataforma de servidor.
D. EM Oracle.
E. La capacidad de particionar datos en la Base de Datos.

7. ¿Cuál de los siguientes caminos son consistentes con la Arquitectura Flexible


Óptima (OFA)? (Escoja todas las opciones correctas)
A. / opt / oracle / ocsdb
B. / opt / oracle / product / 11.1.0 / ocsdb
C. / opt / oracle / admin / ocsdb / bdump
D. / oracle / mydb
E. / opt / oracle / admin. / bdump

8. Cuando está decidiendo si implementar o no la Arquitectura Flexible Óptima


(OFA) para su instalación de Oracle. ¿Cuáles son algunas de las
consideraciones a favor de utilizar OFA? (Elija todas las opciones que
apliquen).
A. Provee una estructura de directorio estandarizada, haciendo que sea
más fácil encontrar los archivos.
B. Provee una convención de nomenclatura estandarizada para los
archivos ejecutables de Oracle.
C. Dispersa automáticamente los archivos de Oracle a través de los
múltiples discos cuando se crea una Base de Datos nueva usando la
estructura de directorios estándar.
D. Hace que todas las instalaciones de Oracle parezcan similares,
reduciendo la curva de aprendizaje para la administración de Bases
de Datos de muchos servidores.
14
E. Es requerido para Oracle

9. Está instalando Oracle 12c en una computadora con el sistema operativo


Red Hat Enterprise Linux ES 4. Usted está seguro que el sistema de
chequeo del Instalador Universal de Oracle fallará en este sistema
operativo, pero de todas formas usted quiere instalarlo. ¿Invocaría OUI y
forzaría a no hacer las revisiones? (Elija la mejor respuesta).
A. setup –ignorePreReqs
B. setup –ignorePrereqs
C. runInstaller –ignoreSysPrereqs
D. runInstaller –ignoreSysprereqs
E. runInstaller –bypassPrereqs
F. setup –bypassPrereqs

10. Si desea modificar el archivo usado por el Instalador Universal de


Oracle con información de prerrequisitos del sistema, ¿cuál archivo
modificaría? (Elija la mejor opción).
A. oraparam.ini
B. oraparam.ora
C. oraparam.ins
D. sysprereqs.ini
E. sysprereqs.ora
F. sysprereqs.ins

Respuestas
1) A, B y E. El Instalador Universal de Oracle es una aplicación gráfica basada
en Java (no .NET) que se ejecuta de igual manera en todas las plataformas
Oracle. Permite la ubicación de las fuentes que serán URL, así permite los
despliegues basados en Web, y puede ser ejecutado en instalaciones no
atendidas.

2) B y D. El archivo oratab en un sistema basado en Unix/Linux incluye una


lista de las instancias instaladas de la Base de Datos en la computadora y un
indicador de si la instancia debería o no de ser levantada automáticamente
cuando la computadora arranca. NO contiene una lista de los productos Oracle
instalados (eso se encuentra en la ubicación del inventario de instalación), ni
información específica de la versión de Oracle o de los detalles de configuración
del Enterprise Manager.

15
3) B, E y F. Instalar Oracle en una computadora basada en Unix/Linux
requiere que usted cree un usuario oracle, los grupos oinstall (para que sea
el dueño de la información de instalación de Oracle) y dba (para la
administración de la Base de Datos) para iniciar la instalación. El usuario root
se crea cuando se instala el sistema operativo, aunque ese usuario es requerido
para completar partes de la instalación.

4) D. Instalar Oracle en un computador basado en Windows requiere que


usted haya iniciado sesión como miembro del grupo local Administradores. Si
inició sesión como miembro del grupo Dominio de Administradores,
también podrá instalar Oracle pero tendrá más privilegios de los que necesita,
lo cual pone en un compromiso la seguridad. EL grupo oinstall y el usuario
oracle se necesitan en ambientes basados en Unix/Linux.

5) F. Ninguna de las variables de ambiente deben establecerse para que Oracle


sea instalado en una computadora basada en Unix/Linux. Sin embargo, en
orden de gestión y administración de la Base de Datos, las variables
ORACLE_HOME, ORACLE_SID Y LD_LIBRARY_PATH podrpian necesitar
establecerse.

6) B y E. Si desea usar autenticación de N-Niveles y particionar los datos de


una tabla en su Base de Datos, debe comprar e instalar la edición Enterprise.
Todas las otras características (RAC, soporte de múltiples CPUs, y el EM del
Enterprise Manager) se encuentran disponibles en la edición Estándar.

7) B y C. Mientras Oracle no necesite que usted use OFA, cuando decide usar
OFA las convenciones del camino y el nombre del archivo estalecen reglas para
su uso. Solamente “/opt/oracle/product/11.1.0/ocsdb” para ORACLE_HOME y
“/opt/oracle/admin/ocsdb/bdump” para que el volcado de fondo y el destino de
registros se adhieran a las convenciones de nomenclatura establecidas por
OFA.

8) A y D. OFA es dirigido a hacerla administración de las Bases de Datos


Oracle más sencilla haciendo los archivos de Oracle más fáciles de encontraren
cualquier plataforma y cualquier sistema de archivos. En orden de hacer esto,
provee una estructura de directorios estandarizada para las instalaciones de
Oracle que hace que todas las instalaciones de Oracle sean similares,
reduciendo la curva de aprendizaje para los administradores. No es requerido
por Oracle, pero es altamente recomendado. Oracle no dispersa
automáticamente los archivos a través de las múltiples unidades, tampoco
provee una convención de nombres para archivos ejecutables Oracle, pero solo
los datos Oracle, redo, control, y otros archivos adjuntos a la instancia de la
Base de Datos.

16
9) C. El comando runInstaller –ignoreSysPrereqs invocará al OUI en
una computadora Unix/Linux, diciéndole que no chequee los prerrequisitos
antes de llevara a cabo la instalación. Los parámetros OUI son case-sensitive,
lo que hace que la respuesta D sea incorrecta, mientras que el comando
“setup” se usa en la plataforma Windows para invocarlo.

10) A. El archivo oraparam.ini contiene la información de los prerrequisitos del


sistema usados por OUI para verificar el sistema operativo y otros
requerimientos de instalación.

4 - Creando una Base de Datos Oracle

Crear una Base de Datos con el Asistente de Configuración de Bases de Datos. En


este ejercicio, primero se va a utilizar DBCA para crear una base de datos y
después podrá inspeccionar y interpretar los scripts que genera.
________________________________________________________________

Ejercicio 4.1 – Creando una base de datos con DBCA

1. Inicie sesión en el equipo como miembro del grupo que posee el software
Oracle. Por defecto, este será el grupo de dba en Unix/Linux, ORA_DBA en
Windows.

2. Confirme que su ORACLE_HOME apunta hacia el directorio donde el


software esté instalado. En Unix/Linux, ejecute echo $ ORACLE_HOME En
Windows, será la variable de registro que se ha fijado en el tiempo de
instalación.

3. Confirmar que su ruta de búsqueda incluye el directorio bin de Oracle


dentro de su inicio (home).

En Unix/Linux, para mostrar su ruta de búsqueda debe hacerlo con echo $


PATH.

En Windows, echo% PATH%.

Una variable adicional requerida para Unix/Linux es DISPLAY. Esto debe


apuntar a la terminal en la que está trabajando. Debe mostrarse con echo $
DISPLAY. Si está trabajando en la máquina donde se desea crear la base de
datos, un marco adecuado puede ser export DISPLAY = 127.0.0.1:0.0.

17
4. Primero eliminaremos la instancia creada automáticamente en el ejercicio
anterior. Ejecute DBCA. En Unix/Linux se llama dbca; en Windows es
dbca.bat. Se encuentra en su ORACLE_HOME / directorio bin, que debe
estar en su ruta de búsqueda.

5. Seleccione “Borrar Base de datos”

y luego en el segundo paso el nombre de la instancia “orcl”

Esto iniciará el proceso de eliminación de la instancia

18
6. Ahora podemos crear una nueva instancia teniendo más control sobre la
instalación. Ejecute DBCA.

19
7. Responder a las instrucciones de la siguiente manera:

a. En la instrucción "Seleccione la operación que desea realizar",


seleccione Crear una base de datos y haga click en Siguiente.

b. Cuando se le solicite "Seleccione una plantilla", elija la base de datos


personalizada y haga click en Siguiente.

c. Digite orcl para el nombre de base de datos global y de la SID y, a


continuación, haga click en Siguiente.

d. Seleccione las casillas para "Configurar el gestor de base de


datos con la empresa" y "Uso de base de datos de control de
gestión de bases de datos", pero no la casilla "Usar la red de
control de gestión de bases de datos", y haga clic en Siguiente.

e. No seleccione las casillas para "Activar notificación por correo


electrónico" o "Habilitar diario de copia de seguridad". Haga
click en Siguiente. Cambiar la traducción de los mensajes en negrilla

20
f. Seleccione la casilla de "Utilizar la misma contraseña para todas
las cuentas" y escriba la contraseña como ORACLE. Introduzca
nuevamente la contraseña para confirmar y haga click en Siguiente.

g. Seleccione "Sistema de Archivos" como mecanismo de


almacenamiento, y haga click en Siguiente.

h. Escoja "Usar las ubicaciones de los archivos de plantilla", como


la ubicación para los archivos de la base de datos, y haga click en
Siguiente.

i. Seleccione la opción de "Especificar el flash de recuperación",


pero no la casilla para "Habilitar el archivo" y haga click en
Siguiente.

j. Deseleccione las casillas para "Oracle texto", "Oracle OLAP" y


"Oracle espacial". Seleccione la casilla de verificación de
"Repositorio de Enterprise Manager". En "Componentes
Estándar de Base de Datos", anular la selección de todo. Presione
Siguiente.

k. Deje la Memoria, el dimensionamiento, el conjunto de caracteres y


sobre el modo de conexión por defecto, y haga click en Siguiente.

l. No realice modificaciones del almacenamiento de la Base de datos


sobre los valores predeterminados y haga click en Siguiente.

m. Seleccione las casillas de "Crear la base de datos" y "Generar


base de datos la creación de guiones", anular la selección de la
casilla correspondiente a "Guardar como plantilla de una base
de datos" Haga click en Siguiente.

21
La última pantalla muestra los detalles de la instancia y la base de datos que se
está creando. Dependiendo de la velocidad de su ordenador, como se sugiere en la
creación de este ejercicio (con exclusión de todas las opciones) puede tardar de
quince a cuarenta minutos.

Preguntas
1. ¿Cuál de las siguientes estructuras de memoria son partes requeridas, en
lugar de opcional, del SGA? (Elija tres opciones).
A. Buffer de cache de Base de Datos.
B. Java Pool.
C. Large Pool.
D. Redolog Buffer.
E. Shared Pool.
F. Streams Pool.

2. Está creando una Base de Datos. Ponga estos pasos en el orden correcto:
A. Construir el diccionario de datos.
B. Crear el archivo de parámetros.
C. Crear las vistas del diccionario de datos.
D. Ejecutar el comando CREATE DATABASE.
E. Ejecutar el comando STARTUP NOMOUNT.
22
3. Si no especifica el archivo de datos SYSAUX en su comando CREATE
DATABASE, ¿qué sucederá? (Escoja la mejor respuesta).
A. El comando fallará porque SYSAUX es un tablespace requerido.
B. El comando se ejecutará con éxito, pero usted debe añadir después
de la creación de la Base de Datos un tablespace SYSAUX.
C. El comando se ejecutará con éxito, y el tablespace SYSAUX por
defecto será creado para usted.
D. El comando se ejecutará con éxito, pero todo el diccionario de datos
estará en el tablespace SYSTEM.

4. ¿Cuál de los siguientes no pueden ser modificados nunca después de la


creación de la Base de Datos? (Elija la mejor opción).
A. Tamaño del Bloque de la Base de Datos.
B. El juego de caracteres de la Base de Datos.
C. El nombre de la Base de Datos.
D. Ninguna de las anteriores: no hay nada fijado a la hora de la creación
de la Base de Datos.

5. ¿Cuál de las siguientes es requerida para la creación de una Base de Datos?


(Seleccione la mejor respuesta).
A. La contraseña del root (Unix/Linux) o Administrador (Windows) del
sistema operativo.
B. Los permisos de ejecución sobre DBCA.
C. Al menos la misma cantidad de memoria RAM que el tamaño del
SGA.
D. Ninguna de las anteriores.
6. En Unix/Linux, usted ejecuta el DBCA, y no sucede nada. ¿Cuál podría ser la
causa de esto? (Escoja tres opciones).
A. No es miembro del grupo dba.
B. Su variable DISPLAY no está establecida en su dirección de terminal.
C. No ha configurado su variable DISPLAY.
D. No ha configurado su variable ORACLE_SID.

7. ¿Cuál de los siguientes archivos son opcionales? (Seleccione tres opciones).


A. Archivos de Registro de Redo en línea.
B. Archivo de Parámetros.
C. Archivo de contraseñas.
D. Archivo de datos del tablespace SYSAUX.
E. Archivo de datos del tablespace SYSTEM.
F. Archivo de datos del tablespace UNDO.

23
8. Si al ejecutar el comando CREATE DATABASE usted no especifica un
tablespace UNDO, ¿Qué pasará? (Elija la mejor respuesta).
A. El comando fallará porque el tablespace UNDO es requerido.
B. El comando se ejecutará con éxito, y se creará un tablespace UNDO
por defecto para usted.
C. El comando se ejecutará con éxito, pero debe crear un tablespace
UNDO después.
D. El comando se ejecutará con éxito, y usted talvez deba crear el
tablespace UNDO después.

9. Usted ha creado una Base de Datos pero no puede conectarse a ella con el
EM. ¿Qué podría estar causando esto? (Escoja la mejor opción).
A. No está siendo autenticado por el sistema operativo, o por la
autenticación de contraseña.
B. No ha ejecutado los scripts para crear el EM.
C. La red de control es un prerrequisito para el EM.
D. No tiene permisos para utilizar el EM.

10. ¿Cuándo se crea el Diccionario de Datos? (Escoja la respuesta que mejor


le parezca).
A. Cuando crea la Base de Datos.
B. Cuando ejecuta los scripts pos-creación catalog.sql y catproc.sql,
llamados por CreateDBcatalog.sql
C. Cuando se crean los tablespaces SYSTEM y SYSAUX.
D. No necesitan ser creados; siempre está disponible como parte de la
instancia.

11. ¿Cuál de los siguientes procesos es opcional? (Escoja tres de las opciones
que se le presentan).
A. Proceso de archivos.
B. Proceso de puntos de chequeo (Checkpoint).
C. Listener de la Base de Datos.
D. Agente de Administración de Control deGrid.
E. Escritor de Registros.
F. Proceso de Seguimiento

12. Creó una Base de Datos con dos archivos de registro redo en línea, uno
miembro de cada uno. ¿Qué debería hacer para proveer la tolerancia a
fallos? (Escoja la mejor respuesta).
A. Agregar dos grupos más, para hacer espejos de los dos primeros.
B. Agregar un miembro más a cada grupo.
C. Puede no hacer nada; estas características se arreglan a la hora de la
creación.

24
D. No necesita hacer nada; el segundo grupo ya hace de espejo para el
primero.

13. ¿Cuál vista del Diccionario de Datos le mostrará todas las tablas de la Base
de Datos? (Elija la respuesta correcta).
A. ALL_TABLES
B. DBA_TABLES
C. USER_TABLES
D. Ninguna. Para ver todas las tablas, debe consultar directamente el
diccionario de datos.

14. ¿Cuál de las siguientes cosas no está almacenada en el diccionario de


Datos?
A. Definiciones de usuario.
B. Paquetes PL/SQL suplidos.
C. Vistas del Diccionario de Datos
D. Ninguna, todas están almacenadas en el Diccionario de Datos

15. Usted deselecciona la Máquina Virtual de Java Oracle cuando ejecuta


DBCA, pero después usted quiere instalarla. ¿Qué debería hacer?
(Seleccione la mejor respuesta).
A. Crear el pool de Java en la Base de Datos.
B. Ejecutar los scripts para crear la JVM (Máquina Virtual de Java).
C. Elimine la Base de Datos y vuelva a crearla con JVM.
D. Levante el proceso de fondo Java.

Respuestas
1) A, D y E. El resto de los componentes son opcionales: el pool de Java es
requerido sólo si va a ejecutar Java; el Large pool es una opción de desempeño; el
pool de Flujos (Streams pool) se necesita sólo si está utilizando flujos, una opción
avanzada.

2) B, E, D, A y C. No puede levantar una instancia hasta que haya creado el


archivo de parámetros que la definen. Luego el comando CREATE DATABASE va a
crear su diccionario de datos. Sólo así podrá ejecutar los scripts para que la Base
de Datos se pueda usar.

3) C. El tablespace SYSAUX es necesario a la hora de la creación; si no la


especifica, entonces Oracle va a crear uno por usted.

4) A. Esta es la única configuración que no puede ser cambiada sin volver a crear
la Base de Datos. Por supuesto, hay muchísimas otras cosas que son muy difíciles
de cambiar.
25
5) D. La contraseña root del sistema operativo puede ocuparse a la hora de la
instalación, pero no se necesita para la creación. DBCA puede ser bonito, pero no
debe usarlo. La memoria RAM es irrelevante a la larga; a Oracle no le importa si
está corriendo en la memoria principal o en la virtual.

6) B. Con DISPLAY apuntando al lugar equivocado, sus ventanas X aparecerán ahí


(donde no pueda verlas). A y C causarían errores, y D es irrelevante; se configura
mientras se está ejecutando el DBCA.

7) B, C y F. Usted puede añadir un tablespace UNDO después. El archivo de


contraseñas puede ser una necesidad práctica pero ciertamente no es requerido. El
archivo de parámetros es opcional si está usando un archivo de parámetros
estático; puede borrarlo después de levantar la instancia (aunque no quisiera
hacerlo).

8) D. Diferente al tablespace SYSAUX, el tablespace UNDO realmente es opcional


aunque como pudo observar, es una característica de mayor rendimiento y
administración.

9) B. Los scripts para crear el repositorio del Enterprise Manager debe ser
ejecutado antes de que pueda usar el EM.

10) A. La creación de un diccionario de Datos es, más que cualquier otra cosa, lo
que sucede cuando ejecuta el comando CREATE DATABASE.

11) A, C y D. Un listener puede necesitarse para propósitos prácticos (o usuarios


que no pueden conectarse), pero es opcional. Archivar también es opcional,
aunque una buena idea. El agente para Control del Grid es, por supuesto,
necesario solo si desea usar el Control de Grid.

12) B. La tolerancia a fallos del registro de redo en línea es provisto por tener
múltiples miembros por grupo.

13) B. Esta es una pregunta OCP engañosa clásica. Apuntando a que los nombres
de las vistas son posiblemente ambiguos.

14) D. En este caso es que los paquetes PL/SQL se encuentran almacenados en el


Diccionario de Datos, aunque pertenecen a los usuarios de la Base de Datos.

15) B. Aunque podría, por supuesto, hacerlo a través de DBCA – mucho más
sencillo. A es una respuesta engañosa: necesita el pool de Java para ejecutar Java,
no crear la JVM.

26
5. Interactuando con la Base de Datos Oracle
Ejercicio 5.1 - Trabajando con SQL*Plus

En este ejercicio usted iniciará una instancia de la base de datos orcl.

_______________________________________________________________

1. Inicie la instancia de la base de datos usando el siguiente procedimiento


(como usuario oracle).

$ lsnrctl start
$ sqlplus /nolog
SQL> conn / as sysdba
SQL> startup
SQL > exit

$ emctl start dbconsole

2. Revise los siguientes scripts en /home/oracle


a. subebase.sh y subebase.sql
b. bajabase.sh y bajabase.sql

Ejercicio 5.2 - Trabajando con SQL*Plus

En este ejercicio usted invocará SQL * Plus, ejecutará y dará formato a unas
consultas.
________________________________________________________________

3. Inicie sesión en el equipo como usuario de Oracle (Unix/Linux), es decir, el


usuario propietario del software Oracle.

4. Se puede invocar SQL * Plus desde la línea de comandos mediante la


emisión del siguiente comando: $ Sqlplus / nolog

5. En SQL * Plus, conéctese a la instancia de base de datos por defecto como


el usuario del sistema con la contraseña correspondiente a ese usuario.
SQL> connect sistema / Oracle

6. Describir las estructuras de la DBA_TABLESPACES y DBA_DATA_FILES


tablas.
27
SQL> desc DBA_TABLESPACES;
SQL> desc dba_data_files;

7. Mostrar la lista de todas las tablas y sus datafiles.

SQL> SELECT DBA_TABLESPACES.tablespace_name, file_name


FROM DBA_TABLESPACES JOIN DBA_DATA_FILES
ON DBA_TABLESPACES.TABLESPACE_NAME =
DBA_DATA_FILES.TABLESPACE_NAME;

8. Formato de salida del nombre del archivo debe ser de 55 caracteres de


ancho y las los nombres de los tablespaces debe ser de 20 caracteres de
longitud y luego volverá a la consulta.

SQL> col file_name format a55


SQL> col tablespace_name format a20
SQL> SELECT DBA_TABLESPACES.tablespace_name, file_name
FROM DBA_TABLESPACES JOIN DBA_DATA_FILES
ON DBA_TABLESPACES.TABLESPACE_NAME =
DBA_DATA_FILES.TABLESPACE_NAME

9. Retornará una lista de todos los usuarios que poseen los objetos en la base
de datos, cada nombre de usuario aparece sólo una vez.

SQL> SELECT DISTINCT owner FROM DBA_OBJECTS;

10. Salir de SQL * Plus.

SQL> exit;

Ejercicio 5.3 – Configurando SQL Developer

En este ejercicio ud configurará SQL Developer para utilizarlo en tareas de dba.


________________________________________________________________

1. Descargar sqldeveloper-3.1.07.42-1.noarch.rpm del siguiente link


http://www.oracle.com/technetwork/developer-tools/sql-
developer/downloads/index.html

2. Descargar el JDK de este link


http://java.sun.com/j2se/1.5.0/download.jsp

28
3. Instalar los rpm
[root@localhost u01]# rpm -Uvh sqldeveloper-3.1.07.42-1.noarch.rpm
Preparing...
########################################### [100%]

[root@localhost u01]# rpm -Uvh jdk-7u4-linux-i586.rpm


Preparing...
########################################### [100%]
1:jdk
########################################### [100%]
Unpacking JAR files...
rt.jar...
jsse.jar...
charsets.jar...
tools.jar...
localedata.jar...
plugin.jar...
javaws.jar...
deploy.jar...
4. Para levantar la aplicación /opt/sqldeveloper/sh sqldeveloper.sh, nos va a
pedir la ruta de JDK

[oracle@localhost jdk1.7.0_04]$ cd /opt/sqldeveloper/


[oracle@localhost sqldeveloper]$ ls
dataminer jdbc jviews sleepycat sqldeveloper.sh
icon.png jdev modules sqldeveloper sqlj
ide jdev.label rdbms sqldeveloper.desktop timingframework
javavm jlib readme.html sqldeveloper.exe view-source-paths.lis
[oracle@localhost sqldeveloper]$ sh sqldeveloper.sh

Oracle SQL Developer


Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.

Type the full pathname of a J2SE installation (or Ctrl-C to quit), the path will be stored in
~/.sqldeveloper/jdk
/usr/java/jdk1.7.0_04
/opt/sqldeveloper/sqldeveloper/bin/../../ide/bin/launcher.sh: line 455:
/home/oracle/.sqldeveloper/jdk: No such file or directory

Ejercicio 5.4 - Trabajando con SQL Developer

En este ejercicio se conectará a SQL Developer de Oracle y podrá ejecutar y dar


formato a algunas consultas.
________________________________________________________________

5. Ejecute el siguiente comando para iniciar el SQL Developer

29
[oracle@localhost ~]$ sh /opt/sqldeveloper/sqldeveloper.sh

Oracle SQL Developer


Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.

Type the full pathname of a J2SE installation (or Ctrl-C to quit), the path will be stored in
~/.sqldeveloper/jdk
/usr/java/jdk1.7.0_04
Registered TimesTen

6. Configurar la conexión a la base de datos, para esto le damos click en el +


verde de la izquierda y llenamos los datos con nuestra base de datos.

7. En SQL Developer, escriba el comando para describir la tabla DESC


DBA_TABLESPACES o puedes usar el menú de navegación a la derecha para
navegar hasta la estructura de las vistas

30
8. Haga click en Clear para eliminar los comandos y los resultados anteriores y,
a continuación, escriba el comando SQL para mostrar una lista de todas las
tablas y sus archivos de datos asociados. Seguidamente, haga click en
Ejecutar.
SELECT
a.tablespace_name,
b.file_name
FROM
dba_tablespaces a JOIN dba_data_files b
ON a.tablespace_name = b.tablespace_name

31
9. Borrar los resultados anteriores y, después introduzca un comando para
devolver una lista de todos los usuarios que poseen los objetos en la base
de datos, cada nombre de usuario aparece sólo una vez.

32
10. F8 para tener acceso al historial de su sesión o del menú view SQL history
veremso una ventana a la derecha abajo con los últimos queries ejecutados

33
Haga clic en menú archivo, salir o ALT+F4 en la parte superior derecha para
poner fin a su período de sesiones SQL Developer.

6 – Administración de la Instancia de Oracle

Ejercicio 6.1 - Puesta en marcha y apagado de su base de datos con


SQL * Plus

Usar SQL * Plus para iniciar y detener la base de datos. Alternativamente, si su


base de datos ya está corriendo, debe detenerla y reiniciarla con el SQL * Plus. Si
está trabajando en Windows, asegúrese de que el servicio de Windows se está
ejecutando. Será llamado el OracleServiceORCL si su instancia tiene por
nombre Orcl. Inícielo a través de la interfaz de Windows o desde la línea de
comandos con

net start OracleServiceORCL.

34
La secuencia de comandos SQL*Plus se muestra a continuación.
________________________________________________________________

SUGERENCIA El servicio de Windows puede estar configurado para iniciar la


instancia y abrir la base de datos cada vez que inicie el servicio. Puede controlar
esto con la variable ORA_ORCL_AUTOSTART, se establece a TRUE o FALSE.

1. Iniciar SQL * Plus, utilizando el interruptor /nolog.


sqlplusw / nolog

2. Conectar con la autenticación del sistema operativo.


conectar / as sysdba

3. Comienza la instancia únicamente.


Startup nomount;

4. Monte la base de datos.


alter database mount;

5. Abra la base de datos.


alter database open;

6. Apagar, utilizando la opción inmediata.


shutdown immediate;

7. Conectar con autenticación por contraseña.


connect sys/ oracle as sysdba;

8. Inicie la base de datos con un solo comando.


startup;

9. Mostrar el parámetro BACKGROUND_DUMP_DEST.


show parameter background_dump_dest;

10. Navegue hasta el directorio identificado por el parámetro


BACKGROUND_DUMP_DEST . En este encontrará su registro de alertas,
llamado alert_<SID>. log.

11. Abra el registro de alerta con cualquier editor de texto que desee y busque
en las últimas doce líneas. Verá un historial de los comandos de inicio y
apagado, así como información sobre el inicio y parada de los distintos
procesos de arranque y una lista de los parámetros no predeterminados
leídos del archivo de parámetros y se utiliza para construir la instancia en la
memoria.

35
Ejercicio 6.2 - Puesta en marcha y apagado de su base de datos con
EM

Tal como en el ejercicio anterior, el objetivo es familiarizarse con la apertura y


cierre de la base de datos.
________________________________________________________________

36
1. Asegúrese que el Listener de su base de datos y el control de procesos de la
base de datos se encuentren en ejecución, mediante las introducciones:
$ lsnrctl status
$ emctl estado dbconsole

2. Inicie su navegador de Internet, y la pagina de EM con la dirección URL


apropiada, como

http://127.0.0.1:5500/em

3. Iniciar sesión como en la figura 1 que a continuación se muestra. Haga click


en el botón SHUTDOWN. Escriba en los credenciales de los dos sistemas
operativos y de la base de datos como se muestra en la 2 y haga click en
Aceptar.

Figura 1.

37
Figura 2.

SUGERENCIA En Windows, la cuenta del sistema operativo que utilice debe


haber tener el privilegio “Logon as Batch job” "Iniciar sesión como trabajo
por lotes". Tenga en cuenta que por defecto, ni siquiera la cuenta de
38
administrador de Windows tiene este privilegio. Consulte su documentación de
Windows sobre la forma de conceder este privilegio, hay diferencia de acuerdo a la
versión instalada. En Windows y Unix/Linux, la cuenta debe ser miembro del grupo
que posee el software de Oracle.

4. Haga clic en Sí para un cierre inmediato. Tenga en cuenta que la pestaña de


Opciones avanzadas ofrece una elección de los cuatro modos de apagado.

5. Refresca tu navegador (puede tardar unos instantes) y verá la siguiente


pantalla.

Figura 3.

6. Haga click en Inicio y escriba las credenciales, como en la Figura 2.

7. Haga click en Sí para aceptar el modo de inicio por defecto, el cual es


"Abierto".

SUGERENCIA Al iniciar y detener la base de datos, EM a veces se confunde si


realmente la base de datos está arriba o abajo. Esto no sorprende dado que una
gran parte del EM en realidad reside en la propia base de datos. Si te das cuenta
de (y será evidente) de que esto ha sucedido, simplemente tiene que detener e
iniciar el proceso dbconsole con emctl, y regrese al navegador.

8. Cuando la base de datos este abierta, EM le presentará un inicio de sesión


pantalla. Registrarse como usuario SYSTEM.

39
9. Desde la página de inicio de la Base de Datos, tome el enlace de Contenido
de Log de Alerta en la sección Enlaces Relacionados en la parte inferior de
la página y examinar el contenido del Log de Alertas.

40
Ejercicio 6.3 - Visualización de los parámetros con el EM

Con este ejercicio, usted verá la configuración de parámetros de Oracle y podrá


distinguir entre los parámetros básicos y avanzados.
________________________________________________________________

1. Abra su navegador de Internet, y acceder a su instancia, a través del EM.

2. Desde la página de inicio de la Base de Datos, vaya a la pestaña de


Administración.

3. En la sección Instancia, presione el vínculo de Todos los parámetros de


inicialización.

Examine los valores de los parámetros utilizados para controlar su instancia. Tenga
en cuenta que de los más de doscientos cincuenta parámetros, menos de treinta
se clasifican como básicos.

Preguntas

1. Usted ejecuta el URL http://127.0.0.1:5500/em y recibe un error. ¿Cuál


puede ser el problema? (Escoja tres respuestas).
A. NO ha levantado el Listener de la Base de Datos.
B. No ha iniciado el proceso dbconsole.
C. El proceso dbconsole se está ejecutando en un puerto diferente.
D. No inició sesión en el nodo del servidor de la Base de Datos.
E. No ha levantado el Agente de Control de Grid.
F. No ha levantado la Base de Datos.

2. ¿Cuál de estos archivos debe estar sincronizado para que una Base de
Datos se abra? (Seleccione la mejor respuesta).
A. Archivos de Datos, Archivos de Registro Redo en línea y el archivo de
control.
B. El archivo de parámetros y el archivo de contraseñas.
C. Todas las copias multiplexadas del archivo de control.
D. Ninguno. SMON sincronizará todos los archivos por la recuperación
de la instancia después de abrir la Base de Datos.

3. Durante la transición del modo NOMOUNT a MOUNT, ¿cuál archivo o


archivos son requeridos? (Escoja la mejor respuesta).
A. Archivo de parámetros.
41
B. Archivos de Control.
C. Registros de Redo en línea.
D. Archivos de Datos.
E. Todos los anteriores.

4. Usted baja su instancia con el comando SHUTDOWN IMMEDIATE. ¿Qué


sucederá en el próximo inicio? (Escoja la mejor respuesta).
A. SMON ejecutará la recuperación automática de la instancia.
B. Manualmente debe ejecutar la recuperación de la instancia.
C. PMON hará rollback a las transacciones a las que no se les hizo
commit.
D. La Base de Datos se abrirá sin recuperarse.

5. Ha creado dos Bases de Datos en su computadora y desea utilizar el


Controlador de Bases de Datos. ¿Cuáles de los siguientes comandos son
correctos? (Seleccione dos opciones).
A. No puede usar el Controlador de Base de Datos, porque solamente
puede administrar una Base de Datos por computadora.
B. Debe usar el Controlador de Grid, debido a que tiene múltiples Bases
de Datos en su computadora.
C. Debe iniciar un proceso OC4J y contactarlo en diferentes puertos
para cada Base de Datos.
D. Debe levantar una instancia OC4J por Base de Datos.
E. Debe establecer su variable ORACLE_SID apropiadamente antes de
iniciar una instancia OC4J.

6. Usted ejecuta el comando SHUTDOWN, parece que se bloquea. ¿Cuál


podría ser la razón? (Elija la mejor respuesta).
A. No está conectado como SYSDBA o SYSOPER.
B. Hay otras sesiones levantadas.
C. No se conectó con la autenticación del sistema operativo o de archivo
de contraseñas.
D. Hay acciones activas en la Base de Datos; cuando se completen,
entonces procederá a ejecutarse el comando SHUTDOWN.

7. ¿Cuál acción debería tomar después de terminar la instancia con el


comando SHUTDOWN ABORT? (Escoja la mejor respuesta).
A. Respaldar la Base de Datos inmediatamente.
B. Abrir la Base de Datos y llevar a cabo la recuperación de la Base de
Datos.
C. Abrir la Base de Datos y llevar a cabo la recuperación de la instancia.
D. Ninguna, pero algunas transacciones se podrían perder.
E. Ninguna. La recuperación será automática.

42
8. Usando el Controlador de Base de Datos, usted detiene el Listener de la
Base de Datos. ¿Cuál de las siguientes afirmaciones es verdadera?
(Seleccione la mejor respuesta).
A. El EM no será hábil de gestionar la Base de Datos nunca más.
B. Las sesiones existentes se cerrarán.
C. No pueden ser establecidas sesiones nuevas.
D. Debe reiniciar el listener con la utilidad lsnrctl.

9. El controlador de Base de Datos es una aplicación Web multitarea. ¿Cuál


tarea es responsable de la administración de ventanas? (Escoja la mejor
respuesta).
A. La tarea media dbconsole.
B. Los procedimientos con las tareas de la Base de Datos.
C. El navegador del cliente.
D. El entorno de tiempo de ejecución de la aplicación OC4J.

Respuestas

1) B, C y D. Cualquiera de estas podría ser una razón. A, E y F están relacionadas


a otros procesos.

2) A. Estos son los tres tipos de archivos que componen la Base de Datos:
archivos de datos, archivos de registro redo en línea y el archivo de control.

3) B. Recuerde cuáles archivos se leen en cada etapa: el archivo de parámetros en


NOMOUNT, los archivos de registro redo en línea y los archivos de datos en OPEN.

4) D. Es verdadero porque IMMEDIATE es un cierre limpio.

5) D y E. D es correcto porque una OC4J puede soportar únicamente un proceso


de Controlador de Base de Datos para gestionar una Base de Datos y E es correcta
también porque sin esto la utilidad emctl no sabrá cuál OC4J iniciar.

6) B. Esta respuesta es correcta porque el modo de cierre por defecto es


NORMAL, la cual esperará que todas las sesiones se desconecten.

7) E. ¡Es vital recordar esto! Después de un colapso o aborto la recuperación es


automática e indetenible. No existe la pérdida de datos nunca y usted no necesita
hacer nada.

43
9) C. Sin el listener no hay manera de ejecutar el servicio necesario para una
sesión.

10) C. La administración local de ventanas la realiza su navegador local. Las otras


respuestas se refieren a los procesos que residen a nivel del proceso de servidor (A
y D), o en la Base de Datos (B).

7 – Administración de Estructuras de almacenamiento


de Oracle

Ejercicio 7.1 - Uso del EM para Crear Tablespaces

En este ejercicio se conectará al Enterprise Manager y crear un tablespace en su


base de datos.
________________________________________________________________

1. Inicie su navegador de Internet y conectarse a la URL de Enterprise


Manager de Oracle en su servidor de bases de datos, especificando el
número de puerto adecuado y nombre de la máquina.

2. Acceda a su base de datos con el usuario SYSTEM con la contraseña


correspondiente. Si recibe la información de licencia, haga click en Aceptar
para continuar.

3. En la página principal del Enterprise Manager, haga click en el hipervínculo


de Administración para visualizar la página de Administración.

44
4. Haga clic en el hipervínculo de Tablespaces bajo el título de
Almacenamiento, para mostrar los tablespaces actuales en la base de datos
y su utilización del espacio.

5. Para crear un nuevo tablespace, haga click en Crear al lado derecho para
abrir la pantalla Crear tablespaces.

6. En el cuadro de texto Nombre, escriba el nombre del tablespace que desea


crear, “test”, por ejemplo. Usted notará que también existen una serie de
opciones sobre las características del tablespace, incluida la gestión de
extents (local o diccionario), tipode tablespace (permanentes, temporales, o
Undo), y el estado (de lectura / escritura, sólo lectura, o fuera de línea).

Cree su tablespace como Permante, “locally managed, Status = read/write

7. Bajo el encabezado Datafiles tiene la opción de agregar uno o más datafiles


al tablespace. Si selecciona la casilla de Usar Tablespace de Archivo
Grande, su tablespace sólo puede tener un archivo de datos cuyo límite de
tamaño de es tan grande como lo permita el sistema de archivos. Los
tablespaces de Archivo Grande no pueden ser administrados por diccionario.
No seleccione la opción de Usar Tablespace de Archivo Grande y, a
continuación, haga click en Agregar para cargar la página de Añadir Archivo
de Datos.

45
8. En la página Añadir Archivo de Datos, escriba el nombre del archivo para el
tablespace y verifique que la localización provista es la adecuada. EM le
indica la ubicación predeterminada para los archivos de datos según las
directrices de OFA, por lo general el directorio apuntado por la ubicación $
ORACLE_BASE / oradata / <db_name>. También debe especificar un
tamaño de archivo o acepte el valor por defecto. En virtud de
almacenamiento puede especificar si desea o no que crezca
automáticamente el archivo (AUTOEXEND) cuando se llena, así como
cuanto crecer y cual será el tamaño máximo del archivo y hasta dónde
puede crecer. AUTOEXTEND le permite automatizar el crecimiento del
archivo y al mismo tiempo proporcionar un límite opcional en el crecimiento
de manera que un archivo no ocupe todo el espacio disponible en disco.

Deje el tamaño del archivo de datos en el valor predeterminado de 100 MB


y especifique el incremento automático, en incrementos de 50 MB hasta un
tamaño máximo de 500MB. Haga click en Continuar cuando haya terminado.

46
9. En la página Crear Tablespaces, haga click en Mostrar SQL para mostrar los
comandos SQL que se enviará a las bases de datos para crear los
tablespaces. Cuando haya revisado el código, haga click en Volver.
10.

11. Haga clic en el hipervínculo de almacenamiento para visualizar la página de


Opciones de Almacenamiento. Debido a que usted especificó que la
tablespace tendría administración de local, aquí puede especificar si la
asignación de las extents se realizan automáticamente por Oracle basado en
los datos almacenados en los tablespaces, en cuyo caso usted no puede
controlar la medida de las extents. Si usted desea hacer todos los extents
del mismo tamaño, puede especificar tamaño uniforme, que por defecto le
asigna 1 MB. El tamaño uniforme tiene sentido para tablespaces temporales
y para aquellos tablespaces cuyos datos tienen un tamaño de fila similar (es
decir, todas las filas son grandes o todas son pequeñas). No se puede
utilizar la asignación de crecimiento automático para los
tablespaces temporales.

47
La segunda opción en esta pantalla se refiere a la forma en que el espacio se
gestionará en el segmento. Con la administración automática del espacio del
segmento, Oracle utilizará mapas de bits para determinar qué bloques están
libres y cuáles contienen grandes cantidades de datos. La cantidad de espacio
que existe para insertar filas será automáticamente rastreado por el mapa de
bits que contiene todos los bloques asignados al segmento. Este es un método
eficaz que libera al DBA de definir adecuadamente los de administración de
espacio de los segmentos de forma manual. Utilizar la administración de
espacio manual requiere que el DBA o el creador del segmento especifique
valores para los parámetros PCTFREE, PCTUSED, FREELISTS, y FREELIST
GROUPS para crear el objeto y darle mantenimiento a medida que datos
aumenta.

12. Haga clic en el hipervínculo Umbrales (Thresholds) para abrir la página


Umbrales. Los umbrales le permiten que el Enterprise Manager le avise
cuando el espacio en los tablespaces está agotado. Puede especificar los
umbrales de la base de datos, especifíquelos para tablespaces, o para
desactivarlos para tablespaces. Deje la configuración actual en los valores
predeterminados y, a continuación, haga click en Aceptar para crear el
tablespace.

48
13. Después de una breve demora, se le presentará la página de Tablespaces
del Enterprise Manager, muestra al lado, la lista donde se puede ver el
tablespace que acaba de crear. Puede también crear más tablespaces o
modificar los que están ahí.

49
Ejercicio 7.2 - Uso de EM para modificar un Tablespace

En este ejercicio se conectará al Enterprise Manager y podrá cambiar las


características de los tablespaces que creó en el ejercicio anterior.
________________________________________________________________

1. Inicie un navegador de Internet y conectarse al URL de Enterprise Manager


de Oracle en su servidor de bases de datos especificando el número de
puerto adecuado y nombre de la máquina.

2. Acceda a su base de datos con el usuario SYSTEM con la contraseña


correspondiente. Si recibe la información de licencia, haga click en Aceptar
para continuar.

3. En la página principal del Enterprise Manager, haga click en el hipervínculo


de Administración para visualizar la página de Administración.

4. Haga click en el hipervínculo de Tablespaces bajo la sección de


Almacenamiento para mostrar los tablespaces actuales en la base de datos
y su utilización del espacio.

5. Seleccione el tablespace creado en el ejercicio anterior y, seguidamente,


haga click en Editar para mostrar la página de edición de tablespaces.
Tenga en cuenta que la mayoría de las opciones están de color gris a
excepción de la casilla de verificación para hacer que este tablespace sea el
predeterminado para la Base de Datos, y las diversas opciones de estado.
Esto es porque la adonistración de extents y el tipo de los tablepaces no
pueden ser modificado después de su creación, debe eliminar y volver a
crear el tablespace para cambiar esto.

50
6. La modalidad default de operación de un tablespace es READ/WRITE Haga
click en la lista desplegable al lado para mostrar los cuatro los modos
disponibles. Teniendo un tablespace fuera de línea hace que su contenido
no este disponible hasta que el tablespace se pone de nuevo en línea,
Cambiar el esta de un tablespace a fuera de línea se debe hacer con gracia
para evitar tener que realizar recuperación cuando el tablespace está en
línea nuevamente. Las opciones NORMAL e IMMEDIATE ejecutarán un
checkpoint antes de deshabilitar todos los datafiles del tablespace que se
pondrá fuera de línea, aunque la opción IMMEDIATE no puede utilizarse si
la base de datos no esta en modalidad noarchivelog. Usar la opción
TEMPORARY tomará cuidadosamente los datafiles fuera de línea y no
exigirá la recuperación a menos que uno de los datafiles ya estuviera fuera
de línea debido a la fallas en los medios de almacenamiento, en cuyo caso
será necesaria la recuperación. El modo RECOVERY está obsoleto y no
debe usarse, sino que se incluye para compatibilidad con versiones
anteriores.

7. Si desea agregar a un archivo de datos al tablespace, puede hacer click en


Añadir. Por ahora haga click en Editar para mostrar el archivo de la página
de edición. Observe que puede cambiar el tamaño del archivo de la entrada
a un nuevo valor. Puede especificar un valor menor o más grande que el
tamaño del archivo existente, mas no menor a la cantidad de datos que
existen físicamente en el archivo, de lo contrario, recibirá el mensaje de
error "ORA-03297: file contains used data beyond requested
RESIZE value". También puede cambiar las características del crecimiento

51
automático, puede cambiar el nombre del archivo de datos, o cambiar su
ubicación.

Reduzca el tamaño del archivo de datos a 50 MB y que haga click en


Continuar.

8. Haga click en Mostrar SQL para mostrar el código SQL necesario para
realizar los cambios, como en Lista de código de este ejemplo y, a
continuación, haga click en Volver:

ALTER DATABASE DATAFILE


'/ Oracle/oradata/orcl/test01.dbf' RESIZE 50M

9. Haga click en Aplicar para guardar sus cambios.

10. Haga click en el hipervínculo Tablespaces en la parte superior de la página


de inicio del EM para mostrar la lista de tablespaces en la base de datos.

11. Haga click en la lista desplegable junto a Acciones para mostrar la lista de
acciones disponibles. Estas son actividades que se pueden realizar en el
seleccionado de tablas (Anexo A).

52
12. Cierre el Enterprise Manager.

Ejercicio 7.3 - Uso de Enterprise Manager para borrar un Tablespace

En este ejercicio se conectará al Enterprise Manager y borrará el tablespace creado


anteriormente.
________________________________________________________________

1. Inicie el navegador de Internet y conectarse al URL de EM de Oracle en su


servidor de bases de datos, especificando el número de puerto adecuado y
nombre de la máquina.

2. Acceda a su base de datos con el usuario SYSTEM con la contraseña


correspondiente. Si recibe la información de licencia, haga click en Aceptar
para continuar.

53
3. En la página principal del EM, haga click en el hipervínculo de
Administración para visualizar la página de Administración.

4. Haga click en el hipervínculo Tablespaces bajo la región de


Almacenamiento para mostrar conjunto de Tablespaces que existen
actualmente en la base de datos y su utilización del espacio.

5. Seleccione el tablespace creado en el ejercicio anterior y, a continuación,


haga click en Eliminar para visualizar la página de advertencia de
Eliminación de tablespaces. Lea la alerta y tenga en cuenta que una copia
de seguridad siempre debe ser realizada antes de eliminar un tablespace en
el caso de que quiera obtener los datos de vuelta.

6. Asegúrese que la casilla de Eliminar los Datafiles Asociados del Sistema


Operativo está marcada y, a continuación, haga click en Sí para borrar el
tablespace.

7. Observe que el tablespace ya no aparece en la página de tablespaces.


Verifique en el sistema operativo para garantizar que el archivo de datos
también se eliminó.

8. Cierre Enterprise Manager.

Preguntas
1. ¿Cuál línea, en este código, hará que el siguiente comando SQL falle? (Elija la
mejor respuesta).
1 CREATE BIGFILE TABLESPACE grande
2 DATAFILE ‘/oracle/orcldata/grandedata02.dbf’
3 EXTENT MANAGEMENT LOCAL
4 FREELISTS 5

54
5 NOLOGGING;
A. 1
B. 2
C. 3
D. 4
E. 5
F. El comando tendrá éxito.

2. Ya montó la Base de Datos y no la ha abierto. ¿Cuáles vistas necesita consultar


si requiere la ubicación de todos los archivos de datos y los nombres de los
tablespaces a los que pertenecen? (Seleccione todas las respuestas que
apliquen).
A. V$DATAFILE
B. DBA_DATA_FILES
C. V$TABLESPACE
D. DBA_TABLESPACES
E. V$TEMPFILE
F. DBA_TEMP_FILES
G. V$UNDOFILE

3. Intenta crear un tablespace y recibe un error que dice que el archivo de datos
para el tablespace no puede ser creado. El tamaño del archivo de datos que
quiso crear es de 3GB y usted especificó la opción SMALLFILE para el
tablespace. Usted verifica que el directorio del sistema operativo donde el
archivo va a residir le pertenece al mismo usuario que Oracle y que el usuario
tiene permisos de lectura/escritura. Usted inició sesión como usuario SYSTEM y
hay suficiente espacio en disco duro. ¿Cuál es probablemente la causa del
error? (Elija la mejor respuesta).
A. No puede crear un archivo mayor a 2GB en una Base de Datos Oracle
cuando ya se especificó SMALLFILE.
B. El sistema operativo no puede crear un archivo que supere los 2GB.
C. Debe especificar la opción WITH OVERWRITE para la especificación
del archivo de datos.
D. Debe especificar la opción REUSE para la especificación del archivo
de datos.
E. Debe especificar la opción AUTOEXTEND para la especificación del
archivo de datos.

4. ¿Cuál línea de código causará que el siguiente comando SQL falle? (Elija la
mejor opción).
1 CREATE BIGFILE TABLESPACE OrclDATA
2 DATAFILE ‘/oracle/orcldata/orcldata02.dbf’
3 EXTENT MANAGEMENT DICTIONARY
4 FREELISTS 5
55
5 NOLOGGING;
A. 1
B. 2
C. 3
D. 4
E. 5
F. El comando se ejecutará con éxito

5. Usted determina que el archivo de datos perteneciente al tablespace


ARCHIVE2002 es demasiado grande. Quiere reducir el tamaño del archivo de
datos para que ese espacio de disco no se desperdicie. Este tablespace no
tendrá ningún dato añadido. Cuando usa el Enterprise Manager para reducir el
tamaño del archivo de datos perteneciente al tablespace, recibe un error. ¿Cuál
es la causa más probable? (Escoja la mejor respuesta).
A. No puede reducir el tamaño de loa archivos de datos en Oracle.
B. No puede reducir el tamaño de loa archivos de datos con el
Enterprise Manager.
C. No tiene permisos suficientes para reducir el tamaño del archivo.
D. El archivo no existe.
E. El archivo contiene datos más allá del tamaño al que quiere reducirlo.

6. Usted ejecuta el siguiente comando para eliminar un tablespace y recibe un


error indicando que el tablespace no se puede borrar. ¿Cuál es la causa
aparentemente? (Elija la mejor respuesta).
DROP TABLESPACE SYSAUX INCLUDING CONTENTS CASCADE
CONSTRAINTS;
A. Los tablespaces del sistema no se pueden borrar.
B. No tiene permiso para eliminar el tablespace SYSAUX.
C. Objetos en otros tablespaces dependen de algunos objetos del
tablespace que se está intentando eliminar.
D. No puede eliminar objetos en el tablespace que no creó.
E. El comando se ejecutará con éxito.

7. Quiere cambiar la administración de extents en su tablespace DATA09 de


administración local a administración por diccionario para que al igual que los
otros tablespaces esté en el rango de nombres DATA01 – DATA08. ¿cuál
método puede usar para hacer este cambio? (Seleccione la respuesta que le
parezca mejor).
A. DBMS_SPACE_ADMIN.TABLESPACE_DICTIONARY_MANAGED
B. DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_DICITONARY
C. Enterprise Manager
D. ALTER TABLESPACE DATA09 EXTENT MANAGEMENT DICTIONARY
E. NO puede convertir un tablespace de gestión local a gestión de
diccionario.
56
8. ¿Cuáles permisos son requeridos para crear un tablespace? (Escoja todas las
opciones correctas).
A. CREATE TABLESPACE
B. MANAGE DATABASE
C. DBA
D. SYSDBA
E. SYSOPER

9. ¿Qué tipos de segmentos pueden almacenar los tablespaces en una Base de


Datos Oracle 12c? (Seleccione todas las respuestas correctas).
A. Tablas.
B. Segmentos de Ordenamientos.
C. Segmentos de Rehacer.
D. Segmentos UNDO.
E. Segmentos DBA.
F. Clusters.

57
Respuestas
1) D. Cuando se especifica la administración local de extents a la hora de crear el
tablespace así como tampoco puede especificar el parámetro de almacenamiento
de segmento gestionado por diccionario. FREELISTS pueden especificarse sólo
cuando la administración de extents es de diccionario, por lo que esa parte del
comando CREATE TABLESPACE causará que todo el comando falle.

2) A, C y E. Porque aún la Base de Datos no está aún en el estado OPEN,


cualquiera de las vistas del diccionario de datos no son accesibles aún; sólo
pueden ser consultadas cuando la Base de Datos se encuentra abierta. La vista
V$TABLESPACE le dará una lista de los tablespaces. Las vistas V$DATAFILE y
V$TEMPFILE pueden unirse a la vista V$TABLESPACE usando la columna TS# para
devolver una lista de todos los tablespaces y sus archivos de datos. No existe una
vista V$UNDOFILE.

3) D. La razón más probable de que esté recibiendo un error en la creación del


archivo de datos para el tablespace es que ya existía un archivo con ese nombre.
Para corregir esto, debe especificar la opción REUSE en la especificación del
archivo de datos para que Oracle sobrescriba el archivo existente (o elimine el
archivo manualmente desde le disco duro). Ninguno, ni Oracle ni el sistema
operativo impedirá la creación de un archivo de 3 GB para un tablespace
SMALLFILE.

4) C. En orden para crear un tablespace BIGFILE debe especificar la


administración local de extents y el manejo automático del espacio de segmentos.
No puede crear un tablespace BIGFILE administrado por diccionario.

5) E. Oracle le permite reducir el tamaño de los archivos de datos y esto puede


hacerse desde la línea de comandos o utilizando el Enterprise Manager. Si puede
cambiar el tamaño del archivo en el Enterprise Manager, tiene los permisos
necesarios para desempeñar esta acción. La razón más probable por la que usted
no es capaz de realizar esto es que existe más datos en el archivo de datos que
espacio al que quiere reducirlo. Especifique un valor mayor e inténtelo otra vez.

6) A. SYSAUX es un tablespace del sistema y no se puede borrar. Las mismas


razones aplican para el tablespace SYSTEM.

7) E. Una vez que el tablespace está gestionado localmente, no es posible


convertirlo en un tablespace de gestión de diccionario. No existe comando o
alguna opción del Enterprise Manager para hacer el cambio.

58
8) A y C. Debe otorgar el permiso de sistema CREATE TABLESPACE o el rol de
DBA para crear un tablespace. No existe el permiso MANAGE DATABASE. Los roles
SYSOPER y SYSDBA proveen permisos de administración de la instancia y de la
Base de Datos pero no otorga específicamente el permiso para la creación de
tablespaces.

9) A, B, D y F. Los tablespaces en Oracle pueden almacenar tablas, clusters


(ambos son tipos de segmentos permanentes, que también incluye índices,
particiones y otros), segmentos de Undo y segmentos de Ordenamiento (un tipo
de segmento temporal). Los segmentos de Rehacer y de DBA no existen. Redo se
almacena en los archivos de registro de Redo.

8 - Administrando los usuarios de la Base de Datos

Ejercicio 8.1 - Uso de Enterprise Manager para crear un usuario de la


Base de Datos

En este ejercicio se conectará al Enterprise Manager y creará un usuario de la Base


de Datos.
________________________________________________________________

1. Inicie un navegador de Internet y conectarse al URL del Enterprise Manager


en su Servidor de Bases de Datos Oracle, especificando el número de puerto
adecuado y el nombre de la máquina.

2. Acceda a su base de datos con el usuario SYSTEM con la contraseña


correspondiente. Si recibe la información de licencia, haga click en Aceptar
para continuar.

3. En la página principal del Enterprise Manager, haga click en el hipervínculo


de Administración para visualizar la página de Administración.

4. Haga click en el Usuarios bajo la sección de Esquema para mostrar a los


usuarios definidos en la actualidad en la base de datos, sus estados y
parámetros.

59
5. Haga click en Crear para mostrar la página Crear Usuario.

6. Introduzca valores para los parámetros requeridos, incluyendo un nombre


de usuario y una contraseña, confirmar la contraseña de su elección. Elija
un tablespace predeterminado (use USERS si existe, de lo contrario, utilizar
el dibujo de linterna para seleccionar un tablespace en la Base de Datos) y
un tablespace temporal (utilizar TEMP si existe), y garantizar que el estado
está desbloqueado y que la casilla de Expirar la contraseña está sin marcar.

60
7. Haga click en Mostrar SQL para mostrar el código para crear el usuario.
Note de la parte del código "GRANT CONNECT TO <nombre>". Esto
garantiza al usuario la función CONNECT, que le permite conectarse a la
instancia. Sin el rol CONNECT concedido, el usuario recibirá un mensaje de
error cuando trate de conectarse a la instancia. Crear una cuenta de usuario
por sí mismo no otorga al usuario permiso para conectarse a la instancia y
el acceso la base de datos.

8. Haga click en Volver para regresar a la página Crear Usuario.

9. Haga click en Aceptar para crear el usuario. Usted debe ser devuelto a la
lista de usuarios con el nuevo usuario ahora visible en la lista. Verificar esto
y luego cierre el Administrador corporativo.

Ejercicio 8.2 - Uso de Enterprise Manager para Otorgar privilegios del


sistema

En este ejercicio se conectará al Enterprise Manager y se crearán usuarios


adicionales a la Base de Datos y les conceda privilegios del sistema.
________________________________________________________________

1. Inicie un navegador de Internet y conéctese al URL de Enterprise Manager


de Oracle en su servidor de bases de datos, especificando el número de
puerto adecuado y nombre de la máquina.

2. Acceda a su base de datos con el usuario SYSTEM con la contraseña


correspondiente. Si recibe la información de licencia, haga click en Aceptar
para continuar.

3. En la página principal del Enterprise Manager, haga click en el hipervínculo


de Administración para visualizar la página de Administración.

4. Haga click en el hipervínculo Usuarios para mostrar a los usuarios definidos


en la actualidad en la base de datos, sus estados y parámetros.

61
5. Haga click en Crear para mostrar la página Crear Usuario.

6. Llene los valores para crear un nuevo usuario llamado Juan con contraseña
"oracle", en el tablespace USERS por defecto y uno temporal TEMP.
Asegurarse que la cuenta no está bloqueada y que la casilla para que la
contraseña expire no esté seleccionada, y luego haga click en Aceptar para
crear el usuario.

7. Crear dos nuevos usuarios (Tomás y Jessica) con la misma configuración


que Juan.

8. Iniciar otra sesión de SQL Developer para su instancia de base de datos y


entrar como usuario SYSTEM con la contraseña correspondiente.

9. Introduzca los siguientes comandos SQL en la ventana de trabajo y, a


continuación, haga click en Ejecutar para ejecutarlos:

GRANT CREATE TABLE TO JUAN WITH ADMIN OPTION;


/
GRANT CREATE VIEW TO TOMAS;
/
GRANT SELECT ANY TABLE TO JESSICA;
/

62
10. Salga de SQL Developer y, a continuación, inicie sesión como JUAN con la
contraseña adecuada.

11. Ejecutar el siguiente comando para crear una tabla y el mensaje de error
que usted recibe debido a la falta de cupo en las tablas:

CREATE TABLE JUAN1 (ID NUMBER);

12. Volver al Enterprise Manager y seleccione el usuario JUAN en la lista de


usuarios y, a continuación, haga click en Editar.

13. Haga click en el hipervínculo de Usuarios y, a continuación, para los


usuarios de tablespace seleccione un valor de la lista desplegable.
Introduzca 50 en el valor de la columna conceder al usuario JUAN una cuota
de 50 MB en el tablespaces USERS, como se muestra a continuación, y
después haga click en Aplicar.

63
14. Modificar la cuota de los Usuarios de tablas para los usuarios Tomas y
Jessica también a 50 MB.

15. En SQL Developer conectado como JUAN, intente volver a crear la tabla
juan1.
Observe que el comando tuvo éxito, ya que Juan tiene ahora un cupo en el
tablespace USERS.

16. Introduzca algunos datos en la tabla juan1 mediante los siguientes


comandos en SQL Developer y luego haciendo click en Ejecutar:

INSERT INTO JUAN1 VALUES (100);


INSERT INTO JUAN1 VALUES (101);
INSERT INTO JUAN1 VALUES (102);
INSERT INTO JUAN1 VALUES (103);
INSERT INTO JUAN1 VALUES (104);
COMMIT;

17. El comando GRANT CREATE TABLE TO TOMAS para crear tablas y, a


continuación, haga click en Ejecutar.

18. Salga de SQL Developer como Juan y acceder como Tomas.

19. Intente consultar los datos en la tabla Juan1. Note el mensaje de error
indicando que el objeto no se puede encontrar, lo que significa en realidad
es que no tiene permisos.

64
20. Ejecute el mismo comando CREATE TABLE JUAN1 como antes mientras está
conectado como Tomas. Observe que es posible crear dos tablas llamadas
Juan1 siempre que estén en diferentes esquemas.

21. Salga de SQL Developer y acceda de nuevo como Jessica.

22. Intente consultar la tabla Juan1 en los esquemas de Juan y Tomas. Usted
puede realizar estas acciones, ya que a Jessica se ha concedido el privilegio
SELECT ANY TABLE.

23. En Enterprise Manager, seleccione Jessica y haga click en Ver para mostrar
la información sobre la cuenta de usuario de Jessica y los privilegios
concedidos a ella.

65
24. Salga de SQL Developer y del Enterprise Manager.

Ejercicio 8.3 - Uso de Enterprise Manager para otorgar Privilegios de


Objeto

En este ejercicio se conectará al Enterprise Manager y se otorgarán y revocarán


privilegios a los usuarios sobre los objetos de esquema y, a continuación,
compruebe los resultados.
________________________________________________________________

1. Inicie un navegador de Internet y conectarse al URL del Enterprise Manager


de Oracle en su servidor de bases de datos, especificando el número de
puerto adecuado y nombre de la máquina.

2. Acceda a su base de datos con el usuario SYSTEM y su contraseña


correspondiente. Si recibe la información de licencia, haga click en Aceptar
para continuar.

3. En la página principal del Enterprise Manager, haga click en el hipervínculo


de Administración para visualizar la página de Administración.

4. Haga click en el hipervínculo de los Usuarios para mostrar a los usuarios


definidos en la actualidad en la base de datos, sus estados y parámetros.

66
5. Haga click en algún usuario creado en un ejercicio anterior, para abrir la
página de Editar Usuarios.

6. Haga click en el enlace Privilegios de Objeto para mostrar la lista actual de


privilegios de objeto concedidos al usuario. La lista debe estar vacía.

7. Seleccione en la lista desplegable del Tipo de Objeto seleccione Tabla y


haga click en Agregar para mostrar la página de Añadir Privilegio de Objeto
de Tabla.

8. Introduzca JUAN.JUAN1 como el nombre de la tabla (o utilice la linterna


para encontrar la tabla en el diccionario de datos) y elija de la lista de
privilegios los comandos SELECT, INSERT, UPDATE, y DELETE y, a
continuación, haga click en Mover.

67
9. Haga click en Aceptar para guardar los cambios y visualizar la lista
actualizada de los privilegios de objeto.

10. Para comprobar el privilegio SELECT cheque en la casilla de verificación bajo


el encabezado “Grant Option” y, a continuación, haga click en Mostrar SQL
para mostrar el código SQL a conceder los privilegios.

68
11. Volver y, a continuación, haga click en Aplicar para guardar los cambios.

12. Conectarse a SQL Developer y la base de datos con el usuario con el que se
esté haciendo el ejercicio y su contraseña correspondiente.

13. Ejecute el comando SELECT * FROM <nombre del esquema>.<nombre de


la tabla> para asegurarse de que puede consultar la tabla que acaba de
concederse privilegios. También inserte una fila en la tabla, y borre y
actualice una fila para poner a prueba todos los privilegios.

14. Ejecute el comando:


GRANT SELECT ON
<nombre del esquema>.<nombre de la tabla> TO TOMÁS
y verificar que tenga éxito.

15. Intente otorgar el permiso INSERT en la tabla y revise el error recibido de la


tabla <nombre del esquema>.<nombre de la tabla>.

69
16. Abra otra ventana y en otra sesión de SQL Developer, conéctese como
usuario Tomás e intente consultar la tabla <nombre del
esquema>.<nombre de la tabla>.

17. Como Tomás, ejecute el comando

CREATE VIEW <NOMBRE DE LA VISTA>


AS SELECT *
FROM <NOMBRE DEL ESQUEMA>.<NOMBRE DE LA TABLA>.

Recuerde que Tomás ya ha sido concedido el privilegio de sistema CREATE


VIEW.

18. Ejecute el comando


19.
SELECT * FROM <la vista que acaba de crear>

y verifique que todos los datos de juan1.juan1 se encuentren.

20. Intente insertar una fila en la tabla que acaba de crear. Oracle envía un
mensaje de error "ORA-01031: insufficient privilege".

21. Salga de SQL Developer como Tomás y entrer como Juan con la contraseña
respectiva.

22. Ejecute el comando

REVOKE ALL ON
<NOMBRE_ESQUEMA>.<NOMBRE_ABLA> FROM <USUARIO>.

23. En la sesión de SQL Developer dónde usted está conectado como el usuario
que eligió para este ejercicio, intentE seleccionar de la tabla a la que hemos
venido haciéndole modificaciones. Nótese que Oracke despliega el siguiente
error "ORA-00942: tabla o vista no existe".

24. Registrarse como el usuario del ejercicio, acceda a SQL Developer como
Tomás, y luego trate de consultar la vista que se creó anteriormente.
Observe el mensaje que indica que la consulta a la vista tuvo un error.
Intente consultar la tabla que hemos venido trabajando y vea el aviso de
error.

25. Ejecute el comando DROP VIEW <nombre de la vista que se ha venido


trabajando>.

26. Cierre todas las sesiones de SQL Developer y del Enterprise Manager.
70
Ejercicio 8.4 - Uso de Enterprise Manager para Crear y Administrar los
Roles

En este ejercicio se conectará al Enterprise Manager y se creará un rol, asígnele


permisos, conceder el rol a un usuario y, a continuación, compruebe los
resultados.
________________________________________________________________

1. Inicie un navegador de Internet y conectarse al URL del Enterprise Manager


de Oracle en su servidor de bases de datos, especificando el número de
puerto adecuado y nombre de la máquina.

2. Acceda a su base de datos con el usuario SYSTEM y su contraseña


respectiva. Si recibe la información de licencia, haga click en Aceptar para
continuar.

3. En la página principal del Enterprise Manager, haga click en el hipervínculo


de Administración para visualizar la página de Administración.

4. Haga clic en el hipervínculo Funciones de Seguridad para mostrar los


roles definidos en la actualidad en la base de datos, sus estados y
parámetros.

5. Haga click en Crear para mostrar la página de Crear el Rol.


71
6. Introduzca ROL_PRUEBA como nombre del rol y luego despliegue lista de
opciones de autenticación y seleccione Ninguno.

7. Haga click en el enlace Privilegios de Objeto y otorgue Al rol ROL_PRUEBA


todos los permisos en la tabla que habíamos trabajado en ejercicio anterior.

8. Haga click en conceder Privilegios de Sistema y otórguele al rol


ROL_PRUEBA el privilegio CREATE VIEW.

9. Haga click en Mostrar SQL para mostrar el código SQL para crear la
función y darle privilegios.

10. Haga click en Volver y, a continuación, haga click en Aceptar para crear el
rol ROL_PRUEBA.

11. Haga click en el hipervínculo de Base de Datos en la parte superior izquierda


de la página y, a continuación, Administración, luego Usuarios y, a
continuación, el usuario Tomás.

72
12. Compruebe que Tomás no tiene permisos sobre la tabla juan1.juan1
utilizando SQL Developer en otra sesión y emitir una sentencia SELECT para
consultar la tabla.

13. En Enterprise Manager, conceder el rol ROL_PRUEBA a Tomás.

14. En SQL Developer, cierre la sesión e inicie sesión como Tomás y verificar
que se puede seleccionar de la tabla que hemos estado consultado a través
de los ejercicios.

15. Salir de Enterprise Manager y de SQL Developer.

Ejercicio 8.5 - Uso de Enterprise Manager para crear y administrar


perfiles

En este ejercicio se conectará al Enterprise Manager y creará un perfil, se


asignarán los límites de los recursos a la misma, también se asignará el perfil a un
usuario, se podrá ver la información sobre el perfil, y probar los resultados.
________________________________________________________________

1. Inicie un navegador de Internet y conectarse al URL del Enterprise Manager


de Oracle en su servidor de bases de datos, especificando el número de
puerto adecuado y nombre de la máquina.

2. Acceda a su base de datos con el usuario SYSTEM y su contraseña


respectiva. Si recibe la información de licencia, haga click en Aceptar para
continuar.

3. En la página principal del Enterprise Manager, haga click en el hipervínculo


de Administración para visualizar la página de Administración.

4. Haga click en el hipervínculo de los Perfiles para mostrar los perfiles que
actualmente están definidos en la base de datos. Debería haber dos: PERFIL
DEFAULT y MONITORING_PROFILE.

Haga click en Crear para crear un nuevo perfil llamado DBA_PROFILE y asignarle
CONNECT_TIME ilimitado, un tiempo de inactividad (iDLE_TIME) de 15 minutos, y un
valor de concurrencia de sesiones (SESSIONS_PER_USER) ILIMITADO. Deje todos los
otros ajustes en el valor de por defecto.

73
5. Haga click en Mostrar SQL para ver el código SQL para realizar la acción y,
a continuación, haga click en Volver y luego en Aceptar para crear el perfil.

6. En la página de la lista de perfiles, seleccione Predeterminado y, a


continuación, haga click en Editar. Cambie el valor del perfil predeterminado
para especificar un tiempo de conexión de 600 minutos, un tiempo de
inactividad de 30 minutos y el número de sesiones concurrentes a 1. A
continuación, haga click en Aplicar para guardar los cambios. Haga click en
el hipervínculo Perfiles para volver a la lista de perfiles.

74
7. Abrir otra ventana del navegador y conectarse a la instancia mediante SQL
Developer como el usuario Juan con la contraseña correspondiente.

8. Abrir otra ventana del navegador y una vez más intente conectarse a la
instancia, mediante SQL Developer como Juan. Observe que usted no recibe
un mensaje de error y Juan es capaz de conectarse. Esto se debe a que los
límites de los recursos no han sido configurados para ser aplicados en esta
instancia. Salga de SQL Developer como Juan pero mantenga abierta la
ventana del navegador.

9. En otra ventana, conectarse a la instancia mediante SQL Developer como


SYSTEM con la contraseña y el comando

ALTER SYSTEM SET RESOURCE_LIMIT = TRUE.

Intente entrar como Juan por segunda vez. Observe el error que recibe
ahora. (ORA-02391 exceeded simultaneous SESSIONS_PER_USER limit)

10. Como usuario SYSTEM desactive los límites de los recursos por el comando
ALTER SYSTEM SET RESOURCE_LIMIT = FALSE y cierre la sesión de SQL
Developer. Asimismo, cierre las demás sesiones de SQL Developer y vuelva
al Enterprise Manager.

75
11. Vaya a la página de Administración de Enterprise Manager y haga clikc en
Usuarios en la Región de Seguridad.

12. Haga click en el usuario que hemos utilizado y en Editar en la página de


Usuarios, seleccione de lista desplegable junto al perfil y asignar al usuario
que hemos venido utilizando en el desarrollo de los ejercicios
DBA_PROFILE. A continuación, haga click en Aplicar. Vuelva a la página de
los usuarios y editar el usuario Juan, asignándole el perfil DBA_PROFILE.

13. Volver a la página de Administración y, a continuación, seleccionar los


Perfiles de la sección de Seguridad. Seleccione el perfil DBA_PROFILE y de
las acciones en el cuadro de lista desplegable, seleccione Mostrar
Dependencias. Continuación, haga click en Ir.

14. Mostrar la página de Dependencias, haga click en el hipervínculo para ver


cuáles usuarios han sido asignados al perfil DBA_PROFILE (los objetos de
estos usuarios también se mostrarán como parte del árbol de
dependencias). Haga click en Aceptar para regresar a la página de Perfiles.

15. Seleccione el perfil DBA_PROFILE y, a continuación, haga click en Eliminar.


Observe el error que recibe, indicando que el perfil no puede ser borrado,
ya que está asignado a usuarios.

76
16. Invoque SQL Developer, conéctese a la instancia como SYSTEM, y el
comando

DROP PROFILE DBA_PROFILE CASCADE.

17. En Enterprise Manager, vaya a la página para Usuarios y busque al usuario


que ha venido utilizando para hacer las prácticas y a Juan y vea que el perfil
predeterminado está asignado a estos usuarios. Salir del Enterprise Manager
cuando haya terminado.

77
Preguntas
1. Usted ha creado un nuevo usuario llamado George. Usted le asignó a George el
perfil de usuario RESTRICTED_ACCESS. Las configuraciones del perfil tiene
todas las restricciones configuradas en DEFAULT excepto por la restricción de
sesiones actuales cuyo valor está en 1. George le pide ayuda con un problema,
cuando usted llega a su escritorio, nota que él tiene demasiadas sesiones
SQL*Plus abiertas, todas están conectadas a la misma instancia con su cuenta
de usuario. Usted sospecha que sus límites de perfil no se están aplicando.
¿Cuál de las siguientes opciones debe investigar para determinar la causa del
problema? (Escoja dos respuestas correctas).
A. La tabla DBA_USER_LIMITS
B. El parámetro de inicialización RESOURCE_LIMIT
C. La vista del diccionario de datos DBA_PROFILE_LIMITS
D. La vista del diccionario de datos DBA_PROFILES
E. La vista dinámica de rendimiento V$LIMITS

2. ¿Cuál línea de código hace que el siguiente bloque SQL falle? (Elija la mejor
respuesta).
1 CREATE USER Sam
2 IDENTIFIED EXTERNALLY BY $amP@ssw0rd
3 DEFAULT TABLESPACE Users
4 TEMPORARY TABLESPACE User_Temp
5 QUOTA 2048MB ON APPS_DATA
A. 1
B. 2
C. 3
D. 4
E. El bloque se ejecutará con éxito.

3. Se le ha solicitado proveer información adicional a su administrador en cómo


pueden asignarse y comportarse los privilegios de sistema. ¿Cuál de las
siguientes declaraciones acerca de los privilegios de sistema son verdaderas?
(Seleccione todas las respuestas correctas).
A. Los privilegios de sistema pueden otorgarse a otro si usa WITH
ADMIN OPTION.
B. Los privilegios de sistema pueden otorgarse a otro si usa WITH
GRANT OPTION.
C. Sólo el DBA puede otorgar privilegios de sistema, ya que le DBA es el
dueño de la Base de Datos.
D. Los privilegios del sistema pueden ser otorgados únicamente por el
dueño de la Base de Datos.

78
E. Cuando un usuario sea revocado, los privilegios del sistema también
serán revocados por cualquier usuario a quien se le concedió el
permiso de revocar.
F. Cuando un usuario sea revocado, los privilegios del sistema no serán
revocados por cualquier usuario a quien se le concedió el permiso de
revocar.

4. ¿Cómo puede un usuario cambiar su perfil activo? (Elija la mejor opción).


A. ALTER USER SET PROFILE=NewProfile
B. ALTER SYSTEM SET PROFILE=NewProfile
C. ALTER SESSION SET PROFILE=NewProfile
D. ALTER DATABASE SET PROFILE=NewProfile
E. Un usuario no puede cambiar su perfil activo

5. Si crea un perfil y especifica límites para sólo algunas de las configuraciones del
perfil, ¿cuál valor será automáticamente asignado a cualquier límite de recurso
que no incluyó en su comando CREATE PROFILE? (Seleccione la mejor
respuesta).
A. DEFAULT
B. 0
C. UNLIMITED
D. UNKNOWN
E. Debe especificar un valor para todos los límites de perfil

6. Si no especifica un TEMPORARY TABLESPACE cuando está creando una nueva


cuenta de usuario, ¿cuál será el valor de este parámetro cuando este usuario
esté creado? (Escoja la mejor respuesta).
A. SYSTEM
B. TEMP
C. NULL
D. El tablespace temporal por defecto de la Base de Datos
E. Debe especificar un valor para el TEMPORARY TABLESPACE

7. ¿Cuál de los siguientes comando puede ejecutar un usuario nuevo llamado


Anthony después de conectarse exitosamente a la instancia y establecer una
sesión de usuario? (Escoja todas las respuestas que le parezcan correctas).
A. ALTER USER antonio PASSWORD EXPIRE;
B. ALTER USER antonio QUOTA 2M ON SYSTEM;
C. ALTER USER antonio ACCOUNT LOCK;
D. ALTER USER antonio TEMPORARY TABLESPACE TEMP;
E. ALTER USER antonio IDENTIFIED BY NEWPASS;

8. Mientras pasa por el escritorio de Benjamín, usted nota que él está usando
SQL*Plus para consultar datos en la tabla TempOrders. Usted no le otorgó
79
permisos a Benjamín para ejecutar comandos SELECT a la tabla TempOrders.
¿Por qué Benjamín puede consultar esta tabla? (Elija todas las opciones
correctas).
A. Un usuario al que le concedió el permiso para ejecutar SELECT le
otorgó el permiso a Benjamín.
B. Benjamín es un DBA y puede consultar cualquier tabla de la Base de
Datos.
C. Usted otorgó a Benjamín el privilegio UPDATE en la tabla
TempOrders, el cual otorga automáticamente el privilegio SELECT.
D. EL DBA le concedió a Benjamín el privilegio SELECT ANY TABLE.
E. A Benjamín le otorgaron el privilegio SELECT en la tabla TempOrders
un usuario a quien usted le otorgó el privilegio SELECT WITH ADMIN
OPTION.

9. ¿Cuál de los siguientes comandos fallarán cuando se le están concediendo


privilegios al rol QueryRole? (elija la mejor respuesta).
A. GRANT CONNECT TO QueryRole;
B. GRANT CONNECT TO QueryRole WITH ADMIN OPTION;
C. GRANT SELECT ON Orders TO QueryRole;
D. GRANT SELECT ON Orders TO QueryRole WITH GRANT
OPTION;
E. GRANT DBA TO QueryRole WITH ADMIN OPTION;

10. Cuando está creando un usuario con el Enterprise Manager en lugar del
comando CREATE USER, ¿cuáles privilegios adicionales se le otorgan al
usuario? (Elija la mejor respuesta).
A. SELECT_CATALOG_ROLE
B. SYSDBA
C. CONNECT
D. RESOURCE
E. DBA

Respuestas
1) B y D. Puede consultar la vista DBA_PROFILES del diccionario de datos para
determinar la configuración de todos los perfiles de la Base de Datos, incluyendo el
que supuestamente George se asignó a él mismo. El parámetro de inicialización
RESOURCE_LIMIT debe cambiarse a TRUE para las sesiones actuales que vayan a
ser aplicadas, entonces necesita verificar esta configuración en la instancia que
está levantada y en el SPFILE. Las vistas DBA_USER_LIMITS,
DBA_PROFILE_LIMITS y V$LIMITS no existen.

80
2) B. Cuando crea un usuario, puede especificar a lo sumo un método de
autenticación. Este comando SQL especifica dos métodos de autenticación,
EXTERNALLY y de contraseña (con $amP@ssw0rd) al mismo tiempo, lo que debió
generar un error cuando el comando se ejecutó.

3) A y F. Si se le otorgó un privilegio de sistema WITH ADMIN OPTION, también


puede otorgar el mismo privilegio a otros y especificar WITH ADMIN OPTION. El
comando WITH GRANT OPTION aplica solamente a privilegios de objetos y no a
privilegios de sistema. Si los privilegios del sistema son revocados a un usuario a
quien le otorgaron WITH ADMIN OPTION, no serán revocados a otros usuarios a
quienes se les concedió la revocación; no hay revocaciones en cascada para los
privilegios del sistema. DBA es un rol y no es el único que puede conceder
privilegios de sistema, ninguno es el usuario SYS (dueño de la Base de Datos), en
el cual cualquiera que tenga el rol de DBA puede otorgarlos, desde que el rol DBA
tiene concedidos privilegios de sistema WITH ADMIN OPTION.

4) E. Un usuario no puede cambiar el mismo su perfil activo. Sólo el DBA puede


modificar el perfil de usuario o los límites del perfil.

5) A. Si usted no especifica un valor para su límite en el perfil, se asignará


automáticamente el valor DEFAULT. Esto significa que Oracle aplicará cualquier
valor para el límite en el perfil DEFAULT.

6) D. El actual tablespace temporal por defecto de la Base de Datos se asignará al


usuario si no especifica un TEMPORARY TABLESPACE para el usuario. Si no se
especifica un tablespace temporal por defecto para la Base de Datos, el usuario
asignará SYSTEM como tablespace temporal.

7) E. Anthony, como cualquier usuario nuevo ha sido configurado con la


autenticación por contraseña, puede cambiar su contraseña cuando desee. El
usuario mismo, no puede realizar ningún otro cambio sobre la cuenta de
usuario.

8) B y D. Benjamín puede consultar la tabla TempOrders solamente si él es el


DBA, quien automáticamente tiene el privilegio SELECT ANY TABLE, o si el
privilegio SELECT ANY TABLE ha sido concedido a Benjamín por el DBA. Otro
usuario a quien usted sólo le dio el privilegio SELECT no pudo otorgar el mismo
privilegio a Benjamín a menos que se lo haya especificado con la opción WITH
GRANT OPTION. Otorgar el privilegio UPDATE a la tabla no concede
automáticamente el privilegio SELECT.

9) D. No es posible otorgar privilegios de Objeto a roles WITH GRANT OPTION,


por lo que este comando fallaría. Todos los otros comandos tendrían éxito,
asumiendo que tiene los privilegios requeridos para desempeñar la operación.

81
10) C. Utilizando el Enterprise Manager para crear un usuario automáticamente
otorgará al usuario el rol CONNECT, que incluye el privilegio CREATE SESSION, por
lo que el usuario es capaz de conectarse a la instancia en ese mismo momento.
Este rol también incluye los privilegios de crear tablas, vistas, sinónimos,
secuencias y otros objetos de Base de Datos, los cuales pueden ser o no deseados
por los usuarios.

9 - Administración de Objetos de Bases de Datos

Ejercicio 9.1 - Creación de Tablas y Restricciones

Uso del EM para crear dos tablas con las restricciones, y validar las estructuras con
SQL * Plus.
________________________________________________________________

1. Conéctese a la base de datos con el usuario SYSTEM utilizando el EM.

2. Desde la página principal de la Base de Datos, en la pestaña de


Administración, a continuación, acceda al vínculo de Tablas bajo la
sección Esquema. Haga click en Crear.

3. En la pantalla Crear Tabla: en la ventana de Organización de la Tabla,


seleccione la opción normal, Organizada y haga click en Continuar.

4. En la ventana Crear tabla, escriba el nombre de los clientes y defina dos


columnas, como se muestra a continuación.

82
5. Cree una segunda tabla, Invoice. Tenga en cuenta que la casilla no nulo ha
sido seleccionada para la columna INVOICE_DATE.

6. Para agregar una restricción de llave primaria para la tabla CUSTOMERS,


vaya a la ventana de Tablas como en el paso 2, y haga una búsqueda de la
tabla llamada CUSTUMERS. Selecciónela, y haga click en Editar. Presione la
pestaña de Restricciones.

PRIMARIA
Agregar

8. Elija CUSTOMER_NUMBER como la columna sobre la que basar la


restricción, deje todas las demás opciones en los valores predeterminados,
haga click en Aceptar. Haga click en Aplicar para crear la restricción.

9. Repita el proceso para agregar una restricción de llave primaria para la tabla
INVOICE, utilizando la columna INVOICE_NUMBER.

10. Para agregar la llave foránea conecte la tabla INVOICE a la tabla


CUSTOMERS, llene la ventana Añadir Restricción de Llave Foránea. Haga
click en Aplicar para crearla restricción.

11. Para añadir la restricción CHECK que compruebe que la cantidad es mayor
que cero, llene la ventana de Añadir restricción CHECK. Haga click en
Aceptar y Aplicar.

83
SYSTEM

13. Inserte datos válidos, como se muestra a continuación:

SQL> insert into customers values(1,'John');


SQL> insert into customers values(2,'Damir');
SQL> insert into invoices values(10,1,sysdate,100);
SQL> insert into invoices values(11,2,sysdate,200);
SQL> commit;

SQL> insert into customers values(1,'McGraw');


SQL> insert into invoices values (30,3,sysdate,50);
SQL> insert into invoices values(10,1,sysdate,0);

84
85
Ejercicio 9.2 - Utilizando Restricciones, Vistas y Secuencias

Crear una secuencia para generar números de factura única, y crear una vista para
unir sus tablas INVOICE y CUSTOMER.
________________________________________________________________

1. Conectarse a su base de datos con el usuario SYSTEM utilizando de SQL *


Plus.

2. Crear una secuencia. Desde el anterior ejercicio ejecute los números 10 y


11, inicie la secuencia en 12.

SQL> crear inv_nos secuencia de inicio con 12;

3. Usar la secuencia para introducir nuevas facturas, con un número único.


SQL> insert into invoices values
(inv_nos.nextval,1,sysdate,150);
SQL> insert into invoices values
(inv_nos.nextval,2,sysdate,250);

4. Crear una vista para mostrar las facturas de los clientes con los nombres y
consúltela.

SQL> create view cust_inv as


2 select invoice_number,customer_name,amount from
3 invoices join customers using (customer_number);
View created.

SQL> select * from cust_inv;

INVOICE_NUMBER CUSTOMER_NAME AMOUNT


-------------- -------------------- ----------
10 John 100
11 Damir 200
12 John 150
13 Damir 250

5. Retorne la base a su estado inicial

SQL> drop table invoices;


SQL> drop table customers;
SQL> drop view cust_inv;
SQL> drop sequence inv_nos;

86
Tenga en cuenta que no hay necesidad de borrar las restricciones o índices:
se borran automáticamente junto con las tablas.

Preguntas
1. ¿Cuál de los siguientes instrucciones fallarán porque el nombre de la tabla no
es legal? (Elija dos respuestas).
A. create table “SELECT” (col1 date);
B. create table “lower case” (col1 date);
C. create table number1 (col1 date);
D. create table 1number(col1 date);
E. create table update(col1 date);

2. Varios tipos de objetos comparten el mismo espacio de nombre y de esta


manera no pueden tener el mismo nombre en el mismo esquema. ¿Cuál de los
siguientes tipos de objetos no se encuentra en el mismo espacio de nombre
que los otros? (Elija la mejor respuesta).
A. Índice
B. Procedimiento Almacenado PL/SQL
C. Sinónimo
D. Tabla
E. Vista

3. ¿Cuál de los siguientes no es soportado por Oracle como tipo de dato interno?
(Seleccione la mejor respuesta).
A. CHAR
B. FLOAT
C. INTEGER
D. STRING

4. Necesita grabar valores fecha/hora, con precisión de segundo. ¿Cuál sería un


tipo de dato adecuado para una columna para que almacene esta información?
A. DATE
B. TIMESTAMP
C. DATE o TIMESTAMP
D. Debe implementar su propio tipo de datos definido por el usuario,
porque los tipos de datos internos almacenan o fecha u hora.

5. ¿Cuáles tipos de restricciones requieren un índice? (Elija todos los que


apliquen).
A. CHECK
B. NOT NULL
C. PRIMARY KEY
D. UNIQUE
87
6. Una transacción consiste de dos instrucciones. El primero tiene éxito, pero el
segundo (que actualiza varias filas) falla en parte debido a una violación de una
restricción. ¿Qué pasará? (Seleccione la mejor respuesta).
A. A toda la transacción se le hará un rollback.
B. En la segunda instrucción se hará un rollback, y al primero se le hará
commit.
C. En la segunda instrucción se hará un rollback, y al primero quedará
sin ejecutar el commit.
D. Sólo la actualización que causó el fallo hará el rollback y al resto de la
transacción se le hará commit.
E. Sólo la actualización que causó el fallo hará el rollback y el resto
permanecerá sin ejecutar el commit.

7. ¿Cuál de los siguientes instrucciones es correcto acerca de índices? (Escoja la


mejor respuesta).
A. Un índice puede estar basado en varias columnas de una tabla, pero
las columnas deben ser del mismo tipo de datos.
B. Un índice puede estar basado en varias columnas de una tabla, pero
las columnas deben ser adyacentes y especificadas en el orden en el
que definen la tabla.
C. Un índice no puede tener el mismo nombre de la tabla, a menos que
el índice y la tabla estén en diferentes esquemas.
D. Ninguna de las afirmaciones anteriores es correcta.

8. ¿Para cuáles propósitos elegiría crear vistas? (Elija dos opciones).


A. Para mejorar la seguridad
B. Para presentar datos de manera más sencilla
C. Para mejorar el desempeño
D. Para guardar juegos de resultados de consultas comúnmente
ejecutadas.

9. Usted inserta una fila usando una secuencia INV_NOS y luego hace un rollback
de la inserción, como se muestra seguidamente:
SQL> insert into invoices values
(inv_nos.nextval,1,sysdate,150);
1 row created.
SQL> rollback;
Rollback complete.

Antes de esta transacción, la secuencia tenía un valor de 10. ¿Cuál será el


próximo valor que ejecutará? (Elija la mejor respuesta).
88
A. 10
B. 11
C. 12
D. Depende de cómo fue creada la secuencia.

Respuestas
1) D y E. D viola la regla que dice que el nombre de una tabla debe empezar con
una letra y E viola la regla que dice que el nombre de una tabla no puede ser una
palabra reservada. Ambas reglas pueden ser pasadas por alto usando comillas
dobles.

2) A. Los índices tienen su propio espacio de nombre.

3) D. No existe el tipo de dato STRING.

4) C. Las columnas DATE y TIMESTAMPS siempre graban la fecha y la hora con


precisión de al menos 1 segundo.

5) C y D. Estas son aplicadas con índices, los cuales serán creados


automáticamente si no existen.

6) C. SQL es un lenguaje orientado a los conjuntos: es imposible para un


instrucion ser parcialmente completado. Las transacciones pueden quedar sin
completar, pero el COMMIT es todo o nada.

7) D. Ninguna de estas son restricciones a la hora de crear índices.

8) A y B. Las vistas son cuestión de usabilidad, no rendimiento. D aplica para


vistas materializadas no a las vistas en sí.

9) D. La secuencia será incrementada y al incremento no se le puede hacer


rollback, pero usted no sabe cuál será el siguiente valor a menos que sepa cual
STEP fue definido cuando la secuencia fue creada.

10 - Manipulando la Información de la Base de Datos

Ejercicio 10.1 - El aislamiento de transacción, Consistencia de la


Lectura y COMMIT

89
Es hora de experimentar con algunos comandos SQL, y en particular para ilustrar
algunos aspectos de control de transacciones. Para este ejercicio, abra dos
sesiones de SQL * Plus (o SQL Developer, si lo prefiere), inicie sesión como SCOTT
en ambas sesiones, y ejecute los comandos que se le presentan en las dos
sesiones.
________________________________________________________________

En su primer Sesión En su segunda Sesión


create table t1 as
select *
from emp;
select count(*) from t1;
Resultados idénticos en ambas sesiones.
delete from t1;
select count(*) from t1; select count(*) from t1;
Resultados distintos debido al principio de aislamiento.
rollback;
select count(*) from t1; select count(*) from t1;
Resultados idénticos en ambas sesiones.
delete from t1;
select count(*) from t1; select count(*) from t1;
create view v1 as select *
from t1;
select count(*) from t1; select count(*) from t1;
rollback;
select count(*) from t1; select count(*) from t1;
¡El DDL hizo COMMIT a la transacción, por lo que no puede hacer rollback!
drop view v1;
drop table v1;

Preguntas
1. Usted ejecuta un comando COMMIT. ¿Cuál de las siguientes afirmaciones es
verdadera? (Seleccione dos opciones).
A. DBWn escribe los bloques cambiados en los archivos de datos.
B. LGWR escribe los cambios en los archivos de registro.
C. CKPT sincroniza el buffer de cache de la Base de Datos con los
archivos de datos.
D. La transacción se hace permanente.
E. A la transacción se le puede hacer rollback.

90
2. Usted ejecuta un comando UPDATE, seguido de un COMMIT. Ordene las
siguientes acciones:
A. Los bloques de datos se copian de los archivos de datos al buffer de
cache de la Base de Datos.
B. Los bloques de datos en cache se actualizan.
C. El buffer de registros se actualiza.
D. Los bloques cambiados se pasan a disco.
E. El buffer de registros se pasa a disco.

3. El usuario JOHN actualiza unas filas y pide al usuario DAMIR que inicie sesión y
revise los cambios antes de hacerles commit. ¿Cuál de las siguientes
afirmaciones es verdadera? (Elija la mejor respuesta).
A. DAMIR puede verlos cambios pero no puede cambiarlos porque
JOHN habría bloqueado las filas.
B. DAMIR no puede ver los cambios.
C. JOHN hace commit a los cambios, entonces DAMIR puede verlos y si
es necesario les hace rollback.
D. JOHN debe hacer commit a los cambios para que de esta manera
DAMIR los pueda ver, pero sólo JOHN les puede hacer rollback.

4. El usuario JOHN actualiza algunas filas pero no hace commit a los cambios. El
usuario DAMIR consulta las filas que JOHN actualizó. ¿Cuál de las siguientes
afirmaciones es verdadera? (Escoja tres respuestas).
A. La consulta de DAMIR serán redireccionadas a los registros de redo
para mostrar la versión original de las filas.
B. La sesión de DAMIR hará rollback a los cambios de JOHN para
mostrar la versión original de las filas.
C. JOHN debe hacer commit los cambios antes de que DAMIR los pueda
ver.
D. DAMIR no puede ver las filas que fueron actualizadas, porque estas
serán bloqueadas.
E. Si la consulta de DAMIR inicia después de la actualización de JOHN,
el principio de la consistencia de lectura dice que no podrá ver los
cambios de JOHN.
F. Si la consulta de DAMIR inicia después de la actualización de JOHN,
el principio de aislamiento dice que no puede ver los cambios de
JOHN.

5. Usted ejecuta un comando INSERT y después intenta hacer un SELECT a las


filas que insertó antes de hacerles commit. ¿Qué de lo siguiente es verdadero?
().
A. Debe hacerle commit a las filas antes de poder verlas.
B. Usted verá las nuevas filas, aún cuando no se les haya hecho el
commit.

91
C. Debe terminar la transacción con un COMMIT o un ROLLBACk antes
de ejecutar el SELECT.
D. Verá las nuevas filas porque su sesión las leerá de un segmento
undo.

6. Usted ejecuta un comando INSERT, falla desplegando el siguiente mensaje


“ORA-02291: violación de restricción de integridad (HR.EMP_DEPT_FK), no se
encontró la llave primaria”. ¿Cuál de las siguientes afirmaciones es verdadera?
(Elija la mejor respuesta).
A. La transacción tendrá que ser retrocedida (rollback).
B. El comando tendrá que ser retrocedido (rollback).
C. Debe crear un índice en la tabla padre antes de que pueda encontrar
llaves padre.
D. Todas las anteriores.

Respuestas
1) B y D. Cuando usted dice commit, LGWR escribe lo del buffer de registros al
disco y la transacción se hace duradera.

2) A, C, B, E y D. Recuerde que todo pasa primero en la memoria y que su


servicio escribe en el buffer de registro antes que en el buffer de cache de la Base
de Datos. Luego al hacer commit, el buffer de registro se escribe en el disco. Los
bloques de datos podrían no escribirse por algún tiempo.

3) B. El principio de aislamiento quiere decir solamente JOHN puede ver su


transacción sin commit; DAMIR no podrá ver los cambios.

4) B, C y F. La B es correcta porque es de esta manera que Oracle da el


aislamiento de una transacción. Nuevamente, C es correcta porque el aislamiento
se mantendrá hasta que se ejecute un COMMIT. F también es certera por el
principio de aislamiento, no consistencia de lectura, significa que DAMIR no puede
ver los cambios de JOHN.

6) B. Una sesión siempre puede ver sus propias transacciones, se les haya hecho
commit o no.

7) B. El comando que envía un error se le hace un retroceso (rollback)


automático; el resto de la transacción permanece intacta y sin realizar commit.

92
11 - Herramientas para extracción e carga masiva de
datos

Ejercicio 11.1 - Uso de Data Pump para la exportación a través del


Controlador de Bases de Datos del Enterprise Manager

Este ejercicio creará una tabla y la exportará mediante la interfaz del Controlador
de Base de Datos para DataPump.
________________________________________________________________

1. Cree un directorio que se utilizará para DataPump. Por ejemplo, desde la


línea de comandos,

En Windows:
md c:\dp_dir
En Unix/Linux:
md /home/oracle/dp_dir

2. Utilice SQL * Plus, inicie sesión en su instancia como el usuario SYSTEM y


crear una tabla para probar la DataPump.

SQL> create table dp_test as


select ename, empno from scott.emp;

SQL> select count * from dp_test;

3. Aún dentro de SQL * Plus, cree el directorio de Oracle que se utilizará por la
DataPump y conceda a todos los usuarios privilegios de lectura y escritura
sobre el directorio.

En Windows:

SQL> create directory dp_dir


as '/home/oracle/dp_dir';

En Unix/Linux:

SQL> create directory dp_dir as 'c:\dp_dir';

93
Luego:
SQL> grant all on directory dp_dir to public;
SQL> exit;

4. Inicie sesión en EM con el usuario SYSTEM.

5. Desde la página de inicio de la Base de Datos, haga click en la pestaña


Mantenimiento.

6. En la sección Utilidades, haga click en el enlace de Exportación a los


Archivos.

7. Sobre la exportación: la ventana de Tipo de Exportación se despliega,


seleccione Tablas e ingrese el nombre de usuario de un sistema operativo y
su contraseña con permisos de lectura / escritura sobre la directorio
especificado en el paso 3.

8. Sobre la exportación: la ventana de Añadir Tables se muestra, haga click en


Agregar y, a especificar SYSTEM como el esquema y "DP_TEST" como la
tabla. Seleccione y haga click en Siguiente.

94
9. Sobre la exportación: en la ventana Opciones, elija el directorio DP_DIR
como la ubicación para el 'log de archivos', y haga click en Siguiente.

10. Durante la exportación: en la ventana de Archivos, elija el directorio DP_DIR


como la ubicación y haga click en Finalizar.

11. En la Exportación: Revise de la ventana siguiente que se muestra, revise el


script que ha generado para ver cómo se ejecuta el trabajo usando la
interfaz de la DataPump, y haga click en Enviar.

12. En la ventana de estado, haga click en Aceptar.

13. Desde la línea de comandos del sistema operativo, vaya al directorio


especificado en el paso 3. Habrá un archivo EXPDAT01.DMP, que es el

95
archivo de volcado de exportación, y un log de Archivos, por ejemplo:
EXPDAT.LOG. Examine el archivo de log para comprobar que el trabajo se
completó exitosamente.

Ejercicio 11.2 - Uso de la DataPump de Importación a través de impdp

Este ejercicio se utiliza la línea de comandos impdp para poner la tabla exportada
de nuevo en la base de datos con ayuda de la Bomba de Datos.
________________________________________________________________

1. Inicie sesión con SQL * Plus, y borre la tabla creada en el ejercicio anterior.
drop table dp_test;
exit;

2. Desde una línea de commandos del Sistema Operativos, ejecute lo


siguiente:
impdp userid=system/oracle dumpfile=expdat01.dmp
directory=dp_dir

3. Cuando la importación haya terminado, conecte a la instancia de SQL * Plus


como usuario SYSTEM y confirme que la tabla se ha importado con éxito.
select count(*) from dp_test;

Ejercicio 11.3 - Usando SQL*Loader

Este ejercicio insertará más filas en la tabla creada en el ejercicio tras anterior.
________________________________________________________________

1. Con un editor de textos (como Bloc de notas de Windows), cree archivo de


control (.ctl) de SQL * Loader, llamado streamin.ctl, como sigue:
load data
infile 'streamin.dat'
append
into table dp_test
fields terminated by ','pwd
(ename, empno)

Tenga en cuenta que la palabra clave append permite a SQL * Loader


insertar en una tabla que ya contiene filas.
96
2. Como antes, usando un editor de texto, cree el archivo de entrada, que se
llamará streamin.dat, de la siguiente manera:

Juan,100
Damian,200
Marta,999

3. Desde la línea de comandos del Sistema Operativo, ejecute el siguiente


comando:

sqlldr userid=system/oracle control=streamin.ctl

4. Acceda a su instancia con SQL * Plus, y confirme que las tres nuevas líneas
se han insertado en la tabla:

select * from dp_test

Preguntas
1. Está usando DataPump para cargar filas en una tabla, y quiere usar “Direct
Path”. ¿Cuál de las siguientes afirmaciones es correcta? (Escoja tres opciones).
A. Debe incluir la palabra reservada DIRECT en el archivo de control de
la DataPump.
B. No es posible si la tabla está en un cluster.
C. Primero debe deshabilitar los triggers de inserción.
D. Primero debe habilitar los triggers de inserción.
E. No tiene control sobre esto, la DataPump usará el camino directo
automáticamente si puede.
F. El camino directo es más lento que el camino de tabla externa
porque no almacena información en memoria.

2. ¿Cuál de los siguientes no es un tipo de archivo de la DataPump? (elija la mejor


respuesta).
A. Archivo de volcado (Dump file).
B. Archivo de Registro.
C. Archivo de control
D. Archivo SQL

3. Usted ejecuta un trabajo de exportación de la DataPump para exportar un


número de tablas, el cual tarda horas en ejecutarse. ¿Qué de lo siguiente es
verdadero? (Escoja la mejor respuesta).
97
A. Las tablas que se están exportando se bloquearán durante todo el
tiempo de la ejecución.
B. Las transacciones a las que se les hizo commit durante la ejecución
del trabajo serán incluidas en la exportación.
C. Las transacciones (se les haya hecho o no commit) durante la
ejecución del trabajo no serán incluidas en la exportación.
D. El SQL a la tabla durante la ejecución del trabajo se escribirán en un
archivo SQL.
E. El DDL que describe las tablas se escribirá en un archivo SQL.

4. Utilizando el SQL*Loader, ponga estos formatos de archivo en orden de


velocidad de procesamiento, del más lento al más rápido:
A. Formato de grabado fijo
B. Formato de grabado de flujo
C. Formato de grabado variable

5. Usted desea transferir una gran cantidad de datos de una Base de datos a otra:
ambas bases de datos están en la misma máquina. ¿Cuál sería el método más
rápido? (Seleccione la mejor opción).
A. Usar las utilidades Exportar/Importar
B. Usar la DataPump para sacar los datos y el SQL*Loader de carga
directa para traerla.
C. Usar la DataPump en el modo de red.
D. Usar el exportador de la DataPump para escribir los datos y el
importador de la DataPump para leerlos.
6. ¿Cuál de los siguientes no es un archivo SQL*Loader? (Escoja una opción).
A. Archivo malo
B. Archivo de control
C. Archivo de descarte
D. Archivo bueno
E. Archivo de registro

7. Usted crea una carpeta con el siguiente comando


create directory dp_dir as ‘c:\tmp’;
pero cuando trata de usarla con la DataPump, ocurre un error. ¿Cuál de las
siguientes sentencias podría ser verdadera? (Seleccione tres respuestas).
A. El software Oracle no tiene permisos en c\:tmp.
B. EL usuario de la Base de Datos Oracle no tiene permisos en dp_dir.
C. La ruta c\:tmp no existe.
D. La ruta c\:tmp debería existir o el comando “create directory” falló.
E. Si usa la DataPump en el modo de red, entonces no habrá necesidad
de una carpeta.

98
F. Ejecutando el comando grant all on ‘c:\tmp’ to public;
debería resolver algunos problemas de permisos.

8. Usted ejecuta un trabajo de la DataPump con expdp y luego se sale de la


sesión. ¿Cuál de las siguientes afirmaciones son verdaderas? (Escoja dos
respuestas).
A. El trabajo terminará correctamente.
B. En el fondo el trabajo continuará ejecutándose.
C. No puede monitorear el trabajo una vez cerrada la sesión.
D. Puede volver al trabajo para monitorearlo.
E. El trabajo se pausará pero puede ser reiniciado.

9. Usted ejecuta SQL*Loader en su computadora, para insertar datos en una Base


de Datos remota. ¿Cuál de las siguientes afirmaciones es verdadera? (Elija la
mejor respuesta).
A. Los archivos de datos de entrada deben estar en su computadora.
B. Los archivos de datos de entrada deben estar en el servidor.
C. La carga directa es posible sólo si los archivos de datos de entrada
están en el servidor.
D. La carga directa es posible únicamente si ejecuta SQL*Loader en el
servidor, no en su computadora.

Respuestas
1) B, C y E. B y C son correctas porque estas son de las limitaciones. E es correcta
porque es una característica de la DataPump.

2) C. El archivo de control está mal: es usado por SQL*Loader, no por DataPump.


Los otros tres tipos de archivos los puede generar la DataPump.

3) C. Las transacciones contra las tablas afectadas durante la ejecución larga de


un trabajo de exportación de la DataPump no se incluirá en el archivo de
exportación: el trabajo se protege de cualquier cambio.

4) A, C y B. Este es el orden correcto porque SQL*Loader procesará el formato de


grabación de longitud fija más rápido que el formato de grabación de longitud
variable o que el formato de grabación de fijos.

5) C. Utilizando la DataPump en el modo de red evita tener que almacenar los


datos en disco: no hay necesidad de usarlo cuando las Bases se encuentran en la
misma máquina.

99
6) D. El “archivo bueno” no es un archivo de SQL*Loader. SQL*loador no produce
un archivo como este, solamente como los cuatro restantes.

7) A, B y C. A y B pueden ser razones: recuerde distinguir entre el usuario del


sistema operativo que es dueño del software y el usuario Oracle que sólo existe
con la Base de Datos. C podría ser otra razón: a la hora de la creación del
directorio, Oracle no revisa si la ruta física es válida.

8) B y D. Los trabajos de la DataPump se ejecutan independientemente de la


sesión que los lance, haciendo posible desconectarse del trabajo y luego volver a
conectarse para propósitos de monitoreo.

9) A. Los archivos de datos de entrada debe estar en su computadora, porque es


el proceso de SQL*Loader que lee los archivos de datos de entrada.

12 - Administración de Objetos PL/SQL


Ejercicio 12.1 - Creación y uso de las funciones, Procedimientos y
Paquetes

Utilice el Controlador de Bases de Datos de control para crear objetos PL / SQL y


ejecutarlos desde SQL * Plus.
________________________________________________________________

1. Conectarse a su base de datos de con el usuario SYSTEM utilizando SQL *


Plus.

2. Crear una tabla que se utilizará para este ejercicio.


SQL> create table integers (c1 number,c2 varchar2(5));

3. Conéctese a su base de datos con el usuario SYSTEM usando el Controlador


de Base de Datos.

4. Desde la página principal de base de datos, en el enlace de Administración,


la sección de Esquemas y seguidamente, el enlace de Paquetes. Haga click
en Crear.

5. En la ventana Crear Paquete, llame al nuevo paquete NUMBERS, y el código


fuente del paquete como se muestra en la siguiente figura Haga click en
Aceptar para crear el paquete.

100
CREATE OR REPLACE PACKAGE NUMBERS
AS
FUNCTION odd_even(v1 NUMBER)
RETURN VARCHAR2;
PROCEDURE ins_ints(v1 IN NUMBER);
END;

6. Desde la página principal de base de datos, tome la pestaña de


Administración y, a continuación, el enlace de Cuerpo de Paquetes en la
sección de Esquema. Haga click en Crear.

7. Crear en la ventana de Creación de Cuerpos de Paquetes, escriba NUMBERS


como el nombre del paquete, y el código fuente del paquete cuerpo como
se muestra en la siguiente figura. Haga click en Aceptar para crear el cuerpo
del Paquete.

CREATE OR REPLACE PACKAGE BODY NUMBERS AS


FUNCTION odd_even(v1 NUMBER)
RETURN VARCHAR2
AS
BEGIN
IF MOD(v1,2) = 0 THEN
RETURN 'par';
ELSE
RETURN 'non';
END IF;
END odd_even;

PROCEDURE ins_ints(v1 NUMBER)


AS
BEGIN
FOR i IN 1..v1 LOOP
INSERT INTO integers VALUES(i,odd_even(i));
END LOOP;
END ins_ints;

END;

8. En su sesión de SQL * Plus, describir el paquete, ejecutar el procedimiento,


y comprobación de los resultados.
SQL> desc numbers;
101
PROCEDURE INS_INTS
Argument Name Type In/Out Default?
------------------------- ------------------ ------ ----
----
V1 NUMBER IN
FUNCTION ODD_EVEN RETURNS VARCHAR2
Argument Name Type In/Out Default?
------------------------- ------------------ ------ ----
----
V1 NUMBER IN
SQL> execute numbers.ins_ints(5);
PL/SQL procedure successfully completed.
SQL> select * from integers;
C1 C2
---------- -----
1 odd
2 even
3 odd
4 even
5 odd
5 rows selected.

Ejercicio 12.2 - Utilizando Triggers DML

Cree un trigger (disparador) para validar los datos, antes de ejecutar un COMMIT.
________________________________________________________________

1. Conectarse a su base de datos con el usuario SYSTEM utilizando SQL * Plus.

2. Crear un trigger en la tabla INTEGERS de la siguiente


manera:
SQL> create or replace trigger oe_check
2 after insert or update on integers
3 for each row
4 begin
5 if mod(:new.c1,2)=0 then
6 dbms_output.put_line(:new.c1||' is even');
7 else
8 dbms_output.put_line(:new.c1||' is odd');
9 end if;
10 end;
11 /
Trigger created.

102
3. Permitir la impresión en pantalla de sus sesiones de SQL * Plus.
SQL> set serveroutput on;

4. Pruebe el efecto del trigger como se muestra a continuación:


SQL> insert into integers values(2,'odd');
2 is even
1 row created.
SQL> rollback;
Rollback complete.
SQL> insert into integers values(3,'odd');
3 is odd
1 row created.
SQL> commit;
Commit complete.

Tenga en cuenta que, debido a que el trigger se dispara como parte de la


transacción, es posible deshacerlo si existe una inserción incorrecta.

5. Conéctese a su base de datos con un usuario SYSTEM usando el EM.

6. Desde la página principal de la Base de Datos, elija la pestaña de


Administración y, a continuación, el enlace Disparadores en la sección de
Esquema.

7. En la ventana de búsqueda, seleccione Tipo de objeto como Trigger, como


nombre del esquema SYSTEM, y Nombre del Objeto como OE_CHECK.
Continuación, haga click en Continuar.

8. Haga click en Ver para ver el código fuente l Trigger. Tenga en cuenta que
"Válido", lo que significa es que se ha realizado correctamente, y
"Activado", es decir, que se ha disparado.

103
9. Arregle.
SQL> drop trigger oe_check;
SQL> drop table integers;
SQL> drop package numbers;

104
Preguntas
1. ¿Cuál de los siguientes, si hay alguno, pueden ser objetos PL/SQL? (Escoja
todos los que apliquen).
A. Restricciones
B. Funciones
C. Cuerpo de Paquetes
D. Especificaciones de Paquetes
E. Procedimientos
F. Secuencias
G. Triggers
H. Vistas

2. ¿Cuál de los siguientes objetos PL/SQL pueden ser invocados con el comando
EXECUTE? (Elija la mejor respuesta).
A. Funciones
B. Paquetes
C. Procedimientos
D. Triggers
E. Todos los anteriores

3. ¿Dónde se ejecuta el código PL/SQL? (Elija la mejor opción).


A. En el espacio de procesos de sesiones de usuario.
B. En el Diccionario de Datos
C. En la instancia
D. Depende de si es un bloque anónimo o almacenado

4. ¿Cuáles tipos de objetos PL/SQL pueden ser empaquetados? (elija todos los
que apliquen).
A. Bloques anónimos PL/SQL
B. Funciones
C. Procedimientos
D. Triggers

5. Cuando se compila PL/SQL, ¿Dónde se almacena el código que resulta? (Escoja


la mejor opción).
A. En el Diccionario de Datos
B. Como un archivo de sistema operativo
C. En el tablespace por defecto del usuario al que pertenece el código.
D. Depende del parámetro PLSQL_CODE_TYPE

105
Respuestas
1) B, C, D, E y G. Todas estas son creadas con PL/SQL; las otras, con SQL.

2) C. Sólo los procedimientos pueden invocarse con el comando EXECUTE. Las


funciones se llaman desde otros comandos, los triggers se disparan
automáticamente. Los paquetes no se pueden ejecutar, a diferencia de los
procedimientos y las funciones que contienen.

3) C. PL/SQL se ejecuta en la instancia. Puede invocarse desde los procesos de


usuarios y se almacena en el Diccionario de Datos. Aún si el código es anónimo o
almacenado, de todas maneras se ejecuta en la instancia.

4) B y C. Los paquetes consisten de uno o más procedimientos y funciones. Los


bloques anónimos deben convertirse a procedimientos antes de que puedan ser
empaquetados, y mientras los triggers puedan llamar a código empaquetado, estos
no podrán ser incluidos en el paquete.

5) D. Depende de la configuración de PLSQL_CODE_TYPE. El código nativo


compilado se almacena en un archivo del sistema operativo, mientras que el
código interpretado se almacena en el Diccionario de Datos.

13 - Asegurando la Base de Datos

Ejercicio 13.1 - Creación y Uso de Perfiles con Contraseña

Crear un perfil con límites estrictos, y asignar un usuario a la misma.


Demuestre el efecto.
________________________________________________________________

1. Conéctese a su base de datos con el usuario SYS a través de SQLPLUS y


ejecute el siguiente script de SQL:

En Linux/Unix/Linux:
SQL> @?/rdbms/admin/utlpwdmg.sql

En Windows:
SQL> @?\rdbms\admin\utlpwdmg.sql

2. Conéctese a su base de datos con el usuario SYSTEM a través del EM.


106
3. Desde la página principal de base de datos, en el hipervínculo de
Administración, bajo la Sección de Seguridad haga click sobre en enlace de
Perfiles.

4. Haga click en Crear para llegar a la ventana Crear Perfil, y escriba en el


nombre del perfil ESTRICTO. Presione el enlace de Contraseña para llegar
a la ventana de los controles de contraseña.

5. Establecer límites para su perfil ESTRICTO. Los usuarios asignados a este


perfil tendrán que cambiar sus contraseñas después de dos semanas, y
tendrán tres días para hacerlo. Una contraseña puede ser utilizado sólo
una vez, y después de dos intentos fallidos de acceso la cuenta será
bloqueada, pero sólo durante un minuto.

6. Establezca la función de complejidad del password modificando Complexity


(Complejidad) con el nombre de la función creada en el paso 1
(verify_function). Alternativamente puede realizarse lo mismo ejecute
en SQLplus el siguiente comando:

ALTER PROFILE estricto LIMIT


PASSWORD_VERIFY_FUNCTION verify_function;

7. Haga click en Mostrar SQL, examinar la sentencia CREATE PROFILE que se


genera, y haga click en Volver.

8. Haga click en Aceptar para crear el perfil.

9. Volver a la página de Administración del Controlador de Base de Datos, y


presionar el enlace Usuarios en la sección Seguridad.

107
10. En la ventana de Usuarios, busque el usuario SYSTEM, selecciónelo, y haga
click en Editar.

11. Editando el usuario: ventana SYSTEM, seleccionar el perfil ESTRICTO y


expirar la contraseña.

12. Haga click en Mostrar SQL, examine el comando ALTER USER generado, y
haga click en Volver.

13. Haga click en Aplicar para hacer el cambio.

14. Conéctese a su base de datos con el usuario SYSTEM utilizando SQL * Plus.
Tenga en cuenta que recibirá de forma inmediata una advertencia de que la

108
contraseña ha expirado, y que usted se encuentra en el período de "gracia"
de tres días.

15. Intente de cambiar la contraseña al valor actual (en el ejemplo, es ORACLE)


con el siguiente comando:
-
SQL> alterar usuario del sistema identificado por Oracle;

Usted recibirá un mensaje de error, ORA-28007: la contraseña no


puede ser reutilizada

16. Escriba una contraseña distinta. (¡Recuerdelo!) Para los siguientes ejemplos,
se cambió a MANAGER.

17. Intente conectarse tres veces con una contraseña equivocada. En el tercer
intento, se le indicará que la cuenta está bloqueada

18. . Espere al menos un minuto y, a continuación, conectar con la contraseña


correcta.

19. Arréglelo poniendo de vuelta el perfil SYSTEM como predeterminado y


eliminando el perfil ESTRICTO.

SQL> alter user system profile default;


SQL> drop profile ESTRICTO;

109
Ejercicio 13.2 - Habilitación de Auditoría

Permitirá a las dos bases de datos de auditoría y de auditoría de grano fino, utilizar
las vistas del diccionario de datos para ver los resultados.
________________________________________________________________

1. Conectarse a su base de datos con SQL * Plus como SYSDBA.

2. Ajuste el parámetro de instancia AUDIT_TRAIL, para habilitar la auditoría


del diccionario de datos. Como este es un parámetro estático, debe utilizar
la cláusula SCOPE y reiniciar la instancia.

SQL> conn / as sysdba


SQL> alter system set audit_trail=db scope=spfile;
SQL> startup force;

3. Usando SQL*Plus, conéctese como usuario SYSTEM.

4. Cree una tabla e inserte las siguientes filas:


SQL> create table scott.audit_test(name
varchar2(10),salary number);
SQL> insert into scott.audit_test values('McGraw',100);
SQL> insert into scott.audit_test values('Hill',200);

5. Habilite la auditoria de la Base de Datos para el acceso de la tabla.


SQL> audit select, update on scott.audit_test;

6. Ejecute algunos comandos contra la tabla.


SQL> select * from scott.audit_test;
SQL> update audit_test set salary=50
where name='McGraw';

7. Consulte la vista DBA_AUDIT_TRAIL para ver los resultados de la auditoría.


SQL> SELECT username, userhost, os_username,
ses_actions, obj_name
FROM dba_audit_trail;

USERNAME USERHOST OS_USERNAME SES_ACTIONS OBJ_NAME


-------- ------------- ----------- ---------------- ----------
SYSTEM WORKGROUP\PC1 PC1\Guest ---------SS----- AUDIT_TEST

Esto demuestra que el usuario SYSTEM de Oracle, mientras esté conectado a


una máquina llamada PC1 en el grupo de trabajo Windows llamado
WORKGROUP como usuario invitado de Windows, ejecutado a una o más

110
sentencias SELECT y UPDATE con éxito contra la tabla AUDIT_TEST. Para
descifrar la columna SES_ACTIONS, consulte el manual de Oracle________.

8. Crear una política de Auditoría de Grano Fino para capturar todoslos SELECT
contra la tabla AUDIT_TEST que lee la columna SALARY, si el salario
devuelto es mayor que 100, con esta llamada al procedimiento:

SQL> exec dbms_fga.add_policy(-


> object_schema=>'system',-
> object_name=>'audit_test',-
> policy_name=>'high_sal',-
> audit_condition=>'salary > 100',-
> audit_column=>'salary',-
> statement_types=>'select');

9. Ejecute algunas consultas contra la tabla:


SQL> select * from audit_test;
SQL> select salary from audit_test where name='Hill';
SQL> select salary from audit_test where name='McGraw';
SQL> select name from audit_test;

10. Consulte la Auditoría de Grano Fino:


SQL> select os_user,db_user,sql_text
from dba_fga_audit_trail;

OS_USER DB_USER SQL_TEXT


------------ ------- -----------------------------------
ORA12c\Guest SYSTEM select * from audit_test
ORA12c\Guest SYSTEM select salary from audit_test
where name='Sanchez'

Tenga en cuenta que sólo la primera y segunda preguntas de auditoría


desde el Paso 9 generó registros, y que la declaración se puede recuperar.

11. Arregle el problema cancelando la auditoría, botando la política de auditoría


de grano fino y eliminando la tabla.

SQL> noaudit select,update on system.audit_test;


SQL> exec dbms_fga.drop_policy
(object_name=>'audit_test',
policy_name=>'high_sal');
SQL> drop table audit_test;

Preguntas

111
1. Un usuario se queja de no poder conectarse, aunque está seguro que está
utilizando la contraseña correcta. Usted consulta la vista DBA_USERS, y nota
que su cuenta está en el estado EXPIRED & LOCKED. ¿Qué significa esto?
(Escoja la mejor respuesta).
A. La cuenta se bloqueo porque la contraseña expiró.
B. Puede volver a configurar la contraseña para desbloquear la cuenta.
C. Si no desbloquea la cuenta, el usuario podrá iniciar sesión si el
período de gracia de la contraseña no ha expirado.
D. La cuenta ha expirado y debe ser desbloqueada para reactivarla.

2. ¿Bajo qué circunstancias podría configurar el parámetro de instancia


REMOTE_LOGIN_PASSWORDFILE a EXCLUSIVE? (Elija dos respuestas
correctas).
A. Necesitará un conexión SYSDBA cuando está conectado a una
máquina y no al servidor.
B. Debería deshabilitar la autenticación de sistema operativo.
C. Quiere agregar usuarios al archivo de contraseñas.
D. Quiere evitar que se añadan usuarios al archivo de contraseñas.

3. Los perfiles con contraseña pueden aplicar políticas en la administración de


contraseñas. ¿Cuál de los siguientes comandos, si es que existe alguno, es
correcto? (Seleccione todos los que apliquen).
A. Los perfiles pueden evitar que un usuario cambie su contraseña.
B. Un perfil puede usarse para configurar una cuenta en la que se
puede conectar sin contraseña.
C. Los perfiles pueden usarse para rastrear los cambios de contraseña.
D. Los perfiles pueden controlar por cuánto tiempo se bloquea una
cuenta luego de varios intentos fallidos de conexión.
E. El límite del perfil FAILED_LOGIN_ATTEMPTS bloqueará una cuenta
sólo si los intentos fallidos de inicio de sesión son consecutivos.
F. El límite del perfil PASSWORD_GRACE_TIME controla el número de
días antes de que la contraseña expire durante los que puede
cambiar su contraseña.

4. Si desea que cierto bloque PL/SQL se ejecute cuando ciertos datos son
accedidos con un SELECT, ¿cuál técnica de auditoría podría usar? (Elija la mejor
respuesta).
A. Auditoría de Base de Datos
B. Auditoría de Grano Fino
C. Triggers de Base de Datos
D. No puede hacer esto

5. ¿Qué se necesita para auditar las acciones hechas por un usuario conectado
con el privilegio SYSDBA? (Escoja la mejor respuesta).

112
A. Poner el parámetro de inicialización de instancia
AUDIT_SYS_OPERATIONS en TRUE.
B. Usar la auditoría de Base de Datos para auditar el uso del privilegio
SYSDBA.
C. Poner el parámetro de inicialización de la instancia en NONE, para
que las conexiones SYSDBA puedan hacerse sólo con la autenticación
del sistema operativo. Luego configure el parámetro del sistema
operativo AUDIT_TRAIL y asegúrese que el DBA no tenga acceso a
él.
D. Esto no es posible: cualquier usuario con el privilegio SYSDBA puede
siempre pasar por alto los mecanismos de auditoría.

113
Respuestas
1) C. “Expired” se refiere a la contraseña; “Locked” se refiere a la cuenta. Estos se
administran independientemente, por lo que si desbloquea la cuenta la contraseña
continuará expirada – sin embargo si el período de gracia de expiración de la
contraseña es efectivo aún, el cual empieza después del primer inicio de sesión
exitoso después de que la contraseña expire, el usuario se podrá conectar.

2) A y C. Habilitar el archivo de contraseñas (con EXCLUSIVE o SHARED) quiere


decir que puede administrar la Base de Datos remotamente, y (no SHARED) un
archivo EXCLUSIVE puede tener nombres diferentes a los que tienen añadido SYS.

3) D y E. La directiva de perfil PASSWORD_LOCK_TIME controla por cuánto


tiempo se bloquea la cuenta después de varios intentos fallidos de inicio de sesión,
pero deben ser consecutivos para causar que la cuenta se bloquee.

4) B. La Auditoría de Grano Fino puede usarse para dar un efecto similar al de un


trigger en un comando SELECT.

5) A. Esto es lo que es necesario: todos los comando ejecutados por SYSDBA


después van a la pista de auditoría del sistema operativo.

14 - Configurando la Red Oracle

Ejercicio 14.1 - Creación de un Listener con el EM

En este ejercicio, se creará un nuevo Listener con el Controlador de Base de Datos,


y se inspeccionará el archivo listener.ora.
________________________________________________________________

1. En el navegador, conéctese al EM y acceda a su instancia como usuario


SYSTEM con el privilegio SYSDBA.

2. Desde la página principal de base de datos, en la sección General,


seleccione el vínculo LISTENER_<nombrehost>, donde <nombrehost> es el
nombre de su equipo.

3. Seleccione el enlace Red de Administración de los Servicios de en la sección


Enlaces Relacionados.
114
4. Seleccione Administrar Listeners de la lista desplegable y haga click en
Continuar.

5. Haga click en Crear.

6. Introduzca un usuario del sistema operativo y su respectiva contraseña.

7. Escriba LIST2 como nombre del Listener.

8. Añadir una dirección de escucha:

Protocolo: TCP
Puerto: 1522 (o cualquier otro puerto disponible)
Anfitrión: Su nombre de equipo

9. Haga click en Aceptar para guardar la nueva definición del Listener.

10. Para iniciar el nuevo Listener, seleccione Iniciar / Detener las acciones de la
lista desplegable y haga click en Continuar.

11. Desde la línea de comandos del sistema operativo, vaya a la siguiente


dirección ORACLE_HOME / network /admin. Esto será algo así como:

En Windows,
c:\oracle\product\11.1.0\db_1\NETWORK\ADMIN

O en Unix/Linux,
/oracle/product/11.1.0/db_1/network/admin

Allí, examinar el archivo listener.ora. Los contenidos se asemejan a:

# listener.ora Network Configuration File:


C:\oracle\product\11.1.0\Db_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ora12c)(PORT = 1521))
)
LIST2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ora12c)(PORT = 1522))
)

12. Para confirmar que su nuevo Listener está en ejecución, desde la línea de
comandos del sistema operativo ejecute la utilidad lsnrctl.
115
$ lsnrctl status

Ejercicio 14.2 - Creación de un Alias del Servicio de Red Oracle

Utilice el Administrador de Red para crear y probar un alias del Servicio de Red de
Oracle. Este alias se conectará a su base de datos a través del Listener LIST2 que
configuró en el ejercicio anterior.
________________________________________________________________

1. Inicie el Administrador de Red. En Unix/Linux, ejecute netmgr desde la línea


de comandos de un sistema operativo. En Windows, será en el menú Inicio,
en Configuración de Oracle y en el submenú Herramientas de Migración.

2. Destaque la rama de Servicio y haga click en el símbolo "+" a la izquierda


de la ventana para añadir un nuevo alias.

3. Introduzca orcl_1522 como el Nombre de la red de servicios y haga click en


Siguiente.

116
4. Seleccione TCP / IP como el protocolo y haga click en Siguiente.

5. Introduzca el nombre de su servidor con el nombre de host y 1522 como el


número de puerto y haga click en Siguiente.

6. Introduzca orcl como el nombre del servicio, y haga click en Siguiente.

7. Haga click en el botón de Prueba. Este intentará conectarse utilizando el


alias que ha creado. La prueba debería fallar, porque a pesar de que el alias
recientemente creado determina de la dirección del Listener LIST2, el
Listener no tiene su instancia registrada.

8. Cierre la ventana de Prueba, y en el menú Archivo, seleccione Guardar


Configuración de Red. Nota: la ruta del directorio en la parte superior de la
ventana del Administrador de Red: aquí es donde los archivos de la red de
Oracle se guardarán.

Ejercicio 14.3 - Configuración del Registro del Servicio Dinámico

En este ejercicio usted podrá establecer el parámetro local_listener de su instancia


a fin de registrarlo con el Listener no predeterminado LIST2. Luego, verifique que
el registro ocurrió y probó la conexión que creó en el ejercicio anterior. Por último,
ponga todo de vuelta a la normalidad.
________________________________________________________________

1. Use SQL * Plus, conéctese con su instancia como el usuario SYSTEM y,


ejecute los comandos.
SQL> alter system set local_listener='orcl_1522';
SQL> alter system register;

2. Desde la línea de comandos del sistema operativo, utilice lsnrctl para


comprobar que su instancia se ha registrado dinámicamete con su Listener
List2.
C:\> lsnrctl services list2

3. Pruebe el alias de conexión con SQL*Plus.


SQL> connect system/oracle@orcl_1522;

4. Reinicie la instancia para utilizar el Listener por defecto poniendo el


parámetro local_listener a como venía por defecto, y vuelva a registrarlo.

SQL> alter system set local_listener='';


SQL> alter system register;

117
Preguntas
1. ¿Cuál protocolo puede usar la Red de Oracle 12c? (Escoja cuatro opciones).
A. TCP
B. UDP
C. SPX/IPX
D. SDP
E. TCP con sockets seguros
F. Named Pipes
G. NetBIOS/NetBEUI

2. ¿Dónde está la división entre el cliente y el servidor en el ambiente Oracle?


(Elija la mejor respuesta).
A. Entre la instancia y la Base de Datos
B. Entre el usuario y los procesos de usuario
C. Entre el servicio y la instancia
D. Entre los procesos de usuario y el servicio
E. La división cliente/servidor varía dependiendo de la etapa del ciclo de
ejecución.

3. ¿Cuál de las siguientes afirmaciones son correctas acerca de los listeners?


(Seleccione la mejor opción).
A. Un listener se puede conectar únicamente a una instancia
B. Un listener se puede conectar únicamente a un servicio
C. Múltiples listeners pueden compartir una tarjeta de interfaz de red.
D. Una instancia aceptará conexiones sólo del listener especificado en el
parámetro LOCAL_LISTENER.

4. Usted decidió usar el nombramiento local. ¿Cuáles archivos debe crear en la


máquina del cliente? (Escoja la mejor respuesta).
A. tnsnames.ora y sqlnet.ora
B. Solamente listener.ora
C. Solamente tnsnames.ora
D. listener.ora y sqlnet.ora
E. Ninguno. Puede confiar en los que están por defecto si está usando
TCP y si su listener está ejecutándose en el puerto 1521.

5. Si detiene su listener, ¿qué pasará con las sesiones que se conectaron con él?
(Seleccione la mejor respuesta).
A. Continuarán si configuró su fallo
B. No se verán afectadas de ninguna manera
C. Se bloquearán hasta que reinicie su listener
D. No puede detener un listener si se está usando
118
E. Las sesiones desplegarán un error.

6. Si detiene el Administrador de Conexiones, ¿Qué sucederá con las sesiones que


están conectadas a través de él? (Escoja la mejor respuesta).
A. Continuarán si configuró su fallo
B. No se verán afectadas de ninguna manera
C. No puede detener el Administrador de Conexiones si se está usando
D. Las sesiones desplegarán un error.

7. Si está ejecutando sus procesos de usuario en la misma máquina que la


instancia a la que desea conectarse, ¿cuál de las siguientes afirmaciones es
correcta? (Elija dos respuestas).
A. No necesita ir por medio de un listener.
B. Puede usar solamente el protocolo IPC.
C. No puede usar el protocolo IPC.
D. No necesita usar la red de Oracle del todo.
E. No necesita configurar la red de Oracle del todo.

8. Su organización tiene muchas Bases de Datos en muchos servidores, un gran


número de usuarios. El ambiente de red cambia constantemente. ¿Cuál sería el
mejor método de nombramiento para utilizar? (Escoja la mejor respuesta).
A. Easy Connect (Conexión sencilla), porque así no tendría archivos
tnsnames.ora que mantener.
B. Directory naming (Nombramiento de Directorios), porque centraliza
la información del nombramiento.
C. Local naming (Nombramiento local), porque cada usuario puede
darle mantenimiento a sus propios archivos de configuración
localmente.
D. External naming (Nombramiento externo), porque puede confiar en
un producto de terceros para mantener la configuración de la
información.

9. Su servidor está usando la configuración de caracteres Europea y su cliente


está usando la configuración de caracteres americana. ¿Cómo manejará esta
situación Oracle? (Elija la mejor respuesta).
A. No puede; debe cambiar la configuración de caracteres de la Base de
Datos o del cliente.
B. El protocolo de red subrayado manejará la conversión.
C. La red de Oracle manejará la conversión.
D. La aplicación debe hacer la conversión necesaria.

10. ¿Por qué debería configurar múltiples listeners para una instancia? (elija la
mejor repuesta).
A. No puede; sólo puede haber un listener local.

119
B. Para dar la tolerancia a fallos y balanceo de cargas.
C. Si los listeners están en computadores separados, obtendrá mejor
rendimiento.
D. Para dispersar la carag de trabajo que implica mantener las sesiones
a través de todos los procesos.

11. La utilidad tnsping reporta que un alias es fino, pero no puede conectarse
con SQL*Plus. ¿Cuál podría ser la razón? (Escoja dos respuestas).
A. Está usando una combinación errónea de usuario/contraseña, pero
tnsping lo probó con una correcta combinación.
B. El listener se está ejecutando, pero la instancia no.
C. La Base de Datos está en modo Mount.
D. SQL*plus está usando un método de resolución de nombres y
tnsping otro.

12. ¿Cuáles herramientas de configuración pueden usarse para levantar un


listener? (Escoja dos opciones).
A. Controlador de Base de Datos
B. El Administrador de Red
C. La utilidad lsnrctl
D. SQL*Plus

13. Considere este archivo tnsnames.ora:


test =
(description =
(address_list = (address = (protocol = tcp)(host = serv2)(port = 1521)) )
(connect_data = (service_name = prod) ) )
prod =
(description =
(address_list = (address = (protocol = tcp)(host = serv1)(port = 1521)) )
(connect_data =
(service_name = prod) ) )
dev =
(description =
(address_list = (address = (protocol = tcp)(host = serv3)(port = 1521)) )
(connect_data =
(service_name = prod) ) )

120
¿Cuál de las siguientes afirmaciones es verdadera? (Escoja la mejor
respuesta)
A. Todos los alias se conectarán al mismo servicio.
B. Los alias irán a diferentes servicios.
C. El primer y tercer alias fallarán, porque el nombre del alias no
corresponde al nombre del servicio.
D. Habrá un conflicto de puertos, porque todos los alias estarán usando
el mismo puerto.
E. Ninguno de los anteriores.

14. Considere esta línea de un archivo listener.ora:

L1=(description=(address=(protocol=tcp)(host=serv1)(port=1521)))

¿Qué pasará si ejecuta esta cadena de conexión?


connect scott/tiger@L1
A. Se conectará a la instancia l1.
B. Se conectará a una instancia sólo si el registro de instancias
dinámicas está trabajando.
C. No puede decir; depende de cómo esté configurado el lado del
cliente.
D. Si está conectado a la máquina del servidor, IPC lo conectará a su
instancia local.
E. La conexión fallará si el listener no se ha levantado.

15. Considere estos cuatro parámetros de inicialización:


instance_name=PRD
db_name=PROD
db_domain=WORLD
local_listener=”
service_names=production

¿Cuál nombre de servicio se registrará con un listener en el puerto 1521?


(Escoja la mejor respuesta).
A. PRD.WORLD
B. PROD.WORLD
C. production
D. Ninguno, porque el paámetro local_listener se deshabilitó.

Respuestas

121
1) A, D, E y F. Los cuatro protocolos que soporta la red de Oracle 12c son TCP,
SDP, TCP con seguridad en los sockets y Tuberías con nombre. Versiones previas
soportaban otros protocolos.

2) D. La división cliente/servidor es entre los procesos de usuario y el servicio.

3) C. Una tarjeta de interfaz de red soporta muchos listeners, siempre y cuando


utilicen diferentes puertos.

4) C. El único archivo requerido es tnsnames.ora.

5) B. Un listener establece conexiones; mas no las mantiene. Así B es correcta y


las demás son erróneas.

6) D. Un Administrador de Conexiones es responsable de mantener las


conexiones: todo el tráfico se viene aquí. Por lo que D es la respuesta correcta
porque las sesiones van a fallar.

7) A y E. Todas las conexiones usan la Red Oracle, sin embargo no necesitan una
red y para las conexiones locales no necesita hacer configuraciones.

8) B. Nombramiento de Directorios está destinado exactamente para ese ambiente


descrito y es la mejor respuesta.

9) C. La conversión de la configuración de caracteres la hace la capa de Dos


Tareas Comunes de la Red de Oracle.

10) B. Múltiples listeners pueden dar la tolerancia a fallos a la hora de la conexión


y balanceo de cargas.

11) B y C. La utilidad tnsping pone a prueba solo el apretón de manos de los


procesos de usuario y el listener, no a la conexión delantera con la instancia, por lo
que B y C son posibilidades.

12) A y C. Los listeneres pueden levantarse tanto con el EM como con la utilidad
lsnrctl.

13) B. Cada alias especifica un host diferente.

14) C. No tiene idea qué pasará, sin saber cómo es configurado el cliente.

15) C. El parámetro SERVICE_NAMES se usa para registrar una instancia.

122
15 – Administración de Servidores Compartidos
Ejercicio 15.1 - Configurando y Verificando los Servidores Compartidos

En este ejercicio, deberá convertir su instancia a servidor de uso compartido, y


demostrar que está trabajando.
________________________________________________________________

1. Inicie la sesión en su instancia con SQL * Plus, y los siguientes comandos


para establecer parámetros para habilitar el servidor compartido:
alter system
set dispatchers='(protocol=tcp)(dispatchers=2)'
scope=spfile;

alter system set shared_servers=3 scope=spfile;


startup force;

2. Ejecute esta consulta para confirmar que los despachadores y servidores


compartidos se iniciaron:

select program from v$process;

Tenga en cuenta que hay dos procesos, d000 y d001, que son los dos
despachadores, y tres procesos de servidor compartido; s000, S001 y S002.

3. Use Lsnrctl para confirmar que los despachadores se han registrado con su
Listener: desde la línea de comandos de un sistema operativo, escriba
lsnrctl services. La salida la puede observar en la siguiente figura. Tenga
en cuenta que los dos despachadores se han registrado pero que aún no se
establecido ninguna sesión.

123
4. Poner en marcha una nueva sesión de SQL * Plus, y acceder a su instancia,
a través del Listene r.
sqlplus system/oracle@orcl

5. Consulte V$CIRCUIT para confirmar que la conexión se ha establecido como


un circuito: una conexión a través de un servidor compartido.

select dispatcher,saddr,circuit from v$circuit;

Una fila será devuelta, mostrando cuál despachador de sesión ha venido


aconteciendo y la dirección de las sesiones.

6. Repita los pasos 4 y 5 varias veces hasta que haya un número de sesiones
concurrentes, y observar cómo las nuevas conexiones se equilibran a través
de los dos despachadores.

Ejercicio 15.2 - Configuración de un Cliente para elegir el Tipo de


Conexión

En este ejercicio, se crearán dos nuevos alias para servicios, especificando un o


para servidor dedicado, el otro especificando servidor compartido. Evaluar el efecto
y, a continuación, ponga su instancia de nuevo a servidor dedicado solamente.
124
________________________________________________________________

1. Usando cualquier editor de texto que desee, abra su archivo tnsnames.ora


en su directorio ORACLE_HOME / network / admin.

2. Sustituya el nombre de su host del servidor a la HOST, añadir estas dos


entradas a su archivo tnsnames.ora:
orcl_ded =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =
ora12c.haunting.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
orcl_mts =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =
ora12c.haunting.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = orcl)
)
)
Note que los dos alias solicitan el mismo servicio, orcl, pero las secciones
connect_data demanda, ya sea un servidor dedicado (alias orcl_ded) o un
conexión a través de un servidor compartido (alias orcl_mts).

3. En el nivel de sistema operativo, tenga en cuenta el número de procesos


que hay en su instancia. En Unix/Linux, use ps como se mostró en ejemplos
anteriores. En Windows, utilice El Administrador de Tareas para mostrar el
número de hilos en el proceso de oracle.exe.

4. Poner en marcha una sesión de SQL * Plus a través de un servidor


dedicado.
SQL> connect system/oracle@orcl_ded

5. Repita el paso 3, y notemos de que un proceso de servidor (o hilo), ha sido


comenzado.

125
6. Poner en marcha una sesión de SQL * Plus a través de un servidor
compartido.
SQL> connect system/oracle@orcl_mts

7. Repita el paso 3, y nota que el contador de procesos(o hilos) no ha


cambiado.

8. Devuelva su instancia a su servidor dedicado, y reinicie.


connect / as sysdba;
alter system set dispatchers=‘‘ scope=spfile;
alter system set shared_servers=0 scope=spfile;
startup force;

Preguntas
1. ¿Cuál de estas estructuras de memoria no están almacenadas en el SGA para
una sesión de servidor compartido? (Seleccione la mejor respuesta).
A. Estado de Cursor.
B. Espacio de Ordenamiento
C. Espacio de Pila
D. Sesión de Datos

2. Asocie el objeto con la función:

Objeto Función
A. Cola común a. Conecta usuarios con despachadores
B. Despachadores b. Almacena trabajos que están esperando
para ser ejecutados
C. Large Pool c. Ejecuta comandos SQL
D. Listener d. Almacena resultados a la espera de los
resultados obtenidos
E. Cola de e. Recibe comandos de los procesos de
Respuesta usuario
F. Servidor f. Almacena los UGAs accedidos por todos los
compartido servidores

3. ¿Cuál de los siguientes es incorrecto acerca del uso de la memoria? (Escoja la


mejor respuesta).
A. Para sesiones de servidor dedicado, los servicios no usarán memoria
compartida.
B. La memoria PGA siempre está fuera del Área Global de Sistema
(SGA).

126
C. Las colas de servidor compartido están creadas en el Large Pool, si
este ha sido definido. De lo contrario, se encuentran en el Pool
Compartido.
D. Para sesiones de servidor compartido, las UGAs siempre se
almacenan en el SGA.

4. ¿Cuáles de las siguientes afirmaciones son verdaderas para los despachadores?


(Seleccione dos respuestas).
A. Los despachadores no controlan el trabajo de las solicitudes de los
usuarios; solamente son la interfaz entre los procesos de usuario y
las colas.
B. Los despachadores comparten una respuesta común con las colas.
C. Los despachadores balancean la carga de conexiones entre ellos
mismos.
D. Los listeners balancean la carga de conexiones a través de los
despachadores.
E. Puede terminar un despachador y las sesiones establecidas
continuarán.

5. ¿Cuál de las siguientes afirmaciones acerca de los servidores compartidos son


verdaderas? (elija la mejor respuesta).
A. Todos los comandos en un transacción multicomando se ejecutará
por el mismo servidor.
B. Si un comando actualiza múltiples filas, el trabajo quizá sea
compartido por varios servidores.
C. El número de servidores compartidos es fijado por el parámetro
SHARED_SERVERS.
D. Oracle dará servidores compartidos adicionales para la demanda.

6. Puede monitorear el ambiente del servidor compartido a través de un número


de vistas. ¿cuál de las siguientes afirmaciones es correcta? (Elija dos de ellas).
A. Puede monitorear cuán ocupados están sus servidores compartidos
consultando V$SHARED_SERVER_MONITOR.
B. V$PROCESS tendrá una fila por cada servidor compartido.
C. V$PROCESS tendrá una fila por cada despachador.
D. V$CIRCUIT le mostrará cuán ocupada está cada sesión de servidor
compartido.

7. Usted consulta V$QUEUE y observa que la cola común no tiene mensajes


esperando, pero la respuesta hace colas. ¿Qué acción debería hacer? (Escoja la
mejor respuesta).
A. No necesita hacer nada; las colas son una parte normal de las
operaciones de servidores compartidos.
B. Debería considerar añadir más servidores compartidos.

127
C. Debería considerar añadir más despachadores.
D. Debería crear un large pool, para aliviar la tensión en el pool
compartido.

8. Después de configurar un servidor compartido, encuentra que aún existen


servidores compartidos que están siendo arrojados. ¿cuál podría ser la razón de
esto? (Elija la mejor respuesta).
A. Sus usuarios están haciendo conexiones locales.
B. La aplicación está solicitando servidores dedicados.
C. Trabajos en lote largos se están ejecutando.
D. Oracle ha despachado servidores dedicados, porque configuró el
parámetro SHARED_SERVER demasiado bajo.

9. Si tiene múltiples listeners, ¿qué harán sus despachadores? (Selecciones dos


respuestas).
A. Todos los despachadores se registrarán dinámicamente con todos los
listeners, automáticamente, si se están ejecutando en el puerto
1521.
B. Los despachadores pueden registrarse con sólo un listener; de otro
modo, el balanceo de cargas no será posible.
C. Los despachadores balancearán su propia carga a través de los
listeners.
D. Los despachadores se registrarán con cualquier listener que esté
nominado en el parámetro LOCAL_LISTENER.
E. Usted puede controlar cuál listener se registrará con cada
despachador.

10. Su Base de Datos está siendo usada por una mezcla de procesos OLTP, DSS
y en lote. ¿Aconsejaría el uso de servidores compartidos? (Escoja la mejor
respuesta).
A. Sí, pero sólo para el trabajo OLTP.
B. Sí, si los usuarios de los procesos en lote y los de DSS vienen de un
despachador distinto al de OLTP.
C. No, porque la mezcla de carga de trabajo causará problemas.
D. No, a menos que el trabajo pueda ser particionado de tal forma que
el trabajo OLTP se ejecute durante el día y los trabajos en lote y el
DSS durante la noche para evitar la contención.

11. Existe un parámetro requerido para el servidor compartido. ¿Cuál es?


A. DISPATCHERS
B. LARGE_POOL_SIZE
C. PROCESSES
D. SESSIONS
E. SHARED_SERVERS

128
12. ¿Cuál de las siguientes operaciones no pueden realizarse por medio de una
conexión de servidor compartido? (Elija la mejor respuesta).
A. Copia de seguridad y Restauración
B. Cierre y levantado
C. Operaciones físicas, como crear archivos de datos
D. Trabajos en lote largos
E. Creación de índices

13. ¿Cuál de las siguientes afirmaciones es correcta con respecto al uso de


memoria? (Seleccione la mejor respuesta).
A. En general la demanda de memoria debería disminuir porque el
número de procesos de servidor se reduce al utilizar la opción de
servidor compartido.
B. En general la demanda de memoria debería disminuir si cambia a
servidor compartido, porque así va a reducir el tamaño del SGA.
C. Debería incrementar el tamaño del SGA si lo convierte a servidor
compartido.
D. Implementar servidores compartidos reducirá el tamaño de las
sesiones UGA.

14. Tiene muchas sesiones conectadas a un sólo despachador. ¿Qué está


sucediendo a nivel de red?
A. Cada sesión se conecta al despachador en un único puerto TCP.
B. Todas las sesiones se conectan al despachador en un puerto TCP.
C. La conexión inicial es siempre a un puerto; luego de haberse
establecido la conexión es a un único puerto.
D. Las conexiones se hacen y se rompen en demanda, a través de un
mecanismo de colas.

15. Quiere asegurarse que tiene una conexión de servidor dedicado. ¿cuál de
los siguientes métodos de conexión le dará esto? (Escoja dos respuestas).
A. Utilizando Easy Connect, porque no puede usar las características
avanzadas como servidor compartido.
B. Hacer una conexión local pasando por alto el listener.
C. Incrustando la directiva SERVER=DEDICATED en el alias del servicio
que usa.
D. Conectándose AS SYSDBA, que siempre dará una conexión dedicada
para que pueda ejecutar los comandos startup y shutdown.

Respuestas
1) C. El espacio de pila no se almacena en el SGA.
129
2) A-b. La pila común la comparten todos los comandos.
B-e. Los despachadores reciben comandos de los procesos de usuarios.
C-f. Si se crea, el large pool es donde se almacenan los UGAs.
D-a. El listener establece sesiones conectando usuarios con despachadores.
E-d. Cada despachador tiene su propia cola para resultados.
F-c. Los servidores compartidos ejecutan comandos como normal.

3) C. La respuesta correcta, porque confunde la memoria usada por las colas


con la memoria usada por los UGAs.

4) A y D. Los despachadores son intermediarios entre los procesos de usuarios


y las colas, y los listeners harán el balanceo de cargas a través de las solicitudes
de conexión de los despachadores.

5) D. Esta afirmación es la respuesta correcta, auque de forma ideal usted


tendrá configurado el SHARED_SERVERS lo suficientemente alto para satisfacer
la demanda.

6) B y C. V$PROCESS tiene una entrada para cada proceso, aunque


normalemente usaría V$DISPATCHER y V$SHARED_SERVER si fueran los
procesos en los que está interesado.

7) C. Si los resultados se están respaldando, esto implica que los


despachadores están demasiado ocupados para limpiar sus colas.

8) A. Esta es la única razón posible, a menos que usted, el DBA, haya


configurado el lado del cliente de la Red de Oracle para solicitar sesiones
dedicadas.

9) D y E. Los despachadores se registrarán por defecto con el listener


especificado por el parámetro LOCAL_LISTENER, pero lo puede heredar cuando
configura el parámetro DISPATCHERS.

10) A. Un Servidor Compartido generalmente no se recomienda para trabajos


que podrían poner en cola comandos largos de ejecutar, pero es excelente para
consultas cortas y transacciones típicas de sesiones OLTP.

11) A. Esta es la respuesta correcta, pero también debe configurar siempre los
otros parámetros.

12) B. Es la única respuesta correcta porque shutdown y startup no pueden


ejecutarse a través del servidor compartido.C. Necesitará incrementar el SGA, para
130
proveer espacio para la sesión UGAs, almacenada en el pool compartido, o
(preferiblemente) en el large pool.

13) C. Necesitará incrementar el SGA, para dar espacio a la sesión de UGAs –


almacenado en el pool compartido, o (preferiblemente) en el large pool.

14) B. Todas las sesiones se excluyen mutuamente a través de un puerto.

15) B y C. Pasando por alto el listener siempre resultará que un proceso de


servidor dedicado se está ejecutando, o puede solicitar esto en los detalles de su
conexión TNS.

16 - Administración de Rendimiento de Base de Datos

Ejercicio 16.1 - Reparación de Objetos Inválidos

Crear algunos objetos, invalidarlos y solucionar el problema.


________________________________________________________________

1. Usando SQL*Plus, conéctese como usuario SYSTEM.

2. Cree un usuario para este ejercicio y otórguele el privilegio de DBA.

SQL> create testuser identified by testuser;


SQL> grant dba to testuser;

3. Conéctese como TESTUSER y cree algunos objetos.


SQL> conn testuser/testuser
SQL> create table testtab(n1 number,d1 date);
SQL> insert into testtab values(1,sysdate);
SQL> create or replace view v1 as
select d1 from testtab;
SQL> create or replace procedure p1 as
2 cnt number;
3 begin
4 select count(*) into cnt from testtab;
5 end;
6 /

4. Confirme el estado de los objetos.


SQL> select object_name, object_type, status
from user_objects;
131
Todos tendrán el estado de VALID.

5. Ejecute un comando DDL en la tabla


SQL> alter table testtab drop column d1;

6. Vuelva a ejecutar la consulta del paso 4. Es notorio que el procedimiento y


la vista ahora están INVALID.

7. Recompile el procedimiento:
SQL> alter procedure p1 compile;
Procedure altered.

8. Recompile la vista:
SQL> alter view v1 compile;
Warning: View altered with compilation errors.

La consulta falla, debido a que la columna que se está consultando no


existe.

9. Para diagnosticar el problema, consulte la vista DBA_DEPENDENCIES.

SQL> select referenced_name, referenced_owner,


referenced_type
from user_dependencies
where name='V1';

REFERENCED_NAME REFERENCED_OWNER REFERENCED_TYPE


---------------- ---------------- ------------------------------
TESTTAB TESTUSER TABLE D1 TESTUSER NON-EXISTENT

Esto muestra que la vista está referida a una tabla, TESTTAB, y un objeto
inexistente denominado D1.

10. Para determinar exactamente el problema, recupere el código de la vista en


el que se basa.
SQL> select text
from user_views where view_name='V1';

TEXT
----------------------------------------
select d1 from testtab

El problema es evidente: la vista hace referencia a una tabla válida, pero la


columna que necesita ya no existe.

132
11. Para arreglar el problema, agregue nuevamente la columna y recompile:
SQL> alter table testtab add (d1 date);
SQL> alter view v1 compile;

12. Confirme que todos los objetos son válidos ahora ejecutando las consultas
desde el paso 4.

13. Arregle todo eliminando la vista y el procedimiento (la tabla se va a usar en


el siguiente ejercicio).
SQL> drop view v1;
SQL> drop procedure p1;

Ejercicio 16.2 - Reparación de los Índices que no están en uso

Crear índices, los forza a ser inservibles, y repararlos con SQL * Plus y el
Controlador de Base de Datos.
________________________________________________________________

1. En su sesión SQL*Plus, conéctese como TESTUSER y cree dos índices.


SQL> create index d1_idx on testtab(d1);
SQL> create index n1_idx on testtab(n1);

2. Confirme la creación de los indices y su estado. Ambos estarán en VALID.


SQL> select index_name,status from user_indexes;

3. Mueva la tabla.
SQL> alter table testtab move;

4. Ejecute la consulta otra vez a partir del paso 2. El traslado de la tabla, que
cambió todos los id de las filas, se han hecho los índices inservibles.

133
5. Reconstruya un índice, utilizando el NOLOGGING y opciones ONLINE.
SQL> alter index n1_idx rebuild online nologging;

6. Conéctese a su base de datos con el usuario SYSTEM usando el Controlador


de Base de Datos.

7. Desde la página de inicio de la base de datos, en el enlace de


Administración y, a continuación, el enlace Índices bajo la sección de
Esquema.

8. En la ventana de índices en la sección de Buscar, ponga como esquema


TESTUSER, y haga click en Continuar. Esto mostrará los dos índices en la
tabla TESTTAB, uno de que, D1_IDX, sigue siendo inutilizable.

9. Seleccione la opción del Índice Inservible, en el cuadro desplegable de


Acciones seleccione Reorganice, y haga click en Ir para iniciar el Asistente
Reorganizador de Objetos.

134
10. Haga click en Siguiente, deje todas las opciones por defecto, y haga click en
Siguiente de nuevo para generar la reorganización y la secuencia de
comandos de llegar a la ventana de Informe de Impacto. Esto debería
confirmar que existe suficiente espacio libre para la operación que se
ejecutará. Haga click en Siguiente para proceder.

11. Reorganizando Objetos: en la ventana de Programación, deje todo por


defecto para ejecutar el trabajo de inmediato, y haga click en Siguiente para
llegar a la ventana de Revisión.

12. En la ventana de Revisión, haga click en Enviar Trabajo para reconstruir el


índice.

13. En su sesión de SQL * Plus, confirme que el índice que se está ejecutando
es válido corriendo las consultas a partir del paso 2.

El análisis de impacto de la operación de la reconstrucción de in índice.

Ejercicio 16.3 - Automatizando la Recolección de Estadísticas

Crear un trabajo programado para reunir estadísticas sobre la tabla TESTTAB. El


trabajo llevará a cabo un análisis completo de la tabla y sus índices, y también
desarrollará histogramas de las columnas utilizadas como llaves de los índices.
________________________________________________________________

1. Conéctese a su base de datos como usuario TESTUSER utilizando el


controlador de Base de Datos.

135
2. Tome la pestaña Administración, en la sección Agenda el enlace de Trabajos
a llegar a la ventana de Programación de Trabajos.

3. Haga click en Crear para llegar a la ventana de Creación de Trabajos. En la


sección General, introduzca Analizar TESTTAB como nombre, y dejar todo lo
demás en los valores predeterminados.

4. En la sección de comandos, reemplace el código de ejemplo el siguiente:

begin
dbms_stats.gather_table_stats(
ownname => 'TESTUSER',
tabname => 'TESTTAB',
estimate_percent => 100,
cascade => true,
method_opt => 'for all indexed columns size auto');
end;

5. En el enlace Programación para llegar a la ventana de Programación. Deje


todo en los valores por defecto, para ejecutar el trabajo de inmediato por
una sola vez, y volver a la ventana de Programación de Trabajos.

6. Presione el enlace Ejecutar el Historial, y verá que el trabajo ha tenido éxito.

7. En su sesión de SQL * Plus, establezca su parámetro de sesión


NLS_DATE_FORMAT para mostrar el tiempo completo y confirmar que las
estadísticas fueron recolectadas, así:

8. Ordenado por la conexión del usuario SYSTEM y soltando el esquema


TESTUSER.
SQL> drop user 'TESTUSER' cascade;

136
Ejercicio 16.4 - Opcional

Ejecute las siguiente instrucciones en SQL*Plus para probar el efecto de ALTER


MOVE, las estadísticas del optimizador y row chaining
________________________________________________________________

CREATE USER test IDENTIFIED BY test


DEFAULT TABLESPACE tools
TEMPORARY TABLESPACE temp;

GRANT CONNECT, RESOURCE TO test;

ALTER USER test QUOTA UNLIMITED ON tools;

CONNECT test/test
CREATE TABLE test (long_string VARCHAR2(2000));

BEGIN
FOR ctr IN 1 .. 10000 LOOP
INSERT INTO test VALUES (TO_CHAR(ctr));
END LOOP;
END;

COMMIT;

ANALYZE TABLE test COMPUTE STATISTICS;

SELECT table_name, num_rows, chain_cnt FROM user_tables;

/*
TABLE_NAME NUM_ROWS CHAIN_CNT
------------------------------ ---------- ----------
TEST 10000 0

*/
UPDATE test SET long_string = LPAD(long_string, 500);

COMMIT;

ANALYZE TABLE test COMPUTE STATISTICS;

SELECT table_name, num_rows, chain_cnt FROM user_tables;

/*
TABLE_NAME NUM_ROWS CHAIN_CNT
------------------------------ ---------- ----------
TEST 10000 9999
*/

ALTER TABLE test MOVE INITRANS 6;

SELECT table_name, num_rows, chain_cnt FROM user_tables;

137
/*
TABLE_NAME NUM_ROWS CHAIN_CNT
------------------------------ ---------- ----------
TEST 10000 9999
*/

ANALYZE TABLE test COMPUTE STATISTICS;

SELECT table_name, num_rows, chain_cnt FROM user_tables;

/*
TABLE_NAME NUM_ROWS CHAIN_CNT
------------------------------ ---------- ----------
TEST 10000 0
*/

Preguntas
1. Si crea una tabla y un procedimiento que hace referencia a esta, y luego
cambia la definición de la tabla, ¿qué pasará cuando intente ejecutar el
procedimiento? (Escoja la mejor respuesta).
A. EL procedimiento se volverá a compilar automáticamente y se
ejecutará con éxito.
B. El procedimiento fallará hasta que lo vuelva a compilar.
C. El procedimiento se ejecutará con desempeño reducido hasta que le
haga un análisis a la tabla.
D. El procedimiento puede que compile o no, dependiendo de la
naturaleza del cambio.

2. Si un comando SELECT intenta usar un índice UNUSABLE, ¿qué sucederá? (Elija


la mejor respuesta).
A. El comando fallará.
B. El comando se ejecutará con éxito, pero con desempeño reducido.
C. EL índice será reconstruido automáticamente de ser posible.
D. Depende el parámetro SKIP_UNUSABLE_INDEXES.

3. Usted determina que un índice es UNUSABLE y decide reconstruirlo. ¿cuál de


las siguientes afirmaciones es correcta, si hay alguna? (Seleccione todas las
que apliquen).
A. Las palabras reservadas NOLOGGING y ONLINE no se pueden usar
juntas cuando se está reconstruyendo un índice.
B. La reconstrucción puede requerir el doble de espacio en disco
durante su progreso.

138
C. Si no utiliza la palabra reservada ONLINE mientras está
reconstruyendo, la tabla no estará disponible para SELECTs y para
comandos DML.
D. La palabra reservada NOLOGGING aplicada a la reconstrucción
significa que hacer DML al índice no generará redo.

4. Puede analizar un índice con el comando ANALIZE INDEX, o con el


procedimiento DBMS_STATS.GATHER_INDEX_STATS. ¿Cuál vista será poblada
después de esto? (Escoja la mejor respuesta).
A. INDEX_STATS
B. DBA_INDEXES
C. DBA_IND_COLUMNS
D. DBA_INDEX_STATS

5. Las estadísticas de Objetos están reunidas y desactualizadas. ¿Qué causará que


se vuelvan a reunir? (Elija dos opciones correctas).
A. El optimizador puede configurarse para reunir estadísticas
automáticamente cuando las considere desactualizados.
B. Puede configurar un trabajo programado para reunir estadísticas
automáticamente.
C. Siempre puede forzar la recolección de estadísticas utlizando el
comando ANALIZE.
D. Aplicando la opción GATHER AUTO al procedimiento
DBMS_STATS.GATEHR_DATABASE_STATS forzarán la recolección de
estadísticas para todos los objetos.

6. ¿De dónde se llenan las vistas de rendimiento dinámico? (Escoja todas las
respuestas correctas).
A. La instancia
B. El archivo de control
C. El Diccionario de Datos
D. El Repositorio de Carga de Trabajo Automático

7. Cuando usted baja su instancia, ¿qué sucede con la información en las vistas
de rendimiento dinámico? (Elija la mejor opción).
A. Se pierden
B. Se guarda en el AWR por el proceso MMON.
C. Se guarda en el archivo de control.
D. Depende del método de desconexión de la instancia: un colapso o
SHUTDOWN ABORT lo perderá; de cualquier otra forma, lo guardará.

8. Si un índice de llaves primarias llega a ser UNUSABLE, ¿cuál será el efecto en la


aplicación que lo use? (Escoja la mejor respuesta).
A. El SELECT tendrá éxito, pero tal vez a bajo rendimiento.

139
B. Los comandos DML tendrán éxito, pero tal vez con rendimiento
reducido.
C. La restricción de llave primaria ya no puede ser aplicada.
D. Todas las anteriores.

Respuestas
1) D. Oracle intentará recompilar automáticamente, esto puede o no realizarse
con éxito.

2) D. El parámetro de instancia SKIP_UNUSABLE_INDEXES controla este


comportamiento. Dependiendo de esto, los comandos fallarán o se ejecutarán por
medio del reordenamiento de full scan a las tablas.

3) B. Una reconstrucción necesita espacio para el índice viejo y el nuevo mientras


este se encuentre en progreso.

4) B. Esta vista también pudo ser llenada por medio del análisis en el que el índice
se basa.

5) B y C. El Programador puede ser configurado para ejecutar un trabajo de


recolección de estadísticas automáticamente, o las estadísticas pueden
recolectarse interactivamente en cualquier momento.

6) A y B. Las vistas de rendimiento dinámico se llenan a partir de la instancia o


del archivo de control.

7) A. La información de las vistas de rendimiento dinámico existe sólo por el


tiempo de vida de la instancia: se pierde a la hora de la desconexión, no importa
cómo ocurra.

8) A. si el parámetro de instancia SKIP_UNUSABLE_INDEXES está en su valor


predeterminado, entonces los comandos SELECT se ejecutarán con éxito, haciendo
el reordenamiento de full scan. La mayoría de los comandos DML fallarán en esta
situación. La única excepción es la de los comandos UPDATE que no afectan las
columnas llave.

17 - Monitoreo de Oracle

140
Ejercicio 17.1 - Generando un Reporte ADDM

Recoger una instantánea AWR, simular una carga de trabajo, reunir otra
instantánea, y ver el Reporte ADDM.
________________________________________________________________

1. Conéctese a la Base de Datos con el usuario SYSTEM con SQL*Plus.

2. Force la creación de un a instantánea AWR.


SQL> exec dbms_workload_repository.create_snapshot;

3. Simule una carga de trabajo creando una tabla y corriendo el siguiente


bloque PL/SQL para generar actividad:

SQL> create table tmptab as select * from all_objects;


SQL> begin
for i in 1..10 loop
insert into tmptab select * from all_objects;
delete from tmptab;
end loop;
end;

SQL> commit;

4. Repita el comando del paso 2 para crear otra instantánea.

5. Conéctese a su Base de Datos con el Controlador de Base de Datos,


utilizando el usuario SYSTEM.

6. Tome el enlace Central de Asesores en la sección Enlaces Relacionados


sobre la página de inicio de la Base de Datos. El primer informe se
enumeran los ADDM informe generado como resultado de la instantánea,
como se muestra a continuación.

141
7. Seleccione la opción del Último Reporte ADDM, haga click en Ver Resultado.
El reporte debería desplegarse.

8. Estudiar el informe. En el ejemplo, el problema más grave (como se


muestra en el gráfico) es la E / S del disco, los resultados en la parte
inferior de la pantalla muestran las causas de este problema. Haga doble
click en el enlace de Resultados para más detalles.

9. Elimine la tabla TMPTAB.


SQL> drop table tmptab;

Ejercicio 17.2 - Configuración de Alertas

142
Configurar las alertas de "los COMMITS del usuario (por segundo)", y vigilar que se
hayan planteado.
________________________________________________________________

1. Conéctese a la Base de Datos con el usuario SYSTEM con el Controlador de


Bases de Datos.

2. Desde la página de inicio de la Base de Datos, tome el enlace de Gestión de


Métricas relacionados en la sección de Enlaces Relacionados.

3. Haga click en Editar Umbrales para llegar a la ventana Editar Umbrales.

4. Desplácese hacia abajo para llegar a las alertas de "los COMMIT de los
usuarios (por segundo)", y establecer la alerta y los valores críticos de 1 y 4.
Estos umbrales son artificialmente bajos que se sea fácil de cruzar. Haga
click en Aceptar para guardar este cambio.

5. Conéctese a su Base de Datos con el usuario SYSTEM con SQL*Plus y


ejecute el comando COMMIT rápidamente varias veces.

SQL> commit;
SQL> /
SQL> /
SQL> /

6. En su sesión del EM, con sólo unos segundos que hayan transcurrido verá
que la alerta ya fue planteada.

7. Arréglelo regresando a la ventana de Edición de Umbrales y estableciendo


sus valores a los predeterminados.

Preguntas
1. Clasifique las siguientes medidas como estadísticas o métricas. Hay tres de
cada una.
A. Un tablespace usado, Megabytes.
B. El espacio de un tablespace usado, porcentaje.
C. Lecturas a disco desde el inicio de la instancia.
D. Rollbacks por segundo de usuario.
E. Máximo de sesiones actuales.
F. Redo generado por transacción.

143
2. ¿Dónde está almacenado el Repositorio de Carga de Trabajo Automático? (Elija
la mejor respuesta).
A. En el tablepace SYSAUX.
B. En el tablespace SYSTEM.
C. En el SGA (System Global Area).
D. Puede escoger la ubicación a la hora de crear la Base de Datos y
reubicarla subsecuentemente.

3. ¿Cuánto se toman las instantáneas AWR? (Escoja la mejor respuesta).


A. Cada hora.
B. Cada 10 minutos.
C. Sobre la demanda.
D. Por un horario ya establecido y sobre la demanda.

4. ¿Cuál proceso genera reportes ADDM? (Seleccione la mejor respuesta).


A. El EM.
B. MMON, Monitor de Administración.
C. SMON, Monitor de Sistema.
D. RMAN, Administrador de Recuperación.

5. ¿Por cuánto tiempo son retenidas las instantáneas AWR y los reportes ADDM?
(Elija la mejor respuesta).
A. Por defecto, tanto las instantáneas como los reportes se guardan por
30 días, a menos que se purgue antes o se etiquete la retención.
B. Las instantáneas son retenidas hasta que se purgue, los reportes no
se guardan; ellos se generan según la demanda.
C. Por defecto, las instantáneas se guardan durante siete días y los
reportes por 30 días.
D. Las instantáneas se guardan en el SGA y se eliminan a la hora de la
desconexión. Los reportes se almacenan hasta que el AWR se
purgue.

6. ¿Cuál proceso levantan alertas? (Elija la respuesta que le parezca mejor).


A. MMON, Monitor de Administración.
B. El Controlador de Base de Datos.
C. El servicio que detecta el problema.
D. SMON, Monitor de Sistema.

7. La versión de la Base de Datos 12c viene con un número de Asesores. Asocie


los Asesores, de a a d, listados abajo con las funciones, A a D.

Asesor Función
A. Asesor de a. Recomendaciones a la hora de crear
memoria segmentos.
144
B. Asesor de b. Asesora cuando los objetos que están
Segmentos desperdiciando espacio se encogen.
C. Asesor de c. Predicciones del espacio necesario para
Acceso SQL retener datos UNDO expirados por un
período.
D. Asesor de Undo d. Asesora en cúanto dimensionar ciertos
componentes del SGA.

8. ¿Cuál es el nivel de la alerta para la advertencia predeterminada y la alerta


crítica del “Tablespace percent full”? (Elija la mejor respuesta).
A. Esta alerta está deshabilitada hasta que configure los umbrales.
B. 85% y 97%
C. 85% y 100%
D. 97% y 10%

9. Algunas alertas están en estado, quiere decir que están disponibles hasta que
se limpien; otras se limpian inmediatamente. ¿Cuál de las siguientes, si hay
alguna, están fuera de estado? (Seleccione las que apliquen).
A. Instantáneas muy viejas.
B. Un tablespace lleno.
C. Una Base de Datos abajo.
D. Los commits de usuario por segundo.

10. Con vista en la colección de información de monitoreo, coloque estos pasos


en orden:
A. Los datos se acumulan en el SGA.
B. MMON genera un reporte ADDM.
C. MMON escribe datos en el AWR.
D. Los reportes se purgan.
E. Las instantáneas se purgan

Respuestas
1) Una estadística es una cifra en bruto; una métrica es una estadística
relacionada a otra estadística. Por lo que las estadísticas son A, C y E, ninguna de
las cuales tienen relevancia por ellas mismas. Las métricas son B, que compara el
espacio usado con el espacio total; D, relacionada al número de rollbacks con
respecto al tiempo; y F, que correlaciona el número de escrituras redo con el
número de transacciones.

2) A. El AWR está en el tablespace SYSAUX, no en el tablespace SYSTEM. El SGA


es sólo un almacén temporal de estadísticas que serán transferidas al AWR y no
pueden ser reubicados.
145
3) D. La programación predeterminada para las instantáneas AWR es cada hora,
pero puede cambiarse. También puede solicitar una instantánea cuando lo desee.

4) B. Los reportes ADDM son generados por MMON en el momento en que una
instantánea es tomada. El controlador de Base de Datos se utiliza para ver los
reportes. SMON monitorea la instancia pero no hace reportes sobre esto. RMAN, el
Administrador de Recuperación, no tiene nada que ver con ADDM.

5) C. Las instantáneas AWR se retienen durante siete días, los reportes ADDM por
30 días. Estos valores pueden cambiarse.

6) A. MMON levanta las alertas. El Controlador de Base de Datos y el servicio


reporta alertas; mas no las levanta. Y en su nombre, SMON no está relacionado en
nada con el sistema de alertas.

7)
a-D. El Asesor de Memoria predice el efecto del cambio de los parámetros de la
instancia que controla el tamaño de los componentes del SGA.
b-D. El Asesor de Segmentos inspecciona segmentos y reportes que tengan
cantidades significativas de espacio desperdiciado.
c-A. El Asesor de Acceso puede recomendar la creación (o eliminación) de
índices y vistas materializadas.
d-C. El Asesor de Undo calcula el espacio undo necesario para advertencias y
alertas críticas del uso del tablespace.

8) B. 85% y 97% son los valores predeterminados de la Base de Datos para


advertencias y alertas críticas en el uso del tablespace.

9) A. La única respuesta correcta es instantáneas demasiado viejas. Esto ocurre y


se va.

10) A, C, B, E, D.

18 – Administración del Undo

Ejercicio 18.1 - Creación del Tablespace Undo con el EM.

Uso del EM para crear un tablespace de UNDO, y verificar la configuración desde


SQL * Plus.
________________________________________________________________
146
1. Conéctese a su instancia, como usuario SYSTEM con el EM.

2. Presione el enlace Tablespaces, ubicado en la pestaña Administración que


está en la sección de Almacenamiento.

3. Haga click en Crear.

4. Escriba UNDO2 como el nombre del tablespace. Elija las opciones:


Manejado Localmente, en tipo Undo y el estado Lectura/Escritura.

5. Al final de la pantalla, escoja Agregar para especificar un archivo de datos.

6. Para el nombre del archivo escriba UNDO2-01.dbf, los demás valores


déjelos en predeterminados y haga click en Continuar.

7. En la pantalla de Crear un Tablespace, haga click en Mostrar SQL y estudie


los comandos dados para crear su Tablesace Undo. Haga click en Volver
para volver a la pantalla de Crear Tablespace, haga click en OK para crear el
Tablespace.

8. Conéctese a su instancia, con el usuario SYSTEM a través de SQL*Plus.

9. Ejecute la siguiente consulta, mostrará un fila por cada tablespace que


exista en su Base de Datos.

select tablespace_name,contents,retention from


dba_tablespaces;

Y tenga en cuenta que su nuevo tablespace tiene contenido UNDO, lo que


significa que solo puede utilizarse para segmentos UNDO, y que la retención
es NOGUARANTEE, un tema cubierto en breve.

10. Ejecute la siguiente consulta, que devolverá una fila por cada segmento que
realizó rollback o que tiene segmentos UNDO en la Base de Datos:

select tablespace_name, segment_name, status


from dba_rollback_segs;

Y tenga en cuenta que se han creado varios segmentos de UNDO


automáticamente en su nuevo tablespace de UNDO, pero se encuentran
fuera de línea. También notamos de que los nombres de los segmentos de
UNDO son de la forma de "_SYSSMUn $" donde n es el número de
segmento de UNDO (USN).
147
Ejercicio 18.2 - Monitoreo de Undo con SQL*Plus

Use de SQL * Plus para controlar la generación de UNDO, consultas largas y


errores UNDO.
________________________________________________________________

1. Conéctese a su instancia con SQL*Plus como usuario SYSTEM.

2. Configure su sesión para que pueda convenientemente desplagar fechas.


SQL> alter session
set nls_date_format='dd-mm-yy:hh24:mi:ss';

3. Consulte V$UNDOSTAT como se muestra:

SQL> select begin_time, end_time, undoblks,


maxquerylen, ssolderrcnt, nospaceerrcnt
from v$undostat;

4. Interprete los resultados de la consulta. Note que la vista tiene una fila por
un intervalo de diez minutos, muestra cuánto se deshizo, en bloques, qué
tan larga fue la consulta más extensa, en segundos, y si existe algún error
de “Snapshot Too Old” ó "instantánea demasiado vieja", o errores de
funcionamiento de las operaciones que están ejecutándose fuera del
tablespace UNDO.

5. Calcule el espacio necesario mínimo en bytes para su tablespace de UNDO


para prevenir errores, en sus datos actuales, con la siguiente consulta:

select
(select max(undoblks)/600 * max(maxquerylen)
from v$undostat)
*
(select value
from v$parameter
where name='db_block_size')
from dual;

Preguntas
1. Si un segmento undo se llena, ¿qué pasará? (Elija la mejor respuesta).
A. Otro segmento undo se crea automáticamente.
B. El segmento undo se autoincrementará
148
C. El tablespace undo se extenderá, si sus archivos de datos están
configurados para auto-extenderse.
D. Las transacciones continuarán en un segmento undo diferente.

2. Cuando se ejecuta un DML, ¿qué sucede? (Seleccione la mejor respuesta).


A. Los datos y los bloques undo en disco están actualizados y los
cambios se escriben al flujo redo.
B. La vieja versión de los datos se escriben en un segmento undo y la
nueva versión se escribe en el segmento de datos y en el buffer de
registro de redo.
C. Los datos y los bloques undo se actualizan, y las actualizaciones
también van al buffer de registro.
D. El buffer de registro de redo se actualiza con la información necesaria
para rehacer la transacción y los bloques undo se actualizan con la
información necesaria para revertir la transacción.

3. Ha decidido implementar la gestión automática de UNDO. ¿Cuál de los


siguientes pasos es opcional? (Escoja dos respuestas).
A. Configurar el parámetro UNDO_MANAGEMENT.
B. Crear el tablespace undo.
C. Reiniciar la instancia.
D. Configurar el parámetro UNDO_RETENTION.
E. Sacar de línea cualquiera de los segmentos de rollback.

4. ¿Cuál de las siguientes afirmaciones es correcta acerca de UNDO? (Elija tres


respuestas).
A. Un segmento undo puede proteger muchas transacciones.
B. Una transacción puede usar muchos segmentos undo.
C. Una Base de Datos puede tener muchos tablespaces undo.
D. Una Base instancia puede tener muchos tablespaces undo.
E. Un segmento undo puede cortarse por muchos archivos de datos.
F. Los segmentos undo y rollback no pueden coexistir.

5. Aunque esté usando segmentos undo automáticos, los usuarios continúan


recibiendo errores de “instantáneas demasiado viejas”. ¿Qué puede hacer?
(Seleccione tres respuestas).
A. Incrementar el parámetro UNDO_RETENTION.
B. Configurar el parámetro RETENTION_GUARANTEE.
C. Sintonizar las consultas para que se ejecuten más rápido.
D. Aumentar el tamaño del tablespace undo.
E. Usar el Controlador de Base de Datos para habilitar la garantía de
retención.
F. Usar SQL*Plus para habilitar la garantía de retención.
G. Incrementar el tamaño de sus segmentos undo.

149
6. Su tablespace undo tiene diez segmentos undo, pero durante una ráfaga
repentina de actividad tiene veinte transacciones actualmente. ¿Qué pasará?
(Escoja la mejor respuesta).
A. Oracle creará diez segmentos más de undo.
B. Las transacciones se balacearán automáticamente entre los diez
segmento undo.
C. Diez transacciones se bloquearán hasta que las primeras diez hayan
finalizado.
D. Lo que suceda dependerá de la configuración de UNDO_RETENTION.

7. ¿Cuál vista le ayudará a decidir cuánto espacio undo necesita para proteger su
transacción de la carga de trabajo? (Escoja la mejor respuesta).
A. V$TRANSACTION
B. V$UNDOSTAT
C. V$UNDO_ADVICE
D. V$UNDO_ADVISOR
E. DBA_ROLLBACK_SEGS

8. ¿Cuál vista le dirá acerca de sus segmentos undo? (elija la mejor respuesta).
A. V$UNDOSTAT
B. DBA_ROLLBACK_SEGS
C. DBA_UNDO_SEGS
D. V$UNDO_TABLESPACE

9. Sus usuarios reportan errores “ORA-1555: Instantáneas demasiado viejas”.


¿Cuál podría ser la causa de este error? (Seleccione la mejor respuesta).
A. No está generando instantáneas lo suficientemente frecuente.
B. Los datos undo son demasiado viejos.
C. Los datos undo relevantes no se encuentran disponibles para las
transacciones de usuario.
D. Su tablespace undo está reteniendo datos por demasiado tiempo.

10. Quiere asegurarse que tanto consultas largas como transacciones largas
siempre se ejecutarán con éxito. ¿Cómo debe configurar el undo? (elija la
mejor respuesta).
A. Asigna las transacciones a un tablespace y las consultas a otro.
B. Habilite la garantía de retención para su tablespace undo.
C. Habilite la opción auto-extend en los archivos de datos del tablespace
undo.
D. Esta situación tal vez sea imposible de resolver.

11. Primero, el usuario JOHN inicia una consulta. Segundo, el usuario DAMIR
actualiza una fila que será incluida en la consulta. Tercero, la consulta de JOHN

150
se completa. Cuarto, DAMIR hace commit a sus cambios. Quinto, JOHN ejecuta
su consulta nuevamente. ¿Cuál de las siguientes afirmaciones es correcta?
(Escoja tres respuestas).
A. El principio de consistencia quiere decir que las dos consultas de
JOHN devolverán el mismo resultado.
B. Cuando DAMIR hace commit, los datos undo van hacia el disco.
C. Cuando DAMIR hace commit, los datos undo se vuelven inactivos.
D. La primera consulta de JOHN usará datos undo.
E. LA segunda consulta de JOHN usará datos undo.
F. Los resultados de las dos consultas serán diferentes.

12. Su tablespace undo consiste de un archivo de datos en el disco y


transacciones que están fallando por falta de espacio en disco. El disco está
lleno. Usted ha habilitado la garantía de retención. Cualquiera de las siguientes
opciones podría resolver el problema, pero ¿cuál causará menor tiempo para
los usuarios? (Elija la mejor respuesta).
A. Cree un nuevo y más grande tablespace undo y utilice alter
system set undo_tablespace=... para cambiarlo.
B. Mueva el archivo de datos a otro disco con más espacio y use alter
database resize datafile... para hacerlo más grande.
C. Reduzca la configuración de undo_retention con alter system
set undo_ retention=...
D. Deshabilite la garantía de retención con alter
tablespace...retention guarantee

13. Su tablespace undo tiene diez segmentos undo. ¿Qué pasará si más de diez
usuarios inician transacciones concurrentemente? (Seleccione la mejor
respuesta).
A. La administración de undo automática gestionará la intercalación de
de las transacciones de datos undo en los diez segmentos.
B. Se crearán segmentos undo adicionales, automáticamente.
C. Todas las transacciones se ejecutarán con éxito, a menos que haya
configurado la garantía de retención.
D. Solamente se ejecutarán diez transacciones; las otras se pondrán en
cola.
E. Solamente se ejecutarán diez transacciones; las otras fallarán por
falta de espacio undo.

14. Examine la siguiente consulta y su resultado:


SQL> select BEGIN_TIME,END_TIME,UNDOBLKS,MAXQUERYLEN
from V$UNDOSTAT;
BEGIN_TIME END_TIME UNDOBLKS MAXQUERYLEN

151
----------------- ----------------- ---------- ----------
02-10-04:11:35:55 02-10-04:11:41:33 14435 29
02-10-04:11:25:55 02-10-04:11:35:55 120248 296
02-10-04:11:15:55 02-10-04:11:25:55 137497 37
02-10-04:11:05:55 02-10-04:11:15:55 102760 1534
02-10-04:10:55:55 02-10-04:11:05:55 237014 540
02-10-04:10:45:55 02-10-04:10:55:55 156223 1740
02-10-04:10:35:55 02-10-04:10:45:55 145275 420
02-10-04:10:25:55 02-10-04:10:35:55 99074 120

El tamaño del bloque del tablespace undo es de 4 KB. ¿Cuál de los siguientes sería
el tamaño óptimo para el tablspace undo? (Elija la mejor respuesta).
A. 1 GB
B. 2 GB
C. 3 GB
D. 4 GB

15. ¿Cuál de los siguientes puede ser un factor contribuyente para errores de
“instantáneas demasiado viejas”? (Elija la mejor respuesta).
A. Transacciones de ejecución larga.
B. Configuración muy lenta para UNDO_RETENTION.
C. Uso de “set transaction read-only” (Configuración de la transacción
sólo para lectura).
D. Todas las anteriores.

Respuestas
1) B. Los segmentos undo incrementan según la demanda, de acuerdo al volumen
de los datos undo que se estén generando por transacción.

2) C. Los datos y los bloques undo se actualizan y las actualizaciones también al


buffer de registro. Tan pronto como el mecanismo de redo se percate, un
segmento undo es otro segmento más, y los cambios que se le hagan deben
protegerse de la misma manera que los segmentos de datos son protegidos.

3) D y E. El parámetro UNDO_RETENTION no se requiere, tampoco es necesario


quietar de línea los segmentos rollback (se saldrán de línea automáticamente). De
hecho, usualmente eliminará algunos segmentos rollback completamente.

4) A, C y E. Es posible para un segmento undo proteger muchas transacciones,


aunque Oracloe tratará de evitarlo. También es cierto que una Base de Datos
puede tener muchos tablespaces undo, aunque sólo uno se pueda poner activo en
cualquier momento por la instancia. Y como cualquier otro segmento, el segmento
152
undo puede tener extensiones en cualquiera de los archivos de datos que haga
este tablespace.

5) C, D y F. Puede ser de gran ayuda hacer cualquiera de estas cosas, aunque


sintonizar las consultas es probablemente el primer mejor paso. Si no puede
hacerlo, haga el tablespace undo más grande. Si continúa teniendo problemas,
considere utilizar la garantía de retención (aunque puede impactar el trabajo DML).

6) A. Oracle creará tantos segmentos undo como sea necesario para las
transacciones actuales.

7) B. Es la V$UNDOSTAT que muestra la cantidad de undo que está siendo


generada por segundo y la longitud de sus consultas

8) B. DBA_ROLLBACK_SEGS es la vista que le dice acerca de sus segmentos undo:


segmentos en línea en el tablespace undo activo y segmentos fuera de línea en
cualquier tablespace inactivo. También tendrá detalles de cualquier segmento
rollback que puedan existir en la Base de Datos.

9) C. si una sesión requiere datos undo para consistencia de lectura y esos datos
ya no se encuentran disponibles en el tablespace undo porque ha sido sobrescrito,
entonces la sesión recibirá un error ORA-1555 y el comando fallará.

10) D. Desafortunadamente, estas dos sea imposible de reconciliar. La única


solución puede ser para redireccionar los procesos del negocio que causa que esta
situación surja.

11) C, D y F. Una vez que la transacción se completa los datos undo se vuelven
inactivos, aunque tal vez se necesiten para consistencia de lectura ©. También, la
primera consulta de JOHN no debería ver los cambios de DAMIR (D). Y por
defecto, Oracle no provee consistencia de lectura a través de una serie de
comandos SELECT (por lo que las dos consultas darán un resultado diferente (F)).

12) B. Esta es la única opción que podría causar bajas en el tiempo, porque no
puede mover un archivo de datos sin sacarlo de línea. Todas las otras operaciones
pueden llevarse a cabo durante una ejecución normal.

13) B. Oracle creará segmentos undo como se necesiten para transacciones


intentándose actualmente para asegurar que nunca es necesario para las
transacciones compartir un segmento undo.

14) C. Para calcular, tome la figura más grande para UNDOBLKS, divídalo entre
600 para obtener el rango de generación undo en bloques por segundo,
multiplíquelo por el tamaño del bloque y multiplíquelo por la figura más grande
para MAXQUERYLEN.
153
15) C. “Set transaction read only” para series de comandos que requerirán uso
extensivo de datos undo.

19 - Tratando con el Bloqueo

Ejercicio 19.1 - Bloqueo Automático y Manual

Demostrar el efecto automático de bloqueos compartidos y exclusivos, utilizando


comandos DDL y LMD.
________________________________________________________________

1. Conéctese a su instancia con SQL*Plus como usuario SYSTEM.

2. Cree una tabla e insértele una fila.


SQL> create table t1(c1 number);
Table created.
SQL> insert into t1 values(1);
1 row created.
SQL> commit;
Commit complete.

3. Abra una segunda sesión, con SQL*Plus como SYSTEM.

4. En la sesión 1, ejecute el comando DML que tomará un bloqueo exclusivo


en la fila y un bloqueo compartido en la tabla.
SQL> update t1 set c1=2 where c1=1;
1 row updated.

5. En la sesión 2, ejecute el comando DDL contra la tabla.


SQL> alter table t1 add (c2 date);
alter table t1 add (c2 date)
*
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT
specified

El intento de añadir una columna a la tabla falla, porque el bloqueo


exclusivo necesario de la tabla para un comando DDL tiene un conflicto con
el bloqueo compartido ya concedida para un comando DML. Tenga en
cuenta que mientras que una declaración DML esperará y continuamente

154
intentará hasta que se bloquee, las declaraciones DDL terminan de
inmediato con un error.

6. En la sesión 1, haga COMMIT a la transacción.


SQL> commit;
Commit complete.

7. En la sesión 2, repita el paso 5. Esta vez se ejecutará con éxito porque no


hay bloqueos DML compartidos bloqueando el bloqueo exclusivo DML.

8. En la sesión 1, bloquee toda la tabla.


SQL> lock table t1 in exclusive mode;
Table(s) Locked.

9. En la sesión 2, inserte una fila. La sesión se bloqueará.


SQL> insert into t1 values (1,sysdate);

10. En la session 1, libere la tabla bloqueada ejecutando un COMMIT. Note que


un ROLLBACK funcionaría también.
SQL> commit;
Commit complete.

11. La sesión 2 no será liberada, el INSERT se completará; ejecute un COMMIT


para terminar la transacción y liberar el bloqueo exclusivo de fila.

12. Deje las sesiones abiertas; se utilizarán en otros ejercicios.

Ejercicio 19.2 - El Comando SELECT…FOR UPDATE

Utilice el comando SELECT…FOR UPDATE para controlar la esperas en la cola.


________________________________________________________________

1. En la primer sesión de SQL*Plus, seleccione y bloquee las dos filas de la


tabla T1.
SQL> select * from t1 for update;

C1 C2
---------- ---------
21 09-FEB-05

2. En la segunda sesión, intente bloquear las filas, pero utilice la palabra


reservada NOWAIT para que el bloqueo finalice inmediatamente si no se
puede obtener el bloqueo.
155
SQL> select * from t1 for update nowait;

select * from t1 for update nowait


*
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT
specified

El comando falla inmediatamente, y la sesión puede continuar.

3. En la segunda sesión, intente nuevamente bloquear las filas pero


especifique el tiempo, en segundos.
SQL> select * from t1 for update wait 10;
select * from t1 for update wait 10
*
ERROR at line 1:
ORA-30006: resource busy; acquire with WAIT timeout
expired

La sesión se bloquea durante 10 segundos antes de que el comando falle y la


sesión es liberada.

4. Repita el paso 3, pero antes de que los diez segundos se acaben ejecute un
COMMIT en su primera sesión. La sesión dos va a continuar.
SQL> select * from t1 for update wait 10;
C1 C2
---------- ---------
2
1 09-FEB-05

5. Libere los bloqueos de la sesión 2, ejecutando un COMMIT.

Ejercicio 19.3 - Detección y Solución de contención de Bloqueo

Use el EM para detectar el problema de bloqueo y resuélvalo con SQL*Plus.


________________________________________________________________

1. Utilizando su primera sesión, bloquee todas las filas de la tabla T1.


SQL> select * from t1 for update;
C1 C2
---------- ---------
21 09-FEB-05

2. En la segunda sesión, intente actualizar una fila.


156
SQL> update t1 set c2=sysdate where c1=2;

La session se bloqueará.

3. Conéctese a su Base de Datos con el usuario SYSTEM a través del


Controlador de Base de Datos.

4. Navegue en la ventana de Bloqueos de la Base de Datos, en la pestaña de


Rendimiento desde la página de inicio de la Base de Datos y después en el
hipervínculo de Bloqueos de la Base de Datos en la sección de Monitoreo
Adicional.

5. Fíjese que la segunda sesión se muestra como esperando por un bloqueo


EXCLUSIVO. Esto bloqueará la sesión. La primera sesión es la que está
esperando el bloqueo que está causando el problema.

6. Tenga en cuenta el ID y el número serial de la sesión que se está


bloqueando. Por ejemplo:

7. Inicie una tercera sesión de SQL*Plus y conéctese como usuario SYSTEM.

8. En esta sesión que acaba de iniciar, ejecute el siguiente comando,


sustituyendo su bloqueo de sesión y su número serial:
SQL> alter system kill session '138,6';
System altered.

9. Note que ahora en la segunda sesión, la actualización pudo realizarse.

157
10. En su primera sesión, ejecute una consulta de su elección; y se desplegará
el mensaje: “ORA-00028: your session has been killed”, indicando que usted
ha sido desconectado a la fuerza.

Ejercicio 19.4 - Resolución Automática de Bloqueos

Use de la primera y segunda sesión abiertas en los ejercicios anteriores, force un


bloqueo, y observe los informes a través de archivos de traza.
________________________________________________________________

1. En su primera sesión, bloquee una fila ejecutando un UPDATE.


SQL> update t1 set c2=sysdate where c1=1;
1 row updated.

2. En la segunda sesión, bloquee la otra fila.


SQL> update t1 set c2=sysdate where c1=2;
1 row updated.

3. En su primera sesión, solicite un bloqueo de fila para una fila bloqueada por
la segunda sesión, ejecutando el comando del paso 2. La sesión se
bloqueará.

4. En su segunda sesión, ejecute el comando del paso 1, para completar la


construcción del bloqueo solicite el bloqueo de una fila bloqueada por su
primera sesión.

5. Después de unos segundos, su primera sesión se liberará con un mensaje


ORA-00060.
SQL> update t1 set c2=sysdate where c1=2;
update t1 set c2=sysdate where c1=2
*
ERROR at line 1:
ORA-00060: deadlock detected while waiting for resource

Note que la otra sesión aún se está bloqueando.

6. Abra el registro de alertas con el editor de texto que desee (recuerde, está
localizado en el directorio especificado por el parámetro de instancia
BACKGROUND_DUMP_DEST, y llamado alert_<nombre de la
instancia>.log). La última entrada será:
Mon Feb 14 09:27:03 2005
ORA-00060: Deadlock detected. More info in file

158
/oracle/product/11.1.0/admin/orcl/udump/orcl_ora_420.trc
.

7. Abrir el archive de traza listado. Nótese que en este directorio específico por
el parámetro de instancia USER_DUMP_DEST. Incluye información como:
*** 2005-02-14 09:27:03.242
*** ACTION NAME:() 2005-02-14 09:27:03.212
*** MODULE NAME:(SQL*Plus) 2005-02-14 09:27:03.212
*** SERVICE NAME:(SYS$USERS) 2005-02-14 09:27:03.212
*** SESSION ID:(133.26) 2005-02-14 09:27:03.212
DEADLOCK DETECTED
Current SQL statement for this session:
update t1 set c2=sysdate where c1=2
The following deadlock is not an ORACLE error. It is a
deadlock due to user error in the design of an
application
or from issuing incorrect ad-hoc SQL. The following
information may aid in determining the deadlock:

8. Interprete la información de Bloqueo: le da el comando que causó el


problema, así como el módulo del programa donde se causó el problema.
Particularmente, note la frase “Los siguientes bloqueos no son errores de
Oracle. Es un bloqueo debido a un error del usuario en el diseño de la
aplicación o de ejecutar un ad-hoc SQL incorrecto”. Esto hace que la
responsabilidad caiga directamente sobre los programadores, que es de
donde proviene.

9. Arregle: haga un COMMIT en todas las sesiones y elimine la tabla.

Preguntas
1. ¿Cuál de los siguientes comandos impondrán un (o más) bloqueo (s) de fila
exclusivo? (Seleccione todos los que apliquen).
A. ALTER TABLE EMP ADD COLUMN DOB (DATE);
B. UPDATE EMP SET SAL=SAL*1.1;
C. UPDATE EMP SET SAL=SAL*1.1 WHERE EMPNO=7839;
D. SELECT * FROM EMP WHERE EMPNO=7839 FOR UPDATE;
E. CREATE INDEX ENAME_IDX ON EMP(ENAME);

2. Estudie la siguiente secuencia:


SQL> select * from emp where empno=7839 for update nowait;
select * from emp where empno=7839 for update nowait
*
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified
159
¿Qué es lo que describe mejor la situación? (Elija la mejor respuesta).
A. La fila para el empleado número 7839 ya está bloqueada
exclusivamente, y su sesión se bloqueará hasta que el bloqueo sea
levantado.
B. La palabra reservada NOWAIT no puede combinarse con UPDATE.
C. Otra sesión tiene bloqueo exclusivo ya sea en la fila del empleado
número 7839 o en toda la tabla EMP.
D. Ya existe un bloqueo compartido en la fila para el empleado 7839, el
cual es incompatible con el bloqueo de modo compartido requerido
por SELECT…BY UPDATE.

3. Si muchas sesiones solicitan el bloqueo exclusivo en la misma fila, ¿qué


sucederá? (Seleccione la mejor respuesta).
A. La primera sesión que solicite el bloqueo obtendrá el bloqueo
exclusivo; a las otras se les asignará bloqueos compartidos.
B. La primera sesión obtendrá un bloqueo exclusivo. Cuando se libere el
bloqueo, un bloqueo exclusivo será otorgado aleatoriamente a alguna
de las otras sesiones.
C. Oracle mantendrá la pista del orden en que llegaron las solicitudes de
bloqueo exclusivo de cada sesión y pasarla entre las sesiones que
vayan liberando el bloqueo.
D. Una sesión no puede solicitar el bloqueo exclusivo de una fila si otra
sesión ya tiene el bloqueo exclusivo sobre esta.

4. ¿Con respecto a los bloqueos, cuál de las siguientes afirmaciones es verdadera?


(Escoja la mejor respuesta).
A. Los bloqueos no pueden suceder en una Base de Datos Oracle; se
evitan automáticamente.
B. Los bloqueos pueden suceder en una Base de Datos Oracle; pero se
resuelven automáticamente.
C. Si un bloqueo ocurre, es responsabilidad del programador resolverlo,
no del DBA.
D. Un bloqueo puede ser resuelto matando las sesiones que se
bloquean entre sí.

5. Si una sesión ejecuta un comando UPDATE de una sola fila y se bloquea


porque la fila estaba bloqueada por otra sesión, ¿por cuánto tiempo se
bloqueará? (Elija la mejor opción).
A. No se bloqueará para nada si no se especifica la palabra reservada
NOWAIT.
B. Se bloqueará hasta que la sesión que la está bloqueando termine su
transacción, a menos que WAIT <n> se especifique, donde <n> es
un número de segundos.

160
C. Se bloqueará hasta que la sesión que la está bloqueando libere su
bloqueo ejecutando otro comando DML.
D. No se bloqueará; tomará un bloqueo compartido y continúa
trabajando utilizando datos undo.
E. Ninguna de las anteriores es correcta.

Respuestas
1) B, C y D. Todos los comandos DML requieren bloqueo exclusivo de filas y todos
los comandos DDL requieren bloqueos exclusivos de tabla.

2) C. SELECT…FOR UPDATE solicita un bloqueo exclusivo de fila, que fallará si


otra sesión ya tiene el bloqueo exclusivo de fila en la fila, o si toda la tabla está
bloqueada. La primera opción s incorrecta porque describe el comportamiento si la
opción NOWAIT no se estuviera usando; la segunda es incorrecta porque el
comando SELECT…FOR UPDATE es, de hecho, el único caso donde NOWAIT puede
usarse. Finalmente, SELECT…FOR UPDATE requiere un bloqueo exclusivo, no
compartido.

3) C. El mecanismo de encolamiento rastrea el orden en que los bloqueos fueron


solicitados.

4) B. Los bloqueos son resueltos por la Base de Datos automáticamente. La


tercera opción es correcta en cierta medida como los bloqueos son usualmente por
faltas de programación, sin embargo errónea porque nadie necesita que se
resuelvan. Finalmente, ninguna sesión necesita ser asesinada; sólo es necesario
hacerle rollback al comando.

20 - Administración de la Globalización de las Bases de


Datos Oracle

Ejercicio 20.1 - Configurando la Globalización y Ambientación del


Cliente

Este ejercicio le mostrará, al ser un usuario final, cómo personalizar su ambiente,


para afectar sus sesiones Oracle.
________________________________________________________________

161
1. Desde la línea de comandos de un sistema operativo, establezca la variable
NLS_LANG a Húngaro, también ajuste la fecha a desplegar a la fecha por
defecto.

Usando Windows,
C:\>set NLS_LANG=Hungarian
C:\>set NLS_DATE_FORMAT=Day dd Month yyyy

O en Unix/Linux,
$ export NLS_LANG=Hungarian
$ export NLS_DATE_FORMAT=’Day dd Month yyyy’

2. Desde la misma sesión del sistema operativo, ejecute SQL*Plus y conéctese


como usuario SYSTEM.

3. Despliegue la fecha actual con


SQL> select sysdate from dual;

La siguiente figura muestra paso a paso cómo debe hacerse.

Ejercicio 20.2 - Controlar la Globalización con la sesión

Para este ejercicio, se asume que usted completó el ejercicio anterior y que usted
está trabajando en la misma sesión de SQL*Plus. Demostrará que los estándares
europeos y estadounidenses pueden causar confusión.
________________________________________________________________

162
1. Confirme que la variable NLS_LANG se encuentra en el lenguaje Europeo.
En Windows,
SQL> host echo %NLS_LANG%

O en Unix/Linux,
SQL> host echo $NLS_LANG

2. Establezca la fecha para mostrar para que se vea el número de día:


SQL> alter session set nls_date_format='D';

3. Muestre el número de día que es hoy:


SQL> select sysdate from dual;

4. Cambie el territorio a Estados Unidos, y otra vez establezca el formato de


mostrar la fecha:
SQL> alter session set nls_territory=AMERICA;
SQL> alter session set nls_date_format='D';

5. Ejecute la consulta del paso 3 otra vez, y fíjese que el número del día
cambió con el cambio del ambiente de Europeo a Estadounidense.

163
164
Ejercicio 20.3 - Haciendo ajustes a la Zona Horaria

Confirme y ajuste su zona horaria actual, usando los tipos de datos de fecha
apropiados. Pruebe los resultados usando las máscaras de formato apropiadas.
________________________________________________________________

1. Usando SQL*Plus, conéctese a su instancia como usuario SYSTEM.

2. Identifique la zona horaria de la Base de Datos con la siguiente consulta:


SQL> select value from v$database properties where
property='DBTIMEZONE';

Y note el resultado.

3. Cree una tabla, de la manera siguiente:


SQL> create table times (date_std date, date_tz
timestamp with time zone, date_ltz timestamp with local
time zone);

4. Vea la lista de zonas horarias soportadas con la siguiente consulta:


SQL> select * from $timezone_names;

165
5. Ajuste la zona horaria de su sesión a una diferente de la zona horaria de la
Base de Datos, por ejemplo:
SQL> alter session set time_zone='Pacific/Tahiti';

6. Cambie el formato de la hora a reloj de 24 horas, con nombres de zona


horaria abreviados con variaciones para el verano.
SQL> alter session set nls_timestamp_tz_format='YYYY-MM-
DD HH24:MI:SS TZD';

7. Establezca el formato de la hora a reloj de 24 horas.


SQL> alter session set nls_timestamp_format='YYYY-MM-DD
HH24:MI:SS';

8. Establezca el formato de la fecha a reloj de 24 horas.


SQL> alter session set nls_date_format='YYYY-MM-DD
HH24:MI:SS';

9. Inserte una fila a la tabla que se creó en el paso 3.


SQL> insert into times values('2004-10-26 15:00:00',
'2004-10-26 15:00:00 PDT','2004-10-26 15:00:00');

10. Muestre las horas.


SQL> select * from times;
Note que todas las horas leen 15:00.

11. Cambie la zona horaria de su sesión a la zona horaria de la Base de Datos.


SQL> alter session set time_zone=DBTIMEZONE;

12. Repita la consulta del paso 9, y note que el TIMESTAMP WITH LOCAL
TIMEZONE se ajustó para reflejar que su sesión está ahora en diferente
zona.

13. Arréglelo.
SQL> drop table times;

Preguntas
1. Su Base de Datos fue creada con US7ASCII como el conjunto de caracteres
de la Base de Datos, y luego descubre que no es adecuado. ¿Qué puede hacer?
(Elija la mejor respuesta).
A. Volver a crear la Base de Datos.
B. Ejecutar el comando alter database carácter set …
C. Ejecutar el comando alter system carácter set …

166
D. Generar un comando create controlfile… , edítelo para
especificar un conjunto de caracteres diferente, y vuelva a crear el
archivo de control.

2. ¿Cuáles son las opciones para el Conjunto Nacional de Caracteres?


A. Ninguna. Debería ser AL16UTF16.
B. Puede ser cualquier conjunto de caracteres Unicode.
C. Puede ser AL16UTF16 o UTF8.
D. Puede ser cualquier conjunto de caracteres que necesite.

3. Asocie cada conjunto de caracteres con un tipo:

Conjunto de Caracteres Tipo


A. AL16UTF16 a. Siete bits a un bit
B. US7ASCII b. Ocho bits a un bit
C. UTF8 c. Ancho fijo multibyte
D. WE8ISO8859P15 d. Ancho variable multibyte

4. ¿Cuál de las siguientes afirmaciones es cierta acerca del tipo de dato


TIMESTAMP WITH LOCAL TIME ZONE? (Escoja 2 respuestas).
A. Los datos se guardan con el indicador de zona horaria local.
B. Los datos se normalizan a la zona horaria de la Base de Datos
cuando se guardan.
C. A la hora de devolver, los datos se normalizan para devolver la
zona horaria del cliente.
D. A la hora de devolver, los datos se a la zona horaria del cliente
que la insertó.

5. La globalización podría establecerse en varios niveles. Ponga esto en orden de


precedencia, el más bajo primero:
A. Ambiente del cliente
B. Configuraciones de la Base de Datos
C. Parámetros de la instancia
D. Parámetros de la sesión
E. Comandos

6. Las configuraciones predeterminadas de los parámetros NLS_LANGUAGE_ y


NLS_TERRITORY para un número de otros parámetros de Globalización. ¿Cuál
de las siguientes opciones es controlada por NLS_LANGUAGE y cuál por
NLS_TERRITORY? (Dos de cada una).
A. NLS_DATE_LANGUAGE
B. NLS_DATE_FORMAT
C. NLS_NUMERIC_CHARACTERS
D. NLS_SORT
167
7. Elija la mejor descripción para la herramienta Scanner del Conjunto de
Caracteres:
A. Escanea los conjuntos de caracteres para asesorar su idoneidad
para un lenguaje en particular.
B. Escanea archivos para determinar el lenguaje y el conjunto de
caracteres de los datos del mismo.
C. Escanea archivos de datos para determinar si el conjunto de
caracteres puede cambiarse o no.
D. Reporta los problemas que podría causar el cambio del conjunto
de caracteres.

8. Si la Base de Datos y los procesos de usuario utilizan diferentes conjuntos de


caracteres, ¿cómo se convierten los datos?
A. Los datos no se convierten, esta es la razón por la que podrían
haber corrupciones si los conjuntos de caracteres no son
compatibles.
B. A la hora de insertar los datos, la instancia convierte los datos al
conjunto de caracteres de la Base de Datos. A la hora de
devolverlos, los procesos de usuario lo convierte al conjunto de
caracteres del cliente.
C. La Red de Oracle lo convertirá, en ambas direcciones.
D. Depende de varios parámetros NLS.

9. La Base de Datos está configurada a GMT. Un cliente en Buenos Aires (tres


horas atrás de GMT) ejecuta estos comandos a las 10:00:00 hora local:
create table times(c1 timestamp,
c2 timestamp with local time zone);
insert into times values(to_timestamp('10:00:00'),
to_timestamp('10:00:00'));
commit;

Un cliente en Nairobi (tres horas adelante de GMT) ejecuta estos comandos a


las 18:00:00 hora local:
alter session set nls_timestamp_format='hh24:mi:ss';
select * from times;
¿Qué verá el cliente en Nairobi par alas columnas c1 y c2?
A. 10:00:00 y 16:00:00
B. 13:00:00 y 16:00:00
C. 13:00:00 y 10:00:00
D. 10:00:00 y 13:00:00

10. Estudie el resultado de la siguiente consulta:


SQL> select * from dates;
C1
168
--------
03-04-05
C1 es una columna de tipo date. ¿Cómo podría determinar que devolvió la
fecha actual realmente? (elija dos respuestas).
A. Consulte NLS_DATABASE_PARAMETERS
B. Consulte NLS_INSTANCE_PARAMETERS
C. Consulte NLS_SESSION_PARAMETERS
D. Configure su parámetro NLS_DATE_FORMAT a un valor conocido,
vuelva a ejecutar la consulta.
E. Cambie la consulta para usar TO_CHAR con un parámetro NLS.

11. ¿Cómo podría evitar que los usuarios hagan confusiones, por ejemplo,
formatos de fecha y hora de la configuración local variables locales de
ambiente?
A. No puede; los usuarios tienen control sobre esto.
B. Escriba los triggers de inicio de sesión para configurar el ambiente
de sesión.
C. Establezca los parámetros de instancia de Globalización para
anular la configuración del lado del cliente.
D. Configure la Red de Oracle para convertir todos los datos
enviados y recibidos de la Base de Datos apropiadamente.

12. ¿Cuál vista le dirá qué lenguajes pueden ser soportados por su instalación?
(Seleccione la mejor respuesta).
A. NLS_DATABASE_PARAMETERS
B. NLS_INSTANCE_PARAMETERS
C. V$NLS_VALID_VALUES
D. V$NLS_LANGUAGES

13. Quiere establecer el orden en que unos nombres se devuelven


independientemente de si los nombres incluyen o no acento ortográfico,
mayúsculas o minúsculas, signos de puntuación o espacios en blanco. ¿Cómo
puede hacer esto? (Escoja la mejor respuesta).
A. Establezca el orden a GENERIC_BASELETTER, que ignorará estas
variaciones.
B. Use las versiones _AI y _CI de cualquier orden que soporte.
C. Use el Constructor Local para designar un orden personalizado.
D. Esto no se puede realizar.

Respuestas
1) B. Use este comando, pero pruébelo con el Scanner del Conjunto de Caracteres
primero.
169
2) C. Cualquiera de estos conjuntos de caracteres Unicode está permitido
actualmente.

3) A-c; B-a; C-d; D-b.

4) B y C. Este tipo de dato que normaliza completamente tiempos de y hacia la


Base de Datos.

5) El orden correcto es B, C, A, D, E. Los parámetros de instancia anulan los


parámetros de Base de Datos, y luego las variables de ambiente del lado del
cliente pueden ser anuladas por los comandos ALTER SESSION y luego por los
comandos individuales.

6) A y D. NLS_DATE_LANGUAGE y NLS_SORT son los dos parámetros controlados


por NLS_LANGUAGE. Los otros dos son de control estricto por NLS_TERRITORY.

7) D. el, por ejemplo, reportará si un cambio codificado evitará que los datos
quepan en una columna.

8) C. La Red de Oracle hará la conversión a la medida de sus posibilidades.

9) B. La Base de Datos normalizará la hora 10:00:00 de la zona horaria local del


punto de entrada, GMT+3, a la zona horaria de la Base de Datos, GMT. Así ambas
horas están guardadas como 13:00:00 GTM. Para devoluciones, la columna de la
estampa de la hora se desplegará la que se guardó, 13:00:00, pero la columna de
la estampa de la hora de la zona horaria local se ajustará a la hora de la
devolución de datos del cliente, la cual es GMT+3.

10) C y D. NLS_SESSION_PARAMETERS mostrarán el formato usado para que


pueda interpretar la salida de la consulta correctamente o podría configurar el
formato a un valor sensible y volver a ejecutar la consulta.

11) B. La mejor opción es escribir los triggers de inicio de sesión, que evitará
cualquier confusión posible causada por la configuración del cliente.

12) C. Esta vista le mostrará el rango completo de los lenguajes soportados, así
como todas las otras opciones de globalización.

13) C. Para quitar los signos de puntuación así como los espacios en blanco,
necesitará crear su propia variación con el Constructor Local.

5) E. Ninguna de las respuestas es correcta. Las respuestas A y B son erróneas


porque WAIT y NOWAIT sólo se pueden aplicar a comandos SELECT. C también es
incorrecta porque otro comando DML no liberará el bloqueo; solamente ROLLBACK
170
o COMMIT lo harían. D también es incorrecta DML no puede usar datos undo; la
respuesta sería correcta si fuera un comando SELECT.

171

Вам также может понравиться