Reproducción prohibida 

Versión 1.1

© Copyright  Cédric Simon, 2008

 SolucionJava.com

Manual del alumno

  Ing. Cedric Simon – Tel: 2268 0974 – Cel: 8888 2387 – Email:   c e d r i c @ s o l u c i o n j a v a . c o m  – Web: www.solucionjava.com

Curso de
administración de
Oracle 10g (10.2)

Curso de administración de Oracle 10g (10.2)

Pagina 2 / 97

1 Índice
1 Índice..................................................................................................................................................................................2
1 Introducción al curso.........................................................................................................................................................8
1.1 Objetivo de este curso................................................................................................................................................8
1.2 Manual del alumno.....................................................................................................................................................8
1.3 Requisitos para atender a este curso........................................................................................................................8
1.4 Soporte después del curso..........................................................................................................................................8
2 Introducción a las bases de datos......................................................................................................................................9
2.1 Objetivo del capítulo..................................................................................................................................................9
2.2 Que es una base de datos...........................................................................................................................................9
2.3 Componentes de una base de datos..........................................................................................................................9
2.4 Cliente/Servidor..........................................................................................................................................................9
3 Terminología y conceptos................................................................................................................................................11
3.1 Objetivo del capítulo................................................................................................................................................11
3.2 Términos específicos................................................................................................................................................11
3.2.1 Tabla....................................................................................................................................................................11
3.2.2 Registro...............................................................................................................................................................11
3.2.3 Campo.................................................................................................................................................................11
3.2.4 Vista....................................................................................................................................................................11
3.2.5 Procedimiento......................................................................................................................................................11
3.2.6 Función................................................................................................................................................................11
3.2.7 Paquete................................................................................................................................................................11
3.2.8 Secuencia.............................................................................................................................................................11
3.2.9 Disparador...........................................................................................................................................................12
3.2.10 Esquema............................................................................................................................................................12
3.2.11 Sinónimo...........................................................................................................................................................12
3.2.12 Indice.................................................................................................................................................................12
3.3 Abreviaciones............................................................................................................................................................12
3.3.1 DBMS..................................................................................................................................................................12
3.3.2 RDBMS ..............................................................................................................................................................12
3.3.3 SQL.....................................................................................................................................................................12
3.3.4 DDL.....................................................................................................................................................................12
3.3.5 DML....................................................................................................................................................................12
3.3.6 ODBC..................................................................................................................................................................13
3.3.7 ADO....................................................................................................................................................................13
3.3.8 JDBC...................................................................................................................................................................13
3.4 Conceptos..................................................................................................................................................................13
3.4.1 OLTP...................................................................................................................................................................13
3.4.2 DWH...................................................................................................................................................................13
3.4.3 Replicación..........................................................................................................................................................13
3.4.4 Multi-tiers............................................................................................................................................................13
4 Servidores SQL.................................................................................................................................................................14
4.1 Objetivo del capítulo................................................................................................................................................14
4.2 Servidores SQL comerciales....................................................................................................................................14
4.2.1 Oracle..................................................................................................................................................................14
4.2.2 MS SQL Servidor................................................................................................................................................14
4.2.3 Teradata...............................................................................................................................................................15
© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 3 / 97

4.2.4 DB2 y Sybase......................................................................................................................................................15
4.3 Servidores SQL libres..............................................................................................................................................15
4.3.1 MySQL................................................................................................................................................................15
4.3.2 PostGreSQL........................................................................................................................................................15
4.3.3 Firebird................................................................................................................................................................15
5 Instalación de Oracle 10g bajo Linux.............................................................................................................................16
5.1 Requisitos..................................................................................................................................................................16
5.1.1 Requisitos materiales...........................................................................................................................................16
5.1.2 Requisitos de programas.....................................................................................................................................18
5.1.3 Red......................................................................................................................................................................18
5.1.4 Grupos y usuarios................................................................................................................................................18
5.2 Iniciar la instalación.................................................................................................................................................19
5.2.1 Pantallas de la instalación ..................................................................................................................................20
5.2.2 Error ORA-12547: connection lost / conexión perdida......................................................................................22
5.2.3 Mensaje de fin de instalación..............................................................................................................................22
5.2.4 Arrancar y parar Oracle.......................................................................................................................................22
5.2.5 Comprobación.....................................................................................................................................................24
5.3 Oracle Enterprise Manager (OEM).......................................................................................................................25
5.4 Oracle Net.................................................................................................................................................................26
5.4.1 netca....................................................................................................................................................................28
6 Instalación de Oracle 10g bajo Windows........................................................................................................................29
6.1 Requisitos..................................................................................................................................................................29
6.2 Instalación.................................................................................................................................................................29
7 Arquitectura de la base de datos Oracle 10g...................................................................................................................30
7.1 Las instancias............................................................................................................................................................32
7.1.1 init.ora.................................................................................................................................................................33
7.1.2 spfile.ora..............................................................................................................................................................33
7.2 La base de datos........................................................................................................................................................33
7.2.1 Tablespace...........................................................................................................................................................33
7.2.2 Las unidades de almacenamiento de Oracle ......................................................................................................34
7.2.3 Componentes de un bloque.................................................................................................................................34
7.3 Los procesos..............................................................................................................................................................35
7.3.1 Procesos de Oracle..............................................................................................................................................35
7.4 Otros archivos...........................................................................................................................................................36
7.4.1 Redo Logs...........................................................................................................................................................36
7.4.2 Control file..........................................................................................................................................................36
7.4.3 Trace y alert files.................................................................................................................................................37
7.5 Oracle Managed Files (OMF).................................................................................................................................37
8 Aplicación de un parche..................................................................................................................................................38
8.1 Selección del parche.................................................................................................................................................38
8.2 Aplicación del parche...............................................................................................................................................38
9 Creación del modelo de datos basados en las necesidades.............................................................................................39
9.1 Objetivo del capítulo................................................................................................................................................39
9.2 Análisis de requisitos................................................................................................................................................39
9.3 Diagramas Entidad Relación...................................................................................................................................39
9.4 Normalización del modelo de datos........................................................................................................................40
9.4.1 Primer forma normal...........................................................................................................................................40
© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 4 / 97

9.4.2 Secunda forma normal........................................................................................................................................41
9.4.3 Tercera forma normal..........................................................................................................................................41
9.5 Integridad referencial..............................................................................................................................................41
9.5.1 Clave primaria.....................................................................................................................................................41
9.5.2 Clave secundaria.................................................................................................................................................41
9.6 Restricciones de dominio.........................................................................................................................................42
9.6.1 Not null................................................................................................................................................................42
9.6.2 Check constraints................................................................................................................................................42
9.6.3 Unique constraints...............................................................................................................................................42
9.7 Tipos de datos...........................................................................................................................................................42
9.7.1 Tipos generales....................................................................................................................................................42
9.7.2 Tipos de datos en Oracle.....................................................................................................................................42
10 Creación de base de datos..............................................................................................................................................47
10.1 En que consiste la creación de la base de datos...................................................................................................47
10.2 Usando el asistente (dbca)......................................................................................................................................47
10.2.1 Bienvenido........................................................................................................................................................47
10.2.2 Selección de operación......................................................................................................................................47
10.2.3 Selección de la plantilla.....................................................................................................................................49
10.2.4 Identificador de BD...........................................................................................................................................49
10.2.5 Gestión de la BD...............................................................................................................................................51
10.2.6 Contraseñas.......................................................................................................................................................52
10.2.7 Sistema de archivo............................................................................................................................................52
10.2.8 Ubicación de los archivos.................................................................................................................................53
10.2.9 Opciones de recuperación de bases de datos.....................................................................................................53
10.2.10 Componentes de la base de datos....................................................................................................................54
10.2.11 Archivos de Comandos Personalizados..........................................................................................................54
10.2.12 Memoria..........................................................................................................................................................55
10.2.13 Tamaño............................................................................................................................................................55
10.2.14 Juego de caracteres..........................................................................................................................................56
10.2.15 Modo de conexión...........................................................................................................................................56
10.2.16 Almacenamiento de la base de datos...............................................................................................................57
10.2.17 Opciones de creación de base de datos...........................................................................................................57
10.3 Creación manual....................................................................................................................................................57
11 Manejo de los tablespaces..............................................................................................................................................58
11.1 Que son los tablepaces?..........................................................................................................................................58
11.2 Los tipos de tablespaces.........................................................................................................................................58
11.2.1 Tablespaces específicos de Oracle....................................................................................................................58
11.2.2 Tablespaces de los datos de usuarios................................................................................................................58
11.3 Atributos de un tablespace....................................................................................................................................58
11.3.1 Manejo de extents..............................................................................................................................................58
11.3.2 Tablespace de archivo grande...........................................................................................................................60
11.3.3 Archivos............................................................................................................................................................60
11.3.4 Estado................................................................................................................................................................60
11.3.5 Tipo...................................................................................................................................................................60
11.4 Planificación de los tablespace..............................................................................................................................60
11.4.1 Separación de datos según el tipo.....................................................................................................................60
11.4.2 Separación de datos según el uso ....................................................................................................................60
11.4.3 Separación de datos según el tamaño...............................................................................................................60
11.5 Sintaxis....................................................................................................................................................................61
11.5.1 Creación............................................................................................................................................................61
11.5.2 Modificación.....................................................................................................................................................62
11.5.3 Eliminación.......................................................................................................................................................62

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 5 / 97

11.6 Ejercicios.................................................................................................................................................................62
12 DML - Sentencias de manipulación de datos...............................................................................................................63
12.1 Objetivo del capítulo..............................................................................................................................................63
12.2 Insert........................................................................................................................................................................63
12.3 Update.....................................................................................................................................................................63
12.4 Delete.......................................................................................................................................................................63
12.5 Commit y rollback..................................................................................................................................................63
12.6 Select........................................................................................................................................................................64
12.7 Where......................................................................................................................................................................64
12.8 Count.......................................................................................................................................................................65
12.9 Sum, avg, min, max................................................................................................................................................65
12.10 Distinct...................................................................................................................................................................65
12.11 Order by................................................................................................................................................................65
12.12 Uniones .................................................................................................................................................................65
12.13 Subconsultas.........................................................................................................................................................66
12.14 Agrupaciones........................................................................................................................................................66
12.15 Operadores SQL ..................................................................................................................................................66
12.16 La ausencia de valor: NULL ..............................................................................................................................68
12.17 Rendimiento..........................................................................................................................................................68
13 Creación de objetos........................................................................................................................................................69
13.1 Esquema..................................................................................................................................................................69
13.2 Tablas......................................................................................................................................................................69
13.2.1 Creación............................................................................................................................................................69
13.3 Modificación...........................................................................................................................................................70
13.3.1 Eliminación.......................................................................................................................................................71
13.3.2 External tables...................................................................................................................................................72
13.3.3 Ejercicios...........................................................................................................................................................72
13.4 Indices......................................................................................................................................................................72
13.4.1 Creación............................................................................................................................................................72
13.4.2 Modificación.....................................................................................................................................................73
13.4.3 Eliminación.......................................................................................................................................................75
13.4.4 Ejercicios...........................................................................................................................................................75
13.5 Vistas.......................................................................................................................................................................75
13.5.1 Creación............................................................................................................................................................75
13.5.2 Modificación.....................................................................................................................................................75
13.5.3 Eliminación.......................................................................................................................................................75
13.5.4 Ejercicios...........................................................................................................................................................76
13.6 Secuencias...............................................................................................................................................................76
13.6.1 Creación............................................................................................................................................................76
13.6.2 Modificación.....................................................................................................................................................76
13.6.3 Eliminación.......................................................................................................................................................76
13.6.4 Ejercicios...........................................................................................................................................................76
13.7 Procedimientos, funciones, paquetes, disparadores............................................................................................76
13.7.1 Procedimientos..................................................................................................................................................76
13.7.2 Funciones..........................................................................................................................................................76
13.7.3 Paquetes.............................................................................................................................................................77
© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 6 / 97

13.7.4 Disparadores......................................................................................................................................................77
13.7.5 Ejercicios...........................................................................................................................................................78
13.8 Vistas materializadas.............................................................................................................................................78
13.8.1 Creación............................................................................................................................................................78
13.8.2 Modificación.....................................................................................................................................................79
13.8.3 Eliminación.......................................................................................................................................................79
13.9 Sinónimos................................................................................................................................................................79
13.9.1 Creación............................................................................................................................................................79
13.9.2 Eliminación.......................................................................................................................................................80
13.9.3 Ejercicios...........................................................................................................................................................80
14 Manejo de usuarios........................................................................................................................................................81
14.1 Cuentas de usuarios...............................................................................................................................................81
14.1.1 Usuarios especiales...........................................................................................................................................82
14.1.2 Creación de cuentas...........................................................................................................................................82
14.1.3 Modificación.....................................................................................................................................................82
14.1.4 Eliminación.......................................................................................................................................................83
14.1.5 Ejercicios...........................................................................................................................................................83
14.2 Privilegios de sistema.............................................................................................................................................83
14.3 Privilegios de objetos..............................................................................................................................................83
14.4 Otorgar/quitar privilegios.....................................................................................................................................84
14.5 Roles.........................................................................................................................................................................85
14.6 Quotas......................................................................................................................................................................86
14.7 Uso de perfiles.........................................................................................................................................................86
14.8 Listar Privilegios Otorgados.................................................................................................................................87
14.9 Cambiarse a otro usuario......................................................................................................................................88
15 Manejo de transacciones...............................................................................................................................................89
15.1 Transacciones.........................................................................................................................................................89
15.2 Rollback segments..................................................................................................................................................90
15.2.1 Utilización de los segmentos de rollback..........................................................................................................90
15.3 Undo tablespace......................................................................................................................................................90
15.3.1 Flashback Query................................................................................................................................................91
15.3.2 Flashback Version Query..................................................................................................................................91
15.4 Flashback Transaction Query...............................................................................................................................92
15.5 Flashback Table......................................................................................................................................................93
15.6 Flashback Drop (Recycle Bin)...............................................................................................................................94
15.6.1 Flashback Database...........................................................................................................................................95
16 Respaldo y reposición de la base de datos.....................................................................................................................97
16.1 Respaldo lógicos......................................................................................................................................................97
16.1.1 Imp y Exp..........................................................................................................................................................97
16.1.2 DataPump..........................................................................................................................................................99
16.1.3 Importación y exportación de tablas.................................................................................................................99
16.1.4 Importación y exportación de esquema.............................................................................................................99
16.1.5 Importación y exportación de base de datos.....................................................................................................99
16.1.6 Diversos...........................................................................................................................................................100
16.2 Respaldos físicos online y offline.........................................................................................................................101
16.2.1 Respaldos físicos en frío.................................................................................................................................101
16.3 Uso de RMAN.......................................................................................................................................................102
© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 7 / 97

16.4 Restauración.........................................................................................................................................................102
16.4.1 Restauración a partir de un respaldo en frío....................................................................................................102

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 8 / 97

1 Introducción al curso
1.1  Objetivo de este curso 
Este curso brindará al alumno el conocimiento necesario para administrar una base de datos Oracle 10g. 

1.2  Manual del alumno 
Este manual del alumno es una ayuda para el alumno, para tenga un recuerdo del curso. Este manual 
contiene un resumen de las materias que se van a estudiar durante el curso, pero el alumno debería de 
tomar notas personales para completas este manual.

1.3  Requisitos para atender a este curso 
Se requiere un conocimiento del lenguaje SQL.

1.4  Soporte después del curso 
Si tienes preguntas sobre la materia del curso en tus ejercicios prácticos, puedes escribir tus
preguntas a cedric@solucionjava.com .

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 9 / 97

2 Introducción a las bases de datos
2.1  Objetivo del capítulo 
Al fin de este capítulo el alumno tendrá una idea de lo que es una base de datos y de sus componentes.

2.2  Que es una base de datos 
Una base de datos es uno o varios archivos a donde la información está registrada de forma 
estructurada, en tablas. Estas tablas contienen registros. Los registros están compuesto de campos bien 
identificados.
La base de datos más simple es un archivo texto, correspondiendo a una tabla, a donde los campos son 
delimitados por un carácter (como una coma) o por posición (tamaño fijo).
Existen varios programas profesionales que permiten manejar de bases de datos que contienen varias 
tablas relacionadas. Existen programas autónomos, que se pueden ejecutar en una misma computadora, 
como MS Access, y otros que funcionan como cliente­servidor, como MySQL, Oracle, Firebird, DB2, MS 
SQL Servidor,...
Existen también bases de datos ‘embarcadas’, que son base de datos incluidas en una aplicación, sin 
servidor.

2.3  Componentes de una base de datos 
Los componente de base de una base de datos son las tabla, que contienen registros (líneas) hechos de 
campos (columnas). Cada campo es de un tipo definido, y todos los registros de una misma tabla tienen 
los mismos campos con valores propias.
Las tablas están guardadas en archivos. Dependiendo de la base de datos, un archivo puede contener 
varias tablas o no, y/o una tabla puede extender sobre varios archivos o no.
Otros componentes que pueden hacer parte de una base de datos, pero que no son presente en todas (y 
que no vamos a ver en detalle en este curso) , son entre otras las vistas, las funciones, las 
procedimientos, las secuencias, los disparadores, etc...
Con los servidores corren también uno o varios servicios, dependiendo de la base de datos.

