Curso de administración de Oracle 10g (10.2) Nivel Intermedio Manual del alumno © Copyright Cédric Simon, 2008 Versión 1.0 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 2 / 61 1 Índice 1 Índice..................................................................................................................................................................................2 1 Introducción al curso.........................................................................................................................................................5 1.1 Objetivo de este curso................................................................................................................................................5 1.2 Manual del alumno.....................................................................................................................................................5 1.3 Requisitos para atender a este curso........................................................................................................................5 1.4 Soporte después del curso..........................................................................................................................................5 2 Instalación de Oracle 10g bajo Linux...............................................................................................................................6 2.1 Requisitos....................................................................................................................................................................6 2.1.1 Requisitos materiales.............................................................................................................................................6 2.1.2 Requisitos de programas.......................................................................................................................................8 2.1.3 Red........................................................................................................................................................................8 2.1.4 Grupos y usuarios..................................................................................................................................................8 2.2 Iniciar la instalación...................................................................................................................................................9 2.2.1 Pantallas de la instalación ..................................................................................................................................10 2.2.2 Error ORA-12547: connection lost / conexión perdida......................................................................................12 2.2.3 Mensaje de fin de instalación..............................................................................................................................12 2.2.4 Arrancar y parar Oracle.......................................................................................................................................12 2.2.5 Comprobación.....................................................................................................................................................14 2.3 Oracle Enterprise Manager (OEM).......................................................................................................................15 2.4 Oracle Net.................................................................................................................................................................16 2.4.1 netca....................................................................................................................................................................18 3 Instalación de Oracle 10g bajo Windows........................................................................................................................19 3.1 Requisitos..................................................................................................................................................................19 3.2 Instalación.................................................................................................................................................................19 4 Arquitectura de la base de datos Oracle 10g...................................................................................................................20 4.1 Las instancias............................................................................................................................................................21 4.1.1 init.ora.................................................................................................................................................................21 4.1.2 spfile.ora..............................................................................................................................................................21 4.2 La base de datos........................................................................................................................................................21 4.2.1 Tablespace...........................................................................................................................................................22 4.2.2 Las unidades de almacenamiento de Oracle ...................................................................................................... 22 4.2.3 Componentes de un bloque.................................................................................................................................22 4.3 Los procesos..............................................................................................................................................................23 4.3.1 Procesos de Oracle..............................................................................................................................................23 4.4 Otros archivos...........................................................................................................................................................24 4.4.1 Redo Logs...........................................................................................................................................................24 4.4.2 Control file..........................................................................................................................................................24 4.4.3 Trace y alert files.................................................................................................................................................25 4.5 Oracle Managed Files (OMF).................................................................................................................................25 5 Creación de base de datos................................................................................................................................................26 5.1 En que consiste la creación de la base de datos.....................................................................................................26 5.2 Usando el asistente (dbca)........................................................................................................................................26 5.2.1 Bienvenido..........................................................................................................................................................26 5.2.2 Selección de operación........................................................................................................................................26 © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 3 / 61 5.2.3 Selección de la plantilla.......................................................................................................................................27 5.2.4 Identificador de BD.............................................................................................................................................28 5.2.5 Gestión de la BD.................................................................................................................................................28 5.2.6 Contraseñas.........................................................................................................................................................29 5.2.7 Sistema de archivo..............................................................................................................................................29 5.2.8 Ubicación de los archivos...................................................................................................................................30 5.2.9 Opciones de recuperación de bases de datos.......................................................................................................30 5.2.10 Componentes de la base de datos......................................................................................................................31 5.2.11 Archivos de Comandos Personalizados............................................................................................................31 5.2.12 Memoria............................................................................................................................................................32 5.2.13 Tamaño..............................................................................................................................................................32 5.2.14 Juego de caracteres............................................................................................................................................33 5.2.15 Modo de conexión.............................................................................................................................................33 5.2.16 Almacenamiento de la base de datos.................................................................................................................34 5.2.17 Opciones de creación de base de datos.............................................................................................................34 5.3 Creación manual......................................................................................................................................................34 6 Manejo de los tablespaces................................................................................................................................................35 6.1 Que son los tablepaces?............................................................................................................................................35 6.2 Los tipos de tablespaces...........................................................................................................................................35 6.2.1 Tablespaces específicos de Oracle......................................................................................................................35 6.2.2 Tablespaces de los datos de usuarios..................................................................................................................35 6.3 Atributos de un tablespace......................................................................................................................................35 6.3.1 Manejo de extents................................................................................................................................................35 6.3.2 Tablespace de archivo grande.............................................................................................................................37 6.3.3 Archivos..............................................................................................................................................................37 6.3.4 Estado..................................................................................................................................................................37 6.3.5 Tipo.....................................................................................................................................................................37 6.4 Planificación de los tablespace................................................................................................................................37 6.4.1 Separación de datos según el tipo.......................................................................................................................37 6.4.2 Separación de datos según el uso ......................................................................................................................37 6.4.3 Separación de datos según el tamaño.................................................................................................................37 6.5 Sintaxis......................................................................................................................................................................38 6.5.1 Creación..............................................................................................................................................................38 6.5.2 Modificación.......................................................................................................................................................39 6.5.3 Eliminación.........................................................................................................................................................39 6.6 Ejercicios...................................................................................................................................................................39 7 Creación de objetos..........................................................................................................................................................40 7.1 Vistas.........................................................................................................................................................................40 7.1.1 Creación..............................................................................................................................................................40 7.1.2 Modificación.......................................................................................................................................................40 7.1.3 Eliminación.........................................................................................................................................................40 7.1.4 Ejercicios.............................................................................................................................................................40 7.2 Secuencias.................................................................................................................................................................40 7.2.1 Creación..............................................................................................................................................................40 7.2.2 Modificación.......................................................................................................................................................41 7.2.3 Eliminación.........................................................................................................................................................41 7.2.4 Ejercicios.............................................................................................................................................................41 7.3 Vistas materializadas...............................................................................................................................................41 7.3.1 Creación..............................................................................................................................................................41 7.3.2 Modificación.......................................................................................................................................................42 7.3.3 Eliminación.........................................................................................................................................................42 7.4 Sinónimos..................................................................................................................................................................42 7.4.1 Creación..............................................................................................................................................................42 © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 4 / 61 7.4.2 Eliminación.........................................................................................................................................................43 7.4.3 Ejercicios.............................................................................................................................................................43 8 Manejo de usuarios..........................................................................................................................................................44 8.1 Cuentas de usuarios................................................................................................................................................. 44 8.1.1 Usuarios especiales.............................................................................................................................................45 8.1.2 Creación de cuentas.............................................................................................................................................45 8.1.3 Modificación.......................................................................................................................................................45 8.1.4 Eliminación.........................................................................................................................................................46 8.1.5 Ejercicios.............................................................................................................................................................46 8.2 Privilegios de sistema...............................................................................................................................................46 8.3 Privilegios de objetos................................................................................................................................................46 8.4 Otorgar/quitar privilegios.......................................................................................................................................47 8.5 Roles...........................................................................................................................................................................48 8.6 Quotas........................................................................................................................................................................49 8.7 Uso de perfiles...........................................................................................................................................................49 8.8 Listar Privilegios Otorgados...................................................................................................................................50 8.9 Cambiarse a otro usuario........................................................................................................................................51 9 Manejo de transacciones.................................................................................................................................................52 9.1 Transacciones...........................................................................................................................................................52 9.2 Rollback segments....................................................................................................................................................53 9.2.1 Utilización de los segmentos de rollback............................................................................................................53 9.3 Undo tablespace........................................................................................................................................................53 10 Respaldo y reposición de la base de datos.....................................................................................................................54 10.1 Respaldo lógicos......................................................................................................................................................54 10.1.1 Imp y Exp..........................................................................................................................................................54 10.1.2 DataPump..........................................................................................................................................................56 10.1.3 Importación y exportación de tablas.................................................................................................................56 10.1.4 Importación y exportación de esquema.............................................................................................................56 10.1.5 Importación y exportación de base de datos.....................................................................................................56 10.1.6 Diversos.............................................................................................................................................................57 10.2 Respaldos físicos online y offline...........................................................................................................................58 10.2.1 Respaldos físicos en frío...................................................................................................................................58 10.2.2 Respaldos en caliente (online)...........................................................................................................................59 10.3 Uso de RMAN.........................................................................................................................................................59 10.4 Restauración...........................................................................................................................................................59 10.4.1 Restauración a partir de un respaldo en frío......................................................................................................60 10.4.2 Restauración hacía un cierto punto el en pasado...............................................................................................60 © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 5 / 61 1 Introducción al curso 1.1 Objetivo de este curso Este curso brindará al alumno el conocimiento necesario para administrar una base de datos Oracle 10g. 1.2 Manual del alumno Este manual del alumno es una ayuda para el alumno, para tenga un recuerdo del curso. Este manual contiene un resumen de las materias que se van a estudiar durante el curso, pero el alumno debería de tomar notas personales para completas este manual. 1.3 Requisitos para atender a este curso Se requiere un conocimiento del lenguaje SQL. 1.4 Soporte después del curso Si tienes preguntas sobre la materia del curso en tus ejercicios prácticos, puedes escribir tus preguntas a [email protected] . © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 6 / 61 2 Instalación de Oracle 10g bajo Linux En este capitulo vamos a ver la instalación de Oracle bajo Linux Suse 10.2. Hablaremos de los puntos esenciales. para la información exhaustiva, ver la documentación de Oracle. 2.1 Requisitos Para poder instalar Oracle 10g hay varios requisitos que cumplir. 2.1.1 2.1.1.1 Requisitos materiales Memoria Se necesita un mínimo de 1024 MB de memoria (512 según ciertas documentaciones), y suficiente espacio de intercambio (swap). Memoria RAM Swap Space Required Entre 1024 MB y 2048 MB 1.5 veces el tamaño de la RAM Entre 2049 MB y 8192 MB Igual al tamaño de la RAM Mas de 8192 MB 0.75 veces el tamaño de la RAM Para verificar la memoria disponible: # grep MemTotal /proc/meminfo Para verificar la memoria disponible: # grep SwapTotal /proc/meminfo Para verificar la memoria libre: # free Puedes obtener más espacio de swap usando un fichero en vez de reparticionando, aunque si estas configurando un servidor es más aconsejable reparticionar. Aqui se muestra como crear un fichero de 511995 kB y usarlo como swap (hazlo solo si necesitas más swap): su - root cd /root dd if=/dev/zero of=/root/tmpswp bs=1k count=500000 chmod 600 tmpswp mkswap tmpswp swapon tmpswp grep SwapTotal /proc/meminfo 2.1.1.2 ● ● ● Disco 400 MB de espacio libre en la carpeta /tmp Entre 1.5 GB y 3.5 GB para el programa de Oracle, dependiendo de las opciones de instalación elegidas. 1.2 GB para las bases de datos de muestra. Para verificar el disco bajo /tmp disponible: # df -k Para verificar el disco total disponible: # df -k / 2.1.1.3 /tmp Límites del kernel Los parámetros del kernel son recomendaciones, pero no impiden necesariamente la instalación. En Suse 10.2 a pesar que los parámetros no son iguale, son suficiente para instalar y correr Oracle 10g. Para mayor información, aquí como se pueden verificar y cambiar los parámetros del kernel: /sbin/sysctl -a | grep sem /sbin/sysctl -a | grep shm /sbin/sysctl -a | grep file-max © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 7 / 61 /sbin/sysctl -a | grep ip_local_port_range La salida debe ser algo asi kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 kernel.shmall = 2097152 kernel.shmmax = 2147483648 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 Así que editamos /etc/sysctl.conf y añadimos o cambiamos estas líneas: kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 Al reiniciar el sistema, /etc/inittab invocará el script /etc/init.d/bootmisc.sh que leerá la configuración del kernel de /etc/sysctl.conf. Pero si queremos que los cambios apliquen inmediatamente hacemos esto: /sbin/sysctl -p Para ver los límites del shell ejecutamos ulimit core file size (blocks, -c) data seg size (kbytes, -d) file size (blocks, -f) max locked memory (kbytes, -l) max memory size (kbytes, -m) open files (-n) pipe size (512 bytes, -p) stack size (kbytes, -s) cpu time (seconds, -t) max user processes (-u) virtual memory (kbytes, -v) -a, que mostrará algo similar a esto: 0 unlimited unlimited unlimited unlimited 1024 8 unlimited unlimited 2047 unlimited Por defecto, hay un límite por usuario, de 1024 descriptores de fichero, y 2047 procesos. Vamos a editar el fichero /etc/security/limits.conf para ajustar estos valores: soft hard soft hard nproc nproc nofile nofile 2047 16384 1024 65536 Las dos últimas líneas imponen un límite inicial de 1024, pero permiten que un usuario aumente el límite a 65536 usando el comando ulimit -n 65536. Las dos primeras líneas limitan el número de procesos. Añade lo siguiente a session required /etc/pam.d/login: /lib/security/pam_limits.so pam_limits.so es el módulo PAM que procesa la configuración del fichero cambiamos antes. © Copyright Cédric Simon, 2008­ Versión 1.2 /etc/security/limits.conf que Reproducción prohibida Curso de administración de Oracle 10g (10.2) 2.1.2 2.1.2.1 Pagina 8 / 61 Requisitos de programas Sistema operativo Suse 10.2 no esta certificado con Oracle 10g, y por eso la instalación por defecto no se inicia desde Suse 10.2. Para poder arancar la instalación normalmente desde Suse 10.2 se ha modificado el archivo /install/oraparam.ini del lugar de instalación para agregar SuSE­10 a la lista de versiones certificadas. Otras opciones disponibles (ver punto 2.3). En la última versión de Oracle 10g, Suse 10 está certificado, pero solo la versión Server Enterprise , no la versión gratis (openSuse). Pero no es porque no esta certificado que no pueda correr bien... Se necesitan las librerias siguientes: ● gcc ● gcc­c++ ● glibc ● libaio ● libaio­devel ● make ● openmotif­libs Si usas otra version de Linux, verifica en la documentación de Oracle los requisitos, ya que varían según la distribución de Linux utilizada. 2.1.3 Red Se necesita una red instalada, y el nombre de la computadora y su dominio serán utilizados durante la instalación. Para verificar ver las tarjetas de red y sus configuración: # ifconfig Para ver el nombre de la machina: # hostname Para ver en nombre del dominio de la machina: # domainname 2.1.4 Grupos y usuarios Los siguientes grupos y usuarios deberian existir en el sistema: Grupos: ● dba: grupo de usuarios con privilegios SYSDBA ● oinstall : propietario de los ficheros de Oracle. Este grupo se usa cuando los dbas no mantienen la instalación de software. En caso contrario, bastaría con hacerlo todo con el grupo dba. ● oper (opcional) Usuarios: ● oracle, miembro del grupo oinstall ● nobody Para comprobar si existen haz: grep oinstall /etc/group grep dba /etc/group grep nobody /etc/group id oracle id nobody © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 9 / 61 Crea los que falten con esto: /usr/sbin/groupadd oinstall /usr/sbin/groupadd dba /usr/sbin/groupadd nobody /usr/sbin/useradd -c "Oracle Software Owner" -g oinstall -G dba oracle /usr/sbin/useradd -g nobody nobody Cambiamos el password del usuario oracle passwd oracle Si no han sidas creadas, crea la carpeta de inicio de oracle: md /home/oracle chown oracle oracle chgrp oinstall oracle Creamos el directorio base de oracle (/u01/app/oracle), y opcionalmente un directorio de datos para las bases de datos que creemos (/u02/oradata): mkdir mkdir chown chmod -p -p -R -R /u01/app/oracle /u02/oradata oracle:oinstall /u01 /u02 775 /u01 /u02 El directorio base debería tener 2.5Gb (2621440 KB) libres o 3.7Gb (3879731 KB) si no creamos un directorio de datos. Cuando no creamos un directorio de datos, oracle usa /u01/app/oracle/oradata. Cada base de datos ocupa un subdirectorio del directorio de datos. Login en otra sesión como oracle y añade esta línea al final de /home/oracle/.bash_profile: umask 022 Crea este directorio mkdir -p /home/oracle/config/10.2 Añade estas variables de entorno (en /etc/profile.local si para todos, en /home/oracle/.profile si solo para oracle): ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=/u01/app/oracle/product/10.2/db_1; export ORACLE_HOME ORACLE_SID=test; export ORACLE_SID ORACLE_TERM=xterm; export ORACLE_TERM ORACLE_OWNER=oracle; export ORACLE_OWNER #TNS_ADMIN=/home/oracle/config/10.2 export TNS_ADMIN NLS_LANG=SPANISH_SPAIN.WE8ISO8859P1; export NLS_LANG #ORA_NLS10=${ORACLE_HOME}/db_1/nls/data; export ORA_NLS10 CLASSPATH=${CLASSPATH}:${ORACLE_HOME}/jdbc/lib/classes12.zip LD_LIBRARY_PATH=${ORACLE_HOME}/lib; export LD_LIBRARY_PATH DISABLE_HUGETLBFS=1; export DISABLE_HUGETLBFS TEMP=/tmp; export TEMP TMPDIR=/tmp; export TMP PATH=$PATH:/u01/app/oracle/product/10.2/db_1/bin; export PATH 2.2 Iniciar la instalación Ve a http://otn.oracle.com/software/products/database/oracle10g/index.html y descargar el fichero de la última versión. Descomprímelo. Aparecerá un directorio Disk1. xhost + su export DISPLAY=:0.0 gunzip ship.db.cpio.gz cpio -idmv < ship.db.cpio Nota: con las tres primeras líneas hacemos login como root y permitimos que este usuario root use el servidor X del usuario inicial. Lo necesitaremos luego para lanzar el instalador. cpio es un programa de archivado similar a tar. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 10 / 61 Asegurate de que la redirección de X esta activada, y ejecuta el instalador como usuario oracle: xhost + su oracle Puesto que el instalador solo se ejecuta en sistemas operativos certificados (Red­Hat o United Linux), podemos hacer una de dos cosas para arrancar el instalador: engañar al instalador para que piense que esta en Red­Hat (la ^D es Ctrl+D) cat > /etc/redhat-release Red Hat Linux release 2.1 (drupal) ^D y luego ejecutar el instalador /camino_hacia_oracle_install/runInstaller o simplemente, pedirle que ignore los prerequisitos: /camino_hacia_oracle_install/runInstaller -ignoreSysPrereqs Cuando te pida que ejecutes root.sh, haz esto antes: ln -s /etc /etc/rc.d 2.2.1 Pantallas de la instalación Pantalla Acción Bienvenido Pulsa Siguiente. (solo si primera instalación de producto de Oracle) Directorio de inventario y credenciales /home/oracle/oraInventory ● ● Directorio de inventario: Grupo sistema operativo dba Pulsa Siguiente. Selecciona Enterprise Edition o Standard Edition. ● ● Seleccionar tipo de Tipo de Instalación Enterprise Edition: la versión mas comlpleta y mas potente. Standard Edition: la versión corriente que conviene a la pequeñas y medianas empresas. ● Personalizada: usted elige cuales componentes se va a instalar. Seleccione la instalación personalizada. Pulsa Siguiente. Ejemplo de valores a utilizar Especificar Ubicación de los Archivos Nombre: OraDb10g_home1 Ruta de acceso: /u01/app/oracle/product/10.2/db_1 Pulsa Siguiente. Componentes disponibles del producto Aquí se eligen los componentes que se van a instalar. Dependen de la licencias compradas, y de las necesidades de la empresa. Vamos a quitar las marcas debajo de Oracle Enterpise Edition, ya que son opciones muy adelantadas que nos atrasarían instalando módulos que no © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 11 / 61 Pantalla Acción necesitamos. Agregamos iSQLPlus, el entorno de SQL Plus via web. Pulsa Siguiente. Comprobando requisitos Para poder seguir la instalación, la configuración debe esta aprobada. Si esta aprobada, la última linea del log es “Comprobación terminada. El resultado general de esta comprobación es: Aprobado” y el botón 'Siguiente' esta disponible. En caso de problema, revisar el log y corregir el problema antes de intentar otra vez la instalación. Grupos del sistema operativo con privilegios Se ligan aquí los grupos del sistema operativo con grupos de usuario de Oracle. Guardamos el valor dba para ambos grupos. Seleccionar opción de configuración Marcar la casilla 'Crear Base de Datos' y pulsa Siguiente. Resumen Pulsa Instalar. Asistente de configuración de servicios de red Aceptamos los valores por defecto. Pulsa siempre Siguiente y luego Terminar Seleccionamos por ejemplo "Uso General". Pulsa Siguiente. Nombre de la Base de Datos Global: test. nombre_de_la_maquine SID: test Pulsa Siguiente No Activar Copias de Seguridad Automáticas. Pulsa Siguiente. Contraseña para las cuentas SYS, SYSTEM, SYSMAN, DBSNMP. Por ejemplo escoge "SolJava" como contraseña única. Pulsa Siguiente. Selecciona "Sistema de Archivos". Pulsa Siguiente. Selecciona “Usar ubicación común...” con /u02/oradata como directorio de almacenamiento de las bases de datos. Pulsa Siguiente. Área de recuperación flash: /u02/oradata/flash. Pulsa Siguiente. Deja marcado “Esquema de ejemplo”. Pulsa siguiente. Acepta los valores por defecto. Pulsa Seguiente. Asistente de Configuración Muestra el resumen de almacenamiento de datos. Pulsa Siguiente. de Base de Datos Deja marcado 'Crear base de datos'. Pulsa Terminar. Revisa en resumen de instalación. Pulsa Aceptar. Cuando el asistente finaliza muestra la siguiente información: Nombre de la Base de Datos Global: test. nombre_de_la_maquine Identificador del Sistema (SID): test Nombre de Archivo de Parámetros del Servidor: /u01/app/oracle/product/10.2/db_1/dbs/spfiletest.ora Database Controler: http:// nombre_de_la_maquine.dominio :1158/em También nos indica que todas las cuentas excepto SYS, SYSTEM, DBSNMP, SYSMAN, estan bloqueadas. Pulsa Salir. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) 2.2.2 Pagina 12 / 61 Pantalla Acción Privilegios de Configuración Nos pide que ejecutemos un script como root. Lo hacemos. Aceptamos los valores por defecto. Vuelve al instalador, y pulso Aceptar. Fin de Instalación El instalador termina mostrando las URLs de varias herramientas. Anoto dichas URLs y pulso Salir. Error ORA­12547: connection lost / conexión perdida Eso significa que no cumpliste con los requisitos y te falto instalar la librería libaio. Se puede instalar las librerias libaio y libaio­devel de desde el CD de SuSe 10.2. Luego ejecuta $ORACLE_HOME/bin/relink 2.2.3 all para ligar de nuevo las librería, y todo debería correr bien. Mensaje de fin de instalación Se han desplegado las siguientes aplicaciones J2EE y se puede acceder a ellas en las siguientes direcciones URL. URL de iSQL*Plus: http://asus.solucionajava.com:5560/isqlplus URL de DBA de iSQL*Plus: http://asus.solucionajava.com:5560/isqlplus/dba http://nombre_de_la_maquine.dominio:1158/em o http://nombre_de_la_maquine.dominio:5500/em 2.2.4 Arrancar y parar Oracle El archivo oratab contiene varias líneas similares y indica los SID y sus Oracle home directory corespondiente para cada base de datos o Automatic Storage Management instance el el sistema, y si se tiene que encender al iniciar el sistema. sid:oracle_home_directory:[Y|N] Edita /etc/oratab para indicar que bases de datos deben arrancar con el sistema. Aqui solo arranco la base de datos test asi que todo el contenido de mi fichero es este: *:/u01/app/oracle/product/10.2/db_1:N test:/u01/app/oracle/product/10.2/db_1:Y Crea el script de arranque en /etc/init.d/oracle con este contenido (cuidado a las doble comillas!): #!/bin/bash # # Run-level Startup script for the Oracle Instance and Listener # # chkconfig: 345 91 19 # description: Startup/Shutdown Oracle listener and instance ORA_HOME="/u01/app/oracle/product/10.2/db_1" ORA_OWNR="oracle" # if the executables do not exist -- display error © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 13 / 61 if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ] then echo "Oracle startup: cannot start" exit 1 fi # depending on parameter -- startup, shutdown, restart # of the instance and listener or usage display case "$1" in start) # Oracle listener and instance startup echo -n "Starting Oracle: " # start TNS listener su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl start" # start database su - $ORA_OWNR -c $ORA_HOME/bin/dbstart touch /var/lock/subsys/oracle su - $ORA_OWNR -c $ORA_HOME/bin/“emctl start dbconsole” su - $ORA_OWNR -c $ORA_HOME/bin/“isqlplusctl start” echo "OK" ;; stop) # Oracle listener and instance shutdown echo -n "Shutdown Oracle: " # stop TNS listener su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl stop" # stop database su - $ORA_OWNR -c $ORA_HOME/bin/dbshut rm -f /var/lock/subsys/oracle su - $ORA_OWNR -c $ORA_HOME/bin/”emctl stop dbconsole” su - $ORA_OWNR -c $ORA_HOME/bin/“isqlplusctl stop” echo "OK" ;; reload|restart) $0 stop $0 start ;; *) echo "Usage: $0 start|stop|restart|reload" exit 1 esac exit 0 Hazlo ejecutable : chmod 755 oracle Añadelo a los niveles de ejecución ln ln ln ln ln -s -s -s -s -s /etc/init.d/oracle /etc/init.d/oracle /etc/init.d/oracle /etc/init.d/oracle /etc/init.d/oracle /etc/rc.d/rc2.d/S99oracle /etc/rc.d/rc3.d/S99oracle /etc/rc.d/rc5.d/S99oracle /etc/rc.d/rc0.d/K01oracle /etc/rc.d/rc6.d/K01oracle El fichero listener.ora es la configuración para el SQL*Net Listener. Como valor del campo HOST, debes poner la IP del equipo, no el hostname de la máquina. La ruta a este fichero es /u01/app/oracle/product/10.2/db_1/network/admin/listener.ora. Vamos a crear los atajos rc: su cd /usr/sbin ln -s /etc/init.d/oracle rcoracle Ahora ya deberíamos poder ejecutar o parar oracle como root con : rcoracle start rcoracle stop Si queremos hacerlo manual, arrancamos el listener TNS: lsnrctl start Para ver si el listener se está ejecutando podemos hacer ps © Copyright Cédric Simon, 2008­ Versión 1.2 -ef | grep lsnr, o lsnrctl status. Reproducción prohibida Curso de administración de Oracle 10g (10.2) 2.2.5 Pagina 14 / 61 Comprobación Compruebo que servicios estan a la escucha: nombre_de_la_maquina:~# netstat -l| grep "5500\|5560\|5620" tcp 0 0 *:5560 *:* tcp 0 0 *:5500 *:* LISTEN LISTEN 1. La base de datos y el proceso Oracle Net listener estan ejecutandose. 2. Oracle Enterprise Manager Database Control y iSQL/Plus* estan ejecutandose y son accesible con un navegador. 2.2.5.1 Servicios Puerto Servicio Comando 1521 Listener. $ORACLE_HOME/bin/tnslsnr 5560 iSQL*Plus 5500 o 1158 Oracle Database Control corriendo como aplicación web de OC4J. $ORACLE_HOME/jdk/bin/java Los siguientes son procesos de Oracle que aparecen tras la instalación. Podemos verlos con ps -efH. iSQL*Plus : Consola para trabajar con PL/SQL. Disponible como aplicación web en http://nombre_de_la_maquina:5560/isqlplus. Teniendo en cuenta la URL, debería haber un puerto a la escucha en 5560: netstat -l | grep 5560 Management Agent Watchdog : Reinicia automaticamente el Oracle Management Agent. Comprobamos que esta en ejecución con ps -ef | grep emwd Oracle Database Control : El Database Control es una aplicación Web que podemos usar para administrar una base de datos Oracle. Conecto en la URL http://nombre_de_la_maquina:5500/em usando usuario SYS y role SYSDBA. El password es el que especificamos durante la instalación. Teniendo en cuenta la URL, debería haber un puerto a la escucha en 5500: netstat -l | grep 5500 Oracle Management Agent : The Oracle Management Agent es responsable de monitorear y mantener todos los programas instalados en el servidor, para comunicar esta información al middle­tier Management Service. Comprobamos que esta en ejecución con : ps -efH | grep emagent Si no quieres usar el Oracle Mnagement Agent, lo puedes matar haciendo un kill al emwd y al emagent (por ese orden). 2.2.5.2 SQL Plus Para conectarte a SQL*PLUS haz esto: 1) En 2 pasos: . /usr/local/bin/oraenv y mencionas el SID a utilizar sqlplus /nolog 2) En 1 paso : oracle@nombre_de_la_maquina:/u01$ sqlplus /nolog SQL*Plus: Release 10.2.2.0 - Production on Dom Jul 4 19:41:32 2004 © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Copyright (c) 1982, 2004, Oracle. Pagina 15 / 61 All rights reserved. SQL> CONNECT SYS/SolJava AS SYSDBA Conectado. Si aparece un mensaje ORA-12705: invalid or unknown NLS parameter value specified ejecuta unset ORA_NLS10 cat /etc/oratab Si aparece un mensaje ORA-12546: TNS:permission denied o $ORACLE_HOME/bin/sqlplus: Permission denied / Permiso desnegado Agrega su usuario al grupo oinstall usermod alumno -G dba, oinstall luego: su alumno - Si aparece un mensaje ERROR: ORA-010134: ORACLE not avaliable Inicia Oracle 2.2.5.3 2.2.5.3.1 Iniciar Oracle Como root rcoracle start Si aparece un mensaje Failed to auto-start Oracle Net Listener using /ade/vikrkuma_new/oracle/bin/tnslsnr Problema: hay un error el es script dbstart debajo de $ORACLE_HOME/bin Modifica la línea siguiente (+­ linea 78): ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle hacia ORACLE_HOME_LISTNER=$ORACLE_HOME 2.2.5.3.2 Via SQL Plus Abre sqlplus con la opción /nolog connect sys/SolJava as sydba startup 2.3 Oracle Enterprise Manager (OEM) OEM es un conjunto de programas gráficos que permiten facilitar la administración de Oracle, especialmente cuando hay varios bases de datos a administrar. OEM permite: ● administrar, sintonizar, supervisar varias bases de datos ● planificar tareas en varias maquinas © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) ● ● Pagina 16 / 61 visualizar el éxito de las tareas supervisar ciertos puntos y generar alertas cuando ciertas anomalías suceden. En la versión 10g, OEM esta basado en tecnologia web, asi que se puede conectar al OEM via un navigador web, y mismo de desde un PDA (pc de balsillo). La instalación de OEM se hace por defecto, y trae su servidor web (Apache) propio. Para conectarse a OEM, la url por defecto es http://localhost.localdomain:5500/em o http://localhost.localdomain:1158/em 2.4 Oracle Net Oracle Net es un componente de Net Services que permite la conexión de clientes a la base de datos. Net Services se conocía anteriormente como Net8, y antes como SQL*Net. En UNIX, Oracle busca el fichero tnsnames.ora en los sitios siguientes: $ORACLE_HOME/network/admin /var/opt/oracle Un directorio apuntado por la variable TNS_ADMIN. Cuando hay varios usuarios usando un mismo fichero tnsnames, lo más comodo es que apunten la variable TNS_ADMIN a un directorio compartido. Cuando conectamos usando usuario/password@SID, oracle sigue estos pasos: 1. Lee el valor de NAMES.DEFAULT_DOMAIN en el fichero sqlnet.ora, y se lo añade al SID de la base de datos. Si el SID es test, y el valor leído es nombre_de_la_maquina, la cadena resultante es "test.nombre_de_la_maquina". 2. Resuelve la cadena anterior en el fichero tnsnames.ora. Si conectamos usando usuario/[email protected], oracle no lee el fichero sqlnet.ora. Va directamente al fichero tnsnames.ora. Un ejemplo de sqlnet.ora: NAMES.DEFAULT_DOMAIN = nombre_de_la_maquina # autentificacion en windows # SQLNET.AUTHENTICATION_SERVICES= (NTS) # prioridad de resolucion de nombres NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) Un ejemplo de tnsnames.ora: EXTPROC_CONNECTION_DATA.nombre_de_la_maquina = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC) (KEY = EXTPROC1) ) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) ) TEST.nombre_de_la_maquina = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.x.x) © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) ) ) Pagina 17 / 61 (PORT = 1521) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = TEST) ) El listener usa el fichero listener.ora, que también debe estar en el directorio apuntado por TNS_ADMIN. Este es un ejemplo del contenido del fichero: # LISTENER is the name of the listener LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC) (KEY = EXTPROC0) ) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.x.x) (PORT = 1521) ) ) ) ) # SID list of the listener LISTENER SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/10.2/db_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = test.nombre_de_la_maquina) (ORACLE_HOME = /u01/app/oracle/product/10.2/db_1) (SID_NAME = test) ) ) # directorio de log para el listener LISTENER LOG_DIRECTORY_LISTENER = /home/oracle/config Si has cambiado la variable TNS_ADMIN, quiza quieras reiniciar el Listener: lsnrctl stop lsnrctl start Para comprobar que el listener funciona usa tnsping: oracle@nombre_de_la_maquina:~$ tnsping test.nombre_de_la_maquina TNS Ping Utility for Linux: Version 10.2.2.0 - Production on 04-JUL-2004 22:15:20 Copyright (c) 1997, 2003, Oracle. All rights reserved. Archivos de parámetros utilizados: /home/oracle/config/sqlnet.ora Adaptador TNSNAMES utilizado para resolver el alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.x.x) (PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = TEST))) Realizado correctamente (0 mseg) © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) 2.4.1 Pagina 18 / 61 netca Para probar los anteriores ficheros, o configurar otros desde cero podemos usar el Asistente de Configuración: netca Escoge "Local Net Service Name configuration" para probar el tnsnames.ora. Un error común: Connecting...ORA-12514: TNS:el listener no conoce actualmente el servicio solicitado en el descriptor de conexión O en inglés Connecting...ORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect descriptor © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 19 / 61 3 Instalación de Oracle 10g bajo Windows 3.1 Requisitos Los requisitos de memoria y disco son básicamente los mismos que para Linux. A nivel de sistema operativo, se requiere Windows 2000 SP2 o superior, 23 o 64 bits. 3.2 Instalación La instalación es parecida a la de Linux. Propongo la instalación personalizada, donde quitan la marca de los paquete 'Enterprise Edition Option', y se marca los paquetes de Windows Interface (menos Transaction Server), e iSQL. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 20 / 61 4 Arquitectura de la base de datos Oracle 10g © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 21 / 61 4.1 Las instancias Una instancia es sinónimo de un servidor, y representa un conjunto de estructuras de memoria, procesos de fondo, que acceden a un conjunto de archivos de base de datos. Una instancia esta compuesta de una o varias bases de datos. El tamaño de la memoria a utilizar, los procesos a encender, y la ubicación de los archivos de la base de datos están mencionados en un archivo init<SID>.ora, o a spfile<SID>.ora (server parameter file). Al iniciar la instancia, Oracle busca primero un archivo spfile ( spfile<SID>.ora), luego un archivo sfile.ora debajo de $ORACLE_HOME/dbs. Si no encontró ninguno de los dos, busca el tradicional init<SID>.ora. 4.1.1 init.ora El archivo init<SID>.ora guarda informaciones que no cambian como el tamaño de bloque de BD o el nombre de la base de datos. Se lea solamente al iniciar la instancia. Es una herencia de las versiones anteriores al 9i. Para crear un archivo init.ora desde un sistema existente, usa el comando create pfile. Para enforzar el uso de un archivo init.ora, se puede usar la clausula pfile durante el startup. 4.1.2 spfile.ora Desde la versión 9i, existe ahora un archivo binario que guarda la configuración de la base de datos. Se crea usando el comando create spfile, y se pone automáticamente al día cuando se usa un comando alter system. 4.2 La base de datos Una base de datos está compuesta por: – Uno o más espacios de tablas (tablespaces ) – Objetos del esquema de la base de datos Tiene dos estructuras básicas: Estructura física (para el almacenamiento de los datos) Estructura lógica (representación abstracta de los datos. Esquema conceptual) Tipos de ficheros Ficheros de datos Ficheros de log Ficheros de control Ficheros de traza de los procesos La estructura de una base de datos Oracle consiste de: Esquema: definiciones de tablas, vistas, procedimientos almacenados, ? Tablespaces , segmentos y extensiones para describir el almacenamiento físico de los datos © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) 4.2.1 Pagina 22 / 61 Tablespace Un tablespace está compuesto de uno a varios archivo (database file), y contiene objetos (tablas o indices). Tablespace 4.2.2 – – – Las unidades de almacenamiento de Oracle Bloques de datos (bloques lógicos: default 2048) Extensiones (espacio contiguo para almacenamiento de información) Segmentos (conjunto de extensiones almacenados en el mismo database file) 4.2.3 ● ● ● ● ● ● Componentes de un bloque Cabecera: información general sobre bloques: dirección, tipo de segmento (indice, datos, rollback, …) 107 bytes Directorio porción del bloque para las entradas de información de las tablas almacenadas Entrada de directorio: información sobre las filas del bloque. Entrada de datos: representa las filas. Una fila puede estar solapada en más de un bloque Espacio libre © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 23 / 61 4.3 Los procesos Una instancia de Oracle consta de una serie de procesos: 1. System Global Area (SGA) ● Shared pool: construcciones de memoria compartida para ejecución de sentencias ● Database buffer cache: para mantener los bloques más recientemente accedidos ● Redo log buffer: para recuperación de fallos 2. User processes: para las aplicaciones de usuario (forms , herramientas, etc) 3. Program global area (PGA) buffer de memoria que contiene datos e información de control para el servidor de procesos 4. Oracle processes : conjunto de procesos de Oracle para gestionar las peticiones de los procesos de usuario. 4.3.1 ● ● ● ● ● ● ● ● Procesos de Oracle DBWR (Database writer) para la escritura de bloques de cache hacia disco cuando se liberan los bloques. LGWR (Log writer) escribe el buffer de acciones en el fichero de log. CKPT (Checkpoint) Evento que hace que todos buffers modificados en el SGA sean escritos en disco. SMON (System monitor) recuperación de instancias, gestión de almacenamiento de áreas, recuperación de transacciones ARCH (Archiver) almacenamiento on­line de los ficheros log. RECO (Recoverer process) resolución de transacciones distribuidas que están pendientes de ser ejecutadas por fallos de red. Dnnn (Dispatcher) en servidores multithread encamina las peticiones de los usuarios LCKn (Lock processes ) para la implementación de bloqueos en ejecuciones en modo paralelo. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) ● ● ● ● ● ● ● ● ● ● ● ● ● Pagina 24 / 61 PMON: Process Monitor. Limpia los procesos de usuarios cancelados. CJQn : Job queue management: maneja las colas de trabajos programados LMSn: Interinstance locking: solo con real aplication server. Snnn: Server process, creado para manejar conoectionesa bases de datos con conexión dedicada. Pnnn: Parralel Query Server Process. Para uso de parallele server. ARB: proceso relacionado a ASM (solo en 10g) ASMB: proceso relacionado a ASM (solo en 10g) CTWR: Change Track Write: proceso relacionado con RMAN (solo en 10g) MMAN: Memory Manager: proceso relacionado a la gestion de la SGA (solo en 10g) MMNL: Memory Monitor Light: proceso relacionado a AWR (automatic workload repositoy) (solo en 10g) MMON: Memory Monitor: proceso relacionado a AWR (automatic workload repositoy) (solo en 10g) RBAL: proceso relacionado a ASM (solo en 10g) RVWR: Recovery Writer process: escribe los flashback log hacia la flashback recovery area. (solo en 10g) 4.4 Otros archivos 4.4.1 Redo Logs Todas las transacciones que se hacen en la base de datos están recordadas en el 'online redo log file'. Estos archivos (3 o mas) están sobrescrito de manera cíclica, y sirven en caso de que se cae la base de datos, para poder iniciarla de nuevo en un estado estable, repitiendo las transacciones que no habian estado escrito en el disco todavia. Si necesitas guradar una copia de los redo logs, para poder restaurar la base de datos hasta un momento preciso en el pasado, necesitas activar la opción de ARCHIVLOG, para que guarda una copia en uno o varios lugares antes del online redo log sobrescribir le. 4.4.2 Control file Es el archivo que contiene la información sobre todos los archivos físicos de la base de datos. Como este archivo es crítico para poder arrancar la base de datos, se encuentra usualmente en varias copias, en © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 25 / 61 varios lugares. Este archivo mantiene la consistencia interna de la base de datos y guía las operaciones de restauración y arranque. 4.4.3 Trace y alert files Cada proceso de fondo tiene su archivo de log asociado. El trace file registra cada evento significativo de los procesos de fondo. El alert log registra cada evento importante de la vida de la base de datos, como la creacion de un tablespace, un cambio de redo log,... 4.5 Oracle Managed Files (OMF) A partir de Oracle 9i, se puede usar el Oracle Managed Files (OMF) para simplificar la administración de los database files. Cuando se usa OMF, Oracle usa su programa de sistema de archivos para crear y borrar data files, control files, y online redo log files como requerido por los comandos DDL. Para permitir el uso de OMF, debes mencionar un valor para los parámetros de inicialización siguientes: Parámetro Descripción DB_CREATE_FILE_DEST Carpeta por defecto de los datafiles y temporary files. también usado para los online redo logs y los control files si el parámetro DB_CREATE_ONLINE_LOG_DEST_n no está mencionado. DB_CREATE_ONLINE_L OG_DEST_n Carpeta por defecto de los online redo logs y los control files. N es un valor de 1 a 5 para multiplexed online redo logs y control files. Nota: las carpetas mencionadas deben existir. El tamaño por defecto de un redo log file es de 100 MB. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 26 / 61 5 Creación de base de datos 5.1 En que consiste la creación de la base de datos La creación de la base de datos consiste en un conjunto de archivos que van a contener toda la información relativa a la estructura, contenido, y vida de la base de datos. Al mismo tiempo se va a crear una instancia de la base de datos. Un real application cluster consiste en varias instancias (memoria y CPU) compartiendo los mismos archivos. Eso permite aumentar la memoria disponible y el numero de CPU disponible para una cierta base de datos. 5.2 Usando el asistente (dbca) El asistente es bueno para un usuario con poca experiencia, o para tener un script de base, pero los profesionales solo trabajan manualmente, usando scripts personalizados. El asistente permite crear de manera visual la base de datos. Se inicia con el comando dbca, mejor como usuario oracle. Las partes que ya fueron explicadas en la instalación inicial de Oracle no serán explicadas de nuevo aquí. 5.2.1 Bienvenido Solo clic en Siguiente. 5.2.2 Selección de operación Aquí se va a seleccionar el tipo de operación que deseamos realizar. Tenemos las opciones siguientes: ● Crear Base de Datos: crear una nueva base de datos © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) ● ● ● ● Pagina 27 / 61 Configurar opciones de una base de datos: permite configurar opciones avanzadas de la base de datos, como los modulos de la versión empresarial (OLAP, Spatial,...) y el modo de gestión de las conecciones. Suprimir una Base de Datos: borra completamente una base de datos. Asegurese de tener un respaldo antes de borrarla. Gestionar Plantillas: permite crear o modificar plantillas para la creación de nuevas bases de datos. Configurar Gestión Automática de Almacenamiento: para el uso de ASM. Elige 'Crear Base de Datos' y pulsa Siguiente. 5.2.3 Selección de la plantilla Permite elegir una plantilla como base de creación de la base de datos. Existen 4 plantillas predefinidas: ● Almacen de datos: para un DWH (Data Warehouse), tipo de base de datos usada principalmente para consulta y con pocas transacciones. ● Personalizar base de datos: una plantilla basica, a personalizar completamente. ● Procesamiento de Transaciones: para un OLTP (Online Transacción Processing), tipo de base de datos usada principalmente para recordar transaciones. ● Uso general: para una base de daros de uso intermedio entre DWH y OLTP. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 28 / 61 Elige 'Personalizar Base de Datos' y pulsa Siguiente. 5.2.4 Identificador de BD Aquí se menciona el nombre global y el SID de la base de datos. Menciona los y pulsa Siguiente. 5.2.5 Gestión de la BD Aquí se menciona si se va a usar el Enterprise Manager para manejar la base de datos, y cuales opciones se van a utilizar. Acepta las opciones y pulsa Siguiente. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) 5.2.6 Pagina 29 / 61 Contraseñas Define aquí las contraseñas de los usuarios de sistema. Menciona las contraseñas y pulsa Siguiente. 5.2.7 Sistema de archivo Elige el tipo de sistema de archivos. Pulsa Siguiente. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) 5.2.8 Pagina 30 / 61 Ubicación de los archivos Puedes usar la ubicación de la plantilla o personalizarla. Clic en el botón 'Variablesd e Ubicación de Archivos..' para ver los detalles. Pulsa Siguiente. 5.2.9 Opciones de recuperación de bases de datos Permite encender el uso de una área de recuperación Flash, que permite hacer consulta sobre datos en el pasado (ya modificadas/borradas) y mencionar a donde se guardarán estos datos. Permite también encender el archivado de los online redo logs, para poder restaurar una base de datos hacia un cierto punto en el pasado. Pulsa Siguiente. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) 5.2.10 Pagina 31 / 61 Componentes de la base de datos Aquí se mencionan las opciones de la base de datos que se van a instalar. Estos módulos pueden requerir una licencia adicional. Hay que configurar también en cual tablespace se van a guardar los datos especificas de la opción elegida. Pulsa la pestaña 'Archivos de Comandos Personalizados' 5.2.11 Archivos de Comandos Personalizados Aquí puedes mencionar script SQL que se van a ejecutar después de la instalación de la BD. Puedes ser por ejemplo script de creación de tablas de su aplicación. Pulsa Siguiente. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) 5.2.12 Pagina 32 / 61 Memoria Menciona la cantidad de memoria que será reservada para Oracle. Puede ser un porcentaje de la memoria total instalada en el servidor, que Oracle repartirá automáticamente entre SGA, PGA, y procesos, o mencionar una repartición mas fina, mencionando la memoria de cada tipo de memoria. y pulsa Siguiente. Puedes también ver los parámetros de especialización, ya que cierto parámetros tendrán un impacto sobre el uso de la memoria, y la memoria necesaria. Pulsa sobre la pestaña 'Tamaño' 5.2.13 Tamaño Aquí se menciona en tamaño de un bloque, y el numero de procesos disponibles para la base de datos. Pulsa en la pestaña 'Juego de caracteres' © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) 5.2.14 Pagina 33 / 61 Juego de caracteres Especifica el juego de caracteres que quieres utilizar. Cuidado que ciertos juegos de caracteres tienen incompatibilidades entre ellos, en caso que quieres intercambiar datos con otra base de datos. Pulso en la pestaña 'Modo de conexión' 5.2.15 Modo de conexión Se especifica el modo de conexión por defecto de los clientes. Pulsa Siguiente. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) 5.2.16 Pagina 34 / 61 Almacenamiento de la base de datos Aquí se definen el lugar y los nombres de archivos de los archivos de control, los tablespaces (ver proximo capitulo), y los online redo logs. Pulsa Siguiente 5.2.17 Opciones de creación de base de datos Aquí mencionas si vas a crear ya la base de datos o no, si quieres guardar esta configuración como plantilla para el futuro, y quieres guardar el script de creación generado por esta configuración. Pulsa Terminar. 5.3 Creación manual Es la creación usando los comando SQL. Eso permite personalizar la instalación y mas que todo repetir exactamente una instalación en otra máquina. Por lo general, se usa en asistente para tener un script de base, pero en producción no se usa el asistente, si no el script que ha sido probado en otro ambiente, para estar seguro de obtener un resultado igual y no olvidar nada. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 35 / 61 6 Manejo de los tablespaces 6.1 Que son los tablepaces? Los tablespaces son áreas donde se van a almacenar los datos en Oracle (tablas, indices,...). Un tablespace esta compuesto de uno o varios archivos físicos (data file). un objeto puede pertenecer solamente a un tablespace, pero un tablespace puede contener varios objetos. 6.2 Los tipos de tablespaces Hay dos tipos de tablespaces, los reservado al funcionamiento interno de Oracle, y los de datos de los usuarios. 6.2.1 6.2.1.1 Tablespaces específicos de Oracle SYSTEM El tablespace SYSTEM contiene todos los tablas del diccionario de Oracle, los rollback segmentos del sistema y un espacio de ordenamientos de los datos. Es el solo tablespace obligatorio en versiones anterior a la 10g. Desde la 10g, el SYSAUX es también obligatorio. 6.2.1.2 SYSAUX Este tablespace va a almacenar los datos de los componentes opcionales de Oracle (RMAN, OLAP,...) que antes se guardaban en tablespaces separados. 6.2.1.3 TEMPORARY Es un tablespace para guardar datos temporales de Oracle, como tablas temporales, tablas creadas por Oracle para ordenar datos, etc... 6.2.1.4 UNDO Es un nuevo tipo de tablespace, desde la versión 9i, que remplaza los rollback segments usados en versiones anteriores. 6.2.2 Tablespaces de los datos de usuarios Son los tablespaces creados a medida para almacenar los datos de los usuarios. Se pueden crear un solo tablespace, o varios separando los diferentes tipos de datos. Ver mas adelante ejemplo de separación de tablespaces. 6.3 Atributos de un tablespace 6.3.1 6.3.1.1 Manejo de extents Locally managed tablespace Nuevo en la versión 8i, pero de uso generalizado desde la 9i, el manejo local permite que Oracle maneja la gestión del espacio y la gestión de los bloques a nivel del tablespace mismo, en un pequeño código de formato bitmap en la cabecera del tablespace. Tiene la ventaja de no tener que consultar tablas del diccionario para la gestión del espacio. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 36 / 61 Es mas eficiente y mas simple, ya que no se necesita mas las clausulas de storage para las tablas, indices,... 6.3.1.1.1 Asignación de extents Puede ser automatica, o fija a cierto numero de kb. 6.3.1.1.2 Gestíon de espacio Puede ser automatica o manual. El manual existe principalmente por compatibilidad con versiones anteriores. 6.3.1.1.3 Activar registro Si no se activa el registro, no se registrarán las transacciones relativas a este tablespace a nivel de los redo logs, lo que aumentará la rapidez de las transacciones pero podría generar perdida de datos en caso de falla de la Oracle. 6.3.1.1.4 Tamaño de bloque Se puede sobrescribir el tamaño de bloque para este tablespace en especifico 6.3.1.2 Dictionary managed tablespace Toda la información de manejo de espacio esta definida al nivel del las tablas de sistema de Oracle. Es el modo por defecto del tablaspace SYSTEM hasta la 9i. Aquí para cada objeto creado hay que mencionar la clausula de STORAGE ( INITIAL ..K NEXT ...K PCINCREASE ...) 6.3.1.2.1 Tamaño inicial Tamaño inicial del extent. 6.3.1.2.2 Siguiente tamaño Tamaño del proximo extent en caso que se necesita un nuevo. 6.3.1.2.3 Tamaño mínimo En caso que se quiere reducir el tamaño del tablespace, el tamaño mínimo del extent. 6.3.1.2.4 Aumentar tamaño por porcentaje Cada nuevo extent será de tanto porcentaje mas grande que el último. 6.3.1.2.5 Numero minimo Minimo de extents a crear al inicio. 6.3.1.2.6 Maximo Si hay un maximo de extents que se pueden crear. 6.3.1.2.7 Activar registro Si no se activa el registro, no se registrarán las transacciones relativas a este tablespace a nivel de los redo logs, lo que aumentará la rapidez de las transacciones pero podría generar perdida de datos en caso de falla de la Oracle. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) 6.3.1.2.8 Pagina 37 / 61 Tamaño de bloque Se puede sobrescribir el tamaño de bloque para este tablespace en especifico 6.3.2 Tablespace de archivo grande Un Bigfile Tablespace es una nueva opcion de 10g. Es un tablespace para manejar objetos muy grande. El tamaño maximo teorico de un tablespace Bigfile es de 8 hexabyte (8000 terbytes). Hay que notar que ese tipo de tablespace solo puede usar un solo archivo a nivel de sistema. 6.3.3 Archivos Archivos físicos que contendrán los datos del tablespace. 6.3.4 Estado Un tablespace puede estar online o offline. Offline el no sera disponible para los usuarios. Online, existe la opción de ponerlo en solo lectura, para estar seguro que nadie va a modificar los datos contenidas en este tablespace (que podría ser contenido en un CD por ejemplo). 6.3.5 Tipo Un tablespace puede ser de un de los tipos siguietntes: 1) Permanente: es lo común, para datos que se guardan y se pueden modificar. 2) Temporal: para usarlo como espacio temporal. Al apagar la base de datos, se pierden los datos. 3) Deshacer: el nuevo tipo, que remplaza los rollback segments. 6.4 Planificación de los tablespace Los tablespaces dependen de los datos que se va a guardar, y del uso de la base de datos. El objetivo es tanto mejorar en rendimiento de la base de datos como facilitar la administracion y el mantenimiento de la base de datos. 6.4.1 Separación de datos según el tipo Muchas veces, se separan las tables de los indices, dando les a cada uno uno o varios tablespaces específicos, ubicados en discos separados. Las vistas materializadas y las tablas con objetos binarios podrían también tener sus propios tablespaces. 6.4.2 Separación de datos según el uso Las tablas con muchas transacciones podrían ubicarse en los discos mas rápidos o los menos utilizados, o repartirse entre varios discos para repartir la carga del sistema. 6.4.3 Separación de datos según el tamaño Se pueden crear tablespaces con tamaños de extent diferentes, según el tamaño de tablas a hospedar. Por eso se necesita conocer el tamaño actual de cada objeto y poder estimar su tamaño futuro. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 38 / 61 6.5 Sintaxis 6.5.1 Creación CREATE [UNDO] TABLESPACE tablespace_name DATAFILE Datafile_Options Storage_Options ; Datafile_Options: 'filespec' [AUTOEXTEND OFF] 'filespec' [AUTOEXTEND ON [NEXT int K | M] [MAXSIZE int K | M]] The Autoextend Maxsize clause will default to UNLIMITED if no value is specified. FILESPEC Clause 'filename' [size] [REUSE] 'filename' [size] K [REUSE] 'filename' [size] M [REUSE] When creating Datafiles or Redo log file groups - the filename may be several filenames separated with commas. e.g. ('file1' 200 M, 'file2' 300 M) REUSE will reuse an existing file, or if the filename does not already exist will create a new one. Storage_Options: DEFAULT [COMPRESS|NOCOMPRESS] STORAGE storage_clause MINIMUM EXTENT int {K|M} BLOCKSIZE int K LOGGING | NOLOGGING FORCE LOGGING ONLINE | OFFLINE PERMANENT | TEMPORARY EXTENT MANAGEMENT {DICTIONARY | LOCAL {AUTOALLOCATE | UNIFORM [SIZE int K | M]} } SEGMENT SPACE MANAGEMENT {MANUAL | AUTO} STORAGE clause INITIAL int K | M NEXT int K | M MINEXTENTS int MAXEXTENTS int MAXEXTENTS UNLIMITED PCTINCREASE int FREELISTS int FREELIST GROUPS int OPTIMAL OPTIMAL int K | M OPTIMAL NULL BUFFER POOL {KEEP|RECYCLE|DEFAULT} CREATE TEMPORARY TABLESPACE tablespace_name TEMPFILE Tempfile_Options [EXTENT MANAGEMENT LOCAL] [UNIFORM [SIZE int K | M] ]; Tempfile_Options: 'filespec' [AUTOEXTEND OFF] 'filespec' [AUTOEXTEND ON [NEXT int K | M] [MAXSIZE int K | M]] The Autoextend Maxsize clause will default to UNLIMITED if no value is specified. To create a locally managed tablespace specify 'EXTENT MANAGEMENT LOCAL'. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 39 / 61 All extents of temporary tablespaces are the same size ­ if UNIFORM is not defined it will default to 1 MB. Ejemplo: create tablespace curso datafile '/u02/oradata/test/curso.dbf' size 20 M ; 6.5.2 Modificación ALTER TABLESPACE tablespace_name option options: The option used with this command can be any one of the following ADD {TEMPFILE|DATAFILE} 'filespec' [AUTOEXTEND OFF] SIZE int {K|M} ADD {TEMPFILE|DATAFILE} 'filespec' SIZE int {K|M} [ AUTOEXTEND ON [NEXT int K | M] [MAXSIZE {UNLIMITED|int K|int M}] ] RENAME DATAFILE 'filename' TO 'filename' {TEMPFILE|DATAFILE} ONLINE {TEMPFILE|DATAFILE} OFFLINE MINIMUM EXTENT int {K|M} COALESCE DEFAULT STORAGE storage_clause ONLINE OFFLINE {NORMAL | TEMPORARY | IMMEDIATE} {BEGIN | END} BACKUP READ {ONLY | WRITE} PERMANENT | TEMPORARY LOGGING | NOLOGGING [NO] FORCE LOGGING 6.5.3 Eliminación DROP TABLESPACE tablespace_name [INCLUDING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]]; 6.6 Ejercicios 1. Crea un tablespace 'curso' de 20 MB con 2 datafiles de 10 MB cada uno. 2. Crea un tablespace 'test' de 10 MB. Borralo. Crealo de nuevo pero que sea offline. 3. Aumenta el tamaño del tablespace 'curso' de 10 MB. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 40 / 61 7 Creación de objetos 7.1 Vistas La vista es una sentencia de selección de datos preparada. Permite facilitar las consultas futuras, especialmente cuando se juntan varias tablas. Permite también limitar el acceso a datos (seguridad). 7.1.1 Creación CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW [schema.]view [(alias,...) inline_constraint(s)] [out_of_line_constraint(s)] [XMLType_view_clause] AS subquery options options: WITH READ ONLY WITH CHECK OPTION [CONSTRAINT constraint] 7.1.2 ALTER ALTER ALTER ALTER ALTER ALTER Modificación VIEW VIEW VIEW VIEW VIEW VIEW [schema.]view [schema.]view [schema.]view [schema.]view [schema.]view [schema.]view COMPILE; ADD out_of_line_constraint; MODIFY CONSTRAINT constraint {RELY | NORELY}; DROP CONSTRAINT constraint; DROP PRIMARY KEY UNIQUE (column [,column,...]) When a constraint is in NOVALIDATE mode, Oracle does not enforce it and does not take it into account for query rewrite. If you specify RELY Oracle will still not enforce the constraint but will take it into account for query rewrite. An alternative to ALTER VIEW COMPILE is the built­in pl/sql package DBMS_UTILITY 7.1.3 Eliminación DROP VIEW [schema.]view [CASCADE CONSTRAINTS] 7.1.4 Ejercicios 1. Crea una vista sobre 2 tablas ligadas. 2. Usa la vista en una consulta. 7.2 Secuencias Una secuencia es un contador que se incrementa automáticamente y permite generar numero únicos. 7.2.1 Creación CREATE SEQUENCE [schema.]sequence_name option(s) Options: INCREMENT BY int START WITH int MAXVALUE int | NOMAXVALUE MINVALUE int | NOMINVALUE CYCLE | NOCYCLE © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 41 / 61 CACHE int | NOCACHE ORDER | NOORDER 7.2.2 Modificación ALTER SEQUENCE [schema.]sequence_name option(s) Options: INCREMENT BY int MAXVALUE int | NOMAXVALUE MINVALUE int | NOMINVALUE CYCLE | NOCYCLE CACHE int | NOCACHE ORDER | NOORDER 7.2.3 Eliminación DROP SEQUENCE [schema.]sequence_name 7.2.4 Ejercicios 1. Crea una secuencia 2. Altera la secuencia para que el próximo numero generado sea 20 7.3 Vistas materializadas Una vista materializada es un conjunto de datos de una o varias tablas (como una vista) pero del cual el dato se guarda físicamente. Aumenta el rendimiento de las consultas en comparación de la vista normal, pero disminuye el rendimiento de las consultas DML sobre las tablas ligadas a la vista materializada, ya que tiene que mantener la vista materializada ademas de la tabla fuente. 7.3.1 Creación CREATE MATERIALIZED VIEW [schema.]mview Mview_Options [USING INDEX storage_options] [{REFRESH [refresh_options] | NEVER REFRESH] [FOR UPDATE] [{ENABLE|DISABLE} QUERY REWRITE] AS subbquery; storage_options: PCTFREE int PCTUSED int INITRANS int MAXTRANS int STORAGE storage_clause TABLESPACE tablespace refresh_options: FAST | COMPLETE | FORCE ON [DEMAND | COMMIT] {NEXT | START WITH} date WITH {PRIMARY KEY | ROWID} USING DEFAULT {MASTER|LOCAL} ROLLBACK SEGMENT USING {MASTER|LOCAL} ROLLBACK SEGMENT rb_segment idx_organized_tbl_clause: storage_option(s) {MAPPING TABLE | NOMAPPING} [PCTTHRESHOLD int] [COMPRESS int|NOCOMPRESS] [ [INCLUDING column_name] OVERFLOW [storage_option(s)] ] external_table_clause: ([TYPE access_driver_type] © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 42 / 61 DEFAULT DIRECTORY directory [ACCESS PARAMETERS {USING CLOB subquery | (opaque_format_spec) }] LOCATION (directory:'location_specifier' [,directory2:'location_specifier2'...) ) [REJECT LIMIT {int|UNLIMITED}] nested_storage_clause: NESTED TABLE {nested_item | COLUMN_VALUE} [ [ELEMENT] IS OF TYPE (ONLY type) ]] | STORE AS storage_table [RETURN AS {LOCATOR|VALUE} ] 7.3.2 [ [NOT] SUBSTITUTABLE AT ALL LEVELS ]] Modificación ALTER MATERIALIZED VIEW [schema.]mview options iot_options [USING INDEX index_options] [REFRESH [refresh_options]] [COMPILE | CONSIDER FRESH | {ENABLE|DISABLE} QUERY REWRITE] ALTER MATERIALIZED VIEW [schema.]mview options iot_options [USING INDEX index_options] [REBUILD] [COMPILE | CONSIDER FRESH | {ENABLE|DISABLE} QUERY REWRITE] ALTER MATERIALIZED VIEW [schema.]mview options iot_options [USING INDEX index_options] MODIFY SCOPE FOR (ref_column/attribute) IS [schema.]scope_table [COMPILE | CONSIDER FRESH | {ENABLE|DISABLE} QUERY REWRITE] Options: COMPRESS|NOCOMPRESS CACHE | NOCACHE PARALLEL int | NOPARALLEL ALLOCATE EXTENT [( [DATAFILE filename] [, SIZE int {K | M}] [, INSTANCE int] )] Partitioning clause Physical_options LOB Clause 7.3.3 Eliminación DROP MATERIALIZED VIEW [schema.] materialized_view Snapshot is synonymous with Materialized View. Para más información sobre las vistas materializadas, ver en http://www.softics.ru/docs/oracle10r2/server.101/b10759/statements_6002.htm 7.4 Sinónimos Un sinónimo es un nombre de objeto que refiere a un objeto con otro nombre, o que se pueda encontrar en otro esquema. Un sinónimo public es disponible para todos los usuarios (según sus privilegios). 7.4.1 Creación CREATE [OR REPLACE] [PUBLIC] SYNONYM [schema.]synonym FOR [schema.]object [@dblink] 'PUBLIC' will create a public synonym, accessible to all users (with the appropriate privileges.) Unlike Views, Synonyms do not need to be recompiled when the underlying table is redefined. There is a small performance hit when accessing data through a public synonym. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 43 / 61 Oracle will resolve object names in the following order: current user private synonym public synonym An alternative method to access data in another schema is to use: ALTER SESSION set current_schema = Other_Schema 7.4.2 Eliminación DROP [PUBLIC] SYNONYM [schema.]synonym [FORCE] FORCE will drop the synonym even there are dependent tables or user-defined types. 7.4.3 Ejercicios 1. Crea un sinónimo publico para un objeto. Luego conecta te como otro usuario y consulta el objeto via el sinónimo público. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 44 / 61 8 Manejo de usuarios 8.1 Cuentas de usuarios Un usuario es una cuenta que permite a alguien de conectarse a Oracle, y según sus derechos de seguridad, usar, crear, y/o manejar objetos de la base de datos. Un usuario es especifico a una base de datos. Con la cuenta de usuario, se pueden definir varias opciones: ● Nombre (único) del usuario ● Clave del usuario ● Password expired (obligará el usuario a cambiar su clave al ingresar la primera vez) ● Account locked: cuenta bloqueada ● Default tablespace: donde se guardarán por defecto sus objetos ● Temporary tablespace ● Roles: conjunto de derechos ● Privilegios de sistema y de objetos ● Quotas: espacio autorizado ● Perfiles Los roles y privilegios de agregan después de haber creado el usuario. Concepto Significado Privilegio Permiso para realizar una acción, asignable a un usuario o un rol Rol Conjunto de privilegios, asignables a un usuario o un rol Usuario Colección de objetos y privilegios identificado con un nombre y password Perfil Conjunto de restricciones relativas al uso de recursos, y asignable a usuarios. Un usuario sólo puede tener un perfil Recurso Uso susceptible de ser restringido, asignable a un perfil © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) 8.1.1 Pagina 45 / 61 Usuarios especiales SYS. Es el único usuario con acceso al esquema SYS, que guarda las tablas y vistas para el diccionario de datos de la base de datos. Solo se usa para cambiar los parámetros de almacenamiento del diccionario de datos. Este usuario se crea automáticamente al crear una base de datos y tiene rol DBA. SYSTEM. Solo se usa para crear tablas y vistas con información relativa a la administración de la base de datos. Este usuario se crea automáticamente al crear una base de datos y tiene rol DBA. 8.1.2 Creación de cuentas CREATE USER username IDENTIFIED {BY password | EXTERNALLY | GLOBALLY AS 'external_name'} options; options: DEFAULT TABLESPACE tablespace TEMPORARY TABLESPACE tablespace QUOTA int {K | M} ON tablespace QUOTA UNLIMITED ON tablespace PROFILE profile_name PASSWORD EXPIRE ACCOUNT {LOCK|UNLOCK} EXAMPLES -- Create a user with no rights to save data or create objects: CREATE USER limited IDENTIFIED BY ChangeThis; -- Create a user with full rights to create objects and save data: CREATE USER MySchemaOwner IDENTIFIED BY ChangeThis DEFAULT TABLESPACE data TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON data; Ejemplo: CREATE USER alumno IDENTIFIED BY aaa DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; 8.1.3 Modificación ALTER USER username options; ALTER USER username,... {GRANT|REVOKE} proxy_options; options: IDENTIFIED BY password [REPLACE old_password] IDENTIFIED EXTERNALLY IDENTIFIED GLOBALLY AS external_name DEFAULT TABLESPACE tablespace TEMPORARY TABLESPACE tablespace QUOTA int {K | M} ON tablespace QUOTA UNLIMITED ON tablespace PROFILE profile_name DEFAULT ROLE role [,role,...] DEFAULT ROLE ALL [EXCEPT role,...] DEFAULT ROLE NONE PASSWORD EXPIRE ACCOUNT {LOCK|UNLOCK} proxy_options: CONNECT THROUGH proxy [WITH ROLE role_name,...] [authentication] CONNECT THROUGH proxy [WITH ROLE ALL EXCEPT role_name,...] [authentication] CONNECT THROUGH proxy [WITH NO ROLES] [authentication] © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 46 / 61 authentication: AUTHENTICATED USING PASSWORD AUTHENTICATED USING DISTINGUISHED NAME AUTHENTICATED USING CERTIFICATE [TYPE 'type'] [VERSION 'version'] 8.1.4 Eliminación DROP USER username [CASCADE] Specify CASCADE to drop all objects in the user's schema. 8.1.5 Ejercicios 1. Crea un usuario 'alumno' 2. Crea un usuario 'test'. Crea unos objetos bajo este usuario. Proba de eliminarlo. 3. Cambia la clave del usuario alumno. 8.2 Privilegios de sistema Los roles de sistema se utilizan para distribuir la disponibilidad de los comandos del sistema utilizados para gestionar la BD. Estos privilegios que pueden tener un alcance limitado al esquema del usuario (create table) o de todos los esquemas (create any table). La palabra clave ANY significa que ese usuario tiene el privilegio para todos los esquemas en la BD. Por ejemplo, el derecho de crear una sesión (conectarse), crear tablas, crear respaldos,... 8.3 Privilegios de objetos Por defecto un usuario tiene todos los derechos sobre los objectos suyos (de su esquema). Un usuario puede otorgar (grant) privilegios sobre sus objetos a cualquier usuario o rol (role). Un privilegio puede ser otorgado de manera explicita a un usuario, o se puede dar a un role, y cualquier usuario con este rol tendrá este derecho. Los privilegios que pueden otorgarse sobre objetos son los siguientes: Privilegio Capacidades Otorgadas SELECT Puede consultar a un objeto. INSERT Puede insertar filas en una tabla o vista. Puede especificarse las columnas donde se permite insertar dentro de la tabla o vista. UPDATE Puede actualizar filas en una tabla o vista. Puede especificarse las columnas donde se permite actualizar dentro de la tabla o vista. DELETE Puede borrar filas dentro de la tabla o vista. ALTER Puede alterar la tabla. INDEX Puede crear índices de una tabla. REFERENC Puede crear claves ajenas que referencie a esta tabla. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 47 / 61 ES EXECUTE Puede ejecutar un procedimieto, paquete o función. Para ver los datos de una vista, se necesita el privilegio sobre la vista, y no sobre las tablas que contiene la vista. A nivel de una vista, es posible limitar los privilegios a ciertos campos, y a ciertos rangos de valores de las filas regresadas. Es una opción para datos muy sensible, pero es un poco pesado a establecer y mantener. 8.4 Otorgar/quitar privilegios Los comandos SQL GRANT y REVOKE, permiten de otorgar/quitar respectivamente un privilegio. El grupo PUBLIC: un privilegio otorgado al grupo 'public' es otorgado a todos los usuarios de la base de datos. Los derechos se pueden dar 'with grant option', lo que significa que el usuario tendrá el derecho de otorgar este mismo derecho a otro(s) usuario(s). Grant System-wide Privs: GRANT system_priv(s) TO grantee [IDENTIFIED BY password] [WITH ADMIN OPTION] GRANT role TO grantee [IDENTIFIED BY password] [WITH ADMIN OPTION] GRANT ALL PRIVILEGES TO grantee [IDENTIFIED BY password] [WITH ADMIN OPTION] Grant privs on specific objects: GRANT object_priv [(column, column,...)] ON [schema.]object TO grantee [WITH GRANT OPTION] [WITH HIERARCHY OPTION] GRANT ALL PRIVILEGES [(column, column,...)] ON [schema.]object TO grantee [WITH GRANT OPTION] [WITH HIERARCHY OPTION] GRANT object_priv [(column, column,...)] ON DIRECTORY directory_name TO grantee [WITH GRANT OPTION] [WITH HIERARCHY OPTION] GRANT object_priv [(column, column,...)] ON JAVA [RE]SOURCE [schema.]object TO grantee [WITH GRANT OPTION] [WITH HIERARCHY OPTION] grantee: user role PUBLIC system_privs: CREATE SESSION - Allows user to connect to the database UNLIMITED TABLESPACE - Use an unlimited amount of any tablespace. SELECT ANY TABLE - Query tables, views, or mviews in any schema UPDATE ANY TABLE - Update rows in tables and views in any schema INSERT ANY TABLE - Insert rows into tables and views in any schema Also System Admin rights to CREATE, ALTER or DROP: cluster, context, database, link, dimension, directory, index, materialized view, operator, outline, procedure, profile, role, rollback segment, sequence, session, synonym, table, tablespace,trigger, type, user, view. Para la lista completa, ver la documentación de Oracle. object_privs: SELECT, UPDATE, INSERT, DELETE, ALTER, DEBUG, EXECUTE, INDEX, REFERENCES © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 48 / 61 roles: SYSDBA, SYSOPER, OSDBA, OSOPER, EXP_FULL_DATABASE, IMP_FULL_DATABASE SELECT_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, DELETE_CATALOG_ROLE AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE - advanced queuing SNMPAGENT - Enterprise Manager/Intelligent Agent. RECOVERY_CATALOG_OWNER - rman HS_ADMIN_ROLE - heterogeneous services plus any user defined roles you have available Notes: Several Object_Privs can be assigned in a single GRANT statement e.g. GRANT SELECT (empno), UPDATE (sal) ON scott.emp TO emma WITH HIERARCHY OPTION will grant the object privilege on all subobjects, including any created after the GRANT statement is issued. WITH GRANT OPTION will enable the grantee to grant those object privileges to other users and roles. "GRANT ALL PRIVILEGES..." may also be written as "GRANT ALL..." Changes in a grant applied to a role will be immediately picked up by all logged-in users. Changes in a grant applied directly to a user require a logoff and re-login. Grants of UNLIMITED TABLESPACE must be direct. Grants to users running background jobs (dbms_job.submit) have to be direct; when the job starts running no roles are active. GRANT CREATE session, CREATE table, CREATE view, CREATE procedure,CREATE synonym, ALTER table, ALTER view, ALTER procedure,ALTER synonym, DROP table, DROP view, DROP procedure,DROP synonym, TO MyRole; 8.5 Roles Un rol es un conjunto de privilegios, lo que simplifica el manejo de la seguridad. Un rol se puede otorgar a otro roles. Los roles siguientes existen por defecto por razon de compatibilidad con versiones ancianas de Oracle: CONNECT, RESOURCE, DBA, EXP_FULL_DATABASE, IMP_FULL_DATABASE Se recomienda que crean sus propios roles según sus necesidades. Un rol puede otorgar privilegios sobre objetos o de sistema. CREATE ROLE conn; GRANT CREATE session, CREATE table, CREATE view, CREATE procedure,CREATE synonym, ALTER table, ALTER view, ALTER procedure,ALTER synonym, DROP table, DROP view, DROP procedure,DROP synonym, TO conn; GRANT role TO [user,] [role,] SYSDBA role permissions: CREATE DATABASE CREATE SPFILE STARTUP and SHUTDOWN ALTER DATABASE: open, mount, back up, or change character set ARCHIVELOG and RECOVERY Includes the RESTRICTED SESSION privilege © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 49 / 61 SYSOPER role permissions: CREATE SPFILE STARTUP and SHUTDOWN ALTER DATABASE: open, mount, back up ARCHIVELOG and RECOVERY Includes the RESTRICTED SESSION privilege The roles CONNECT, RESOURCE and DBA are now deprecated (supported only for backwards compatibility) unless you are still running Oracle 6.0 use CREATE ROLE instead. Using deprecated roles is likely to result in a database installation that is not secure. Also beware of 3rd party packages that issue GRANT CONNECT instead of GRANT CREATE SESSION. * Create a Role * Grant object and system priviliges to the role * Grant the role to individual Users. When using roles, parse performance is faster (one role vs multiple permissions) 8.6 Quotas El manejo de quotas permite limitar el espacio fisico que pueda utilizar un usuario. Se otorga por tablespace. 8.7 Uso de perfiles Los perfiles se utilizan para limitar la cantidad de recursos del sistema y de la BD disponibles para un usuario. Si no se definen perfiles para un usuario se utiliza el perfil por defecto, que especifica recursos ilimitados. Los recursos que pueden ser limitados via perfil son los siguientes: Recurso Descripción SESSIONES_PER_USER El número de sesiones concurrentes que un usuario puede tener en una instancia. CPU_PER_SESSION El tiempo de CPU, en centenas de segundos, que una sesión puede utilizar. CONNECT_TIME El número de minutos que una sesión puede permanecer activa. IDLE_TIME El número de minutos que una sesión puede permanecer sin que sea utilizada de manera activa. LOGICAL_READS_PER_SESSION El número de bloques de datos que se pueden leer en una sesión. LOGICAL_READS_PER_CALL El número de bloques de datos que se pueden leer en una operación. PRIVATE_SGA La cantidad de espacio privado que una sesión puede reservar en la zona de SQL compartido de la SGA. COMPOSITE_LIMIT El número de total de recursos por sesión, en unidades de servicio. Esto resulta de un calculo ponderado de CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION y PRIVATE_SGA, cuyos pesos se pueden variar con el comando ALTER RESOURCE COST. Los perfiles se pueden crear via el comando CREATE PROFILE, y se pueden modificar con la sentencia ALTER PROFILE. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 50 / 61 En general, el perfil por defecto debe ser adecuado para los usuarios normales; los usuarios con requerimientos especiales deberían tener perfiles especiales. Permite también definir la complejidad mínima de la clave del usuario (min de caracteres, etc...). CREATE PROFILE profile_name LIMIT limit(s) range KEY limit = SESSIONS_PER_USER CPU_PER_SESSION CPU_PER_CALL CONNECT_TIME IDLE_TIME LOGICAL_READS_PER_SESSION LOGICAL_READS_PER_CALL COMPOSITE_LIMIT PRIVATE_SGA range = UNLIMITED | DEFAULT | integer for PRIVATE_SGA specify K or M e.g. CREATE PROFILE MyProfile LIMIT PRIVATE_SGA 50 K New with Oracle 8 are password related profile limits... Syntax: CREATE PROFILE profile_name LIMIT pw_limit(s) range KEY pw_limit = PASSWORD_LIFE_TIME PASSWORD_GRACE_TIME PASSWORD_REUSE_TIME PASSWORD_REUSE_MAX FAILED_LOGIN_ATTEMPTS PASSWORD_LOCK_TIME range = UNLIMITED | DEFAULT | expression Syntax to customise password verification: CREATE PROFILE profile_name LIMIT PASSWORD_VERIFY_FUNCTION {plsql_function | NULL | DEFAULT} Definitions CONNECT_TIME - Max. time user may stay connected IDLE_TIME - Max. time user may stay connected & idle PRIVATE_SGA - Session space in the shared pool - K or M (bytes) COMPOSITE_LIMIT - A weighted sum of CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION, and PRIVATE_SGA. PASSWORD_LIFE_TIME - Expire password after X no of days PASSWORD_GRACE_TIME - Lock account X days after LIFE_TIME expires. PASSWORD_REUSE_TIME - Min. no. days before the same pw may be reused PASSWORD_REUSE_MAX - Min. no. of number of pw changes before the current password can be reused FAILED_LOGIN_ATTEMPS - Max no. of incorrect logins before account is locked PASSWORD_LOCK_TIME - Max. no. of days an account will be locked DEFAULT refers to values set in the DEFAULT user profile. 8.8 Listar Privilegios Otorgados La información de los privilegios otorgados se almacena en el diccionario de datos. Estos datos son accesibles a través de las siguientes vistas del diccionario de datos: © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 51 / 61 Vista Contenidos DBA_ROLES Nombres de los roles y su estado del password. DBA_ROLES_PRIVS Usuarios a los que han sido otorgados roles. DBA_SYS_PRIVS Usuarios a los que han sido otorgados privilegios del sistema. DBA_TAB_PRIVS Usuarios a los que han sido otorgados privilegios sobre objetos. DBA_COL_PRIVS Usuarios a los que han sido otorgados privilegios sobre columnas de tablas. ROLE_ROLE_PRIVS Roles que han sido otorgados a otros roles. ROLE_SYS_PRIVS Privilegios de sistema que han sido otorgados a roles. ROLE_TAB_PRIVS Privilegios de tabla que han sido otorgados a roles. 8.9 Cambiarse a otro usuario Es posible tomar una cuenta temporalmente, cambiando su password original, para restaurarlo a continuación. Esto permite que el DBA se convierta temporalmente en otro usuario. Esto se puede hacer siguiendo los siguientes pasos: 1. Consultar la tabla DBA_USERS para conseguir la versión encriptada del password actual del usuario que vamos a utilizar. 2. Generar el comando alter user que permita restaurar el password original, guardandolo en un fichero para su posterior ejecución. 3. Cambiar el password de la cuenta y acceder a ella. 4. Cuando el trabajo como el otro usuario haya acabado, ejecutar el comando alter user creado antes para restaurar el valor original del password. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 52 / 61 9 Manejo de transacciones 9.1 Transacciones Una transacción es un conjunto de operaciones que se ejecutan en una base de datos, y que son tratadas como una única unidad lógica por el SGBD. Es decir, una transacción es una o varias sentencias SQL que se ejecutan en una base de datos como una única operación, confirmándose o deshaciéndose en grupo. No todas las operaciones SQL son transaccionales. Sólo son transaccionales las operaciones correspondiente al DML, es decir, sentencias SELECT, INSERT, UPDATE y DELETE Para confirmar una transacción se utiliza la sentencia COMMIT. Cuando realizamos COMMIT los cambios se escriben en la base de datos. Para deshacer una transacción se utiliza la sentencia ROLLBACK. Cuando realizamos ROLLBACK se deshacen todas las modificaciones realizadas por la transacción en la base de datos, quedando la base de datos en el mismo estado que antes de iniciarse la transacción. Un ejemplo clásico de transacción son las transferencias bancarias. Para realizar una transferencia de dinero entre dos cuentas bancarias debemos descontar el dinero de una cuenta, realizar el ingreso en la otra cuenta y grabar las operaciones y movimientos necesarios, actualizar los saldos ... Si en alguno de estos puntos se produce un fallo en el sistema podríamos hacer descontado el dinero de una de las cuentas y no haberlo ingresado en la otra. Por lo tanto, todas estas operaciones deben ser correctas o fallar todas. En estos casos, al confirmar la transacción (COMMIT) o al deshacerle (ROLLBACK) garantizamos que todos los datos quedan en un estado consistente. En una transacción los datos modificados no son visibles por el resto de usuarios hasta que se confirme la transacción. El siguiente ejemplo muestra una supuesta transacción bancaria: DECLARE importe NUMBER; ctaOrigen VARCHAR2(23); ctaDestino VARCHAR2(23); BEGIN importe := 100; ctaOrigen := '2530 10 2000 1234567890'; ctaDestino := '2532 10 2010 0987654321'; UPDATE CUENTAS SET SALDO = SALDO - importe WHERE CUENTA = ctaOrigen; UPDATE CUENTAS SET SALDO = SALDO + importe WHERE CUENTA = ctaDestino; INSERT INTO MOVIMIENTOS (CUENTA_ORIGEN, CUENTA_DESTINO,IMPORTE, FECHA_MOVIMIENTO) VALUES (ctaOrigen, ctaDestino, importe*(-1), SYSDATE); INSERT INTO MOVIMIENTOS (CUENTA_ORIGEN, CUENTA_DESTINO,IMPORTE, FECHA_MOVIMIENTO) VALUES (ctaDestino,ctaOrigen, importe, SYSDATE); COMMIT; EXCEPTION WHEN OTHERS THEN © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) END; Pagina 53 / 61 dbms_output.put_line('Error en la transaccion:'||SQLERRM); dbms_output.put_line('Se deshacen las modificaciones); ROLLBACK; Si alguna de las tablas afectadas por la transacción tiene triggers, las operaciones que realiza el trigger están dentro del ámbito de la transacción, y son confirmadas o deshechas conjuntamente con la transacción. Durante la ejecución de una transacción, una segunda transacción no podrá ver los cambios realizados por la primera transacción hasta que esta se confirme. ORACLE es completamente transaccional. Siempre debemos especificar si que queremos deshacer o confirmar la transacción. 9.2 Rollback segments En cada base de datos Oracle tenemos uno o más segmentos de rollback en los que se almacena la información que ha sido cambiada por las transacciones. Estas transacciones pueden ser definitivas, es decir, se ha realizado ya el commit de ellas, o puede que aún no se haya hecho dicho commit. Este tipo especial de segmento se utiliza principalmente para poder realizar una lectura consistente de la base de datos Oracle mientras se están modificando los datos y para poder llevar a cabo las recuperaciones de la base cuando ésta cae por algún motivo. 9.2.1 Utilización de los segmentos de rollback Como se ha indicado anteriormente, los segmentos de rollback se utilizan para poder deshacer los cambios de las transacciones para las que no se ha hecho un commit y para asegurar la consistencia de lectura. Para facilitar estas tareas, Oracle guarda por cada bloque una tabla de las transacciones que en cada momento se están ejecutando en el mismo. Además, por cada transacción, por cada nuevo cambio que se realiza en los bloques de datos se crea una entrada de rollback que se encadena a las anteriores entradas de rollback asignadas a esa misma transacción de forma ordenada. Gracias a este sistema, cada vez que se desea restaurar el estado de una transacción al realizar el rollback de la misma, simplemente se debe detectar en qué bloque del segmento de rollback se está almacenando los cambios producidos por dicha transacción mirando en las tablas de transacciones de los bloques del segmento de rollback y, una vez detectado el bloque, se deben seguir una a una las entradas de rollback de la transacción que se encuentran ordenadas y encadenadas, para ir restaurando los valores antiguos en los bloques de datos de forma ordenada. De la misma manera, se utiliza para facilitar la lectura consistente ya que se detecta el valor antiguo de los bloques navegando por la cadena de las entradas de rollback de la transacción. 9.3 Undo tablespace A partir de la versión 9i se puede usar un tablespace del tipo UNDO en vez de rollback segments. En 9i también se introdujo en paquete DBMS_FLASHBACK, un paquete que autorisa consultas a hacer referencia hacia datos del pasado. 10g ha hecho esa tecnología mas simple y mas flexible. Nota: Oracle usa internamente el SCN para seguir los cambios, así que cualquiera operación flashback que usa el tiempo debe estar internamente traducida en SCN , lo que puede resultar en un error de 3 sec © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 54 / 61 10Respaldo y reposición de la base de datos 10.1Respaldo lógicos Este tipo de backups copian el contenido de la BD pero sin almacenar la posición física de los datos. Se realizan con la herramienta export que copia los datos y la definición de la BD en un fichero en un formato interno de Oracle. Para realizar un export la BD debe estár abierta. Export asegura la consistencia en la tabla, aunque no entre tablas. Si se requiere consistencia entre todas las tablas de la BD entonces no se debe realizar ninguna transacción durante el proceso de export. Esto se puede conseguir si se abre la BD en modo RESTRICT. Entre las ventajas de efectuar un export están las siguientes: • Se puede detectar la corrupción en los bloques de datos, ya que el proceso de export fallará. • Protege de fallos de usuario, por ejemplo si se borra una fila o toda una tabla por error es fácil recuperarla por medio de un import. • Se puede determinar los datos a exportar con gran flexibilidad. • Se pueden realizar exports completos, incrementales y acumulativos. • Los backups relizados con export son portables y sirven como formato de intercambio de datos entre BDs y entre máquinas. Una de las desventajas de realizar backups lógicos con export es que son mucho más lentos que los backups físicos. 10.1.1 Imp y Exp Es la herramienta original de importación y exportación de datos en Oracle. 10.1.1.1 Parámetros de Exp Parámetro Defecto Descripción USERID indefinido el username/password del usuario que efectua el export. BUFFER dependiente del SO El tamaño en bytes del buffer utilizado. FILE expdat.dmp el nombre del fichero destino. GRANTS Yes indica si se exportan también los derechos. INDEXES Yes indica si se exportan también los índices. ROWS Yes indica si se exportan también las filas de las tablas, o sólo las definiciones de las tablas. CONSTRAINTS Yes indica si se exportan también las restricciones. COMPRESS Yes indica si se exporta en modo comprimido. FULL No indica si se exporta la BD entera. OWNER usuario actual una lista de usuarios cuyos objetos se quieren exportar. TABLES indefinido la lista de tablas a exportar. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 55 / 61 RECORDLENGTH dependiente del SO la longitud en bytes del registro del fichero. INCTYPE indefinido el tipo de export incremental. RECORD Yes indica si se anota el export incremental en las tablas SYS.INCVID y en SYS.INCEXP. PARFILE indefinido el fichero de parámetros. 10.1.1.2 Modos de Export Existen tres modos de realizar una exportación de datos: 10.1.1.2.1 Modo Tabla Exporta las definiciones de tabla, los datos, los derechos del propietario, los índices del propietario, las restricciones de la tabla y los disparadores asociados a la tabla. 10.1.1.2.2 Modo Usuario Exporta todo lo del modo de Tabla más los clusters, enlaces de BD, vistas, sinónimos privados, secuencias, procedimientos, etc. del usuario. 10.1.1.2.3 Modo tablespace Se pueden exportar tablespace de un solo, usando la herramientas exp. Pero primero hay que ponerla en lectura sola. Ejemplo: alter tablespace test_data read only; alter tablespace test_index read only; exp transport_tablespace=Y tablespaces=(test_data,test_index); imp TRANSPORT_TABLESPACE=Y datafile=(test_data.dbf,test_index.dbf); alter tablespace test_data read write; alter tablespace test_index read write; 10.1.1.2.4 Modo BD Entera Además de todo lo del modo Usuario, exporta los roles, todos los sinónimos, los privilegios del sistema, las definiciones de los tablespaces, las cuotas en los tablespaces, las definiciones de los segmentos de rollback, las opciones de auditoría del sistema, todos los disparadores y los perfiles. El modo BD entera puede ser dividido en tres casos: Completo, Acumulativo e Incremental. Estos dos últimos se toman menos tiempo que el completo, y permiten exportar sólo los cámbios en los datos y en las definiciones. Completo Exporta todas las tablas de la BD e inicializa la información sobre la exportación incremental de cada tabla. Después de una exportación completa, no se necesitan los ficheros de exportaciones acumulativas e incrementales de la BD anteriores. $ exp userid=system/manager full=y inctype=complete constraints=Y file=full_export_filename Acumulativo Exporta solo las tablas que han sido modificadas o creadas desde la última exportación Acumulativa o Completa, y registra los detalles de exportación para cada tabla exportada. Después de una exportación acumulativa, no se necesitan los ficheros de exportaciones incrementales de la BD anteriores. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 56 / 61 $ exp userid=system/manager full=y inctype=cumulative constraints=Y file=cumulative_export_filename Incremental Exporta todas las tablas modificadas o creadas desde la última exportación Incremental, Acumulativa o Completa, y registra los detalles de exportación para cada tabla exportada. Son interesantes en entornos en los que muchas tablas permanecen estáticas por periodos largos de tiempo, mientras que otras varían y necesitan ser copiadas. Este tipo de exportación es útil cuando hay que recuperar rápidamente una tabla borrada por accidente. $ exp userid=system/manager full=y inctype=incremental constraints=Y file=incremental_export_filename La política de exportación puede ser la siguiente: realizar una exportación completa el día 1 (por ejemplo el domingo), y luego realizar exportaciones incrementales el resto de la semana. De este modo de lunes a sábado sólo se exportarán aquellas tablas exportadas, ahorrando tiempo en el proceso. 10.1.2 DataPump Desde la versión 10g existe otra herramienta para importar y exportar datso: el DataPump. Es una herramienta más rápida y más flexible que exp e imp, y ofrece nuevas opciones como un API PL/SQL, y soporte para tablas externas. A la diferencia de imp y exp, DataPump guarda los archivos en el servidor mismo. Por eso se debe definir una carpeta de exportación a nivel de Oracle, y el usuario debe tener el derecho de escribir en esta carpeta. CONN sys/123@curso AS SYSDBA GRANT CREATE ANY DIRECTORY TO alumno; CREATE OR REPLACE DIRECTORY test_dir AS '/u02/oradata/'; GRANT READ, WRITE ON DIRECTORY test_dir TO alumno; 10.1.3 Importación y exportación de tablas Se usa el parámetro TABLE para mencionar las tablas a exportar. expdp alumno/ok@curso tables=EMPLEADOS,CITY directory=TEST_DIR dumpfile=EMP_CITY.dmp logfile=expdpEMP_CITY.log impdp alumno/ok@curso tables= EMPLEADOS,CITY directory=TEST_DIR dumpfile=EMP_CITY.dmp logfile=impdpEMP_CITY.log El parámetro TABLE_EXISTS_ACTION=APPEND permite importar datos en una tabla existente. 10.1.4 Importación y exportación de esquema Se usa el parámetro SCHEMAS para mencionar los esquemas a exportar. expdp alumno/ok@curso schemas=alumno directory=TEST_DIR dumpfile=alumno.dmp logfile=expdpalumno.log impdp alumno/ok@curso schemas=alumno directory=TEST_DIR dumpfile=alumno.dmp logfile=impdpalumno.log 10.1.5 Importación y exportación de base de datos Se usa el parámetro FULL para mencionar que queremos exportar la base de datos en completo. expdp system/123@curso full=Y directory=TEST_DIR dumpfile=curso.dmp logfile=expdpcurso.log impdp system/123@curso full=Y directory=TEST_DIR dumpfile=curso.dmp logfile=impdpcurso.log © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) 10.1.6 Pagina 57 / 61 Diversos Se puede usar la vista DBA_DATAPUMP_JOBS para ver los trabajos en ejecución: system@db10g> select * from dba_datapump_jobs; OWNER_NAME -----------------------------JOB_MODE -----------------------------SYSTEM FULL JOB_NAME -----------------------------STATE -----------------------------SYS_EXPORT_FULL_01 EXECUTING OPERATION -----------------------------DEGREE ATTACHED_SESSIONS ---------- ----------------EXPORT 1 1 Los parámetros INCLUDE y EXCLUDE se pueden usar para limitar el import/export a ciertos objetos. expdp alumno/ok@curso schemas=ALUMNO include=TABLE:"IN ('EMPLEADOS', 'CITY')" directory=TEST_DIR dumpfile=ALUMNO.dmp logfile=expdpALUMNO.log expdp alumno/ok@curso schemas=ALUMNO exclude=TABLE:"= 'MTM_LAB_PRESC2LAB_TEST'" directory=TEST_DIR dumpfile=ALUMNO.dmp logfile=expdpALUMNO.log expdp help=Y Export: Release 10.2.0.1.0 - Production on Martes, 26 Agosto, 2008 10:54:19 Copyright (c) 2003, 2005, Oracle. All rights reserved. La utilidad de exportación de pump de datos proporciona un mecanismo para transferir objetos de datos entre bases de datos Oracle. La utilidad se llama con el siguiente comando: Ejemplo: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp Puede controlar cómo se ejecuta la exportación introduciendo el comando 'expdp' seguido por varios parámetros. Para especificar los parámetros, utilice palabras clave: Formato: expdp KEYWORD=valor o KEYWORD=(valor1,valor2,...,valorN) Ejemplo: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott o TABLES=(T1:P1,T1:P2), si T1 es una tabla particionada USERID debe ser el primer parámetro de la línea de comandos. Palabra Clave Descripción (Valor por Defecto) -----------------------------------------------------------------------------ATTACH Se conecta al trabajo existente, p. ej. ATTACH [=nombre del trabajo]. COMPRESSION Reduce el tamaño del contenido del archivo de volcado donde sea válido los valores de las palabras clave son: (METADATA_ONLY) y NONE. CONTENT Especifica los datos que se van a descargar donde las palabras clave válidas son: (ALL), DATA_ONLY y METADATA_ONLY. DIRECTORY Objeto de directorio que se va a utilizar para los archivos de volcado y archivos log. DUMPFILE Lista de archivos de volcado de destino (expdat.dmp), p. ej. DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp. ENCRYPTION_PASSWORD Clave de contraseña para crear datos de columna cifrados. ESTIMATE Calcula las estimaciones de trabajo donde las palabras clave válidas son: (BLOCKS) y STATISTICS. ESTIMATE_ONLY Calcula las estimaciones de trabajo sin realizar la exportación. EXCLUDE Excluye tipos de objetos específicos, p. ej. EXCLUDE=TABLE:EMP. FILESIZE Especifica el tamaño de cada archivo de volcado en unidades de bytes. FLASHBACK_SCN SCN utilizado para volver a definir la instantánea de sesión. FLASHBACK_TIME Tiempo utilizado para obtener el SCN más cercano al tiempo especificado. FULL Exporta toda la base de datos (N). HELP Muestra los mensajes de ayuda (N). INCLUDE Incluye tipos de objetos específicos, p. ej. INCLUDE=TABLE_DATA. JOB_NAME Nombre del trabajo de exportación que se va a crear. LOGFILE Nombre del archivo log (export.log). NETWORK_LINK Nombre del enlace de base de datos remota al sistema de origen. NOLOGFILE No escribe en el archivo log (N). PARALLEL Cambia el número de workers activos para el trabajo actual. PARFILE Especifica el archivo de parámetros. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 58 / 61 QUERY SAMPLE SCHEMAS STATUS Cláusula de predicado utilizada para exportar un subjuego de una tabla. Porcentaje de datos para exportar; Lista de esquemas que se van a exportar (esquema de conexión). Estado del trabajo de frecuencia (seg) que se va a controlar donde el valor por defecto (0) mostrará el nuevo estado cuando esté disponible. TABLES Identifica una lista de tablas que se van a exportar - sólo un esquema. TABLESPACES Identifica una lista de tablespaces que se van a exportar. TRANSPORT_FULL_CHECK Verifica segmentos de almacenamiento de todas las tablas (N). TRANSPORT_TABLESPACES Lista de tablespaces desde los que se descargarán los metadatos. VERSION Versión de los objetos que se van a exportar donde las palabras clave válidas son: (COMPATIBLE), LATEST o cualquier versión de base de datos válida. Los siguientes comandos son válidos mientras se está en modo interactivo. Nota: Están permitidas las abreviaturas Comando Descripción -----------------------------------------------------------------------------ADD_FILE Agrega un archivo de volcado al juego de archivos de volcado. CONTINUE_CLIENT Vuelve al modo de registro. El trabajo se reiniciará si está inactivo. EXIT_CLIENT Sale de la sesión del cliente y deja el trabajo ejecutándose. FILESIZE Tamaño de archivo (bytes) por defecto para los comandos ADD_FILE posteriores. HELP Resume los comandos interactivos. KILL_JOB Desconecta y suprime un trabajo. PARALLEL Cambia el número de workers activos para el trabajo actual. PARALLEL=<número de workers>. START_JOB Inicia/reanuda el trabajo actual. STATUS Estado del trabajo de frecuencia (seg) que se va a controlar donde el valor por defecto (0) mostrará el nuevo estado cuando esté disponible. STATUS[=intervalo] STOP_JOB Cierra en orden la ejecución del trabajo y sale del cliente. STOP_JOB=IMMEDIATE realiza un cierre inmediato del trabajo de pump de datos. 10.2Respaldos físicos online y offline Este tipo de respaldo es la mejor elección para un plan de recuperación después de un desastre. Un respaldo 'offline', o en frío, necesita que la base de datos sea apagada, y permite un respaldo completo y integro de la base de datos (por lo tanto que se apagó normalmente). Este tipo de respaldo sirve de base a los respaldos 'online' o caliente. Los respaldos 'online' permiten hacer respaldos mientras el sistema está en uso. Se pueden hacer respaldos diferenciales, o acumulativos. Solo están disponible si la base de datos corre en modo ARCHIVELOG. Este tipo de respaldo/restauración será visto en un curso avanzado y no hace parte de este curso básico. 10.2.1 Respaldos físicos en frío El primer paso es parar la BD con el comando shutdown normal. Si la BD se tiene que parar con abort debe rearrancarse con el modo RESTRICT y vuelta a parar en modo inmediate o normal. Después se copian los ficheros de datos, los de redo log y los de control, además de los redo log archivados y aún no copiados. Una buena idea es automatizar todo este proceso con los scripts correspondientes, de modo que no nos olvidemos de copiar ningún fichero. Los archivos que hay que respaldar son: ● Los data file ● Los control files ● init.ora, config.ora, spfile.ora ● Si la base de datos es en modo NOARCHIVELOG, los online redo logs © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) ● Pagina 59 / 61 Opcionalmente el archivo de clave (orapwSID) Como este tipo de backup es una copia de los ficheros de la BD, si estos contienen algún tipo de corrupción, la traspasaremos a la copia de seguridad sin detectarla. Por esto es importante comprobar las copias de seguridad. 10.2.2 Respaldos en caliente (online) Este tipo de respaldo es la mejor elección para un plan de recuperación después de un desastre. Los respaldos 'online' permiten hacer respaldos mientras el sistema está en uso. Se pueden hacer respaldos diferenciales, o acumulativos. Solo están disponible si la base de datos corre en modo ARCHIVELOG. Este tipo de respaldo/restauración será visto en un curso avanzado y no hace parte de este curso básico. Los respaldos en caliente deben siempre tener como base un respaldo en frío. Sin respaldo correcto y completo en frío, no se podrá hacer una reposición usando los respaldos hechos en caliente. Para hacer un respaldo en caliente, cada tablespace debe ser cambiado a modo de backup antes de iniciar el respaldo. Ejemplo: ALTER TABLESPACE xyz BEGIN BACKUP; cp xyfFile1 /backupDir/ ALTER TABLESPACE xyz END BACKUP; Desde 10g es también posible poner todos los tablespace en modo de backup con un solo comando: ALTER DATABASE BEGIN BACKUP; No olviden de guardar también una copia de todos los árchive logs' y de los control files. ALTER SYSTEM SWITCH LOGFILE; -- Force log switch to update control file headers ALTER DATABASE BACKUP CONTROLFILE TO '/backupDir/control.dbf'; cp /camino_hacia_los_logs/*.arc /camino_de_backup/ Si su base de datos termino anormalmente (crash) mientras uno o varios tablespaces estaban en modo de backup, hay que mencionar a Oracle de termniar el modo de backup cuando la base de datos es montada (no abierta). ALTER DATABASE END BACKUP; 10.3Uso de RMAN Es la herramienta de Oracle para gestionar los respaldos/restauración via comando en línea (­­> scripts) y manejando el historial en una base de datos de Oracle. El uso de está herramienta es fuera del alcanze de este curso. 10.4Restauración Las restauraciones más fácil son las restauraciones a partir de un respaldo lógico, o de un respaldo 'offline'. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) 10.4.1 Pagina 60 / 61 Restauración a partir de un respaldo en frío 1. Copia los archivos respaldados exactamente el la misma carpeta que la de origen. Si las carpetas son iguales, ya puedes arrancar la base de datos. 2. Si el servicio no existe ya, y no tienes copia del archivo de clave, crearlo usando el comando oradim: oradim ­NEW ­SID IGUAL_QUE_EL_RESPALDADO ­pfile CARPETA\init.ora ­syspass claveSys 3. Si algunos archivos de datos han sido movidos, hay que reiniciar Oracle en modo MOUNT: linux>set oracle_sid= mySID linux>sqlplus /nolog SQL> connect sys/clave as sysdba SQL> startup mount; (opcionalmente puedes mencionar el parámetro spfile=’carpeta\spfileSID.ora’) 3b. Y renombrar los archvos de datos movidos SQL> alter database rename file ‘carpeta_vieja\DATAFILE_1.ora’ to ‘carpeta_nueva\DATAFIE_1.ora’; SQL>alter database datafile ‘carpeta_nueva\DATAFILE1.ora’ online; SQL>alter database open; 10.4.2 Restauración hacía un cierto punto el en pasado Las restauraciones más fácil son las restauraciones a partir de un respaldo lógico, o de un respaldo 'offline'. En caso de reposición desde un respaldo en caliente, será necesario aplicar los archive logs, para recuperar todas las transacciones ejecutadas (y confirmadas con un commit). Las tablas de FLASHBACK permiten recuperar fácilmente tablas botadas o registros borrados sin necesidad de hace una restauración completa de la base de datos. Desde 10g es muy fácil crear respaldos y restaurar datos usando en Enterprise Manager. © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida Curso de administración de Oracle 10g (10.2) Pagina 61 / 61 Ver detalles en : http://examples.oreilly.com/unixbr/oracle.html © Copyright Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida