curso de oracle 10g administracion nivel basico

97
Curso de administración de Oracle 10g (10.2) Manual del alumno © Copyright  Cédric Simon, 2008 Versión 1.1 Reproducción prohibida   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  SolucionJava.com

Upload: sefira111

Post on 09-Aug-2015

209 views

Category:

Software


6 download

TRANSCRIPT

Page 1: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración deOracle 10g (10.2)

Manual del alumno

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

  Ing. Cedric Sim

on – Tel: 2268 0974 – C

el: 8888 2387 – Em

ail:  ced

ric@so

lucio

nja

va

.com

 – Web: w

ww

.solucionjava.com

 Solu

cionJ

ava.com

Page 2: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

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

Page 3: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 4: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 5: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 6: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 7: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 8: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

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

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

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

1.4 Soporte después del curso   Si tienes preguntas sobre la materia del curso en tus ejercicios prácticos, puedes escribir tuspreguntas a [email protected] .

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

Page 9: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 9 / 97

2 Introducción a las bases de datos2.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 

Page 10: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 11: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 11 / 97

3 Terminología y conceptos3.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 

Page 12: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 12 / 97

3.2.9 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 

Page 13: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 13 / 97

3.3.6 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 

Page 14: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

4 Servidores SQL4.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 

Page 15: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

4.2.3 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 

Page 16: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 16 / 97

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

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

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

Memoria RAM Swap Space Required

Entre 1024 MB y 2048 MB 1.5 veces el tamaño de la RAM

Entre  2049 MB y 8192 MB Igual al tamaño de la RAM

Mas de 8192 MB 0.75 veces el tamaño de la RAM

Para verificar la memoria disponible: # grep MemTotal /proc/meminfoPara verificar la memoria disponible: # grep SwapTotal /proc/meminfoPara verificar la memoria libre: # free

Puedes obtener más espacio de swap usando un fichero en vez de reparticionando, aunque si estas configurando un servidor es más aconsejable reparticionar. Aqui se muestra como crear un fichero de 511995 kB y usarlo como swap (hazlo solo si necesitas más swap):su - rootcd /rootdd if=/dev/zero of=/root/tmpswp bs=1k count=500000chmod 600 tmpswpmkswap tmpswpswapon tmpswpgrep SwapTotal /proc/meminfo

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 /tmpPara verificar el disco total disponible: # df -k /5.1.1.3 Límites del kernel   Los parámetros del kernel son recomendaciones, pero no impiden necesariamente la instalación. En Suse 10.2 a pesar que los parámetros no son iguale, son suficiente para instalar y correr Oracle 10g.

Para mayor información, aquí como se pueden verificar y cambiar los parámetros del kernel:

/sbin/sysctl -a | grep sem/sbin/sysctl -a | grep shm/sbin/sysctl -a | grep file-max

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

Page 17: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 128kernel.shmmni = 4096kernel.shmall = 2097152kernel.shmmax = 2147483648fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

Así que editamos /etc/sysctl.conf y añadimos o cambiamos estas líneas:

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

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

/sbin/sysctl -p

Para ver los límites del shell ejecutamos ulimit -a, que mostrará algo similar a esto:

core file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedfile size (blocks, -f) unlimitedmax locked memory (kbytes, -l) unlimitedmax memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8stack size (kbytes, -s) unlimitedcpu time (seconds, -t) unlimitedmax user processes (-u) 2047virtual memory (kbytes, -v) unlimited

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

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

Añade lo siguiente a /etc/pam.d/login:session required /lib/security/pam_limits.so

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

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

Page 18: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

5.1.2 Requisitos de programas   5.1.2.1 Sistema operativo   Suse 10.2 no esta certificado con Oracle 10g, y por eso la instalación por defecto no se inicia desde Suse 10.2. 

Para poder arancar la instalación normalmente desde Suse 10.2 se ha modificado el archivo /install/oraparam.ini del lugar de instalación para agregar SuSE­10 a la lista de versiones certificadas. Otras opciones disponibles (ver punto 2.3).

En la última versión de Oracle 10g, Suse 10 está certificado, pero solo la versión Server Enterprise , no la versión gratis (openSuse). Pero no es porque no esta certificado que  no pueda correr bien...

Se necesitan las librerias siguientes:● gcc● gcc­c++● glibc● libaio● libaio­devel● make● openmotif­libs

Si usas otra version de Linux, verifica en la documentación de Oracle los requisitos, ya que varían según la distribución de Linux utilizada.

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

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

Page 19: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

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

Creamos el directorio base de oracle (/u01/app/oracle), y opcionalmente un directorio de datos para las bases de datos que creemos (/u02/oradata):mkdir -p /u01/app/oraclemkdir -p /u02/oradatachown -R oracle:oinstall /u01 /u02chmod -R 775 /u01 /u02

El directorio base debería tener 2.5Gb (2621440 KB) libres o 3.7Gb (3879731 KB) si no creamos un directorio de datos. Cuando no creamos un directorio de datos, oracle usa /u01/app/oracle/oradata. Cada base de datos ocupa un subdirectorio del directorio de datos.

