Manual del curso de Administración de Oracle nivel basico

61
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 

Transcript of Manual del curso de Administración de Oracle nivel basico

Page 1: Manual del curso de Administración de Oracle nivel basico

Curso de administración deOracle 10g (10.2)Nivel Intermedio

Manual del alumno

© Copyright  Cédric Simon, 2008 Versión 1.0 Reproducción prohibida 

Page 2: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 2 / 61

1 Índice1 Í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 

Page 3: Manual del curso de Administración de Oracle nivel basico

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 

Page 4: Manual del curso de Administración de Oracle nivel basico

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 

Page 5: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 5 / 61

1 Introducción al curso1.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 tuspreguntas a [email protected] .

© Copyright  Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida 

Page 6: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 6 / 61

2 Instalación de Oracle 10g bajo LinuxEn 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 Requisitos materiales   2.1.1.1 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/meminfoPara verificar la memoria disponible: # grep SwapTotal /proc/meminfoPara 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 - rootcd /rootdd if=/dev/zero of=/root/tmpswp bs=1k count=500000chmod 600 tmpswpmkswap tmpswpswapon tmpswpgrep 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 /tmpPara verificar el disco total disponible: # df -k /2.1.1.3 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 

Page 7: Manual del curso de Administración de Oracle nivel basico

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 128kernel.shmmni = 4096kernel.shmall = 2097152kernel.shmmax = 2147483648fs.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 = 2097152kernel.shmmax = 2147483648kernel.shmmni = 4096kernel.sem = 250 32000 100 128fs.file-max = 65536net.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 -a, que mostrará algo similar a esto:

core file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedfile size (blocks, -f) unlimitedmax locked memory (kbytes, -l) unlimitedmax memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8stack size (kbytes, -s) unlimitedcpu time (seconds, -t) unlimitedmax user processes (-u) 2047virtual memory (kbytes, -v) 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 nproc 2047hard nproc 16384soft nofile 1024hard nofile 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 /etc/pam.d/login:session required /lib/security/pam_limits.so

pam_limits.so es el módulo PAM que procesa la configuración del fichero /etc/security/limits.conf que cambiamos antes.

© Copyright  Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida 

Page 8: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 8 / 61

2.1.2 Requisitos de programas   2.1.2.1 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: # ifconfigPara ver el nombre de la machina: # hostnamePara 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/groupgrep dba /etc/groupgrep nobody /etc/groupid oracleid nobody

© Copyright  Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida 

Page 9: Manual del curso de Administración de Oracle nivel basico

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 oraclepasswd oracle

Si no han sidas creadas, crea la carpeta de inicio de oracle:md /home/oraclechown oracle oraclechgrp 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 -p /u01/app/oraclemkdir -p /u02/oradatachown -R oracle:oinstall /u01 /u02chmod -R 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 directoriomkdir -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_BASEORACLE_HOME=/u01/app/oracle/product/10.2/db_1; export ORACLE_HOMEORACLE_SID=test; export ORACLE_SIDORACLE_TERM=xterm; export ORACLE_TERMORACLE_OWNER=oracle; export ORACLE_OWNER#TNS_ADMIN=/home/oracle/config/10.2 export TNS_ADMINNLS_LANG=SPANISH_SPAIN.WE8ISO8859P1; export NLS_LANG#ORA_NLS10=${ORACLE_HOME}/db_1/nls/data; export ORA_NLS10CLASSPATH=${CLASSPATH}:${ORACLE_HOME}/jdbc/lib/classes12.zipLD_LIBRARY_PATH=${ORACLE_HOME}/lib; export LD_LIBRARY_PATHDISABLE_HUGETLBFS=1; export DISABLE_HUGETLBFSTEMP=/tmp; export TEMPTMPDIR=/tmp; export TMPPATH=$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 +suexport DISPLAY=:0.0gunzip ship.db.cpio.gzcpio -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 

Page 10: Manual del curso de Administración de Oracle nivel basico

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-releaseRed 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

● Directorio de inventario:/home/oracle/oraInventory

● Grupo sistema operativodba

Pulsa Siguiente.

Seleccionar tipo de Tipo de Instalación

Selecciona Enterprise Edition o Standard Edition. 

● 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.

Especificar Ubicación de los Archivos

Ejemplo de valores  a utilizar

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 

Page 11: Manual del curso de Administración de Oracle nivel basico

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

Asistente de  Configuración de Base de Datos

Seleccionamos por ejemplo "Uso General". Pulsa Siguiente.Nombre de la Base de Datos Global: test. nombre_de_la_maquine