2.4  Cliente/Servidor 
Ciertas base de datos, como MS­Access, están diseñadas para funcionar sola, o con pocos clientes. Los 
archivos de la base de datos pueden ser compartido entre varios clientes, pero cada cliente tiene que 
manejar los archivos enteros. Si se hace una encuesta sobre una tabla, tienen que leer toda la tabla y 
luego filtrar, lo que ocasiona mucho trafico de red, y muchos IO en el disco.
Con las bases de datos de tipo servidor, todos los clientes piden los datos al servidor que les regresa solo 
el resultado de la encuesta. El servidor hace el trabajo en local y devuelve solo la respuesta, lo que es 
mucho mas eficiente. También se pueden utilizar pooles des conexiones para disminuir la necesidad de 
abrir y cerrar conexiones, y disminuir el numero de conexiones concurrentes necesarias.
© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 10 / 97

Podemos clasificar las bases de datos en tres categorias:
– Las pequeñas, sin servidor. Para max 10 clientes concurrentes. Ejemplo: archivo texto, MS­Acces,...
– Las medianas, con servidor. Para hasta 50 clientes concurrentes. Ejemplo: Firebird
– Las grandes, con servidor. Para hasta miles de clientes concurrentes. Ejemplo: MySQL, Oracle, SQL 
Server.

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 11 / 97

3 Terminología y conceptos
3.1  Objetivo del capítulo 
Al fin de este capítulo el alumno tendrá una base de términos y conceptos que se usan con frecuencia en 
las bases de datos. 

3.2  Términos específicos 
3.2.1

 Tabla 

Conjunto de registros que contienen los mismos campos, es decir el mismo tipo de información).
3.2.2

 Registro 

Conjunto de campos que pertenecen a un mismo dato.
3.2.3

 Campo 

Detalle de un dato, que es de un tipo especifico.
3.2.4

 Vista 

Una vista es una definición lógica de un parte y/o conjunto de tablas. El objetivo de una vista puede ser 
varios: esconder las tablas originales, limitar el acceso a los datos (seguridad), simplificar y/o optimizar 
el extracto de datos,  ...
3.2.5

 Procedimiento 

Un procedimiento es un código compilado que permite ejecutar acciones sobre la base de datos (servidor). 
El procedimiento puede tener cero o varios parámetros de entrada y/o salida. El objetivo de una vista 
puede ser varios: esconder las tablas originales, limitar el acceso a los datos (seguridad), simplificar y/o 
optimizar operaciones sobre los datos, ...
3.2.6

 Función 

Una función es como un procedimiento si no tiene siempre uno (y solo uno) parámetro de salida.
3.2.7

 Paquete 

Una paquete es un conjunto de procedimientos y/o funciones.
3.2.8

 Secuencia 

Las secuencias son contadores que son manejados por el servidor, que les incrementa y se arregla para 
evitar doble valores. Ciertos servidores como MySQL o SQL Server no tienen secuencias pero tienen una 
opción de incremento automático de un campo numérico de una tabla.

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

3.2.9

Pagina 12 / 97

 Disparador 

Un disparador es un código compilado en el servidor que se ejecuta cuando se hacen ciertas acciones 
sobre una tabla (inserción, modificación, ...). Pueden disparar antes o después del cambio. Si dispara 
antes del cambio permite cambiar el valor se que va agregar/modificar. Si dispara después puede 
modificar otras tablas.
3.2.10

 Esquema 

Un esquema es el conjunto de todos los objetos de la base de datos que pertenecen a un mismo usuario.
3.2.11

 Sinónimo 

Un sinónimo es un nombre que se refiere a un objeto de la base de datos. Esto permite de crear atajos 
para ciertos objetos de la base de datos.
3.2.12

 Indice 

Un indice es un pequeño archivo de uno o varios campos ordenados de una tabla que permite aumentar 
el rendimiento de las encuestas utilizando estos campos como filtro .

3.3  Abreviaciones 
3.3.1

 DBMS 

‘Database Managment System’. Es un sistema que esta desarrollado para manejar una o varias bases de 
datos, a lo contrario de un simple archivo texto, que no necesita un sistema especifico para manejarlo.
3.3.2

 RDBMS  

‘Relational Database Managment System’. Sistema de base de datos relacionadas. Es decir una base de 
datos que contiene varias tablas relacionadas entre ellas, a lo contrario de las bases de datos que 
contienen una o varias tablas sin relación entre ellas.
3.3.3

 SQL 

‘Simple Query Language’. Lenguaje utilizado para hacer encuestas y acciones sobre base de datos. Existe 
un lenguaje SQL estándar, pero cada base de datos tiene sus excepciones cuanto a este estándar.
3.3.4

 DDL 

‘Data Definition Language’. Instrucciones SQL que permiten definir y modificar la estructura de los 
datos.
3.3.5

 DML 

‘Data Modeling Language’. Instrucciones SQL que permiten modificar y visionar los datos.

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

3.3.6

Pagina 13 / 97

 ODBC 

‘Open Database Connectivity’. API de Windows que permite conectarse a una base de datos de una 
manera estándar. El driver ODBC funciona como un puente entre la aplicación llamando y la base de 
datos.
3.3.7

 ADO 

Mejoramiento del OBDC, para un accesso mas directo y con mejor eficiencia a las base de datos.
3.3.8

 JDBC 

‘Java Database Connector’. Driver Java que permite conectarse a una base de datos de una manera 
estándar. El driver JDBC funciona como un puente entre la aplicación llamando y la base de datos.

3.4  Conceptos 
3.4.1

 OLTP 

‘Online Transaction Processing’. Sistema de base de datos diseñado para soportar muchas transacciones 
conjuntas, que modifican los datos (adjunto, modificación, borrado), con fin de soportar la utilización de 
la aplicación en linea. 
3.4.2

 DWH 

‘Data Warehouse’. Sistema de base de datos diseñado para soportar transacciones que requieren 
agregaciones de datos, con fin de crear reportes. Un DWH es normalmente una copia parcial de los datos 
de un OLTP, con modificaciones para optimizar las encuestas esperadas.
3.4.3

 Replicación 

La replicación es la acción de copiar datos de una base de datos a otra. La replicación puede ser parcial o 
completa, y ejecutarse de manera por incrementa, diferencial o completa.
3.4.4

 Multi­tiers 

Repartición de la carga de una aplicación entre varios sistemas. De costumbre, hay dos o tres partes: 
cliente / servidor, o cliente / machina de gestión de conexiones / servidor. Cuarta parte podría ser un 
servidor web.

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 14 / 97

4 Servidores SQL
4.1  Objetivo del capítulo 
Al fin de este capítulo el alumno tendrá una vista de las principales bases de datos que existen en el 
mercado. Como existen miles de bases de datos diferentes, solo vamos a ver algunas. Para mas 
infamación sobre estas bases de datos y las otras, puede consultar los sitios Internet de los vendedores o 
creadores.

4.2  Servidores SQL comerciales 
Existen muchos servidores SQL comerciales. Los principales son Oracle, MS SQL Servidor, DB2, y 
Sybase.
4.2.1

 Oracle 

Oracle es una la mayor base de datos utilizadas en el mundo.
Los servidores de Oracle son muy poderosos y pueden funcionar sobre varias plataformas, entre otras 
Windows, Linux, y Unix.
Aquí en Nicaragua se utiliza mucho la versión 8i de Oracle, aún que no es más soportada por Oracle 
(porque ya tienen dos nuevas versiones). La versión 8i tiene como aventaje sobre las últimas versiones 
que ya esta muy poderosa, y no pregunta una machina demasiada poderosa para ejecutarse.
Después de la versión 8i, existe la versión 9i, y la versión 10g, que es la versión actual de Oracle. 
Oracle es una base de datos que soporta miles de usuarios conjuntos, y archivos de datos muy grande.
Existe una verión gratis de Oracle 10 que es la versión Oracle XE. Tiene algunas limitaciones (max 4GB 
de datos,...) pero permite desarrollar un sistema pequeños sin costo de licencia. El objetivo de Oracle es 
que cuando su sistema crece, te quedas con Oracle, pero con la versión pagada.
Sitio web: http://www.oracle.com 
4.2.2

 MS SQL Servidor 

El servidor SQL de Microsoft es un competidor para Oracle. Tiene el aventaje que es más fácil de 
administrar que Oracle, pero solo funciona sobre servidores Windows.
Existe una versión gratis de SQL Server que es la versión SQL Server Express. Tiene algunas 
limitaciones (max 4GB de datos,...) pero permite desarrollar un sistema pequeños sin costo de licencia. 
Como Oracle, el objetivo es que cuando su sistema crece, te quedas con Microsoft, pero con la versión 
pagada.
Sitio web: http://www.microsoft.com 

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

4.2.3

Pagina 15 / 97

 Teradata 

Teradata es un base de datos que es espcialmnete desarrollada para manejar cuantidades muy grande 
de datos (un terabyte=1000 GB).  
4.2.4

 DB2 y Sybase 

DB2 es la base de datos de IBM, y Sybase es un base de datos de una empresa independiente. 
Funcionan, como Oracle, sobre varias plataformas, pero tienen una parte del mercado mas pequeñas que 
Oracle y MS SQL servidor.  Sitio web: http://www.ibm.com y http://www.sybase.com 

4.3  Servidores SQL libres 
Existen muchos servidores SQL gratuitos. Los principales son MySQL, PostGreSQL, y Firebird.
4.3.1

 MySQL 

MySQL es una base de datos libre que ha sido muy utilizada en el Internet. Es un servidor muy rápido y 
soportando miles de usuarios concurrente, y tamaños de datos muy grande. 
Al MySQL le hacia faltas muchas opciones mas avanzadas disponibles en otras bases de datos libre como 
vistas, procedimientos, etc... 
La última versión de MySQL (V. 5) corrige en gran parte estas faltas.
En el curso vamos a utilizar MySQL en su versión 5. 
Sitio web: http://www.mysql.com 
4.3.2

 PostGreSQL 

Como MySQL, PostGreSQL ha sido muy utilizada en el Internet. Tenía como aventaje sobre MySQL las 
opciones como vistas y procedimientos.
Sitio web: http://www.postgresql.com 
4.3.3

 Firebird 

Firebird es la versión libre de la base de datos Interbase (versión 6), de Borland. Firebird es una base de 
datos muy completas y con instrucciones SQL muy parecidas a Oracle.
Firebird, como MySQL y PostGreSQL, funciona bajo Windows, Linux, Unix, y también Mac.
Firebird tiene una emprenta muy pequeña, y existe también sobre la forma de base de datos embarcada.
Si necesitas una base de datos para un sistema pequeño o mediano (>=50 conexiones concurrentes), te 
aconsejo Firebird, porque es muy completa y cumple muy bien con los estándar del SQL. También no 
pregunta muchos recursos al nivel del PC, lo que les permitirá instalarlo en su machina a la casa, si 
tienen una, para seguir practicando después de este curso. Para un sistema grande (mas de 50 
conexiones concurrentes) te aconsejo MySQL.
Sitio web: http://www.firebirdsql.com 

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 16 / 97

5 Instalación de Oracle 10g bajo Linux
En este capitulo vamos a ver la instalación de Oracle bajo Linux Suse 10.2. Hablaremos de los puntos 
esenciales. para la información exhaustiva, ver la documentación de Oracle.

5.1  Requisitos 
Para poder instalar Oracle 10g hay varios requisitos que cumplir.
5.1.1
5.1.1.1

 Requisitos materiales 
 Memoria 

Se necesita un mínimo de 1024 MB de memoria (512 según ciertas documentaciones), y suficiente 
espacio de intercambio (swap).
Memoria RAM

Swap Space Required

Entre 1024 MB y 2048 MB

1.5 veces el tamaño de la RAM

Entre  2049 MB y 8192 MB

Igual al tamaño de la RAM

Mas de 8192 MB

0.75 veces el tamaño de la RAM

Para verificar la memoria disponible: # grep MemTotal /proc/meminfo
Para verificar la memoria disponible: # grep SwapTotal /proc/meminfo
Para verificar la memoria libre: # free
Puedes obtener más espacio de swap usando un fichero en vez de reparticionando, aunque si estas 
configurando un servidor es más aconsejable reparticionar. Aqui se muestra como crear un fichero de 
511995 kB y usarlo como swap (hazlo solo si necesitas más swap):
su - root
cd /root
dd if=/dev/zero of=/root/tmpswp bs=1k count=500000
chmod 600 tmpswp
mkswap tmpswp
swapon tmpswp
grep SwapTotal /proc/meminfo

5.1.1.2


 Disco 
400 MB de espacio libre en la carpeta /tmp
Entre 1.5 GB y 3.5 GB para el programa de Oracle, dependiendo de las opciones de instalación 
elegidas. 
1.2 GB para las bases de datos de muestra.

Para verificar el disco bajo /tmp disponible: # df -k
Para verificar el disco total disponible: # df -k /
5.1.1.3

/tmp

 Límites del kernel 

Los parámetros del kernel son recomendaciones, pero no impiden necesariamente la instalación. En Suse 
10.2 a pesar que los parámetros no son iguale, son suficiente para instalar y correr Oracle 10g.
Para mayor información, aquí como se pueden verificar y cambiar los parámetros del kernel:
/sbin/sysctl -a | grep sem
/sbin/sysctl -a | grep shm
/sbin/sysctl -a | grep file-max

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 17 / 97

/sbin/sysctl -a | grep ip_local_port_range

La salida debe ser algo asi
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 2147483648
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

Así que editamos /etc/sysctl.conf y añadimos o cambiamos estas líneas:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

Al reiniciar el sistema, /etc/inittab invocará el script /etc/init.d/bootmisc.sh que leerá la configuración 
del kernel de /etc/sysctl.conf. Pero si queremos que los cambios apliquen inmediatamente hacemos 
esto:
/sbin/sysctl -p

Para ver los límites del shell ejecutamos ulimit
core file size
(blocks, -c)
data seg size
(kbytes, -d)
file size
(blocks, -f)
max locked memory
(kbytes, -l)
max memory size
(kbytes, -m)
open files
(-n)
pipe size
(512 bytes, -p)
stack size
(kbytes, -s)
cpu time
(seconds, -t)
max user processes
(-u)
virtual memory
(kbytes, -v)

-a, que mostrará algo similar a esto:

0
unlimited
unlimited
unlimited
unlimited
1024
8
unlimited
unlimited
2047
unlimited

Por defecto, hay un límite por usuario, de 1024 descriptores de fichero, y 2047 procesos. Vamos a editar 
el fichero /etc/security/limits.conf para ajustar estos valores:
soft
hard
soft
hard

nproc
nproc
nofile
nofile

2047
16384
1024
65536

Las dos últimas líneas imponen un límite inicial de 1024, pero permiten que un usuario aumente el 
límite a 65536 usando el comando ulimit -n 65536. Las dos primeras líneas limitan el número de 
procesos.
Añade lo siguiente a
session

required

/etc/pam.d/login:
/lib/security/pam_limits.so

pam_limits.so es el módulo PAM que procesa la configuración del fichero
cambiamos antes.

© Copyright  Cédric Simon, 2008

Versión 1.1

/etc/security/limits.conf que 

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

5.1.2
5.1.2.1

Pagina 18 / 97

 Requisitos de programas 
 Sistema operativo 

Suse 10.2 no esta certificado con Oracle 10g, y por eso la instalación por defecto no se inicia desde Suse 
10.2. 
Para poder arancar la instalación normalmente desde Suse 10.2 se ha modificado el archivo 
/install/oraparam.ini del lugar de instalación para agregar SuSE­10 a la lista de versiones certificadas. 
Otras opciones disponibles (ver punto 2.3).
En la última versión de Oracle 10g, Suse 10 está certificado, pero solo la versión Server Enterprise , no 
la versión gratis (openSuse). Pero no es porque no esta certificado que  no pueda correr bien...
Se necesitan las librerias siguientes:
● gcc
● gcc­c++
● glibc
● libaio
● libaio­devel
● make
● openmotif­libs
Si usas otra version de Linux, verifica en la documentación de Oracle los requisitos, ya que varían según 
la distribución de Linux utilizada.
5.1.3

 Red 

Se necesita una red instalada, y el nombre de la computadora y su dominio serán utilizados durante la 
instalación.
Para verificar ver las tarjetas de red y sus configuración: # ifconfig
Para ver el nombre de la machina: # hostname
Para ver en nombre del dominio de la machina: # domainname
5.1.4

 Grupos y usuarios 

Los siguientes grupos y usuarios deberian existir en el sistema:
Grupos:
● dba:  grupo de usuarios con privilegios SYSDBA
● oinstall : propietario de los ficheros de Oracle. Este grupo se usa cuando los dbas no mantienen la 
instalación de software. En caso contrario, bastaría con hacerlo todo con el grupo dba.
● oper (opcional)
Usuarios:
● oracle, miembro del grupo oinstall 
● nobody
Para comprobar si existen haz:
grep oinstall /etc/group
grep dba /etc/group
grep nobody /etc/group
id oracle
id nobody

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 19 / 97