Login en otra sesión como oracle y añade esta línea al final de /home/oracle/.bash_profile:umask 022

Crea este directoriomkdir -p /home/oracle/config/10.2

Añade estas variables de entorno (en /etc/profile.local si para todos, en /home/oracle/.profile si solo para oracle):ORACLE_BASE=/u01/app/oracle; export ORACLE_BASEORACLE_HOME=/u01/app/oracle/product/10.2/db_1; export ORACLE_HOMEORACLE_SID=test; export ORACLE_SIDORACLE_TERM=xterm; export ORACLE_TERMORACLE_OWNER=oracle; export ORACLE_OWNER#TNS_ADMIN=/home/oracle/config/10.2 export TNS_ADMINNLS_LANG=SPANISH_SPAIN.WE8ISO8859P1; export NLS_LANG#ORA_NLS10=${ORACLE_HOME}/db_1/nls/data; export ORA_NLS10CLASSPATH=${CLASSPATH}:${ORACLE_HOME}/jdbc/lib/classes12.zipLD_LIBRARY_PATH=${ORACLE_HOME}/lib; export LD_LIBRARY_PATHDISABLE_HUGETLBFS=1; export DISABLE_HUGETLBFSTEMP=/tmp; export TEMPTMPDIR=/tmp; export TMPPATH=$PATH:/u01/app/oracle/product/10.2/db_1/bin; export PATH

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 +suexport DISPLAY=:0.0gunzip ship.db.cpio.gzcpio -idmv < ship.db.cpio

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

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

Page 20: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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-releaseRed Hat Linux release 2.1 (drupal)^D

y luego ejecutar el instalador/camino_hacia_oracle_install/runInstaller

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

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

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

● Directorio de inventario:/home/oracle/oraInventory

● Grupo sistema operativodba

Pulsa Siguiente.

Seleccionar tipo de Tipo de Instalación

Selecciona Enterprise Edition o Standard Edition. 

● Enterprise Edition: la versión mas comlpleta y mas potente.● Standard Edition: la versión corriente que conviene a la pequeñas y 

medianas empresas.● Personalizada: usted elige cuales componentes se va a instalar.

Seleccione la instalación personalizada.Pulsa Siguiente.

Especificar Ubicación de los Archivos

Ejemplo de valores  a utilizar

Nombre: OraDb10g_home1 Ruta de acceso: /u01/app/oracle/product/10.2/db_1

Pulsa Siguiente.

Componentes disponibles del producto

Aquí se eligen los componentes que se van a instalar. Dependen de la licencias compradas, y de las necesidades de la empresa.

Vamos a quitar las marcas debajo de Oracle Enterpise Edition, ya que son opciones muy adelantadas que nos atrasarían instalando módulos que no 

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

Page 21: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

Asistente de  Configuración de Base de Datos

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

SID: testPulsa Siguiente

No Activar Copias de Seguridad Automáticas. Pulsa Siguiente.Contraseña para las cuentas SYS, SYSTEM, SYSMAN, DBSNMP. Por 

ejemplo escoge "SolJava" como contraseña única. Pulsa Siguiente.Selecciona "Sistema de Archivos". Pulsa Siguiente.

Selecciona “Usar ubicación común...” con /u02/oradata como directorio de almacenamiento de las bases de datos. Pulsa Siguiente.

Área de recuperación flash: /u02/oradata/flash. Pulsa Siguiente.Deja marcado “Esquema de ejemplo”. Pulsa siguiente.

Acepta los valores por defecto. Pulsa Seguiente.Muestra el resumen de almacenamiento de datos. Pulsa Siguiente.

Deja marcado 'Crear base de datos'. Pulsa Terminar.Revisa en resumen de instalación. Pulsa Aceptar.

Cuando el asistente finaliza muestra la siguiente información: 

Nombre de la Base de Datos Global: test. nombre_de_la_maquineIdentificador del Sistema (SID): test

Nombre de Archivo de Parámetros del Servidor: /u01/app/oracle/product/10.2/db_1/dbs/spfiletest.oraDatabase Controler: http://   nombre_de_la_maquine.dominio   :1158/em   

También nos indica que todas las cuentas excepto SYS, SYSTEM, DBSNMP, SYSMAN, estan bloqueadas. Pulsa Salir.

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

Page 22: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

5.2.2 Error ORA­12547: connection lost / conexión perdida   Eso significa que no cumpliste con los requisitos y te falto instalar la librería libaio.

Se puede instalar las librerias libaio y libaio­devel de desde el CD de SuSe 10.2.

Luego ejecuta $ORACLE_HOME/bin/relink all para ligar de nuevo las librería, y todo debería correr bien. 

5.2.3 Mensaje de fin de instalación   Se han desplegado las siguientes aplicaciones J2EE y se puede acceder a ellas en las siguientes direcciones URL.

URL de iSQL*Plus: http://asus.solucionajava.com:5560/isqlplus