SID: testPulsa 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.Muestra el resumen de almacenamiento de datos. Pulsa Siguiente.

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_maquineIdentificador del Sistema (SID): test

Nombre de Archivo de Parámetros del Servidor: /u01/app/oracle/product/10.2/db_1/dbs/spfiletest.oraDatabase 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 

Page 12: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.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.

2.2.2 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 all para ligar de nuevo las librería, y todo debería correr bien. 

2.2.3 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:Ntest:/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 

Page 13: Manual del curso de Administración de Oracle nivel basico

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 1fi

# 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 1esacexit 0

Hazlo ejecutable : chmod 755 oracleAñadelo a los niveles de ejecución ln -s /etc/init.d/oracle /etc/rc.d/rc2.d/S99oracleln -s /etc/init.d/oracle /etc/rc.d/rc3.d/S99oracleln -s /etc/init.d/oracle /etc/rc.d/rc5.d/S99oracleln -s /etc/init.d/oracle /etc/rc.d/rc0.d/K01oracleln -s /etc/init.d/oracle /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:sucd /usr/sbinln -s /etc/init.d/oracle rcoracle

Ahora ya deberíamos poder ejecutar o parar oracle como root con : rcoracle startrcoracle stop

Si queremos hacerlo manual, arrancamos el listener TNS: lsnrctl start

Para ver si el listener se está ejecutando podemos hacer ps -ef | grep lsnr, o lsnrctl status. 

© Copyright  Cédric Simon, 2008­ Versión 1.2 Reproducción prohibida 

Page 14: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 14 / 61

2.2.5 Comprobación   Compruebo que servicios estan a la escucha: nombre_de_la_maquina:~# netstat -l| grep "5500\|5560\|5620"tcp 0 0 *:5560 *:* LISTENtcp 0 0 *:5500 *:* 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 utilizarsqlplus /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 

Page 15: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 15 / 61

Copyright (c) 1982, 2004, Oracle. All rights reserved.

SQL> CONNECT SYS/SolJava AS SYSDBAConectado.

Si aparece un mensaje ORA-12705: invalid or unknown NLS parameter value specified

ejecutaunset ORA_NLS10cat /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 oinstallusermod alumno -G dba, oinstall

luego:su alumno -

Si aparece un mensaje ERROR:ORA-010134: ORACLE not avaliable

Inicia Oracle

2.2.5.3 Iniciar Oracle   

2.2.5.3.1 Como rootrcoracle 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

haciaORACLE_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 

Page 16: Manual del curso de Administración de Oracle nivel basico

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 nombresNAMES.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 

Page 17: Manual del curso de Administración de Oracle nivel basico

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 listenerLISTENER = (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 LISTENERSID_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 LISTENERLOG_DIRECTORY_LISTENER = /home/oracle/config

Si has cambiado la variable TNS_ADMIN, quiza quieras reiniciar el Listener: lsnrctl stoplsnrctl 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 aliasAttempting 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 

Page 18: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 18 / 61

2.4.1 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 

Page 19: Manual del curso de Administración de Oracle nivel basico

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 

Page 20: Manual del curso de Administración de Oracle nivel basico

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 

Page 21: Manual del curso de Administración de Oracle nivel basico

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 datosTiene 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 procesosLa 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 

Page 22: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 22 / 61

4.2.1 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 

Page 23: Manual del curso de Administración de Oracle nivel basico

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 procesos4. 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 

Page 24: Manual del curso de Administración de Oracle nivel basico

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 

Page 25: Manual del curso de Administración de Oracle nivel basico

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_LOG_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 

Page 26: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 26 / 61

5 Creación de base de datos5.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 

Page 27: Manual del curso de Administración de Oracle nivel basico

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 

Page 28: Manual del curso de Administración de Oracle nivel basico

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 

Page 29: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 29 / 61

5.2.6 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 

Page 30: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 30 / 61

5.2.8 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 

Page 31: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 31 / 61

5.2.10 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 

Page 32: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 32 / 61

5.2.12 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 

Page 33: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 33 / 61

5.2.14 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 

Page 34: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 34 / 61

5.2.16 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 

Page 35: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 35 / 61

6 Manejo de los tablespaces6.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 Tablespaces específicos de Oracle   6.2.1.1 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 Manejo de extents   6.3.1.1 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 

Page 36: Manual del curso de Administración de Oracle nivel basico

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 extentsPuede ser automatica, o fija a cierto numero de kb.

6.3.1.1.2 Gestíon de espacioPuede ser automatica o manual. El manual existe principalmente por compatibilidad con versiones anteriores.

6.3.1.1.3 Activar registroSi 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 bloqueSe 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 inicialTamaño inicial del extent.

6.3.1.2.2 Siguiente tamañoTamaño del proximo extent en caso que se necesita un nuevo.

6.3.1.2.3 Tamaño mínimoEn 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 porcentajeCada nuevo extent será de tanto porcentaje mas grande que el último.

6.3.1.2.5 Numero minimoMinimo de extents a crear al inicio.

6.3.1.2.6 MaximoSi hay un maximo de extents que se pueden crear.

6.3.1.2.7 Activar registroSi 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 

Page 37: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 37 / 61

6.3.1.2.8 Tamaño de bloqueSe 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 

Page 38: Manual del curso de Administración de Oracle nivel basico

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 

Page 39: Manual del curso de Administración de Oracle nivel basico

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 

Page 40: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 40 / 61

7 Creación de objetos7.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 Modificación   ALTER VIEW [schema.]view COMPILE;ALTER VIEW [schema.]view ADD out_of_line_constraint;ALTER VIEW [schema.]view MODIFY CONSTRAINT constraint {RELY | NORELY};ALTER VIEW [schema.]view DROP CONSTRAINT constraint;ALTER VIEW [schema.]view DROP PRIMARY KEYALTER VIEW [schema.]view 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 

Page 41: Manual del curso de Administración de Oracle nivel basico

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 secuencia2. 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 

Page 42: Manual del curso de Administración de Oracle nivel basico

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) ]] | [ [NOT] SUBSTITUTABLE AT ALL LEVELS ]] STORE AS storage_table [RETURN AS {LOCATOR|VALUE} ]