Crea los que falten con esto:
/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/groupadd nobody
/usr/sbin/useradd -c "Oracle Software Owner" -g oinstall -G dba oracle
/usr/sbin/useradd -g nobody nobody

Cambiamos el password del usuario oracle
passwd oracle

Si no han sidas creadas, crea la carpeta de inicio de oracle:
md /home/oracle
chown oracle oracle
chgrp oinstall oracle

Creamos el directorio base de oracle (/u01/app/oracle), y opcionalmente un directorio de datos para las 
bases de datos que creemos (/u02/oradata):
mkdir
mkdir
chown
chmod

-p
-p
-R
-R

/u01/app/oracle
/u02/oradata
oracle:oinstall /u01 /u02
775 /u01 /u02

El directorio base debería tener 2.5Gb (2621440 KB) libres o 3.7Gb (3879731 KB) si no creamos un 
directorio de datos. Cuando no creamos un directorio de datos, oracle usa /u01/app/oracle/oradata. Cada 
base de datos ocupa un subdirectorio del directorio de datos.
Login en otra sesión como oracle y añade esta línea al final de /home/oracle/.bash_profile:
umask 022

Crea este directorio

mkdir -p /home/oracle/config/10.2

Añade estas variables de entorno (en /etc/profile.local si para todos, en /home/oracle/.profile si solo 
para oracle):
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=/u01/app/oracle/product/10.2/db_1; export ORACLE_HOME
ORACLE_SID=test; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
ORACLE_OWNER=oracle; export ORACLE_OWNER
#TNS_ADMIN=/home/oracle/config/10.2 export TNS_ADMIN
NLS_LANG=SPANISH_SPAIN.WE8ISO8859P1; export NLS_LANG
#ORA_NLS10=${ORACLE_HOME}/db_1/nls/data; export ORA_NLS10
CLASSPATH=${CLASSPATH}:${ORACLE_HOME}/jdbc/lib/classes12.zip
LD_LIBRARY_PATH=${ORACLE_HOME}/lib; export LD_LIBRARY_PATH
DISABLE_HUGETLBFS=1; export DISABLE_HUGETLBFS
TEMP=/tmp; export TEMP
TMPDIR=/tmp; export TMP
PATH=$PATH:/u01/app/oracle/product/10.2/db_1/bin; export PATH

5.2  Iniciar la instalación 
Ve a http://otn.oracle.com/software/products/database/oracle10g/index.html y descargar el fichero de la 
última versión. Descomprímelo. Aparecerá un directorio Disk1. 
xhost +
su
export DISPLAY=:0.0
gunzip ship.db.cpio.gz
cpio -idmv < ship.db.cpio

Nota: con las tres primeras líneas hacemos login como root y permitimos que este usuario root use el 
servidor X del usuario inicial. Lo necesitaremos luego para lanzar el instalador. cpio es un programa de 
archivado similar a tar.

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 20 / 97

Asegurate de que la redirección de X esta activada, y ejecuta el instalador como usuario oracle: 
xhost +
su oracle

Puesto que el instalador solo se ejecuta en sistemas operativos certificados (Red­Hat o United Linux), 
podemos hacer una de dos cosas para arrancar el instalador: 
 engañar al instalador para que piense que esta en Red­Hat (la ^D es Ctrl+D)
cat > /etc/redhat-release
Red Hat Linux release 2.1 (drupal)
^D

y luego ejecutar el instalador

/camino_hacia_oracle_install/runInstaller

 o simplemente, pedirle que ignore los prerequisitos:
/camino_hacia_oracle_install/runInstaller -ignoreSysPrereqs

Cuando te pida que ejecutes root.sh, haz esto antes: 
ln -s /etc /etc/rc.d

5.2.1

 Pantallas de la instalación  
Pantalla

Acción

Bienvenido

Pulsa Siguiente.

(solo si primera instalación 
de producto de Oracle)
Directorio de inventario y 
credenciales

/home/oracle/oraInventory


Directorio de inventario:

Grupo sistema operativo
dba

Pulsa Siguiente.
Selecciona Enterprise Edition o Standard Edition. 

Seleccionar tipo de Tipo de 
Instalación


Enterprise Edition: la versión mas comlpleta y mas potente.
Standard Edition: la versión corriente que conviene a la pequeñas y 
medianas empresas.
● Personalizada: usted elige cuales componentes se va a instalar.
Seleccione la instalación personalizada.
Pulsa Siguiente.
Ejemplo de valores  a utilizar

Especificar Ubicación de los 
Archivos

 Nombre: OraDb10g_home1

 Ruta de acceso: /u01/app/oracle/product/10.2/db_1

Pulsa Siguiente.
Componentes disponibles 
del producto

Aquí se eligen los componentes que se van a instalar. Dependen de la 
licencias compradas, y de las necesidades de la empresa.
Vamos a quitar las marcas debajo de Oracle Enterpise Edition, ya que son 
opciones muy adelantadas que nos atrasarían instalando módulos que no 

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 21 / 97

Pantalla

Acción
necesitamos.
Agregamos iSQLPlus, el entorno de SQL Plus via web.
Pulsa Siguiente.

Comprobando requisitos

Para poder seguir la instalación, la configuración debe esta aprobada. 
Si esta aprobada, la última linea del log es “Comprobación terminada. El 
resultado general de esta comprobación es: Aprobado” y el botón 'Siguiente' 
esta disponible.
En caso de problema, revisar el log y corregir el problema antes de intentar 
otra vez la instalación.

Grupos del sistema 
operativo con privilegios

Se ligan aquí los grupos del sistema operativo con grupos de usuario de 
Oracle. Guardamos el valor dba para ambos grupos. 

Seleccionar opción de 
configuración

Marcar la casilla 'Crear Base de Datos' y pulsa Siguiente.

Resumen

Pulsa Instalar.

Asistente de configuración 
de servicios de red

Aceptamos los valores por defecto. Pulsa siempre Siguiente y luego 
Terminar

Seleccionamos por ejemplo "Uso General". Pulsa Siguiente.
Nombre de la Base de Datos Global: test. nombre_de_la_maquine
SID: test
Pulsa Siguiente
No Activar Copias de Seguridad Automáticas. Pulsa Siguiente.
Contraseña para las cuentas SYS, SYSTEM, SYSMAN, DBSNMP. Por 
ejemplo escoge "SolJava" como contraseña única. Pulsa Siguiente.
Selecciona "Sistema de Archivos". Pulsa Siguiente.
Selecciona “Usar ubicación común...” con /u02/oradata como directorio de 
almacenamiento de las bases de datos. Pulsa Siguiente.
Área de recuperación flash: /u02/oradata/flash. Pulsa Siguiente.
Deja marcado “Esquema de ejemplo”. Pulsa siguiente.
Acepta los valores por defecto. Pulsa Seguiente.
Asistente de  Configuración 
Muestra el resumen de almacenamiento de datos. Pulsa Siguiente.
de Base de Datos
Deja marcado 'Crear base de datos'. Pulsa Terminar.
Revisa en resumen de instalación. Pulsa Aceptar.
Cuando el asistente finaliza muestra la siguiente información: 
Nombre de la Base de Datos Global: test. nombre_de_la_maquine
Identificador del Sistema (SID): test
Nombre de Archivo de Parámetros del Servidor: 
/u01/app/oracle/product/10.2/db_1/dbs/spfiletest.ora
Database Controler: http://
 
 nombre_de_la_maquine.dominio
 
 :1158/em
 
 
También nos indica que todas las cuentas excepto SYS, SYSTEM, 
DBSNMP, SYSMAN, estan bloqueadas. Pulsa Salir.

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

5.2.2

Pagina 22 / 97

Pantalla

Acción

Privilegios de 
Configuración

Nos pide que ejecutemos un script como root. Lo hacemos. Aceptamos los 
valores por defecto. Vuelve al instalador, y pulso Aceptar.

Fin de Instalación

El instalador termina mostrando las URLs de varias herramientas. Anoto 
dichas URLs y pulso Salir.

 Error ORA­12547: connection lost / conexión perdida 

Eso significa que no cumpliste con los requisitos y te falto instalar la librería libaio.
Se puede instalar las librerias libaio y libaio­devel de desde el CD de SuSe 10.2.
Luego ejecuta $ORACLE_HOME/bin/relink

5.2.3

all para ligar de nuevo las librería, y todo debería correr bien. 

 Mensaje de fin de instalación 

Se han desplegado las siguientes aplicaciones J2EE y se puede acceder a ellas en las siguientes
direcciones URL.
URL de iSQL*Plus: http://asus.solucionajava.com:5560/isqlplus
URL de DBA de iSQL*Plus: http://asus.solucionajava.com:5560/isqlplus/dba
http://nombre_de_la_maquine.dominio:1158/em
o
http://nombre_de_la_maquine.dominio:5500/em

5.2.4

 Arrancar y parar Oracle 

El archivo oratab contiene varias líneas similares y indica los SID y sus Oracle home directory 
corespondiente para cada base de datos o Automatic Storage Management instance el el sistema, y si se 
tiene que encender al iniciar el sistema.
sid:oracle_home_directory:[Y|N]

Edita /etc/oratab para indicar que bases de datos deben arrancar con el sistema. Aqui solo arranco la 
base de datos test asi que todo el contenido de mi fichero es este: 
*:/u01/app/oracle/product/10.2/db_1:N
test:/u01/app/oracle/product/10.2/db_1:Y

Crea el script de arranque en /etc/init.d/oracle con este contenido (cuidado a las doble comillas!): 
#!/bin/bash
#
# Run-level Startup script for the Oracle Instance and Listener
#
# chkconfig: 345 91 19
# description: Startup/Shutdown Oracle listener and instance
ORA_HOME="/u01/app/oracle/product/10.2/db_1"
ORA_OWNR="oracle"
# if the executables do not exist -- display error

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 23 / 97

if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
# start TNS listener
su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl start"
# start database
su - $ORA_OWNR -c $ORA_HOME/bin/dbstart
touch /var/lock/subsys/oracle
su - $ORA_OWNR -c $ORA_HOME/bin/“emctl start dbconsole”
su - $ORA_OWNR -c $ORA_HOME/bin/“isqlplusctl start”
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
# stop TNS listener
su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl stop"
# stop database
su - $ORA_OWNR -c $ORA_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle
su - $ORA_OWNR -c $ORA_HOME/bin/”emctl stop dbconsole”
su - $ORA_OWNR -c $ORA_HOME/bin/“isqlplusctl stop”
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 start|stop|restart|reload"
exit 1
esac
exit 0

Hazlo ejecutable : chmod 755 oracle
Añadelo a los niveles de ejecución 
ln
ln
ln
ln
ln

-s
-s
-s
-s
-s

/etc/init.d/oracle
/etc/init.d/oracle
/etc/init.d/oracle
/etc/init.d/oracle
/etc/init.d/oracle

/etc/rc.d/rc2.d/S99oracle
/etc/rc.d/rc3.d/S99oracle
/etc/rc.d/rc5.d/S99oracle
/etc/rc.d/rc0.d/K01oracle
/etc/rc.d/rc6.d/K01oracle

El fichero listener.ora es la configuración para el SQL*Net Listener. Como valor del campo HOST, 
debes poner la IP del equipo, no el hostname de la máquina. La ruta a este fichero es 
/u01/app/oracle/product/10.2/db_1/network/admin/listener.ora.

Vamos a crear los atajos  rc:

su
cd /usr/sbin
ln -s /etc/init.d/oracle rcoracle

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

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

Para ver si el listener se está ejecutando podemos hacer ps

© Copyright  Cédric Simon, 2008

Versión 1.1

-ef | grep lsnr, o lsnrctl status. 

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

5.2.5

Pagina 24 / 97

 Comprobación 

Compruebo que servicios estan a la escucha: 
nombre_de_la_maquina:~# netstat -l| grep "5500\|5560\|5620"
tcp
0
0 *:5560
*:*
tcp
0
0 *:5500
*:*

LISTEN
LISTEN

1. La base de datos y el proceso Oracle Net listener estan ejecutandose.
2. Oracle Enterprise Manager Database Control y iSQL/Plus* estan ejecutandose y son accesible 
con un navegador.
5.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).
5.2.5.2

 SQL Plus 

Para conectarte a SQL*PLUS haz esto:
1) En 2 pasos: 
. /usr/local/bin/oraenv y mencionas el SID a utilizar
sqlplus /nolog

2) En 1 paso :
oracle@nombre_de_la_maquina:/u01$ sqlplus /nolog
SQL*Plus: Release 10.2.2.0 - Production on Dom Jul 4 19:41:32 2004

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)
Copyright (c) 1982, 2004, Oracle.

Pagina 25 / 97

All rights reserved.

SQL> CONNECT SYS/SolJava AS SYSDBA
Conectado.

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

ejecuta

unset ORA_NLS10
cat /etc/oratab

Si aparece un mensaje 
ORA-12546: TNS:permission denied

$ORACLE_HOME/bin/sqlplus: Permission denied / Permiso desnegado

Agrega su usuario al grupo oinstall
usermod alumno -G dba, oinstall
luego:
su alumno -

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

Inicia Oracle
5.2.5.3
5.2.5.3.1

 Iniciar Oracle 
Como root

rcoracle start

Si aparece un mensaje 

Failed to auto-start Oracle Net Listener using /ade/vikrkuma_new/oracle/bin/tnslsnr

Problema: hay un error el es script dbstart debajo de $ORACLE_HOME/bin
Modifica la línea siguiente (+­ linea 78):
ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle

hacia

ORACLE_HOME_LISTNER=$ORACLE_HOME

5.2.5.3.2

Via SQL Plus

Abre sqlplus con la opción

/nolog

connect sys/SolJava as sydba
startup

5.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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 26 / 97

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

5.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/password@SID.dominio, oracle no lee el fichero sqlnet.ora. Va 
directamente al fichero tnsnames.ora.
Un ejemplo de sqlnet.ora: 

NAMES.DEFAULT_DOMAIN = nombre_de_la_maquina
# autentificacion en windows
# SQLNET.AUTHENTICATION_SERVICES= (NTS)
# prioridad de resolucion de nombres
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
Un ejemplo de tnsnames.ora:
EXTPROC_CONNECTION_DATA.nombre_de_la_maquina =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = IPC)
(KEY = EXTPROC1)
)
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
TEST.nombre_de_la_maquina =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 192.168.x.x)

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

)

)

Pagina 27 / 97

(PORT = 1521)

)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = TEST)
)

El listener usa el fichero listener.ora, que también debe estar en el directorio apuntado por 
TNS_ADMIN. 
Este es un ejemplo del contenido del fichero: 
# LISTENER is the name of the listener
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = IPC)
(KEY = EXTPROC0)
)
)
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 192.168.x.x)
(PORT = 1521)
)
)
)
)

# SID list of the listener LISTENER
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/10.2/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = test.nombre_de_la_maquina)
(ORACLE_HOME = /u01/app/oracle/product/10.2/db_1)
(SID_NAME = test)
)
)
# directorio de log para el listener LISTENER
LOG_DIRECTORY_LISTENER = /home/oracle/config

Si has cambiado la variable TNS_ADMIN, quiza quieras reiniciar el Listener: 
lsnrctl stop
lsnrctl start

Para comprobar que el listener funciona usa tnsping: 
oracle@nombre_de_la_maquina:~$ tnsping test.nombre_de_la_maquina
TNS Ping Utility for Linux: Version 10.2.2.0 - Production on 04-JUL-2004 22:15:20
Copyright (c) 1997, 2003, Oracle.

All rights reserved.

Archivos de parámetros utilizados:
/home/oracle/config/sqlnet.ora
Adaptador TNSNAMES utilizado para resolver el alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = 192.168.x.x) (PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED)
(SERVICE_NAME = TEST)))
Realizado correctamente (0 mseg)

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

5.4.1

Pagina 28 / 97

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

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 29 / 97

6 Instalación de Oracle 10g bajo 
Windows
6.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.

6.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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 30 / 97

7 Arquitectura de la base de datos 
Oracle 10g

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 31 / 97

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

7.2  La base de datos 
Una base de datos está compuesta por:
– Uno o más espacios de tablas (tablespaces )
– Objetos del esquema de la base de datos
Tiene dos estructuras básicas:
 Estructura física (para el almacenamiento de los datos)
 Estructura lógica (representación abstracta de los datos. Esquema
    conceptual)
Tipos de ficheros
 Ficheros de datos
 Ficheros de log
 Ficheros de control
 Ficheros de traza de los procesos
La estructura de una base de datos Oracle consiste de:
 Esquema: definiciones de tablas, vistas, procedimientos almacenados, ?
 Tablespaces , segmentos y extensiones para describir el almacenamiento
    físico de los datos

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

7.2.1

Pagina 32 / 97

 Tablespace 

Un tablespace está compuesto de uno a varios archivo (database file), y contiene objetos (tablas o 
indices).

Tablespace
7.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)

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

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 33 / 97