URL de DBA de iSQL*Plus: http://asus.solucionajava.com:5560/isqlplus/dba

http:// nombre_de_la_maquine.dominio :1158/em

o

http:// nombre_de_la_maquine.dominio :5500/em

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:Ntest:/u01/app/oracle/product/10.2/db_1:Y

Crea el script de arranque en /etc/init.d/oracle con este contenido (cuidado a las doble comillas!): 

#!/bin/bash## Run-level Startup script for the Oracle Instance and Listener## chkconfig: 345 91 19# description: Startup/Shutdown Oracle listener and instance

ORA_HOME="/u01/app/oracle/product/10.2/db_1"ORA_OWNR="oracle"

# if the executables do not exist -- display error

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

Page 23: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

# depending on parameter -- startup, shutdown, restart # of the instance and listener or usage display

case "$1" in start) # Oracle listener and instance startup echo -n "Starting Oracle: " # start TNS listener su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl start" # start database su - $ORA_OWNR -c $ORA_HOME/bin/dbstart touch /var/lock/subsys/oracle

su - $ORA_OWNR -c $ORA_HOME/bin/“emctl start dbconsole” su - $ORA_OWNR -c $ORA_HOME/bin/“isqlplusctl start”

echo "OK" ;; stop) # Oracle listener and instance shutdown echo -n "Shutdown Oracle: " # stop TNS listener su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl stop" # stop database su - $ORA_OWNR -c $ORA_HOME/bin/dbshut rm -f /var/lock/subsys/oracle

su - $ORA_OWNR -c $ORA_HOME/bin/”emctl stop dbconsole” su - $ORA_OWNR -c $ORA_HOME/bin/“isqlplusctl stop”

echo "OK" ;; reload|restart) $0 stop $0 start ;; *) echo "Usage: $0 start|stop|restart|reload" exit 1esacexit 0

Hazlo ejecutable : chmod 755 oracleAñadelo a los niveles de ejecución ln -s /etc/init.d/oracle /etc/rc.d/rc2.d/S99oracleln -s /etc/init.d/oracle /etc/rc.d/rc3.d/S99oracleln -s /etc/init.d/oracle /etc/rc.d/rc5.d/S99oracleln -s /etc/init.d/oracle /etc/rc.d/rc0.d/K01oracleln -s /etc/init.d/oracle /etc/rc.d/rc6.d/K01oracle

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

Vamos a crear los atajos  rc:sucd /usr/sbinln -s /etc/init.d/oracle rcoracle

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

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

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

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

Page 24: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 24 / 97

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

1. La base de datos y el proceso Oracle Net listener estan ejecutandose.2. Oracle Enterprise Manager Database Control y iSQL/Plus* estan ejecutandose y son accesible 

con un navegador.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 utilizarsqlplus /nolog

2) En 1 paso :oracle@nombre_de_la_maquina:/u01$ sqlplus /nolog

SQL*Plus: Release 10.2.2.0 - Production on Dom Jul 4 19:41:32 2004

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

Page 25: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 25 / 97

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

SQL> CONNECT SYS/SolJava AS SYSDBAConectado.

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

ejecutaunset ORA_NLS10cat /etc/oratab

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

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

Agrega su usuario al grupo oinstallusermod alumno -G dba, oinstall

luego:su alumno -

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

Inicia Oracle

5.2.5.3 Iniciar Oracle   

5.2.5.3.1 Como rootrcoracle start

Si aparece un mensaje Failed to auto-start Oracle Net Listener using /ade/vikrkuma_new/oracle/bin/tnslsnr

Problema: hay un error el es script dbstart debajo de $ORACLE_HOME/bin

Modifica la línea siguiente (+­ linea 78):ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle

haciaORACLE_HOME_LISTNER=$ORACLE_HOME

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 

Page 26: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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/[email protected], oracle no lee el fichero sqlnet.ora. Va directamente al fichero tnsnames.ora.

Un ejemplo de sqlnet.ora: NAMES.DEFAULT_DOMAIN = nombre_de_la_maquina

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

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

Page 27: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 listenerLISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC) (KEY = EXTPROC0) ) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.x.x) (PORT = 1521) ) ) ) )

# SID list of the listener LISTENERSID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/10.2/db_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = test.nombre_de_la_maquina) (ORACLE_HOME = /u01/app/oracle/product/10.2/db_1) (SID_NAME = test) ) )

# directorio de log para el listener LISTENERLOG_DIRECTORY_LISTENER = /home/oracle/config

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

Para comprobar que el listener funciona usa tnsping: oracle@nombre_de_la_maquina:~$ tnsping test.nombre_de_la_maquina

TNS Ping Utility for Linux: Version 10.2.2.0 - Production on 04-JUL-2004 22:15:20

Copyright (c) 1997, 2003, Oracle. All rights reserved.

Archivos de parámetros utilizados:/home/oracle/config/sqlnet.ora

Adaptador TNSNAMES utilizado para resolver el aliasAttempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.x.x) (PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = TEST)))Realizado correctamente (0 mseg)

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