7.3.2 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 

Page 43: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 43 / 61

Oracle will resolve object names in the following order:

current userprivate synonympublic 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 

Page 44: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 44 / 61

8 Manejo de usuarios8.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 

Page 45: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 45 / 61

8.1.1 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 USERSTEMPORARY 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 

Page 46: Manual del curso de Administración de Oracle nivel basico

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.

INSERTPuede insertar filas en una tabla o vista. Puede especificarse las columnas donde se permite insertar dentro de la tabla o vista.

UPDATEPuede 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 

Page 47: Manual del curso de Administración de Oracle nivel basico

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 

Page 48: Manual del curso de Administración de Oracle nivel basico

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 statemente.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 

Page 49: Manual del curso de Administración de Oracle nivel basico

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 

Page 50: Manual del curso de Administración de Oracle nivel basico

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 Me.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 

Page 51: Manual del curso de Administración de Oracle nivel basico

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 

Page 52: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 52 / 61

9 Manejo de transacciones9.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 

Page 53: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 53 / 61

dbms_output.put_line('Error en la transaccion:'||SQLERRM); dbms_output.put_line('Se deshacen las modificaciones); ROLLBACK; END;

    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 

Page 54: Manual del curso de Administración de Oracle nivel basico

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 Yesindica 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 

Page 55: Manual del curso de Administración de Oracle nivel basico

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 Yesindica 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 tablespaceSe 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=Yfile=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 

Page 56: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 56 / 61

$ exp userid=system/manager full=y inctype=cumulative constraints=Yfile=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=Yfile=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 SYSDBAGRANT 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.logimpdp 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.logimpdp 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 

Page 57: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 57 / 61

10.1.6 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_NAME OPERATION------------------------------ ------------------------------ ------------------------------JOB_MODE STATE DEGREE ATTACHED_SESSIONS------------------------------ ------------------------------ ---------- -----------------SYSTEM SYS_EXPORT_FULL_01 EXPORTFULL EXECUTING 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 datosentre 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' seguidopor 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 

Page 58: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 58 / 61

QUERY Cláusula de predicado utilizada para exportar un subjuego de una tabla.SAMPLE Porcentaje de datos para exportar;SCHEMAS Lista de esquemas que se van a exportar (esquema de conexión).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.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 

Page 59: Manual del curso de Administración de Oracle nivel basico

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 

Page 60: Manual del curso de Administración de Oracle nivel basico

Curso de administración de Oracle 10g (10.2) Pagina 60 / 61

10.4.1 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= mySIDlinux>sqlplus /nologSQL> connect sys/clave as sysdbaSQL> startup mount; (opcionalmente puedes mencionar el parámetro  spfile=’carpeta\spfileSID.ora’)

3b. Y renombrar los archvos de datos movidosSQL> 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 

Page 61: Manual del curso de Administración de Oracle nivel basico

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