7.3  Los procesos 
Una instancia de Oracle consta de una serie de procesos:
1. System Global Area (SGA)
●  Shared pool: construcciones de memoria compartida para ejecución de sentencias
● Database buffer cache: para mantener los bloques más recientemente accedidos
● Redo log buffer: para recuperación de fallos
2. User processes: para las aplicaciones de usuario (forms , herramientas, etc)
3. Program global area (PGA) buffer de memoria que contiene datos e información de control 
para el servidor de procesos
4. Oracle processes : conjunto de procesos de Oracle para gestionar las peticiones de los procesos 
de usuario.
7.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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)












Pagina 34 / 97

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)

7.4  Otros archivos 
7.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.

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

7.4.2

Pagina 35 / 97

 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 
varios lugares. Este archivo mantiene la consistencia interna de la base de datos y guía las operaciones 
de restauración y arranque.
7.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,...

7.5  Oracle Managed Files (OMF) 
A partir de Oracle 9i, se puede usar el Oracle Managed Files (OMF) para simplificar la administración 
de los database files.
Cuando se usa OMF, Oracle usa su programa de sistema de archivos para crear y borrar data files, 
control files, y online redo log files como requerido por los comandos DDL.
Para permitir el uso de OMF, debes mencionar un valor para los parámetros de inicialización siguientes:
Parámetro

Descripción

DB_CREATE_FILE_DEST Carpeta por defecto de los datafiles y temporary files. también usado para 
los online redo logs y los control files si el parámetro 
DB_CREATE_ONLINE_LOG_DEST_n no está mencionado.
DB_CREATE_ONLINE_L
OG_DEST_n

Carpeta por defecto de  los online redo logs y los control files. N es un valor 
de 1 a 5 para multiplexed  online redo logs y control files.

Nota: las carpetas mencionadas deben existir. El tamaño por defecto de un redo log file es de 100 MB.

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 36 / 97

8 Aplicación de un parche
8.1  Selección del parche 
Los parches solo se pueden descargar del sitio de soporte de Oracle, lo que necesita tener una cuenta con 
un contrato de soporte válido.
Hay dos tipos de parches:
● Para corregir un problema puntual. Es un parche especifico para su problema, creado 
eventualmente especialmente para usted por Oracle.
● Para migrar a una versión menor mas alta. Estos parches cambian el último dígito del número 
de versión de la base de datos, y contienen resolución de problemas conocidos, y a veces nuevas 
opciones.

8.2  Aplicación del parche 
La aplicación de un parche es como una instalación de una nueva versión: puede tener requisitos a nivel 
de hardware, software, necesitar el usuario oracle, root a nivel del sistema operaivo, sys a nivel de la 
base de datos.
Siempre crear un respaldo completo de su base de datos antes de aplicar un parche.
Cada parche viene con su documentación especifica. Ciertos parches solo serán un script SQL a correr, 
otros incluirán nuevas librerías o programas a instalar.
El parche podría afectar todas las bases de datos de la instancia (como los parches que cambian la 
versión).

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 37 / 97

9 Creación del modelo de datos 
basados en las necesidades
9.1  Objetivo del capítulo 
Al fin de este capítulo el alumno tendrá una base para crear un modelo de datos según las necesidades 
de su aplicación.

9.2  Análisis de requisitos 
Antes de empezar a diseñar un modelo de datos, el arquitecto tiene que conocer muy bien los requisitos 
de la aplicación futura.
Hay que poder identificar cada entidad necesaria, con sus atributos, las relaciones que existen entre 
estas entidades, y las reglas de integridad necesarias.
Hay también que tomar en cuenta el destino de la aplicación (¿más DWH o OLTP?), y las evoluciones 
esperadas (¿modelo fijo, o aplicación evolutiva?).
Son más que todos la practica y la experiencia que pueden ayudar a diseñar un modelo de datos 
adecuado,  porque no existe una regla fija por eso. 

9.3  Diagramas Entidad Relación 
Para diseñar el modelo de datos, utilizaremos un diagrama de entidades relacionadas.
Existen varios tipos de diagramas, con diferente signos para representar las relaciones.
Aquí vamos a utilizar diagramas con la notación IE (Crow’s Feet).
Cada entidad corresponde a una tabla. La entidad puede enseñar diferente niveles de información: de 
solamente el nombre de la tabla hasta la tabla con todos sus campos, con el tipo de cada campo 
mencionado y sus restricciones.
Entre dos entidades pueden existir diferente tipos de relaciones. La relación esta determinada por las 
posibilidades de conexiones directas entre las dos entidades. 
La relación siempre tiene dos partes (de <parte 1> a <parte 2>), de las cuales cada parte es una de las 
siguientes opciones:
1. Cero o uno
2. Cero o varios
3. Uno
4. Uno o varios
5. Varios
Para representar las relaciones, cada opción tiene su propio signo:
1. Cero o uno

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 38 / 97

2. Cero o varios 
3. Uno
4. Uno o varios  
5. Varios   

Ejemplo de relación uno a cero o varios entre las tablas departamentos y empleados.

Existen varios entornos que permiten diseñar diagramas de entidad relación. Ciertos vienen incluidos 
con entornos de desarrollo, otros son entornos aparte. Ciertos están ligada con un tipo de base de datos, 
otros soportan varias tipos de base de datos, y otro solo permiten dibujar las tablas, pero no son ligado 
con ninguna base de datos.
Unos ejemplos de entornos de diseño: Embarcadero ER Studio, Visio, Oracle Designer, Rational Rose,...
Entornos libres: DBDesigner4 (multiples BD), MyWorkbrench (MySQL).

9.4  Normalización del modelo de datos 
Existen tres niveles de normalización. La normalización intenta reducir la duplicación de la información 
y estructurarla en entidades lo más especifico posible.
9.4.1

 Primer forma normal 

Para cumplir con la primer forma normal, una tabla no debe tener dos columnas con la misma 
información. Columnas que son duplicadas deben ser eliminadas.
Ejemplo:
Sin primer forma normal
No_cliente
Nombre
Apellido
Edad_visita1
Edad_visita2
Fecha_visita1
Fecha_visita2

© Copyright  Cédric Simon, 2008

No_cliente
Nombre
Apellido

Con primer forma normal
No_cliente
No_visita
Edad
Fecha

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

9.4.2

Pagina 39 / 97

 Secunda forma normal 

La secunda forma normal solo se verifica para tablas que tienen una clave primaria de más de un campo. 
Para cumplir con la secunda forma normal, todos los atributos de una tabla deben de depender de toda la 
clave primaria. Atributos que no dependen de toda la clave primaria deben ser movido por otra tabla.

Ejemplo:
Sin secunda forma normal
No_cliente
No_cliente
Nombre
No_visita
Apellido
Edad
Fecha
Tipo
9.4.3

No_cliente
Nombre
Apellido

Con secunda forma normal
No_cliente
No_visita
Edad

No_visita
Fecha
Tipo

 Tercera forma normal 

Para cumplir con la tercera forma normal, una tabla no debe contener campos que no son directamente 
dependiendo de la clave primaria.
Ejemplo:
Sin tercera forma normal
No_cliente
Nombre
Apellido
Domicilio
Cuidad
Tel
Celular

No_cliente
No_domicilio
Nombre
Apellido
Tel
Celular

Con tercera forma normal
No_domicilio
Domicilio
Cuidad

9.5  Integridad referencial 
9.5.1

 Clave primaria 

La clave primaria es un campo o conjunto de campo que identifican de manera única a los registros de 
una tabla.
Esta clave puede ser utilizada como relación con clave secundaria.
9.5.2

 Clave secundaria 

Una clave secundaria es un campo de una tabla que se refiere a la clave primaria de otra tabla. El valor 
de la clave secundaria debe existir como clave primaria de la otra tabla para que sea válido.

9.6  Restricciones de dominio 
Además la las claves primaria y secunda, existen otros métodos para restringir las valores que pueden 
ser utilizadas para un cierto campo. Estas posibilidades no existen en todas bases de datos, y depende de 
la base de datos utilizadas. Aquí siguen varios posibilidades de restringir las valores entradas.
© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

9.6.1

Pagina 40 / 97

 Not null 

Un campo definido como ‘not null’ no permite que el campo no sea nulo.
9.6.2

 Check constraints 

Son verificaciones que son declarada al nivel del campo, y que restringe las valores validas.
9.6.3

 Unique constraints 

‘Unique constraints’ no permite que un mismo campo de dos registros diferentes de la tabla tengan el 
mismo valor. 

9.7  Tipos de datos 
9.7.1

 Tipos generales 

Aún que existen tipos definidos por la nomenclatura SQL­92, cada tipo de base de datos implementa 
parte de los tipos estándar y también otros  tipos propios, que corresponden a un tipo estándar pero con 
otro nombre, o que es un nuevo tipo.
Básicamente, existen las categorías siguiente de tipos:
● Los caracteres. Hay que mencionar la longitud de la cadena máxima. Por ejemplo CHAR(2) o 
VARCHAR2(250). 
● Los numéricos. Opcionalmente se puede mencionar la longitud y la  escala del tipo. Por ejemplo 
Number(8,3), o Number 
● Las fechas. Por ejemplo DATE o TIMESTAMP. 
● Los binarios. Por ejemplo BLOB.
Cada tipo ocupe un espacio propio en el archivo de la base de dato. Así no sirve definir un tipo CHAR(8) 
si el campo solo guardará 3 caracteres máximo.
Consulte la documentación de su base de datos para escoger el tipo más adecuado.

9.7.2

 Tipos de datos en Oracle 

A continuación los principales tipos de datos de Oracle y sus características básicas:
TIPO

CARACTERISTICAS

OBSERVACIONES

CHAR

Cadena de caracteres 
(alfanuméricos) de 
longitud fija 

Entre 1 y 2000 bytes como máximo. Aunque se 
introduzca un valor más corto que el indicado en 
el tamaño, se rellenará al tamaño indicado. Es 
de longitud fija, siempre ocupará lo mismo, 
independientemente del valor que contenga 

VARCHAR2

Entre 1 y 4000 bytes como máximo. El tamaño 
Cadena de caracteres de 
del campo dependerá del valor que contenga, es 
longitud variable 
de longitud variable. 

VARCHAR

Cadena de caracteres de  En desuso, se utiliza VARCHAR2 en su lugar 

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 41 / 97

longitud variable 

NCHAR

Entre 1 y 2000 bytes como máximo. El juego de 
Cadena de caracteres de 
caracteres del tipo de datos (datatype) NCHAR 
longitud fija que sólo 
sólo puede ser AL16UTF16 ó UTF8. El juego de 
almacena caracteres 
caracteres se especifica cuando se crea la base 
Unicode
de datos Oracle

NVARCHAR2

Entre 1 y 4000 bytes como máximo. El juego de 
Cadena de caracteres de 
caracteres del tipo de datos (datatype) NCHAR 
longitud variable que 
sólo puede ser AL16UTF16 ó UTF8. El juego de 
sólo almacena 
caracteres se especifica cuando se crea la base 
caracteres Unicode
de datos Oracle
Como máximo admite hasta 2 GB (2000 MB). 
Los datos LONG deberán ser convertidos 
apropiadamente al moverse entre diversos 
sistemas.

LONG

Este tipo de datos está obsoleto (en desuso), en 
su lugar se utilizan los datos de tipo LOB (CLOB, 
NCLOB). Oracle recomienda que se convierta el 
tipo de datos LONG a alguno LOB si aún se está 
Cadena de caracteres de  utilizando.
longitud variable
No se puede utilizar en claúsulas WHERE, 
GROUP BY, ORDER BY, CONNECT BY ni 
DISTINCT
Una tabla sólo puede contener una columna de 
tipo LONG.
Sólo soporta acceso secuencial.
Admiten hasta 8 terabytes (8000 GB).

LOB (BLOG, 
CLOB, 
NCLOB, 
BFILE)

Permiten almacenar y 
manipular bloques 
grandes de datos no 
estructurados (tales 
como texto, imágenes, 
videos, sonidos, etc) en 
formato binario o del 
carácter

Una tabla puede contener varias columnas de 
tipo LOB.
Soportan acceso aleatorio.
Las tablas con columnas de tipo LOB no pueden 
ser replicadas. 

BLOB

Permite almacenar 
datos binarios no 
estructurados

CLOB

Almacena datos de tipo 
Admiten hasta 8 terabytes
carácter

© Copyright  Cédric Simon, 2008

Admiten hasta 8 terabytes

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

NCLOB

Pagina 42 / 97

Admiten hasta 8 terabytes. 
Almacena datos de tipo 
carácter
Guarda los datos según el juego de caracteres 
Unicode nacional. 
Se admiten hasta 38 dígitos de precisión y son 
portables a cualquier entre los diversos sistemas 
en que funcione Oracle.
Para declarar un tipo de datos NUMBER en un 
CREATE ó UPDATE es suficiente con:
nombre_columna NUMBER
opcionalmente se le puede indicar la precisión 
(número total de dígitos) y la escala (número de 
dígitos a la derecha de la coma, decimales, los 
cogerá de la precisión indicada):

NUMBER

Almacena números fijos 
nombre_columna NUMBER (precision, escala)
y en punto flotante
Si no se indica la precisión se tomará en función 
del número a guardar, si no se indica la escala 
se tomará escala cero.
Para no indicar la precisión y sí la escala 
podemos utilizar:
nombre_columna NUMBER (*, escala)
Para introducir números que no estén el el 
formato estándar de Oracle se puede utilizar la 
función TO_NUMBER.

FLOAT

Almacena tipos de datos 
Es un tipo NUMBER que sólo almacena 
numéricos en punto 
números en punto flotante 
flotante 

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 43 / 97

El tipo de datos DATE almacena el año 
(incluyendo el siglo), el mes, el día, las horas, los 
minutos y los segundos (después de 
medianoche).
Oracle utiliza su propio formato interno para 
almacenar fechas. 
Los tipos de datos DATE se almacenan en 
campos de longitud fija de siete octetos cada 
uno, correspondiendo al siglo, año, mes, día, 
hora, minuto, y al segundo.

DATE

Para entrada/salida de fechas, Oracle utiliza por 
Almacena un punto en  defecto el formato DD-MMM-AA. Para cambiar este 
el tiempo (fecha y hora)  formato de fecha por defecto se utiliza el 
parámetro NLS_DATE_FORMAT. 
Para insertar fechas que no estén en el mismo 
formato de fecha estándar de Oracle, se puede 
utilizar la función TO_DATE con una máscara 
del formato: TO_DATE (el “13 de noviembre de 
1992”, “DD del MES, YYYY”) 
 
 
 

TIMESTAMP

Almacena datos de tipo 
hora, fraccionando los   
segundos 

Almacena datos de tipo 
TIMESTAMP  hora incluyendo la zona 
WITH TIME  horaria (explícita), 
 
ZONE
fraccionando los 
segundos 
Almacena datos de tipo 
TIMESTAMP  hora incluyendo la zona  Cuando se usa un SELECT para mostrar los 
WITH LOCAL  horaria local (relativa),  datos de este tipo, el valor de la hora será 
TIME ZONE
franccionando los 
ajustado a la zona horaria de la sesión actual
segundos 
XMLType

Tipo de datos abstracto. 
Se asocia a un esquema XML para la definición 
En realidad se trata de 
de su estructura.
un CLOB. 

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 44 / 97

10Creación de base de datos
10.1En 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.

10.2Usando 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í.
10.2.1

 Bienvenido 

Solo clic en Siguiente.
10.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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)



Pagina 45 / 97

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.
10.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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 46 / 97

Elige 'Personalizar Base de Datos' y pulsa Siguiente.
10.2.4

 Identificador de BD 

Aquí se menciona el nombre global y el SID de la base de datos.

Menciona los y pulsa Siguiente.
10.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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

10.2.6

Pagina 47 / 97

 Contraseñas 

Define aquí las contraseñas de los usuarios de sistema.

Menciona las contraseñas y pulsa Siguiente.
10.2.7

 Sistema de archivo 

Elige el tipo de sistema de archivos.

Pulsa Siguiente.

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

10.2.8

Pagina 48 / 97

 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.
10.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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 49 / 97

10.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'
10.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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 50 / 97

10.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'
10.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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 51 / 97

10.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'
10.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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 52 / 97

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

10.3Creació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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 53 / 97

11Manejo de los tablespaces
11.1Que 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.

11.2Los tipos de tablespaces
 
 
Hay dos tipos de tablespaces, los reservado al funcionamiento interno de Oracle, y los de datos de los 
usuarios.
11.2.1

 Tablespaces específicos de Oracle 

11.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.
11.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.
11.2.1.3  TEMPORARY 
Es un tablespace para guardar datos temporales de Oracle, como tablas temporales, tablas creadas por 
Oracle para ordenar datos, etc...
11.2.1.4  UNDO 
Es un nuevo tipo de tablespace, desde la versión 9i, que remplaza los rollback segments usados en 
versiones anteriores.
11.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.

11.3Atributos de un tablespace
 
 
11.3.1

 Manejo de extents 

11.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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 54 / 97

Es mas eficiente y mas simple, ya que no se necesita mas las clausulas de storage para las tablas, 
indices,...
11.3.1.1.1 Asignación de extents
Puede ser automatica, o fija a cierto numero de kb.
11.3.1.1.2 Gestíon de espacio
Puede ser automatica o manual. El manual existe principalmente por compatibilidad con versiones 
anteriores.
11.3.1.1.3 Activar registro
Si no se activa el registro, no se registrarán las transacciones relativas a este tablespace a nivel de los 
redo logs, lo que aumentará la rapidez de las transacciones pero podría generar perdida de datos en caso 
de falla de la Oracle.
11.3.1.1.4 Tamaño de bloque
Se puede sobrescribir el tamaño de bloque para este tablespace en especifico
11.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 ...)
11.3.1.2.1 Tamaño inicial
Tamaño inicial del extent.
11.3.1.2.2 Siguiente tamaño
Tamaño del proximo extent en caso que se necesita un nuevo.
11.3.1.2.3 Tamaño mínimo
En caso que se quiere reducir el tamaño del tablespace,  el tamaño mínimo del extent.
11.3.1.2.4 Aumentar tamaño por porcentaje
Cada nuevo extent será de tanto porcentaje mas grande que el último.
11.3.1.2.5 Numero minimo
Minimo de extents a crear al inicio.
11.3.1.2.6 Maximo
Si hay un maximo de extents que se pueden crear.
11.3.1.2.7 Activar registro
Si no se activa el registro, no se registrarán las transacciones relativas a este tablespace a nivel de los 
redo logs, lo que aumentará la rapidez de las transacciones pero podría generar perdida de datos en caso 
de falla de la Oracle.

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 55 / 97

11.3.1.2.8 Tamaño de bloque
Se puede sobrescribir el tamaño de bloque para este tablespace en especifico

11.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.
11.3.3

 Archivos 

Archivos físicos que contendrán los datos del tablespace.
11.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).
11.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.

11.4Planificació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.
11.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.
11.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.
11.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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 56 / 97

11.5Sintaxis
 
 
11.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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 57 / 97

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 ;

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

11.5.3

 Eliminación 

DROP TABLESPACE tablespace_name [INCLUDING CONTENTS [AND DATAFILES]
[CASCADE CONSTRAINTS]];

11.6Ejercicios
 
 
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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 58 / 97

12DML ­ Sentencias de manipulación 
de datos
12.1Objetivo del capítulo
 
 
Al fin de este capítulo el alumno será capaz de hacer encuestas de la base de datos. No vamos a ver todas 
las opciones, ni las encuestas de otros objetos de la base de datos (vistas, funciones, secuencias,...) porque 
eso sale del cuadro de este curso de iniciación.
Existen muchas opciones (top, exists, cube,...) para cada tipo de acción, pero estas opciones dependen de 
la base de datos utilizadas y/o de su versión. Solo vamos a ver las sentencias básicas.
Existen muchos entornos que simplifican las encuestas sobre los datos.

12.2Insert
 
 
La sentencia ‘Insert’ permite de insertar datos en una tabla.
INSERT INTO <nombre_de_tabla> (<campo_1>,<campo_2>,<...>) VALUES
(<valor_campo_1>,<valor_campo_2>,<valor_...>);

También existe:
INSERT INTO <nombre_de_tabla> (<campo_1>,<campo_2>,<...>) <SELECT STATEMENT>;

12.3Update
 
 
La sentencia ‘Update’ permite de modificar el valor de uno o varios datos en una tabla.
UPDATE <nombre_de_tabla> SET <campo_1>=<valor_campo_1>,<campo_2>=<valor_campo_2>,<...>;

De costumbre se limita el cambio a ciertos registros, mencionados utilizando una cláusula WHERE.
UPDATE <nombre_de_tabla> SET <campo_1>=<valor_campo_1>,<campo_2>=<valor_campo_2>,<...>
WHERE <cláusula_where>;

12.4Delete
 
 
La sentencia ‘Delete’ permite de borrar un uno o varios registros en una tabla.
DELETE FROM <nombre_de_tabla> ;

De costumbre se limita el borrado a ciertos registros, mencionados utilizando una cláusula WHERE.
DELETE FROM <nombre_de_tabla>

WHERE <cláusula_where>;

12.5Commit y rollback
 
 
Si la base de datos permite la gestión de transacciones, se puede utilizar ‘Commit’ para confirmar una 
‘Insert’, ‘Update’, o ‘Delete’, o `Rollback` para cancelarlos. Ciertas base de datos pueden ser confiuradas 

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 59 / 97

para autocommit, que hace un commit automaticamente despues de cada instrucción, a menos que se ha 
iniciado una transacción de manera explicita (con 'begin transaction xxx;).
Hasta que el ‘Commit’ está ejecutado, las modificaciones no están inscritas de manera permanente en la 
base de datos, y sólo son visible para la sesión en curso del usuario autor de las acciones. Después del 
‘Commit’, los cambios son definitivos y visible para todos. 
Cuidado que ciertos objetos pueden quedar bloqueados (bloqueando otros usuarios) hasta que el commit 
sea hecho. 
El commit/rollback permite confirmar o de hacer un lote de transacción, para que si una falle, todas las 
anteriores se anulan también. Cuando se necesita una integridad de transacción, se utiliza en 
commit/rollback.
Ejemplo:
SELECT emp_no,job_grade FROM employee
START TRANSACTION;
update employee set job_grade=5 where
SELECT emp_no,job_grade FROM employee
rollback;
SELECT emp_no,job_grade FROM employee
START TRANSACTION;
update employee set job_grade=5 where
SELECT emp_no,job_grade FROM employee
commit;
SELECT emp_no,job_grade FROM employee

where emp_no=45;
emp_no=45;
where emp_no=45;
where emp_no=45;
emp_no=45;
where emp_no=45;
where emp_no=45;

12.6Select
 
 
El ‘Select’ permite de seleccionar datos en la base de datos, y visualizarlos.
Se puede utilizar un alias para que el campo se pueda llamar con otro nombre.
SELECT <campo_1>,<campo_2>,<...> FROM <nombre_tabla>;
SELECT <campo_1> as <alias1>,<campo_2>,<...> FROM <nombre_tabla>;

Para seleccionar todos los campos de la tabla, se utiliza el asterisco en vez de los nombres de campo.
SELECT * FROM <nombre_tabla>;
Ejemplo:
SELECT emp_no,job_grade as nivel FROM employee;
SELECT * FROM employee;

12.7Where
 
 
La cláusula ‘Where’ permite de limitar la encuesta a ciertos datos.
Se utiliza evaluando un campo versus una condición. Se pueden utilizar varias condiciones, con el uso de 
‘Or’, ‘And’, y/o paréntesis.
Para compara números, se utiliza el signo '=', o '<', o'>', o'<=', o '>=', o 'between ... and ...'.
Para comparar caracteres se utiliza la palabra 'like'. El wildcard es '%'.
Para compara fecha, se utiliza el signo '=', o '<', o'>', o'<=', o '>=', o 'between ... and ...'.
Para 
SELECT * FROM <nombre_tabla>
WHERE <campo_1> <operation> <condición> AND <campo_2> <operation> <condición>;

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Ejemplo:
SELECT emp_no,job_grade FROM
SELECT emp_no,job_grade FROM
SELECT * FROM employee where
SELECT * FROM employee where

employee where
employee where
emp_no between
last_name like

Pagina 60 / 97

emp_no>45;
emp_no=45 or
40 and 45;
'P%';

emp_no=41;

12.8Count
 
 
Para contar un numero de registros, se utiliza la palabra ‘Count’.
SELECT COUNT(<campo_1>) FROM <nombre_tabla>;
Ejemplo:
SELECT count(*) FROM employee where job_grade=4;

12.9Sum, avg, min, max
 
 
Para una suma, min, max,... de  un campo, se utilizan la palabras ‘Sum’, ‘Min’, ‘Max’, ‘Avg’.
SELECT SUM(<campo_1>) FROM <nombre_tabla>;
Ejemplo:
SELECT avg(salary) FROM employee where job_grade=2;

12.10Distinct
 
 
Para tener la lista de valores distingas de un campo, se utiliza la palabra ‘Distinct’.
SELECT DISTINCT(<campo_1>) FROM <nombre_tabla>;
Ejemplo:
SELECT distinct(job_grade) FROM employee;

12.11Order by
 
 
Para ordenar los registros regresados, hay que utilizar la palabre ‘Order by’.
SELECT * FROM <nombre_tabla>
ORDER BY <campo_1>,<....>;
Ejemplo:
SELECT first_name,last_name FROM employee order by first_name,last_name;

12.12Uniones 
 
 
Uniones permiten de unir los resultados de dos consultas. Para poder unirlas, tienen que tener los 
mismos campos.
SELECT <campo_1>,<campo_2>,<...> FROM <nombre_tabla_1>
UNION
SELECT <campo_1>,<campo_2>,<...> FROM <nombre_tabla_2>;
Ejemplo:
select t.first_name,t.last_name from employee t where job_grade=5
union
select t2.fname,t2.lname from usuario t2;

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 61 / 97

12.13Subconsultas
 
 
Subconsultas son consultas sobre otras consultas. La subconsulta se puede utilizar el la cáusula ‘From’, o 
el la condición de la clásula ‘Where’. La subconsulta se pone entre paréntesis. En MySQL, las 
subconsultas deben tener sus propios alias.
SELECT t3.<campo_1>, t3.<campo_2> FROM (SELECT t.<campo_1>, t.<campo_2>
<where cluase>) t3
WHERE t3.<campo_1> IN (SELECT t2.<campo_1> FROM <nombre_tabla_2> t2);

FROM <nombre_tabla > t

Ejemplo: SELECT t3.first_name,t3.last_name FROM
(
select t.first_name,t.last_name from employee t where job_grade=5
union
select t2.fname,t2.lname from usuario t2
) t3 where t3.last_name like '%o%';
SELECT t3.first_name,t3.last_name FROM employee t3
where t3.job_country IN
(select t.country from country t where t.currency='Euro');

12.14Agrupaciones
 
 
Las agrupaciones permiten agrupar datos y saber cuantos datos hay de cada valor.
SELECT <campo_1>,<campo_2>, COUNT(*) FROM <nombre_tabla>
GROUP BY <campo_1>,<campo_2>;

Las agrupaciones se pueden filtrar utilizando la clausula HAVING.
Ejemplo:
SELECT job_grade, count(*) FROM employee
where emp_no>45
group by job_grade;
SELECT job_grade, sum(salary) FROM employee
where emp_no>45
group by job_grade
having sum(salary)<1000000;

12.15Operadores SQL 
 
 
Ya hemos visto anteriormente qué tipos de datos se pueden utilizar en Oracle. Y siempre que haya datos, 
habrá operaciones entre ellos, así que ahora se describirán qué operaciones y con qué operadores se 
realizan: 
Los operadores se pueden dividir en TRES conjuntos: 
● Aritméticos: utilizan valores numéricos 
● Lógicos (o booleanos o de comparación): utilizan valores booleanos o lógicos. 
● Concatenación: para unir cadenas de caracteres. 
Operadores arítméticos Retornan un valor numérico: 
Símbo lo 

Significado 

Ejemplo 

Operación suma 

1 + 2 

­

Operación resta 

1 ­ 2 

Operación multiplicación 

1 * 2 

Operador división 

1 / 2 

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 62 / 97

Operadores lógicos Retornan un valor lógico (verdadero o falso) 
Símbolo 

Significado 

Ejemplo 

Igualdad 

1 = 2 

!= <> ^= 

Desigualdad 

1 != 2 1 <> 2 1 ^= 2 

Mayor que 

1 > 2 

Menor que 

1 < 2 

>= 

Mayor o igual que 

1 >= 2 

<= 

Menor o igual que 

1 <= 2 

IN (RS) 

Igual a algún elemento del result set. 

1 IN (1,2) 
[TRUE] 

ANY SOME 

a algún elemento del result set (derecha). Debe ser estar 
10 >= ANY (1,2,3,10) 
precedido por =, !=, <, <=, >, >= Hace un OR lógico entre todos 
[TRUE] 
los elementos. 

ALL 

a todos los elementos del result set (derecha), Debe ser estar 
10 <= ALL (1,2,3,10) 
precedido por =, !=, <, <=, >, >= Hace un AND lógico entre todos 
[TRUE] 
los elementos. 

BEETWEEN x  Operando de la izquierda entre x e y. Equivalente a op >= x 
AND y 
AND op <= y 

10 BETWEEN 1 AND 
100 

EXISTS 

Si la retorna al menos una fila 

EXISTS( SELECT 1 
FROM DUAL) 

LIKE(*) 

Es como 

'pepe' LIKE 
'pe%' 

IS NULL 

Si es nulo 

1 IS NULL 

IS NOT NULL  Si es No nulo 

1 IS NOT NULL 

NOT cond. 

NOT EXISTS… NOT 
BETWEEN NOT IN 
NOT = 

Niega la condición posterios 

cond AND cond  Hace un AND lógico entre dos condiciones 

1=1 AND 2 IS NULL 

Cond OR cond  Hace un OR lógico entre dos condiciones 

1=1 OR 2 IS NULL 

Existen los siguientes comodines: 
● %: Conjunto de N caracteres (de 0 a ∞) 
● _: Un solo carácter 
Concatenación

 
Oracle puede hacer una conversión automática cuando se utilice este operador con valores numéricos: 10 
|| 20 = '1020' 
Este proceso de denomina CASTING y se puede aplicar en todos aquellos casos en que se utiliza valores 
numéricos en puesto de valores alfanuméricos o incluso viceversa. 

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 63 / 97

12.16La ausencia de valor: NULL 
 
 
Todo valor (sea del tipo que sea) puede contener el valor NULL que no es más que la ausencia de valor. 
Así que cualquier columna (NUMBER, VARCHAR2, DATE…) puede contener el valor NULL, con lo que 
se dice que la columna está a NULL. Una operación retorna NULL si cualquiera de los operandos es 
NULL. Para comprobar si una valor es NULL se utiliza el operador IS NULL o IS NOT NULL. 

12.17Rendimiento
 
 
Un problema común en las encuesta a base de datos es el rendimiento.
Las causas de problema de rendimiento son numerosas. 
Las más comunes son:
● Instrucción sin o con mala clausula WHERE
● Falta de indice sobre un campo utilizado como filtro
● Mal diseño de la base de datos
● Problema de hardware (falta de memoria, disco ocupado, cpu ocupado por otra aplicación,...)
● Mala configuración del servidor (mal uso de la memoria, disco, cpu,...)
● Mala programación en el cliente. Falta de commit, conexión no cerrada, ...
● Red sobrecargada o muy lenta
Cuando se enfrenta a un problema de rendimiento hay que probar primero de identificar la causa y los 
síntomas. Servidor sobrecargado en CPU, disco, memoria? Un cliente afectado o todos?  Cuando aparece 
el problema? 
Para ayudar a investigar estos problemas existen herramientas. Algunos vienen con la base de datos, 
otros están desarrollados aparte. Ver la documentación de su base de datos para mas información.

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 64 / 97

13Creación de objetos
"Make everything as simple as possible, but not simpler." ­ Albert Einstein
"Fools ignore complexity; pragmatists suffer it; experts avoid it; geniuses remove it" ­ Alan Perlis 

13.1Esquema
 
 
En Oracle, a dentro de una base de datos, cada usuario tiene sus propios objetos, que el puede compartir 
con otros según las necesidades.
En Oracle, en vez de crear vario bases de datos, que necesitaría mas memoria, se pueden usar esquemas 
(usuarios) diferentes para guardar los objetos de varias aplicaciones.

13.2Tablas
 
 
Una tabla permite almacenar datos. 
13.2.1

 Creación 

CREATE [GLOBAL TEMPORARY] TABLE [schema.]table
column datatype [DEFAULT expr] [column_constraint(s)]
[,column datatype [,...]]
table_constraint
table_ref_constraint
[ON COMMIT {DELETE|PRESERVE} ROWS]
storage_options [COMPRESS int|NOCOMPRESS]
[LOB_storage_clause][varray_clause][nested_storage_clause] [XML_type_clause]
Partitioning_clause
[[NO]CACHE] [[NO]ROWDEPENDENCIES] [[NO]MONITORING] [PARALLEL parallel_clause]
[ENABLE enable_clause | DISABLE disable_clause]
{ENABLE|DISABLE} ROW MOVEMENT
[AS subquery]
storage_options:
PCTFREE int
PCTUSED int
INITTRANS int
MAXTRANS int
STORAGE storage_clause
TABLESPACE tablespace
[LOGGING|NOLOGGING]
ALTER TABLE [schema.]table
RENAME TO new_table_name;
ALTER TABLE [schema.]table
table_properties,...
[alter_iot_clause]
[PARALLEL parallel_clause]
[{ENABLE|DISABLE} ROW MOVEMENT]
[ENABLE enable_clause | DISABLE disable_clause]
[{ENABLE|DISABLE} TABLE LOCK]
[{ENABLE|DISABLE} ALL TRIGGERS];
table_properties:
[PCTFREE int][PCTUSED int][INITTRANS int]
[MAXTRANS int][STORAGE storage_clause]
ALLOCATE EXTENT [( [size int K | M ]
[DATAFILE 'filename' ]
[INSTANCE int] )]
CACHE | NOCACHE
COMPRESS | NOCOMPRESS
DEALLOCATE UNUSED [KEEP int K | M ]

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 65 / 97

MOVE [ONLINE] storage_options INDEX index_organized_tbl_clause
[LOB_storage_clause][varray_clause]
LOGGING|NOLOGGING
ADD SUPPLEMENTAL LOG GROUP log_group (column [,...]) [ALWAYS]
DROP SUPPLEMENTAL LOG GROUP log_group
MODIFY NESTED TABLE collection_item RETURN AS {LOCATOR|VALUE}
MODIFY LOB [LOB_storage_clause]
MONITORING | NOMONITORING
{MINIMISE | NOMINIMISE} RECORDS PER BLOCK
UPGRADE [[NOT] INCLUDING DATA ] column_properties
MODIFY VARRAY [varray_clause]

Examples

create table SIMPLE (MY_NUM number primary key);
create table COPY_OF_EMP as
select * from EMP;
create table EMPTY_COPY as
select * from EMP where 1 = 0;
create table ACCOUNTS(
AC_ID_PK number primary key,
AC_STATUS number,
AC_COUNTRY_ID number default 44,
AC_CREATED date default sysdate,
AC_ACCOUNT varchar2(50)
)
tablespace DATA;
create table SALES(
SA_ID_PK number primary key,
SA_PRODUCT_ID number not null,
SA_DATE_PART date not null,
SA_COST number (12,2) not null
)
partition by range (SA_DATE_PART) (
partition P01_JAN values less than (to_date('2005-02-01','yyyy-mm-dd')),
partition P02_FEB values less than (to_date('2005-03-01','yyyy-mm-dd')),
partition P03_MAR values less than (to_date('2005-04-01','yyyy-mm-dd')),
partition P04_APR values less than (to_date('2005-05-01','yyyy-mm-dd')),
partition P05_REST values less than (maxvalue)
);

13.3Modificación
 
 
ALTER TABLE [schema.]table
column_clauses,...
[ENABLE enable_clause | DISABLE disable_clause]
[{ENABLE|DISABLE} TABLE LOCK]
[{ENABLE|DISABLE} ALL TRIGGERS];
column_clauses:
ADD column datatype [DEFAULT expr] [column_constraint(s)]
[table_constraint] [table_ref_constraint] [lob_storage]
SET UNUSED (column,...)
[CASCADE CONSTRAINTS ][INVALIDATE]
DROP COLUMN column
[CASCADE CONSTRAINTS] [INVALIDATE] CHECKPOINT int
DROP (column,...)
[CASCADE CONSTRAINTS] [INVALIDATE] CHECKPOINT int
DROP COLUMNS CONTINUE [CHECKPOINT int]
DROP UNUSED COLUMNS [CHECKPOINT int]
MODIFY column datatype [DEFAULT expr] [column_constraint(s)]
MODIFY column [NOT] SUBSTITUTABLE AT ALL LEVELS [FORCE]
MODIFY NESTED TABLE collection_item RETURN AS {LOCATOR | ITEM}
MODIFY LOB (lob_item) (modify_LOB_parameters)
MODIFY VARRAY varray_item (modify_LOB_parameters)
RENAME COLUMN column TO new_name

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 66 / 97

ALTER TABLE [schema.]table
constraint_clause,...
[ENABLE enable_clause | DISABLE disable_clause]
[{ENABLE|DISABLE} TABLE LOCK]
[{ENABLE|DISABLE} ALL TRIGGERS];
constraint_clause:
ADD out_of_line_constraint(s)
ADD out_of_line_referential_constraint
DROP PRIMARY KEY [CASCADE] [{KEEP|DROP} INDEX]
DROP UNIQUE (column,...) [{KEEP|DROP} INDEX]
DROP CONSTRAINT constraint [CASCADE]
MODIFY CONSTRAINT constraint constrnt_state
MODIFY PRIMARY KEY constrnt_state
MODIFY UNIQUE (column,...) constrnt_state
RENAME CONSTRAINT constraint TO new_name
constrnt_state:
[[NOT] DEFERRABLE] [INITIALLY {IMMEDIATE|DEFERRED}]
[RELY | NORELY] [USING INDEX using_index_clause]
[ENABLE|DISABLE] [VALIDATE|NOVALIDATE]
[EXCEPTIONS INTO [schema.]table]

Ejemplos:
Add a column to a table
ALTER TABLE STAFF_OPTIONS
ADD SO_INSURANCE_PROVIDER Varchar2(35);
Add

a default value to a column
ALTER TABLE STAFF_OPTIONS
MODIFY SO_INSURANCE_PROVIDER Varchar2(35) DEFAULT 'ABC Ins';

Add two columns to a table and remove a constraint
ALTER TABLE STAFF_OPTIONS
ADD (SO_STAFF_ID INT, SO_PENSION_ID INT)
STORAGE INITIAL 10 K
NEXT 10 K
MAXEXTENTS 121
PCTINCREASE 0
FREELISTS 2
DROP CONSTRAINT cons_SO;
Add a column to a table
ALTER TABLE STAFF_OPTIONS
ADD SO_INSURANCE_PROVIDER Varchar2(35);
Add

a default value to a column
ALTER TABLE STAFF_OPTIONS
MODIFY SO_INSURANCE_PROVIDER Varchar2(35) DEFAULT 'ABC Ins';

Add two columns to a table and remove a constraint
ALTER TABLE STAFF_OPTIONS
ADD (SO_STAFF_ID INT, SO_PENSION_ID INT)
STORAGE INITIAL 10 K
NEXT 10 K
MAXEXTENTS 121
PCTINCREASE 0
FREELISTS 2
DROP CONSTRAINT cons_SO;

13.3.1

 Eliminación 

DROP TABLE [schema.]table [CASCADE CONSTRAINTS];

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

13.3.2

Pagina 67 / 97

 External tables 

Son tablas que no están directamente guardadas en la base de datos, si no en un archivo aparte.
CREATE TABLE emp_xt
ORGANIZATION EXTERNAL
(
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY test_dir
LOCATION ('emp_xt.dmp')
)
AS SELECT * FROM emp;

Cosulta sobre la nueva tabla
SELECT * FROM emp_xt;

13.3.3
1.
2.
3.
4.

 Ejercicios 
Crea una table de empleados con nombre, fecha de nacimiento, y salario.
Ingresa unas filas de datos.
Agrega en apellido a la tabla, que no sea nulo.
Borra el salario.

13.4Indices
 
 
Los indices permiten aumentar el rendimiento en caso de búsqueda de datos.
13.4.1

 Creación 

Table Index
CREATE [UNIQUE|BITMAP] INDEX [schema.]index_name
ON [schema.]table_name [tbl_alias]
(col [ASC | DESC]) index_clause index_attribs
Bitmap Join Index
CREATE [UNIQUE|BITMAP] INDEX [schema.]index_name
ON [schema.]table_name [tbl_alias]
(col_expression [ASC | DESC])
FROM [schema.]table_name [tbl_alias]
WHERE condition [index_clause] index_attribs
Cluster Index
CREATE [UNIQUE|BITMAP] INDEX [schema.]index_name
ON CLUSTER [schema.]cluster_name index_attribs
index_clauses:
LOCAL STORE IN (tablespace)
LOCAL STORE IN (tablespace)
(PARTITION [partition
[LOGGING|NOLOGGING]
[TABLESPACE {tablespace|DEFAULT}]
[PCTFREE int]
[PCTUSED int]
[INITRANS int]
[MAXTRANS int]
[STORAGE storage_clause]
[STORE IN {tablespace_name|DEFAULT]
[SUBPARTITION [subpartition [TABLESPACE tablespace]]]])
LOCAL (PARTITION [partition
[LOGGING|NOLOGGING]
[TABLESPACE {tablespace|DEFAULT}]
[PCTFREE int]

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 68 / 97

[PCTUSED int]
[INITRANS int]
[MAXTRANS int]
[STORAGE storage_clause]
[STORE IN {tablespace_name|DEFAULT]
[SUBPARTITION [subpartition [TABLESPACE tablespace]]]])
GLOBAL PARTITION BY RANGE (col_list)
( PARTITION partition VALUES LESS THAN (value_list)
[LOGGING|NOLOGGING]
[TABLESPACE {tablespace|DEFAULT}]
[PCTFREE int]
[PCTUSED int]
[INITRANS int]
[MAXTRANS int]
[STORAGE storage_clause] )
INDEXTYPE IS indextype [PARALLEL int|NOPARALLEL] [PARAMETERS ('ODCI_Params')]
{This for table index only, not bitmap join Index}
index_attribs:
any combination of the following
NOSORT|SORT
REVERSE
COMPRESS int
NOCOMPRESS
COMPUTE STATISTICS
[NO]LOGGING
ONLINE
TABLESPACE {tablespace|DEFAULT}
PCTFREE int
PCTUSED int
INITRANS int
MAXTRANS int
STORAGE storage_clause
PARALLEL parallel_clause
If the PARALLEL clause is used it should be the last option.
For example:
To create a function-based index which allows case-insensitive searches.
CREATE INDEX idx_case_ins ON my_table(UPPER(empname));
SELECT * FROM my_table WHERE UPPER(empname) = 'KARL';

13.4.2

 Modificación 

ALTER INDEX [schema.]index options
Options:
The options used with this command can be any combination of the following
ENABLE
DISABLE
COALESCE
UNUSABLE
RENAME TO new_index_name
[NO]LOGGING
PCTFREE int
PCTUSED int
INITRANS int
MAXTRANS int
STORAGE storage_clause
ALLOCATE EXTENT [SIZE int K | M]
ALLOCATE EXTENT [DATAFILE 'filename']
ALLOCATE EXTENT [INSTANCE int]
DEALLOCATE UNUSED

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 69 / 97

DEALLOCATE UNUSED KEEP int K | M
[NO]MONITORING USAGE
UPDATE BLOCK REFERENCES
NOPARALLEL
PARALLEL int
MODIFY
MODIFY
MODIFY
MODIFY
MODIFY

PARTITION
PARTITION
PARTITION
PARTITION
PARTITION

partition
partition
partition
partition
partition

COALESCE
UNUSABLE
UPDATE BLOCK REFERENCES
PARAMETERS ('alter_partition_params')
partition_options

partition_options:
ALLOCATE EXTENT [SIZE int K | M]
ALLOCATE EXTENT [DATAFILE 'filename']
ALLOCATE EXTENT [INSTANCE int]
DEALLOCATE UNUSED
DEALLOCATE UNUSED KEEP int K | M
[NO]LOGGING
PCTFREE int
PCTUSED int
INITRANS int
MAXTRANS int
STORAGE storage_clause
RENAME [SUB]PARTITION old_name TO new_name
DROP PARTITION partition
SPLIT PARTITION partition AT (value_list)
[INTO (ptn_descr1, ptn_descr2)] [NOPARALLEL|PARALLEL int]
ptn_descr:
PARTITION [partition attrib_options]
MODIFY DEFAULT ATTRIBUTES [FOR PARTITION partition] attrib_options
attrib_options:
TABLESPACE {tablespace|DEFAULT}
[NO]LOGGING
PCTFREE int
PCTUSED int
INITRANS int
MAXTRANS int
STORAGE storage_clause
MODIFY SUBPARTITION subpartition UNUSABLE
MODIFY SUBPARTITION subpartition sub_partition_options
sub_partition_options:
ALLOCATE EXTENT [SIZE int K | M]
ALLOCATE EXTENT [DATAFILE 'filename']
ALLOCATE EXTENT [INSTANCE int]
DEALLOCATE UNUSED
DEALLOCATE UNUSED KEEP int K | M
REBUILD
REBUILD
REBUILD
REBUILD

[rebuild_options]
NOREVERSE [rebuild_options]
REVERSE [rebuild_options]
[SUB]PARTITION partition [rebuild_options]

rebuild_options:
ONLINE
COMPUTE STATISTICS
TABLESPACE tablespace_name
NOPARALLEL
PARALLEL int
[NO]LOGGING
COMPRESS int
NOCOMPRESS
PCTFREE int

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 70 / 97

PCTUSED int
INITRANS int
MAXTRANS int
PARAMETERS ('odci_parameters')
STORAGE storage_clause
More than one ALLOCATE EXTENT option should be specified in the same clause e.g.
ALLOCATE EXTENT SIZE 200K Datafile 'MyFile.idx'

13.4.3

 Eliminación 

DROP INDEX [schema.]index [FORCE]
FORCE can be used to drop domain indexes that are marked as IN_PROGRESS or are reporting errors.

13.4.4
1.
2.
3.
4.
5.

 Ejercicios 
Llena una tabla con miles de filas
Haga una consulta sobre un campo que no tenga indice. Nota el tiempo de ejecución.
Repite la consulta.
Crea un indice sobre el campo de búsqueda, y repite la consulta.
crea un indice bitmap sobre un campo que tenga pocas valores diferentes.

13.5Vistas
 
 
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).
13.5.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]

13.5.2
ALTER
ALTER
ALTER
ALTER
ALTER
ALTER

 Modificación 
VIEW
VIEW
VIEW
VIEW
VIEW
VIEW

[schema.]view
[schema.]view
[schema.]view
[schema.]view
[schema.]view
[schema.]view

COMPILE;
ADD out_of_line_constraint;
MODIFY CONSTRAINT constraint {RELY | NORELY};
DROP CONSTRAINT constraint;
DROP PRIMARY KEY
UNIQUE (column [,column,...])

When a constraint is in NOVALIDATE mode, Oracle does not enforce it and does not take it into account 
for query rewrite. If you specify RELY Oracle will still not enforce the constraint but will take it into 
account for query rewrite.
An alternative to ALTER VIEW COMPILE is the built­in pl/sql package DBMS_UTILITY
13.5.3

 Eliminación 

DROP VIEW [schema.]view [CASCADE CONSTRAINTS]

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

13.5.4

Pagina 71 / 97

 Ejercicios 

1. Crea una vista sobre 2 tablas ligadas.
2. Usa la vista en una consulta.

13.6Secuencias
 
 
Una secuencia es un contador que se incrementa automáticamente y permite generar numero únicos. 
13.6.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
CACHE int | NOCACHE
ORDER | NOORDER

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

13.6.3

 Eliminación 

DROP SEQUENCE [schema.]sequence_name

13.6.4

 Ejercicios 

1. Crea una secuencia
2. Altera la secuencia para que el próximo numero generado sea 20

13.7Procedimientos, funciones, paquetes, disparadores
 
 
Se crean usualmente usando una herramienta con entorno gráfico.
13.7.1

 Procedimientos 

Los procedimientos son códigos compilados en el servidor, que se ejecutan en local, y que pueden aceptar 
parámetros de entrada y/o de salida. Un procedimiento se puede usar en un select, pero no en un where 
clause.
13.7.2

 Funciones 

Una función es como un procedimiento si no que debe regresar algún valor. Una función se puede usar 
en select, y también en una clausula WHERE, CONNECT BY, START WITH, ORDER BY, GROUP BY, 
como VALUES en un INSERT, o como SET en un UPDATE.
© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

13.7.3

Pagina 72 / 97

 Paquetes 

Un paquete es un conjunto de funciones y/o procedimiento. Permite facilitar la administración de los 
códigos (agrupaciones), y la seguridad (a nivel de paquete en vez de por función/procedimiento). En el 
paquete se pueden definir variable de alcance de todo el paquete (global variables).
13.7.4

 Disparadores 

Los disparadores (triggers). Un disparador es un codigo que dispara cada vez que se ha modificado el 
dato de una tabla. Puede disparar a nivel de la consulta, o a nivel de cada línea afectada por la consulta. 
también puede disparar antes o después de la consulta, y solo por ciertos tipos de consulta 
(insert/update/delete), y eventualmente solo cuando cierto(s) campo(s) estan afectados(s).
CREATE [OR REPLACE] TRIGGER [schema.]trigger
BEFORE event
[WHEN (condition)]
{pl_sql_block | call_procedure_statement}
CREATE [OR REPLACE] TRIGGER [schema.]trigger
AFTER event
[WHEN (condition)]
{pl_sql_block | call_procedure_statement}
CREATE [OR REPLACE] TRIGGER [schema.]trigger
INSTEAD OF event
[WHEN (condition)]
{pl_sql_block | call_procedure_statement}
event can be one or more of the following (separate multiple events with OR)
DELETE event_ref referencing_clause
INSERT event_ref referencing_clause
UPDATE event_ref referencing_clause
UPDATE OF column, column... event_ref
db/ddl_event ON [schema.object]
db/ddl_event ON DATABASE
event_ref:
ON [schema.]table
ON [schema.]view
ON [NESTED TABLE nested_table_column OF] [schema.]view
referencing_clause:
FOR EACH ROW
REFERENCING OLD [AS] old [FOR EACH ROW]
REFERENCING NEW [AS] new [FOR EACH ROW]
REFERENCING PARENT [AS] parent [FOR EACH ROW]
db/ddl_event:
ALTER
ANALYSE
ASSOCIATE STATISTICS
AUDIT
COMMENT
CREATE
DDL
DISASSOCIATE STATISTICS
DROP
GRANT
LOGON
LOGOFF
NOAUDIT
RENAME
REVOKE
TRUNCATE
SERVERERROR
STARTUP
SHUTDOWN

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 73 / 97

SUSPEND
Multiple db/ddl_events can be separated with OR
Multiple OLD, NEW and PARENT correlation names can be defined in one REFERENCING clause.
Database constraints are a factor of 8x faster than triggers.

13.7.5

 Ejercicios 

1. Crear una función que agrega 10 al valor pasado en parametro y regresa el resultado
2. Crear un procedimiento que inserta un nuevo empleado
3. Crear un paquete con procedimiento para modificar un empleado, y una función para obtener la 
fecha de nacimiento del empleado
4. Usar los procedimientos/funciones en select
5. Crear un trigger que genera la clave primaria del empleado basado en una secuencia

13.8Vistas 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. 
13.8.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]
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) ]] |