Page 28: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 28 / 97

5.4.1 netca   Para probar los anteriores ficheros, o configurar otros desde cero podemos usar el Asistente de Configuración: netca

Escoge "Local Net Service Name configuration" para probar el tnsnames.ora. Un error común: Connecting...ORA-12514: TNS:el listener no conoce actualmente el servicio solicitado en el descriptor de conexión

O en inglés Connecting...ORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect descriptor

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

Page 29: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 30: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 31: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 datosTiene dos estructuras básicas: Estructura física (para el almacenamiento de los datos) Estructura lógica (representación abstracta de los datos. Esquema    conceptual)Tipos de ficheros Ficheros de datos Ficheros de log Ficheros de control Ficheros de traza de los procesosLa estructura de una base de datos Oracle consiste de: Esquema: definiciones de tablas, vistas, procedimientos almacenados, ? Tablespaces , segmentos y extensiones para describir el almacenamiento    físico de los datos

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

Page 32: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

7.2.1 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 

Page 33: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

Page 34: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 35: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

7.4.2 Control file   Es el archivo que contiene la información sobre todos los archivos físicos de la base de datos. Como este archivo es crítico para poder arrancar la base de datos, se encuentra usualmente en varias copias, en 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_LOG_DEST_n

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

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

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

Page 36: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 36 / 97

8 Aplicación de un parche8.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 

Page 37: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 uno2. Cero o varios3. Uno4. Uno o varios5. 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 

Page 38: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 Con primer forma normalNo_cliente No_cliente No_clienteNombre Nombre No_visitaApellido Apellido EdadEdad_visita1 FechaEdad_visita2Fecha_visita1Fecha_visita2

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

Page 39: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 39 / 97

9.4.2 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 Con secunda forma normalNo_cliente No_cliente No_cliente No_cliente No_visitaNombre No_visita Nombre No_visita FechaApellido Edad Apellido Edad Tipo

FechaTipo

9.4.3 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 Con tercera forma normalNo_cliente No_cliente No_domicilioNombre No_domicilio DomicilioApellido Nombre CuidadDomicilio ApellidoCuidad TelTel CelularCelular

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 

Page 40: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

9.6.1 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

CHARCadena 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 

VARCHAR2Cadena de caracteres de longitud variable 

Entre 1 y 4000 bytes como máximo. El tamaño del campo dependerá del valor que contenga, es 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 

Page 41: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 41 / 97

longitud variable 

NCHAR

Cadena de caracteres de longitud fija que sólo almacena caracteres Unicode

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

NVARCHAR2

Cadena de caracteres de longitud variable que sólo almacena caracteres Unicode

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

LONG Cadena de caracteres de longitud variable

Como máximo admite hasta 2 GB (2000 MB). Los datos LONG deberán ser convertidos apropiadamente al moverse entre diversos sistemas.

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

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.

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

Admiten hasta 8 terabytes (8000 GB).

Una tabla puede contener varias columnas de tipo LOB.

Soportan acceso aleatorio.

Las tablas con columnas de tipo LOB no pueden ser replicadas. 

BLOBPermite almacenar datos binarios no estructurados

Admiten hasta 8 terabytes

CLOB Almacena datos de tipo carácter

Admiten hasta 8 terabytes

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

Page 42: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 42 / 97

NCLOBAlmacena datos de tipo carácter

Admiten hasta 8 terabytes. 

Guarda los datos según el juego de caracteres Unicode nacional. 

NUMBERAlmacena números fijos y en punto flotante

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):

nombre_columna NUMBER (precision, escala)

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.

FLOATAlmacena tipos de datos numéricos en punto flotante 

Es un tipo NUMBER que sólo almacena números en punto flotante 

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

Page 43: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

DATE Almacena un punto en el tiempo (fecha y hora) 

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.

Para entrada/salida de fechas, Oracle utiliza por defecto el formato DD-MMM-AA. Para cambiar este 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”) 

 

 

 

TIMESTAMPAlmacena datos de tipo hora, fraccionando los segundos 

 

TIMESTAMP WITH TIME ZONE

Almacena datos de tipo hora incluyendo la zona horaria (explícita), fraccionando los segundos 

 

TIMESTAMP WITH LOCAL TIME ZONE

Almacena datos de tipo hora incluyendo la zona horaria local (relativa), franccionando los segundos 

Cuando se usa un SELECT para mostrar los datos de este tipo, el valor de la hora será ajustado a la zona horaria de la sesión actual

XMLTypeTipo de datos abstracto. En realidad se trata de un CLOB. 

Se asocia a un esquema XML para la definición de su estructura.

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

Page 44: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

10Creación de base de datos10.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 

Page 45: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 46: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 47: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 47 / 97

10.2.6 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 

Page 48: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 48 / 97

10.2.8 Ubicación de los archivos   Puedes usar la ubicación de la plantilla o personalizarla. Clic en el botón 'Variablesd e Ubicación de Archivos..' para ver los detalles.

Pulsa Siguiente.

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 

Page 49: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 50: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 51: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 52: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 53: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

11Manejo de los tablespaces11.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 

Page 54: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

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

11.3.1.1.3 Activar registroSi no se activa el registro, no se registrarán las transacciones relativas a este tablespace a nivel de los redo logs, lo que aumentará la rapidez de las transacciones pero podría generar perdida de datos en caso de falla de la Oracle.

11.3.1.1.4 Tamaño de bloqueSe 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 inicialTamaño inicial del extent.

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

11.3.1.2.3 Tamaño mínimoEn caso que se quiere reducir el tamaño del tablespace,  el tamaño mínimo del extent.

11.3.1.2.4 Aumentar tamaño por porcentajeCada nuevo extent será de tanto porcentaje mas grande que el último.

11.3.1.2.5 Numero minimoMinimo de extents a crear al inicio.

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

11.3.1.2.7 Activar registroSi no se activa el registro, no se registrarán las transacciones relativas a este tablespace a nivel de los redo logs, lo que aumentará la rapidez de las transacciones pero podría generar perdida de datos en caso de falla de la Oracle.

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

Page 55: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 55 / 97

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

Page 56: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 57: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 58: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 59: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 where emp_no=45;START TRANSACTION;update employee set job_grade=5 where emp_no=45;SELECT emp_no,job_grade FROM employee where emp_no=45;rollback;SELECT emp_no,job_grade FROM employee where emp_no=45;START TRANSACTION;update employee set job_grade=5 where emp_no=45;SELECT emp_no,job_grade FROM employee where emp_no=45;commit;SELECT emp_no,job_grade FROM employee 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 

Page 60: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

Ejemplo:SELECT emp_no,job_grade FROM employee where emp_no>45;SELECT emp_no,job_grade FROM employee where emp_no=45 or emp_no=41;SELECT * FROM employee where emp_no between 40 and 45;SELECT * FROM employee where last_name like 'P%';

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>UNIONSELECT <campo_1>,<campo_2>,<...> FROM <nombre_tabla_2>;

Ejemplo:select t.first_name,t.last_name from employee t where job_grade=5unionselect t2.fname,t2.lname from usuario t2;

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

Page 61: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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> FROM <nombre_tabla > t <where cluase>) t3WHERE t3.<campo_1> IN (SELECT t2.<campo_1> FROM <nombre_tabla_2> t2);

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

SELECT t3.first_name,t3.last_name FROM employee t3where 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 employeewhere emp_no>45group by job_grade;SELECT job_grade, sum(salary) FROM employeewhere emp_no>45group by job_gradehaving 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 

Page 62: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 precedido por =, !=, <, <=, >, >= Hace un OR lógico entre todos los elementos. 

10 >= ANY (1,2,3,10) [TRUE] 

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

10 <= ALL (1,2,3,10) [TRUE] 

BEETWEEN x AND y 

Operando de la izquierda entre x e y. Equivalente a op >= x 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.  Niega la condición posterios NOT EXISTS… NOT BETWEEN NOT IN NOT = 

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 

Page 63: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 64: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 65: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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]

Examplescreate table SIMPLE (MY_NUM number primary key);

create table COPY_OF_EMP asselect * from EMP;

create table EMPTY_COPY asselect * 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 

Page 66: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 67: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 67 / 97

13.3.2 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 tablaSELECT * FROM emp_xt;

13.3.3 Ejercicios   1. Crea una table de empleados con nombre, fecha de nacimiento, y salario.2. Ingresa unas filas de datos.3. Agrega en apellido a la tabla, que no sea nulo.4. 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 

Page 68: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 69: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 PARTITION partition COALESCE MODIFY PARTITION partition UNUSABLE MODIFY PARTITION partition UPDATE BLOCK REFERENCES MODIFY PARTITION partition PARAMETERS ('alter_partition_params') MODIFY PARTITION partition 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_options] REBUILD NOREVERSE [rebuild_options] REBUILD REVERSE [rebuild_options] REBUILD [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 

Page 70: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 Ejercicios   1. Llena una tabla con miles de filas2. Haga una consulta sobre un campo que no tenga indice. Nota el tiempo de ejecución.3. Repite la consulta.4. Crea un indice sobre el campo de búsqueda, y repite la consulta.5. 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 Modificación   ALTER VIEW [schema.]view COMPILE;ALTER VIEW [schema.]view ADD out_of_line_constraint;ALTER VIEW [schema.]view MODIFY CONSTRAINT constraint {RELY | NORELY};ALTER VIEW [schema.]view DROP CONSTRAINT constraint;ALTER VIEW [schema.]view DROP PRIMARY KEYALTER VIEW [schema.]view UNIQUE (column [,column,...])

When a constraint is in NOVALIDATE mode, Oracle does not enforce it and does not take it into account for query rewrite. If you specify RELY Oracle will still not enforce the constraint but will take it into account for query rewrite.

An alternative to ALTER VIEW COMPILE is the built­in pl/sql package DBMS_UTILITY

13.5.3 Eliminación   DROP VIEW [schema.]view [CASCADE CONSTRAINTS]

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

Page 71: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 71 / 97

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

Page 72: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 72 / 97

13.7.3 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 

Page 73: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 resultado2. Crear un procedimiento que inserta un nuevo empleado3. Crear un paquete con procedimiento para modificar un empleado, y una función para obtener la 

fecha de nacimiento del empleado4. Usar los procedimientos/funciones en select5. 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) ]] | [ [NOT] SUBSTITUTABLE AT ALL LEVELS ]]

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

Page 74: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

Page 75: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 75 / 97

13.9.2 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 

Page 76: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 76 / 97

14Manejo de usuarios14.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 

Page 77: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 77 / 97

14.1.1 Usuarios especiales    SYS. Es el único usuario con acceso al esquema SYS, que guarda las tablas y vistas para el 

diccionario de datos de la base de datos. Solo se usa para cambiar los parámetros de almacenamiento del diccionario de datos. Este usuario se crea automáticamente al crear una base de datos y tiene rol DBA.

SYSTEM. Solo se usa para crear tablas y vistas con información relativa a la administración de la base de datos. Este usuario se crea automáticamente al crear una base de datos y tiene rol DBA.

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

Page 78: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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.

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

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

DELETE Puede borrar filas dentro de la tabla o vista.

ALTER Puede alterar la tabla.

INDEX Puede crear índices de una tabla.

REFERENC Puede crear claves ajenas que referencie a esta tabla.

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

Page 79: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 80: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 statemente.g.GRANT SELECT (empno), UPDATE (sal) ON scott.emp TO emma

WITH HIERARCHY OPTION will grant the object privilege on all subobjects, including any created after the GRANT statement is issued.

WITH GRANT OPTION will enable the grantee to grant those object privileges to other users and roles.

"GRANT ALL PRIVILEGES..." may also be written as "GRANT ALL..."

Changes in a grant applied to a role will be immediately picked up by all logged-in users.Changes in a grant applied directly to a user require a logoff and re-login.

Grants of UNLIMITED TABLESPACE must be direct.Grants to users running background jobs (dbms_job.submit) have to be direct; when the job starts running no roles are active.

GRANT CREATE session, CREATE table, CREATE view, CREATE procedure,CREATE synonym, ALTER table, ALTER view, ALTER procedure,ALTER synonym, DROP table, DROP view, DROP procedure,DROP synonym, TO MyRole;

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 

Page 81: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 82: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 Me.g.CREATE PROFILE MyProfile LIMIT PRIVATE_SGA 50 K

New with Oracle 8 are password related profile limits...

Syntax:

CREATE PROFILE profile_name LIMIT pw_limit(s) range

KEY pw_limit = PASSWORD_LIFE_TIME PASSWORD_GRACE_TIME PASSWORD_REUSE_TIME PASSWORD_REUSE_MAX FAILED_LOGIN_ATTEMPTS PASSWORD_LOCK_TIME

range = UNLIMITED | DEFAULT | expression

Syntax to customise password verification:

CREATE PROFILE profile_name LIMIT PASSWORD_VERIFY_FUNCTION {plsql_function | NULL | DEFAULT}

Definitions CONNECT_TIME - Max. time user may stay connected IDLE_TIME - Max. time user may stay connected & idle PRIVATE_SGA - Session space in the shared pool - K or M (bytes) COMPOSITE_LIMIT - A weighted sum of CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION, and PRIVATE_SGA. PASSWORD_LIFE_TIME - Expire password after X no of days PASSWORD_GRACE_TIME - Lock account X days after LIFE_TIME expires. PASSWORD_REUSE_TIME - Min. no. days before the same pw may be reused PASSWORD_REUSE_MAX - Min. no. of number of pw changes before the current password can be reused FAILED_LOGIN_ATTEMPS - Max no. of incorrect logins before account is locked PASSWORD_LOCK_TIME - Max. no. of days an account will be locked

DEFAULT refers to values set in the DEFAULT user profile.

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 

Page 83: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 84: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 84 / 97

15Manejo de transacciones15.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 

Page 85: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 

Page 86: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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', 'YYYY-MM-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 

Page 87: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 99999999999999999COLUMN versions_starttime FORMAT A24COLUMN versions_endscn FORMAT 99999999999999999COLUMN versions_endtime FORMAT A24COLUMN versions_xid FORMAT A16COLUMN versions_operation FORMAT A1COLUMN description FORMAT A11SET 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 VERSIONS_STARTTIME VERSIONS_ENDSCN VERSIONS_ENDTIME VERSIONS_XID V DESCRIPTION------------------ ------------------------ ------------------ ------------------------ ---------------- - ----------- 725212 29-MAR-04 02.59.16 PM 02001C0043030000 U THREE 725209 29-MAR-04 02.59.16 PM 725212 29-MAR-04 02.59.16 PM 0600030021000000 U TWO 725209 29-MAR-04 02.59.16 PM ONESELECT versions_startscn, versions_starttime, versions_endscn, versions_endtime, versions_xid, versions_operation, description FROM flashback_version_query_test VERSIONS BETWEEN SCN 725202 AND 725219WHERE id = 1;

VERSIONS_STARTSCN VERSIONS_STARTTIME VERSIONS_ENDSCN VERSIONS_ENDTIME VERSIONS_XID V DESCRIPTION------------------ ------------------------ ------------------ ------------------------ ---------------- - ----------- 725212 29-MAR-04 02.59.16 PM 02001C0043030000 U THREE 725209 29-MAR-04 02.59.16 PM 725212 29-MAR-04 02.59.16 PM 0600030021000000 U 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 

Page 88: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 88 / 97

Ejemplo:SELECT xid, operation, start_scn,commit_scn, logon_user, undo_sqlFROM flashback_transaction_queryWHERE xid = HEXTORAW('0600030021000000');

XID OPERATION START_SCN COMMIT_SCN---------------- -------------------------------- ---------- ----------LOGON_USER------------------------------UNDO_SQL----------------------------------------------------------------------------------------------------0600030021000000 UPDATE 725208 725209SCOTTupdate "SCOTT"."FLASHBACK_VERSION_QUERY_TEST" set "DESCRIPTION" = 'ONE' where ROWID = 'AAAMP9AAEAAAAAYAAA';

0600030021000000 BEGIN 725208 725209SCOTT

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 

Page 89: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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:07EST

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:39EST

SELECT * FROM "BIN$TDGqmJZKR8u+Hrc6PGD8kw==$0";

ID---------- 1

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

Page 90: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 TABLE tablename; -- Specific table.PURGE INDEX indexname; -- Specific index.PURGE TABLESPACE ts_name; -- All tables in a specific tablespace.PURGE TABLESPACE ts_name USER username; -- All tables in a specific tablespace for a specific user.PURGE RECYCLEBIN; -- The current users entire recycle bin.PURGE DBA_RECYCLEBIN; -- 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 SYSDBAALTER 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 IMMEDIATESTARTUP MOUNTARCHIVE LOG STARTALTER DATABASE ARCHIVELOG;ALTER DATABASE OPEN;

Flashback debe estar encendido antes cualquier operación de flashback:

CONN sys/password AS SYSDBASHUTDOWN IMMEDIATESTARTUP MOUNT EXCLUSIVEALTER 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 

Page 91: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 SYSDBASHUTDOWN IMMEDIATESTARTUP MOUNT EXCLUSIVEFLASHBACK DATABASE TO TIMESTAMP SYSDATE-(1/24/12);ALTER DATABASE OPEN RESETLOGS;

-- Check that the table is gone.CONN scott/tigerDESC flashback_database_testSome 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 

Page 92: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 Yesindica si se exportan también las filas de las tablas, o sólo las definiciones de las tablas.

CONSTRAINTS Yes indica si se exportan también las restricciones.COMPRESS Yes indica si se exporta en modo comprimido.FULL No indica si se exporta la BD entera.OWNER usuario actual una lista de usuarios cuyos objetos se quieren exportar.TABLES indefinido la lista de tablas a exportar.

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

Page 93: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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 Yesindica 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 tablespaceSe pueden exportar tablespace de un solo, usando la herramientas exp. Pero primero hay que ponerla en lectura sola.

Ejemplo:alter tablespace test_data read only;alter tablespace test_index read only;exp transport_tablespace=Y tablespaces=(test_data,test_index);

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

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=Yfile=full_export_filename

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

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

Page 94: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 94 / 97

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

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

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

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

Page 95: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 95 / 97

16.1.6 Diversos   Se puede usar la vista DBA_DATAPUMP_JOBS para ver los trabajos en ejecución:

system@db10g> select * from dba_datapump_jobs;

OWNER_NAME JOB_NAME OPERATION------------------------------ ------------------------------ ------------------------------JOB_MODE STATE DEGREE ATTACHED_SESSIONS------------------------------ ------------------------------ ---------- -----------------SYSTEM SYS_EXPORT_FULL_01 EXPORTFULL EXECUTING 1 1

Los parámetros INCLUDE y EXCLUDE se pueden usar para limitar el import/export a ciertos objetos.

expdp alumno/ok@curso schemas=ALUMNO include=TABLE:"IN ('EMPLEADOS', 'CITY')" directory=TEST_DIR dumpfile=ALUMNO.dmp logfile=expdpALUMNO.log

expdp alumno/ok@curso schemas=ALUMNO exclude=TABLE:"= 'MTM_LAB_PRESC2LAB_TEST'" directory=TEST_DIR dumpfile=ALUMNO.dmp logfile=expdpALUMNO.log

expdp help=Y

Export: Release 10.2.0.1.0 - Production on Martes, 26 Agosto, 2008 10:54:19

Copyright (c) 2003, 2005, Oracle. All rights reserved.

La utilidad de exportación de pump de datos proporciona un mecanismo para transferir objetos de datosentre bases de datos Oracle. La utilidad se llama con el siguiente comando:

Ejemplo: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

Puede controlar cómo se ejecuta la exportación introduciendo el comando 'expdp' seguidopor varios parámetros. Para especificar los parámetros, utilice palabras clave:

Formato: expdp KEYWORD=valor o KEYWORD=(valor1,valor2,...,valorN) Ejemplo: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott o TABLES=(T1:P1,T1:P2), si T1 es una tabla particionada

USERID debe ser el primer parámetro de la línea de comandos.

Palabra Clave Descripción (Valor por Defecto)------------------------------------------------------------------------------ATTACH Se conecta al trabajo existente, p. ej. ATTACH [=nombre del trabajo].COMPRESSION Reduce el tamaño del contenido del archivo de volcado donde sea válido los valores de las palabras clave son: (METADATA_ONLY) y NONE.CONTENT Especifica los datos que se van a descargar donde las palabras clave válidas son: (ALL), DATA_ONLY y METADATA_ONLY.DIRECTORY Objeto de directorio que se va a utilizar para los archivos de volcado y archivos log.DUMPFILE Lista de archivos de volcado de destino (expdat.dmp), p. ej. DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.ENCRYPTION_PASSWORD Clave de contraseña para crear datos de columna cifrados.ESTIMATE Calcula las estimaciones de trabajo donde las palabras clave válidas son: (BLOCKS) y STATISTICS.ESTIMATE_ONLY Calcula las estimaciones de trabajo sin realizar la exportación.EXCLUDE Excluye tipos de objetos específicos, p. ej. EXCLUDE=TABLE:EMP.FILESIZE Especifica el tamaño de cada archivo de volcado en unidades de bytes.FLASHBACK_SCN SCN utilizado para volver a definir la instantánea de sesión.FLASHBACK_TIME Tiempo utilizado para obtener el SCN más cercano al tiempo especificado.FULL Exporta toda la base de datos (N).HELP Muestra los mensajes de ayuda (N).INCLUDE Incluye tipos de objetos específicos, p. ej. INCLUDE=TABLE_DATA.JOB_NAME Nombre del trabajo de exportación que se va a crear.LOGFILE Nombre del archivo log (export.log).NETWORK_LINK Nombre del enlace de base de datos remota al sistema de origen.NOLOGFILE No escribe en el archivo log (N).PARALLEL Cambia el número de workers activos para el trabajo actual.PARFILE Especifica el archivo de parámetros.

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

Page 96: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

Curso de administración de Oracle 10g (10.2) Pagina 96 / 97

QUERY Cláusula de predicado utilizada para exportar un subjuego de una tabla.SAMPLE Porcentaje de datos para exportar;SCHEMAS Lista de esquemas que se van a exportar (esquema de conexión).STATUS Estado del trabajo de frecuencia (seg) que se va a controlar donde el valor por defecto (0) mostrará el nuevo estado cuando esté disponible.TABLES Identifica una lista de tablas que se van a exportar - sólo un esquema.TABLESPACES Identifica una lista de tablespaces que se van a exportar.TRANSPORT_FULL_CHECK Verifica segmentos de almacenamiento de todas las tablas (N).TRANSPORT_TABLESPACES Lista de tablespaces desde los que se descargarán los metadatos.VERSION Versión de los objetos que se van a exportar donde las palabras clave válidas son: (COMPATIBLE), LATEST o cualquier versión de base de datos válida.

Los siguientes comandos son válidos mientras se está en modo interactivo.Nota: Están permitidas las abreviaturas

Comando Descripción------------------------------------------------------------------------------ADD_FILE Agrega un archivo de volcado al juego de archivos de volcado.CONTINUE_CLIENT Vuelve al modo de registro. El trabajo se reiniciará si está inactivo.EXIT_CLIENT Sale de la sesión del cliente y deja el trabajo ejecutándose.FILESIZE Tamaño de archivo (bytes) por defecto para los comandos ADD_FILE posteriores.HELP Resume los comandos interactivos.KILL_JOB Desconecta y suprime un trabajo.PARALLEL Cambia el número de workers activos para el trabajo actual. PARALLEL=<número de workers>.START_JOB Inicia/reanuda el trabajo actual.STATUS Estado del trabajo de frecuencia (seg) que se va a controlar donde el valor por defecto (0) mostrará el nuevo estado cuando esté disponible. STATUS[=intervalo]STOP_JOB Cierra en orden la ejecución del trabajo y sale del cliente. STOP_JOB=IMMEDIATE realiza un cierre inmediato del trabajo de pump de datos.

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 

Page 97: CURSO DE ORACLE 10G ADMINISTRACION NIVEL BASICO

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

3b. Y renombrar los archvos de datos movidosSQL> alter database rename file ‘carpeta_vieja\DATAFILE_1.ora’ to ‘carpeta_nueva\DATAFIE_1.ora’;SQL>alter database datafile ‘carpeta_nueva\DATAFILE1.ora’ online;SQL>alter database open;

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