1 CR GBSYS 2017
Administraciónde Administraciónde BasesdeDatosOracle12c
Manual de Prácticas
2 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 ......................................... 5 0 Ejercicio 7.3 - Uso de Enterprise Manager para borrar un Tablespace ................. 53 Preguntas......................................................................................................................... 54 Respuestas ....................................................................................... ............................... 58 8 - Administrando - 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 - 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 ................................... 8 6 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
5 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 < 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 /sbin/sysctl /sbin/sysctl /sbin/sysctl /sbin/sysctl /sbin/sysctl /sbin/sysctl /sbin/sysctl
-a -a -a -a -a -a -a -a
| | | | | | | |
grep grep grep grep grep grep grep grep
shm sem file-max ip_local_port_range rmem_default rmem_max wmem_default wmem_max
Modifique el .profile default del shell que utilizará cat >> /etc/profile <> /etc/csh.login <
En el archivo instrucciones:
/home/oracle/.bash_profile
agregue las siguientes
# 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 ejecute runInstaller .
/stage/Disk1/database
y luego
$ ./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.
2.
3.
4.
5. 6.
7. 8.
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á sele ccionado o Global Database Name: orcl o Enter the Database Password and Confirm Password : oracle o Oprima Next Especificar directorio de inventario y credenciales o Inventory Directory: /u01/app/oracle/oraInventory o Operating System group name: oinstall o Oprima Next 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 Summary o Presenta pantalla con el resumen de productos instalados. o Oprima Install. Configuration Assistants o Los asistentes Oracle Net, Oracle Database se ejecutaran automáticamente 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. Fin de la instalación o Tome nota de los URLs indicados en el resumen y luego oprima Exit. 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. B. C. D. E.
/ / / / /
opt / oracle / opt / oracle / opt / oracle / oracle / mydb opt / oracle /
ocsdb product / 11.1.0 / ocsdb admin / ocsdb / bdump 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. B. C. D. E. F.
setup –ignorePreReqs setup –ignorePrereqs runInstaller –ignoreSysPrereqs runInstaller –ignoreSysprereqs runInstaller –bypassPrereqs setup –bypassPrereqs
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
10.
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. 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. 10) A.
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 almacenamiento, y haga click en Siguiente .
mecanismo
de
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 usua rios 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 SQL* Plus En este ejercicio usted usted invocará SQL * Plus, 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 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/sqldeveloper/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_. 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 / . 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 tablespaces temporales .
crecimiento
automático
para
los
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 en Aplicar para para guardar sus cambios. 10.Haga 10. Haga click en el hipervínculo Tablespaces en 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 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 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 para visualizar la página de Administración. 4. Haga click en el hipervínculo Tablespaces bajo la región de Almacenamiento 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 2 3 4
CREATE BIGFILE TABLESPACE grande DATAFILE ‘/oracle/ orcldata/grande data02.dbf’ EXTENT MANAGEMENT LOCAL FREELISTS 5 54
5 NOLOGGING;
A. B. C. D. E. F.
1 2 3 4 5 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 2 3 4
CREATE BIGFILE TABLESPACE OrclDATA DATAFILE ‘/oracle/ orcldata/orcldata02.dbf’ EXTENT MANAGEMENT DICTIONARY FREELISTS 5 55
5 NOLOGGING;
A. B. C. D. E. F.
1 2 3 4 5
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 CONSTRAINTS;
SYSAUX
INCLUDING
CONTENTS
CASCADE
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 ". 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 INSERT INTO INSERT INTO INSERT INTO INSERT INTO COMMIT;
JUAN1 JUAN1 JUAN1 JUAN1 JUAN1
VALUES VALUES VALUES VALUES VALUES
(100); (101); (102); (103); (104);
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 . 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 . 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 . .
69
16. Abra otra ventana y en otra sesión de SQL Developer, conéctese como usuario Tomás e intente consultar la tabla . . 17.Como Tomás, ejecute el comando CREATE VIEW AS SELECT * FROM ..
Recuerde que Tomás ya ha sido concedido el privilegio de sistema CREATE VIEW. 18.Ejecute el comando 19. SELECT * FROM
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 . FROM .
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 . 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 (i DLE_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 2 3 4 5
CREATE USER Sam IDENTIFIED EXTERNALLY BY $amP@ssw0rd DEFAULT TABLESPACE Users TEMPORARY TABLESPACE User_Temp QUOTA 2048MB ON APPS_DATA
A. B. C. D. E.
1 2 3 4
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. B. C. D. E.
ALTER ALTER ALTER ALTER ALTER
USER USER USER USER USER
antonio antonio antonio antonio antonio
PASSWORD EXPIRE; QUOTA 2M ON SYSTEM; ACCOUNT LOCK; TEMPORARY TABLESPACE TEMP; 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. B. C. D.
GRANT CONNECT TO QueryRole; GRANT CONNECT TO QueryRole WITH ADMIN OPTION; GRANT SELECT ON Orders TO QueryRole; GRANT SELECT ON Orders TO QueryRole WITH GRANT OPTION; E. GRANT DBA TO QueryRole WITH ADMIN OPTION;
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
10.
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> SQL> SQL> SQL> SQL>
insert into insert into insert into insert into commit;
customers values(1,'John'); customers values(2,'Damir'); invoices values(10,1,sysdate,100); invoices values(11,2,sysdate,200);
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 -------------10 11 12 13
CUSTOMER_NAME AMOUNT -------------------- ---------John 100 Damir 200 John 150 Damir 250
5. Retorne la base a su estado inicial SQL> SQL> SQL> SQL>
drop drop drop drop
table invoices; table customers; view cust_inv; 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. B. C. D. E.
create table “SELECT” (col1 date); create table “lower case” (col1 date);
create table number1 (col1 date); create table 1number(col1 date); 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. B. C. D.
CHECK NOT NULL PRIMARY KEY 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. B. C. D.
10 11 12 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;
rollback; select count(*) from t1;
select count(*) from t1;
Resultados distintos debido al principio de aislamiento. Resultados idénticos en ambas sesiones. delete from t1; select count(*) create view v1 from t1; select count(*) rollback; select count(*)
from t1; as select *
select count(*) from t1;
from t1;
select count(*) from t1;
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 B. C. D. E. F.
la DataPump. No es posible si la tabla está en un cluster. Primero debe deshabilitar los triggers de inserción. Primero debe habilitar los triggers de inserción. No tiene control sobre esto, la DataPump usará el camino directo automáticamente si puede. 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 B. C. D. E.
tiempo de la ejecución. Las transacciones a las que se les hizo commit durante la ejecución del trabajo serán incluidas en la exportación. Las transacciones (se les haya hecho o no commit) durante la ejecución del trabajo no serán incluidas en la exportación. El SQL a la tabla durante la ejecución del trabajo se escribirán en un archivo SQL. 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> SQL> SQL> SQL>
select select select select
* from audit_test; salary from audit_test where name='Hill'; salary from audit_test where name='McGraw'; 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 -----------ORA12c\Guest ORA12c\Guest
DB_USER SQL_TEXT ------- ----------------------------------SYSTEM select * from audit_test 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” C. “Expired” se refiere a la contraseña; “Locked” se 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_, donde es el nombre de su equipo. 3. Seleccione el enlace Red de Administración de los Servicios de 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 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 en Aceptar para para guardar la nueva definición del Listener. 10.Para 10. Para iniciar el nuevo Listener, seleccione Iniciar / Detener las acciones de la lista desplegable y haga click en Continuar . 11.Desde 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 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 que configuró en el ejercicio anterior. ___________________________________________________ _______________________ _________________________________________ _____________ 1. Inicie el Administrador de Red. En Unix/Linux, ejecute netmgr desde 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 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. ¿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.
10.
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. 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.
11.
¿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
12.
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 A. Cola común B. Despachadores
Función a. Conecta usuarios con 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. 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.
10.
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
¿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
12.
¿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.
13.
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.
14.
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.
15.
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> SQL> SQL> SQL>
conn testuser/testuser create table testtab(n1 number,d1 date); insert into testtab values(1,sysdate); 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> SQL> SQL> SQL>
commit; / / /
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. B. C. D. E. F.
Un tablespace usado, Megabytes. El espacio de un tablespace usado, porcentaje. Lecturas a disco desde el inicio de la instancia. Rollbacks por segundo de usuario. Máximo de sesiones actuales. 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 A. Asesor memoria
Función de a. Recomendaciones a la hora de crear segmentos. 144
B.
Asesor Segmentos C. Asesor Acceso SQL
de b. Asesora cuando los objetos que están desperdiciando espacio se encogen. de c. Predicciones del espacio necesario para 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 l a 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.
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
10.
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 from * (select from where from dual;
max(undoblks)/600 * max(maxquerylen) v$undostat) value v$parameter name='db_block_size')
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.
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.
10.
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
11.
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. 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
12.
set undo_ retention=...
D. Deshabilite
la
garantía de tablespace... retention guarantee
retención
con
alter
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.
13.
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:25:55 02-10-04:11:15:55 02-10-04:11:05:55 02-10-04:10:55:55 02-10-04:10:45:55 02-10-04:10:35:55 02-10-04:10:25:55
----------------- ---------02-10-04:11:41:33 14435 02-10-04:11:35:55 120248 02-10-04:11:25:55 137497 02-10-04:11:15:55 102760 02-10-04:11:05:55 237014 02-10-04:10:55:55 156223 02-10-04:10:45:55 145275 02-10-04:10:35:55 99074
---------29 296 37 1534 540 1740 420 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 com andos 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 specified
with
NOWAIT
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 specified
with
NOWAIT
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 expired
WAIT
timeout
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_.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 se especifique, donde 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 - 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 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 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 property='DBTIMEZONE';
v$database
properties
where
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-MMDD 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 HH24:MI:SS';
session
set
nls_date_format='YYYY-MM-DD
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 A. AL16UTF16 B. US7ASCII C. UTF8 D. WE8ISO8859P15
Tipo a. Siete bits a un bit b. Ocho bits a un bit c. Ancho fijo multibyte 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