© Copyright  Cédric Simon, 2008

[ [NOT] SUBSTITUTABLE AT ALL LEVELS ]]

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 74 / 97

STORE AS storage_table
[RETURN AS {LOCATOR|VALUE} ]

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

13.8.3

 Eliminación 

DROP MATERIALIZED VIEW [schema.] materialized_view

Snapshot is synonymous with Materialized View.

13.9Sinó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).
13.9.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.
Oracle will resolve object names in the following order:
current user
private synonym
public synonym
An alternative method to access data in another schema is to use:
ALTER SESSION set current_schema = Other_Schema

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

13.9.2

Pagina 75 / 97

 Eliminación 

DROP [PUBLIC] SYNONYM [schema.]synonym [FORCE]
FORCE will drop the synonym even there are dependent tables or user-defined types.

13.9.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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 76 / 97

14Manejo de usuarios
14.1Cuentas 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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

14.1.1

Pagina 77 / 97

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

 Creación de cuentas 

CREATE USER username
IDENTIFIED {BY password | EXTERNALLY | GLOBALLY AS 'external_name'}
options;
options:
DEFAULT TABLESPACE tablespace
TEMPORARY TABLESPACE tablespace
QUOTA int {K | M} ON tablespace
QUOTA UNLIMITED ON tablespace
PROFILE profile_name
PASSWORD EXPIRE
ACCOUNT {LOCK|UNLOCK}
EXAMPLES
-- Create a user with no rights to save data or create objects:
CREATE USER limited IDENTIFIED BY ChangeThis;
-- Create a user with full rights to create objects and save data:
CREATE USER MySchemaOwner IDENTIFIED BY ChangeThis
DEFAULT TABLESPACE data
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON data;
Ejemplo:
CREATE USER alumno IDENTIFIED BY aaa
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;

14.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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 78 / 97

authentication:
AUTHENTICATED USING PASSWORD
AUTHENTICATED USING DISTINGUISHED NAME
AUTHENTICATED USING CERTIFICATE [TYPE 'type'] [VERSION 'version']

14.1.4

 Eliminación 

DROP USER username [CASCADE]
Specify CASCADE to drop all objects in the user's schema.

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

14.2Privilegios 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,...

14.3Privilegios de objetos
 
 
Por defecto un usuario tiene todos los derechos sobre los objectos suyos (de su esquema).
Un usuario puede otorgar (grant) privilegios sobre sus objetos a cualquier usuario o rol (role). Un 
privilegio puede ser otorgado de manera explicita a un usuario, o se puede dar a un role, y cualquier 
usuario con este rol tendrá este derecho.

Los privilegios que pueden otorgarse sobre objetos son los siguientes: 
Privilegio 

Capacidades Otorgadas 

SELECT

Puede consultar a un objeto.

INSERT

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

UPDATE

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

DELETE

Puede borrar filas dentro de la tabla o vista.

ALTER

Puede alterar la tabla.

INDEX

Puede crear índices de una tabla.

REFERENC Puede crear claves ajenas que referencie a esta tabla.
© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 79 / 97

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.

14.4Otorgar/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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 80 / 97

roles:
SYSDBA, SYSOPER, OSDBA, OSOPER, EXP_FULL_DATABASE, IMP_FULL_DATABASE
SELECT_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, DELETE_CATALOG_ROLE
AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE - advanced queuing
SNMPAGENT - Enterprise Manager/Intelligent Agent.
RECOVERY_CATALOG_OWNER - rman
HS_ADMIN_ROLE - heterogeneous services
plus any user defined roles you have available
Notes:
Several Object_Privs can be assigned in a single GRANT statement
e.g.
GRANT SELECT (empno), UPDATE (sal) ON scott.emp TO emma
WITH HIERARCHY OPTION will grant the object privilege on all subobjects, including any created after
the GRANT statement is issued.
WITH GRANT OPTION will enable the grantee to grant those object privileges to other users and roles.
"GRANT ALL PRIVILEGES..." may also be written as "GRANT ALL..."
Changes in a grant applied to a role will be immediately picked up by all logged-in users.
Changes in a grant applied directly to a user require a logoff and re-login.
Grants of UNLIMITED TABLESPACE must be direct.
Grants to users running background jobs (dbms_job.submit) have to be direct; when the job starts
running no roles are active.
GRANT CREATE session, CREATE table, CREATE view,
CREATE procedure,CREATE synonym,
ALTER table, ALTER view, ALTER procedure,ALTER synonym,
DROP table, DROP view, DROP procedure,DROP synonym,
TO MyRole;

14.5Roles
 
 
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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 81 / 97

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)

14.6Quotas
 
 
El manejo de quotas permite limitar el espacio fisico que pueda utilizar un usuario. Se otorga por 
tablespace.

14.7Uso 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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 82 / 97

En general, el perfil por defecto debe ser adecuado para los usuarios normales; los usuarios con 
requerimientos especiales deberían tener perfiles especiales.
Permite también definir la complejidad mínima de la clave del usuario (min de caracteres, etc...).
CREATE PROFILE profile_name LIMIT limit(s) range
KEY

limit

=

SESSIONS_PER_USER
CPU_PER_SESSION
CPU_PER_CALL
CONNECT_TIME
IDLE_TIME
LOGICAL_READS_PER_SESSION
LOGICAL_READS_PER_CALL
COMPOSITE_LIMIT
PRIVATE_SGA

range

=

UNLIMITED | DEFAULT | integer

for PRIVATE_SGA specify K or M
e.g.
CREATE PROFILE MyProfile LIMIT PRIVATE_SGA 50 K
New with Oracle 8 are password related profile limits...
Syntax:
CREATE PROFILE profile_name LIMIT pw_limit(s) range
KEY
pw_limit = PASSWORD_LIFE_TIME
PASSWORD_GRACE_TIME
PASSWORD_REUSE_TIME
PASSWORD_REUSE_MAX
FAILED_LOGIN_ATTEMPTS
PASSWORD_LOCK_TIME
range

=

UNLIMITED | DEFAULT | expression

Syntax to customise password verification:
CREATE PROFILE profile_name LIMIT PASSWORD_VERIFY_FUNCTION {plsql_function | NULL | DEFAULT}
Definitions
CONNECT_TIME - Max. time user may stay connected
IDLE_TIME
- Max. time user may stay connected & idle
PRIVATE_SGA - Session space in the shared pool - K or M (bytes)
COMPOSITE_LIMIT - A weighted sum of CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION, and
PRIVATE_SGA.
PASSWORD_LIFE_TIME - Expire password after X no of days
PASSWORD_GRACE_TIME - Lock account X days after LIFE_TIME expires.
PASSWORD_REUSE_TIME - Min. no. days before the same pw may be reused
PASSWORD_REUSE_MAX - Min. no. of number of pw changes before the current password can be reused
FAILED_LOGIN_ATTEMPS - Max no. of incorrect logins before account is locked
PASSWORD_LOCK_TIME - Max. no. of days an account will be locked
DEFAULT refers to values set in the DEFAULT user profile.

14.8Listar 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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 83 / 97

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.

14.9Cambiarse 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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 84 / 97

15Manejo de transacciones
15.1Transacciones
 
 
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

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 85 / 97

WHEN OTHERS THEN
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.

15.2Rollback 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.
15.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.

15.3Undo 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 

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 86 / 97

que usa el tiempo debe estar internamente traducida en SCN , lo que puede resultar en un error de 3 
secundas.
15.3.1

 Flashback Query 

El nuevo tablespace es una mejor opcion que los rollback segments y permite hacer consultas sobre datos 
en el pasado.
Ejemplo:
CREATE TABLE flashback_query_test (
id NUMBER(10)
);
SELECT current_scn, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') FROM v$database;
CURRENT_SCN TO_CHAR(SYSTIMESTAM
----------- ------------------722452 2004-03-29 13:34:12
INSERT INTO flashback_query_test (id) VALUES (1);
COMMIT;
SELECT COUNT(*) FROM flashback_query_test;
COUNT(*)
---------1
SELECT COUNT(*) FROM flashback_query_test AS OF TIMESTAMP TO_TIMESTAMP('2004-03-29 13:34:12', 'YYYYMM-DD HH24:MI:SS');
COUNT(*)
---------0
SELECT COUNT(*) FROM flashback_query_test AS OF SCN 722452;
COUNT(*)
---------0

15.3.2

 Flashback Version Query 

Flashback version query permite trazar las versiones de un datos en especifico durante un periodo de 
tiempo usando la clausala VERSIONS BETWEEN.
Ejemplo:

CREATE TABLE flashback_version_query_test (
id
NUMBER(10),
description VARCHAR2(50)
);
INSERT INTO flashback_version_query_test (id, description) VALUES (1, 'ONE');
COMMIT;
SELECT current_scn, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') FROM v$database;
CURRENT_SCN TO_CHAR(SYSTIMESTAM
----------- ------------------725202 2004-03-29 14:59:08
UPDATE flashback_version_query_test SET description = 'TWO' WHERE id = 1;
COMMIT;
UPDATE flashback_version_query_test SET description = 'THREE' WHERE id = 1;
COMMIT;

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 87 / 97

SELECT current_scn, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') FROM v$database;
CURRENT_SCN TO_CHAR(SYSTIMESTAM
----------- ------------------725219 2004-03-29 14:59:36
COLUMN versions_startscn FORMAT 99999999999999999
COLUMN versions_starttime FORMAT A24
COLUMN versions_endscn FORMAT 99999999999999999
COLUMN versions_endtime FORMAT A24
COLUMN versions_xid FORMAT A16
COLUMN versions_operation FORMAT A1
COLUMN description FORMAT A11
SET LINESIZE 200
SELECT versions_startscn, versions_starttime,
versions_endscn, versions_endtime,
versions_xid, versions_operation,
description
FROM
flashback_version_query_test
VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP('2004-03-29 14:59:08', 'YYYY-MM-DD HH24:MI:SS')
AND TO_TIMESTAMP('2004-03-29 14:59:36', 'YYYY-MM-DD HH24:MI:SS')
WHERE id = 1;
VERSIONS_STARTSCN
V DESCRIPTION
--------------------------------- 725212
02001C0043030000 U
725209
0600030021000000 U

VERSIONS_STARTTIME

VERSIONS_ENDSCN VERSIONS_ENDTIME

VERSIONS_XID

------------------------ ------------------ ---------------------------------29-MAR-04 02.59.16 PM
THREE
29-MAR-04 02.59.16 PM
725212 29-MAR-04 02.59.16 PM
TWO
725209 29-MAR-04 02.59.16 PM

ONE
SELECT versions_startscn, versions_starttime,
versions_endscn, versions_endtime,
versions_xid, versions_operation,
description
FROM
flashback_version_query_test
VERSIONS BETWEEN SCN 725202 AND 725219
WHERE id = 1;
VERSIONS_STARTSCN
V DESCRIPTION
--------------------------------- 725212
02001C0043030000 U
725209
0600030021000000 U

VERSIONS_STARTTIME

VERSIONS_ENDSCN VERSIONS_ENDTIME

VERSIONS_XID

------------------------ ------------------ ---------------------------------29-MAR-04 02.59.16 PM
THREE
29-MAR-04 02.59.16 PM
725212 29-MAR-04 02.59.16 PM
TWO
725209 29-MAR-04 02.59.16 PM

Las significaciones de los nombres de columnas son: 
• VERSIONS_STARTSCN o VERSIONS_STARTTIME ­  SCN y TIMESTAMP de inicio, cuando la 
fila agarro este valor.  
• VERSIONS_ENDSCN or VERSIONS_ENDTIME ­ SCN y TIMESTAMP de fin, cuando la ultima 
agarro este valor de último. El vlaor NULL significa que la fila todavia tiene este mismo SCN o 
TIMESTAMP. 
• VERSIONS_XID ­ ID de la transacción que creo el datos en el estdo presente. 
• VERSIONS_OPERATION – Operación ocurida en la transacción ((I)nsert, (U)pdate or (D)elete) 

15.4Flashback Transaction Query
 
 
Flashback transaction query se puede utilizar para tener información extra sobre las transaciones 
listadas por el flashback query. Los valores de la columna VERSIONS_XID de un flashback version query 
pueden ser utilizadas para consultar FLASHBACK_TRANSACTION_QUERY.
© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 88 / 97

Ejemplo:
SELECT xid, operation, start_scn,commit_scn, logon_user, undo_sql
FROM
flashback_transaction_query
WHERE xid = HEXTORAW('0600030021000000');
XID
OPERATION
START_SCN COMMIT_SCN
---------------- -------------------------------- ---------- ---------LOGON_USER
-----------------------------UNDO_SQL
---------------------------------------------------------------------------------------------------0600030021000000 UPDATE
725208
725209
SCOTT
update "SCOTT"."FLASHBACK_VERSION_QUERY_TEST" set "DESCRIPTION" = 'ONE' where ROWID = 'AAAMP9AAEAAAA
AYAAA';
0600030021000000 BEGIN
SCOTT

725208

725209

XID
OPERATION
START_SCN COMMIT_SCN
---------------- -------------------------------- ---------- ---------LOGON_USER
-----------------------------UNDO_SQL
---------------------------------------------------------------------------------------------------2 rows selected.

15.5Flashback Table
 
 
El comando FLASHBACK TABLE permite respaldo hacia un punto en el pasado de tablas que cumplen los 
requisitos siguiente:
• Usted debe tener el derecho de sistema FLASHBACK ANY TABLE o tener el privilegio de objeto 
FLASHBACK sobre la tabla. 
• Usted debe tener los privilegios de SELECT, INSERT, DELETE, y ALTER sobre la tabla. 
• Debe haber suficiente información en el tablespace UNDO para cumplir el comando. 
• El row movement debe estar disponible en la tabla (ALTER TABLE tablename ENABLE ROW MOVEMENT;). 
El ejemplo siguiente crea una tabla, insierta algunas filas y flashback hacia un punto anterior a la 
inserción de datos. Finalmente flashback hacia el tiempo despues de la inserción.
Ejemplo:

CREATE TABLE flashback_table_test (
id NUMBER(10)
);
ALTER TABLE flashback_table_test ENABLE ROW MOVEMENT;
SELECT current_scn FROM v$database;
CURRENT_SCN
----------715315
INSERT INTO flashback_table_test (id) VALUES (1);
COMMIT;
SELECT current_scn FROM v$database;
CURRENT_SCN
----------715340

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 89 / 97

FLASHBACK TABLE flashback_table_test TO SCN 715315;
SELECT COUNT(*) FROM flashback_table_test;
COUNT(*)
---------0
FLASHBACK TABLE flashback_table_test TO SCN 715340;
SELECT COUNT(*) FROM flashback_table_test;
COUNT(*)
---------1

Flashback of tables can also be performed using timestamps:
FLASHBACK TABLE flashback_table_test TO TIMESTAMP TO_TIMESTAMP('2004-03-03 10:00:00',
'YYYY-MM-DD HH:MI:SS');

15.6Flashback Drop (Recycle Bin)
 
 
En Oracle 10g, la acción por defecto del comando DROP TABLE mueve la tabla hacia el recycle bin (basura), 
en vez de borrarla. La opción PURGE se puede usar para eliminarla definitivamente.
El recycle bin contiene todos los objetos eliminados. El contenido del recycle bin se puede ver usando el 
comando SHOW RECYCLEBIN y se puede vaciar usando el comando PURGE TABLE. 
Ejemplo:

CREATE TABLE flashback_drop_test (
id NUMBER(10)
);
INSERT INTO flashback_drop_test (id) VALUES (1);
COMMIT;
DROP TABLE flashback_drop_test;
SHOW RECYCLEBIN
ORIGINAL NAME
RECYCLEBIN NAME
OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ ------------------FLASHBACK_DROP_T BIN$TstgCMiwQA66fl5FFDTBgA==$0 TABLE
2004-03-29:11:09:07
EST
FLASHBACK TABLE flashback_drop_test TO BEFORE DROP;
SELECT * FROM flashback_drop_test;
ID
---------1

Las tablas en el the recycle bin pueden ser consultadas como cualquier tabla:
DROP TABLE flashback_drop_test;
SHOW RECYCLEBIN
ORIGINAL NAME
RECYCLEBIN NAME
OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ ------------------FLASHBACK_DROP_T BIN$TDGqmJZKR8u+Hrc6PGD8kw==$0 TABLE
2004-03-29:11:18:39
EST
SELECT * FROM "BIN$TDGqmJZKR8u+Hrc6PGD8kw==$0";
ID
---------1

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 90 / 97

Si un objeto esta borrado y recreado varias veces, todas las versiones se guardan en el recycle bin. Por 
defecto al recoger la tabla del recycle bin recogera la última versión de la tabla.
FLASHBACK TABLE flashback_drop_test TO BEFORE DROP RENAME TO flashback_drop_test_old;

Opciones de purge:
PURGE
PURGE
PURGE
PURGE
PURGE
PURGE

TABLE tablename;
INDEX indexname;
TABLESPACE ts_name;
TABLESPACE ts_name USER username;
RECYCLEBIN;
DBA_RECYCLEBIN;

-------

Specific table.
Specific index.
All tables in a specific tablespace.
All tables in a specific tablespace for a specific user.
The current users entire recycle bin.
The whole recycle bin.

Restriciones relativas al recycle bin:
• Solo disponible para non­system, locally managed tablespaces. 
• No hay tamaño fijo para el recycle bin. El tiempo que permanece un objeto en el recycle bin varia. 
• Los objetos del recycle bin solo se pueden consultar (no DDL or DML). 
• Flashback query operations  deben referencia el nombre del recycle bin. 
• Las tablas y todos los objectos dependientes se tiran, se recojen, se eliminan (purge) al mismo 
tiempo (juntos).
• Tablas con  Fine Grained Access policies no están protegidas por el recycle bin. 
• Partitioned index­organized tables no están protegidas por el recycle bin. 
• El recycle bin no guarda referencia de integridad. 

15.6.1

 Flashback Database 

El comando FLASHBACK DATABASE es una alternativa rápida a la restauración parcial de una base 
de datos. Para poder usar flashback database usted debe tener el privilegio SYSDBA y el flash recovery 
area debe haber sido preparado antes.
Si la base de datos esta en NOARCHIVELOG se debe cambiar al modo ARCHIVELOG :
CONN sys/password AS SYSDBA
ALTER SYSTEM SET log_archive_dest_1='location=d:\oracle\oradata\DB10G\archive\' SCOPE=SPFILE;
ALTER SYSTEM SET log_archive_format='ARC%S_%R.%T' SCOPE=SPFILE;
ALTER SYSTEM SET log_archive_start=TRUE SCOPE=SPFILE;
SHUTDOWN IMMEDIATE
STARTUP MOUNT
ARCHIVE LOG START
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

Flashback debe estar encendido antes cualquier operación de flashback:
CONN sys/password AS SYSDBA
SHUTDOWN IMMEDIATE
STARTUP MOUNT EXCLUSIVE
ALTER DATABASE FLASHBACK ON;
ALTER DATABASE OPEN;

Con el flashback encendido en la base de datos, la base de datos puede ser movida hacia un punto en el 
pasado (tiempo o SCN) sin necesidad de una restauración incompleta manual. 
En este ejemplo una tabla esta creada, y la base de datos esta flashback hacia antes la creación de la 
tabla.
-- Create a dummy table.
CONN scott/tiger

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 91 / 97

CREATE TABLE flashback_database_test (
id NUMBER(10)
);
-- Flashback 5 minutes.
CONN sys/password AS SYSDBA
SHUTDOWN IMMEDIATE
STARTUP MOUNT EXCLUSIVE
FLASHBACK DATABASE TO TIMESTAMP SYSDATE-(1/24/12);
ALTER DATABASE OPEN RESETLOGS;
-- Check that the table is gone.
CONN scott/tiger
DESC flashback_database_test
Some other variations of the flashback database command include:
FLASHBACK DATABASE TO TIMESTAMP my_date;
FLASHBACK DATABASE TO BEFORE TIMESTAMP my_date;
FLASHBACK DATABASE TO SCN my_scn;
FLASHBACK DATABASE TO BEFORE SCN my_scn;

La ventana de tiempo que esta disponible para el flashback esta definido por el parámetro 
DB_FLASHBACK_RETENTION_TARGET. El maximo flashback se puede determinar consultando la vista 
V$FLASHBACK_DATABASE_LOG . Solo es posible de flashback hacia un punto en el pasado después de encender 
la  flashback y desde el último comando RESETLOGS.

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 92 / 97

16Respaldo y reposición de la base de 
datos
16.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.
16.1.1

 Imp y Exp 

Es la herramienta original de importación y exportación de datos en Oracle. 
16.1.1.1  Parámetros de  Exp
   
Parámetro 

Defecto 

Descripción 

USERID

indefinido

el username/password del usuario que efectua el export.

BUFFER

dependiente del
SO

El tamaño en bytes del buffer utilizado.

FILE

expdat.dmp

el nombre del fichero destino.

GRANTS

Yes

indica si se exportan también los derechos.

INDEXES

Yes

indica si se exportan también los índices.

ROWS

Yes

indica si se exportan también las filas de las tablas, o sólo 
las definiciones de las tablas.

CONSTRAINTS

Yes

indica si se exportan también las restricciones.

COMPRESS

Yes

indica si se exporta en modo comprimido.

FULL

No

indica si se exporta la BD entera.

OWNER

usuario actual

una lista de usuarios cuyos objetos se quieren exportar.

TABLES

indefinido

la lista de tablas a exportar.

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 93 / 97

RECORDLENGTH

dependiente del
SO

la longitud en bytes del registro del fichero.

INCTYPE

indefinido

el tipo de export incremental.

RECORD

Yes

indica si se anota el export incremental en las tablas 
SYS.INCVID y en SYS.INCEXP.

PARFILE

indefinido

el fichero de parámetros.

16.1.1.2  Modos de  Export
 
 
Existen tres modos de realizar una exportación de datos:
16.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. 
16.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. 
16.1.1.2.3 Modo tablespace
Se pueden exportar tablespace de un solo, usando la herramientas exp. Pero primero hay que ponerla en 
lectura sola.
Ejemplo:

alter tablespace test_data read only;
alter tablespace test_index read only;
exp transport_tablespace=Y tablespaces=(test_data,test_index);
imp TRANSPORT_TABLESPACE=Y datafile=(test_data.dbf,test_index.dbf);
alter tablespace test_data read write;
alter tablespace test_index read write;

16.1.1.2.4 Modo BD Entera 
Además de todo lo del modo Usuario, exporta los roles, todos los sinónimos, los privilegios del sistema, 
las definiciones de los tablespaces, las cuotas en los tablespaces, las definiciones de los segmentos de 
rollback, las opciones de auditoría del sistema, todos los disparadores y los perfiles. 
El modo BD entera puede ser dividido en tres casos: Completo, Acumulativo e Incremental. Estos dos 
últimos se toman menos tiempo que el completo, y permiten exportar sólo los cámbios en los datos y en 
las definiciones. 
Completo 
Exporta todas las tablas de la BD e inicializa la información sobre la exportación incremental de cada 
tabla. Después de una exportación completa, no se necesitan los ficheros de exportaciones acumulativas 
e incrementales de la BD anteriores. 
 $ exp userid=system/manager full=y inctype=complete constraints=Y
file=full_export_filename

Acumulativo 
Exporta solo las tablas que han sido modificadas o creadas desde la última exportación Acumulativa o 
Completa, y registra los detalles de exportación para cada tabla exportada. Después de una exportación 
acumulativa, no se necesitan los ficheros de exportaciones incrementales de la BD anteriores. 
© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 94 / 97

$ exp userid=system/manager full=y inctype=cumulative constraints=Y
file=cumulative_export_filename

Incremental 
Exporta todas las tablas modificadas o creadas desde la última exportación Incremental, Acumulativa o 
Completa, y registra los detalles de exportación para cada tabla exportada. Son interesantes en entornos 
en los que muchas tablas permanecen estáticas por periodos largos de tiempo, mientras que otras varían 
y necesitan ser copiadas. Este tipo de exportación es útil cuando hay que recuperar rápidamente una 
tabla borrada por accidente. 
$ exp userid=system/manager full=y inctype=incremental constraints=Y
file=incremental_export_filename

La política de exportación puede ser la siguiente: realizar una exportación completa el día 1 (por ejemplo 
el domingo), y luego realizar exportaciones incrementales el resto de la semana. De este modo de lunes a 
sábado sólo se exportarán aquellas tablas exportadas, ahorrando tiempo en el proceso.
16.1.2

 DataPump 

Desde la versión 10g existe otra herramienta para importar y exportar datso: el DataPump. Es una 
herramienta más rápida y más flexible que exp e imp, y ofrece nuevas opciones como un API PL/SQL, y 
soporte para tablas externas.
A la diferencia de imp y exp, DataPump guarda los archivos en el servidor mismo. Por eso se debe definir 
una carpeta de exportación a nivel de Oracle, y el usuario debe tener el derecho de escribir en esta 
carpeta.
CONN sys/123@curso AS SYSDBA
GRANT CREATE ANY DIRECTORY TO alumno;
CREATE OR REPLACE DIRECTORY test_dir AS '/u02/oradata/';
GRANT READ, WRITE ON DIRECTORY test_dir TO alumno;

16.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.
16.1.4

 Importación y exportación de esquema 

Se usa el parámetro SCHEMAS para mencionar los esquemas a exportar.
expdp alumno/ok@curso schemas=alumno directory=TEST_DIR dumpfile=alumno.dmp logfile=expdpalumno.log
impdp alumno/ok@curso schemas=alumno directory=TEST_DIR dumpfile=alumno.dmp logfile=impdpalumno.log

16.1.5

 Importación y exportación de base de datos 

Se usa el parámetro FULL para mencionar que queremos exportar la base de datos en completo.
expdp system/123@curso full=Y directory=TEST_DIR dumpfile=curso.dmp logfile=expdpcurso.log
impdp system/123@curso full=Y directory=TEST_DIR dumpfile=curso.dmp logfile=impdpcurso.log

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

16.1.6

Pagina 95 / 97

 Diversos 

Se puede usar la vista DBA_DATAPUMP_JOBS para ver los trabajos en ejecución:
system@db10g> select * from dba_datapump_jobs;
OWNER_NAME
-----------------------------JOB_MODE
-----------------------------SYSTEM
FULL

JOB_NAME
-----------------------------STATE
-----------------------------SYS_EXPORT_FULL_01
EXECUTING

OPERATION
-----------------------------DEGREE ATTACHED_SESSIONS
---------- ----------------EXPORT
1
1

Los parámetros INCLUDE y EXCLUDE se pueden usar para limitar el import/export a ciertos objetos.
expdp alumno/ok@curso schemas=ALUMNO include=TABLE:"IN ('EMPLEADOS', 'CITY')" directory=TEST_DIR
dumpfile=ALUMNO.dmp logfile=expdpALUMNO.log
expdp alumno/ok@curso schemas=ALUMNO exclude=TABLE:"= 'MTM_LAB_PRESC2LAB_TEST'" directory=TEST_DIR
dumpfile=ALUMNO.dmp logfile=expdpALUMNO.log
expdp help=Y
Export: Release 10.2.0.1.0 - Production on Martes, 26 Agosto, 2008 10:54:19
Copyright (c) 2003, 2005, Oracle.

All rights reserved.

La utilidad de exportación de pump de datos proporciona un mecanismo para transferir objetos de datos
entre bases de datos Oracle. La utilidad se llama con el siguiente comando:
Ejemplo: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
Puede controlar cómo se ejecuta la exportación introduciendo el comando 'expdp' seguido
por varios parámetros. Para especificar los parámetros, utilice palabras clave:
Formato: expdp KEYWORD=valor o KEYWORD=(valor1,valor2,...,valorN)
Ejemplo: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
o TABLES=(T1:P1,T1:P2), si T1 es una tabla particionada
USERID debe ser el primer parámetro de la línea de comandos.
Palabra Clave
Descripción (Valor por Defecto)
-----------------------------------------------------------------------------ATTACH
Se conecta al trabajo existente, p. ej. ATTACH [=nombre del trabajo].
COMPRESSION
Reduce el tamaño del contenido del archivo de volcado donde sea válido
los valores de las palabras clave son: (METADATA_ONLY) y NONE.
CONTENT
Especifica los datos que se van a descargar donde las palabras clave válidas
son:
(ALL), DATA_ONLY y METADATA_ONLY.
DIRECTORY
Objeto de directorio que se va a utilizar para los archivos de volcado y
archivos log.
DUMPFILE
Lista de archivos de volcado de destino (expdat.dmp),
p. ej. DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.
ENCRYPTION_PASSWORD
Clave de contraseña para crear datos de columna cifrados.
ESTIMATE
Calcula las estimaciones de trabajo donde las palabras clave válidas son:
(BLOCKS) y STATISTICS.
ESTIMATE_ONLY
Calcula las estimaciones de trabajo sin realizar la exportación.
EXCLUDE
Excluye tipos de objetos específicos, p. ej. EXCLUDE=TABLE:EMP.
FILESIZE
Especifica el tamaño de cada archivo de volcado en unidades de bytes.
FLASHBACK_SCN
SCN utilizado para volver a definir la instantánea de sesión.
FLASHBACK_TIME
Tiempo utilizado para obtener el SCN más cercano al tiempo especificado.
FULL
Exporta toda la base de datos (N).
HELP
Muestra los mensajes de ayuda (N).
INCLUDE
Incluye tipos de objetos específicos, p. ej. INCLUDE=TABLE_DATA.
JOB_NAME
Nombre del trabajo de exportación que se va a crear.
LOGFILE
Nombre del archivo log (export.log).
NETWORK_LINK
Nombre del enlace de base de datos remota al sistema de origen.
NOLOGFILE
No escribe en el archivo log (N).
PARALLEL
Cambia el número de workers activos para el trabajo actual.
PARFILE
Especifica el archivo de parámetros.

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 96 / 97

QUERY
SAMPLE
SCHEMAS
STATUS

Cláusula de predicado utilizada para exportar un subjuego de una tabla.
Porcentaje de datos para exportar;
Lista de esquemas que se van a exportar (esquema de conexión).
Estado del trabajo de frecuencia (seg) que se va a controlar donde
el valor por defecto (0) mostrará el nuevo estado cuando esté disponible.
TABLES
Identifica una lista de tablas que se van a exportar - sólo un esquema.
TABLESPACES
Identifica una lista de tablespaces que se van a exportar.
TRANSPORT_FULL_CHECK Verifica segmentos de almacenamiento de todas las tablas (N).
TRANSPORT_TABLESPACES Lista de tablespaces desde los que se descargarán los metadatos.
VERSION
Versión de los objetos que se van a exportar donde las palabras clave válidas
son:
(COMPATIBLE), LATEST o cualquier versión de base de datos válida.
Los siguientes comandos son válidos mientras se está en modo interactivo.
Nota: Están permitidas las abreviaturas
Comando
Descripción
-----------------------------------------------------------------------------ADD_FILE
Agrega un archivo de volcado al juego de archivos de volcado.
CONTINUE_CLIENT
Vuelve al modo de registro. El trabajo se reiniciará si está inactivo.
EXIT_CLIENT
Sale de la sesión del cliente y deja el trabajo ejecutándose.
FILESIZE
Tamaño de archivo (bytes) por defecto para los comandos ADD_FILE posteriores.
HELP
Resume los comandos interactivos.
KILL_JOB
Desconecta y suprime un trabajo.
PARALLEL
Cambia el número de workers activos para el trabajo actual.
PARALLEL=<número de workers>.
START_JOB
Inicia/reanuda el trabajo actual.
STATUS
Estado del trabajo de frecuencia (seg) que se va a controlar donde
el valor por defecto (0) mostrará el nuevo estado cuando esté disponible.
STATUS[=intervalo]
STOP_JOB
Cierra en orden la ejecución del trabajo y sale del cliente.
STOP_JOB=IMMEDIATE realiza un cierre inmediato del
trabajo de pump de datos.

16.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.
16.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.1

Reproducción prohibida 

Curso de administración de Oracle 10g (10.2)

Pagina 97 / 97

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.

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

16.4Restauración
 
 
Las restauraciones más fácil son las restauraciones a partir de un respaldo lógico, o de un respaldo 
'offline'.
16.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= mySID
linux>sqlplus /nolog
SQL> connect sys/clave as sysdba
SQL> startup mount; (opcionalmente puedes mencionar el parámetro  spfile=’carpeta\spfileSID.ora’)
3b. Y renombrar los archvos de datos movidos
SQL> alter database rename file ‘carpeta_vieja\DATAFILE_1.ora’ to ‘carpeta_nueva\DATAFIE_1.ora’;
SQL>alter database datafile ‘carpeta_nueva\DATAFILE1.ora’ online;
SQL>alter database open;

© Copyright  Cédric Simon, 2008

Versión 1.1

Reproducción prohibida 

Sign up to vote on this title
UsefulNot useful