martes, 27 de julio de 2010

EJERCICIO

CREAR TABLESPACE

CREATE TABLESPACE EXAMEN152
DATAFILE 'D:\DATA\EXAMEN152.ORA' SIZE 10M
AUTOEXTEND ON NEXT 1024 K
PERMANENT
ONLINE;


VER LOSTABLESPACE CREADOS

SELECT * FROM DBA_TABLESPACES;


ADICIONAR DATAFILE AL TABLESPACE

ALTER TABLESPACE EXAMEN152 ADD DATAFILE 'D:\DATA\EXAMEN152.ORA' SIZE 10M AUTOEXTEND ON NEXT 1024 K;


CREAR USUARIO

CREATE USER MANUEL IDENTIFIED BY MANUEL DEFAULT TABLESPACE EXAMEN152
ACCOUNT UNLOCK;

CONCEDER PRIVILEGIOS

GRANT CONNECT, RESOURCE TO MANUEL;


CREAR TABLAS

CREATE TABLE SOCIOS("NUM_SOCIO" NUMBER (5) NOT NULL,
"NOM_SOCIO" VARCHAR(50) NOT NULL, "FECH_NAC_SOCIO" VARCHAR(20),
SEXO_SOCIO VARCHAR(20), CONSTRAINT "PK_SOCIOS" PRIMARY KEY("NUM_SOCIO"))
TABLESPACE EXAMEN152;

CREATE TABLE CUENTAS("NUM_CTA" NUMBER(5) NOT NULL,
"FECH_CREA" VARCHAR(20) NOT NULL,
"SALDO" NUMBER(10),
"NUM_SOCIO" NUMBER(5) constrainT fk_SOCIOS references SOCIOS,
CONSTRAINT "PK_CUENTAS" PRIMARY KEY("NUM_CTA"))
TABLESPACE EXAMEN152;

CREATE TABLE PRESTAMOS("NUM_PRESTAMO" NUMBER (5) NOT NULL,
"FECH_APROB" VARCHAR(20),
"FECHA_ENTREGA" VARCHAR(20),
"PLAZO" VARCHAR(20),
"MONTO_ESTIMADO" NUMBER(10),
"SALDO" NUMBER(5),
"NUM_SOCIO" NUMBER(5) CONSTRAINT fk_SOCIOS1 REFERENCES SOCIOS, CONSTRAINT "PK_PRESTAMOS" PRIMARY KEY("NUM_PRESTAMO"))
TABLESPACE EXAMEN152;


CREATE TABLE PAGOS("NUM_PAGO" NUMBER(5) NOT NULL,
"FECH_PAGO" VARCHAR(20),
"MONTO_PAGO" NUMBER(10),
"NUM_PRESTAMO" NUMBER(5) CONSTRAINT FK_PRESTAMO REFERENCES PRESTAMOS,
CONSTRAINT "PK_PAGOS" PRIMARY KEY("NUM_PAGO"))
TABLESPACE EXAMEN152;


CREATE TABLE TRANSANCCION(
"NUM_TRANS" NUMBER(5) NOT NULL,
"TIPO_TRANS" VARCHAR(50),
"FECHA_TRANS" VARCHAR(20),
"MONTO_TRANS" NUMBER(10),
"NUM_CUENTA" CONSTRAINT FK_CUENTA1 REFERENCES CUENTAS,
CONSTRAINT "PK_TRANSACCION" PRIMARY KEY("NUM_TRANS")
)


CREAR SECUENCIAS


CREATE SEQUENCE SQ_SOCIOS
START WITH 1
INCREMENT BY 1;

CREATE SEQUENCE SQ_CUENTAS
START WITH 1
INCREMENT BY 1;

CREATE SEQUENCE SQ_PRESTAMOS
START WITH 1
INCREMENT BY 1;

CREATE SEQUENCE SQ_PAGOS
START WITH 1
INCREMENT BY 1;

CREATE SEQUENCE SQ_TRANSACCIONES
START WITH 1
INCREMENT BY 1;



CREAR CLAVES PRIMARIAS


CREATE OR REPLACE TRIGGER CLAVE_PRIMARIA_SOCIOS
BEFORE INSERT ON SOCIOS
FOR EACH ROW
DECLARE
VALOR NUMBER;
BEGIN
SELECT SQ_SOCIOS.NEXTVAL INTO VALOR FROM DUAL;
:NEW.NUM_SOCIO:=VALOR;
END;
/
CREATE OR REPLACE TRIGGER CLAVE_PRIMARIA_CUENTAS
BEFORE INSERT ON CUENTAS
FOR EACH ROW
DECLARE
VALOR NUMBER;
BEGIN
SELECT SQ_CUENTAS.NEXTVAL INTO VALOR FROM DUAL;
:NEW.NUM_CTA:=VALOR;
END;
/

CREATE OR REPLACE TRIGGER CLAVE_PRIMARIA_PRESTAMOS
BEFORE INSERT ON PRESTAMOS
FOR EACH ROW
DECLARE
VALOR NUMBER;
BEGIN
SELECT SQ_PRESTAMOS.NEXTVAL INTO VALOR FROM DUAL;
:NEW.NUM_PRESTAMO:=VALOR;
END;
/
CREATE OR REPLACE TRIGGER CLAVE_PRIMARIA_PRESTAMOS
BEFORE INSERT ON PRESTAMOS
FOR EACH ROW
DECLARE
VALOR NUMBER;
BEGIN
SELECT SQ_PRESTAMOS.NEXTVAL INTO VALOR FROM DUAL;
:NEW.NUM_PRESTAMO:=VALOR;
END;
/

CREATE OR REPLACE TRIGGER CLAVE_PRIMARIA_TRANSACCION
BEFORE INSERT ON TRANSANCCION
FOR EACH ROW
DECLARE
VALOR NUMBER;
BEGIN
SELECT SQ_TRANSACCIONES.NEXTVAL INTO VALOR FROM DUAL;
:NEW.NUM_TRANS:=VALOR;
END;
/



INSERTAR DATOS EN TABLA PRESTAMOS
INSERT INTO PRESTAMOS VALUES(NULL, '11/02/2009', '01/03/2009', '18 MESES', 2000 ,1000, 4)



INSERTAR DATOS EN LA TABLA CUENTAS

INSERT INTO CUENTAS VALUES(NULL,'10/07/2010', 150, 1);
INSERT INTO CUENTAS VALUES(NULL,'09/07/2010', 100, 2);
INSERT INTO CUENTAS VALUES(NULL,'08/07/2010', 50, 3);


INSERTAR DATOS EN LA TABLA SOCIOS

INSERT INTO SOCIOS VALUES(NULL,'MANUEL POZO', '13/08/1983','PASANDO UN DIA'


Autor: Andrés Arredondo

ARQUITECTURA DE UN SERVIDOR ORACLE 9

INTRODUCCION


CONCEPTOS GENERALES

•Base de datos

Una Base de Datos Oraclees un conjunto de datos almacenado y accesible según el formato de tablas relacionales. Está almacenada físicamente en ficheros, y la correspondencia entre los ficheros y las tablas es posible gracias a las estructuras internas de la BD, que permiten que diferentes tipos de datos estén almacenados físicamente separados. Está división lógica se hace gracias a los espacios de tablas, (tablespaces).

La estructurade la base de datos debe responder a las necesidades del mundo real en cuanto a sus interrelaciones y restricciones.

•DBMS

DBMS (Database Management System) es el software que contiene la colección ordenada y sincronizada de programas procedimientosy lenguajes, que permite gestionar una base de datos. Un RDBMS es un DBMS relacional, es decir, cuya naturalezaes la formación de relaciones al interior del mismo.

•DBA

DBA (Administrador de Base de Datos) es el principal responsable de la operación, configuración y rendimiento de una base de datos. Su principal tarea consiste en resguardar la integridad de los datos almacenados en la base, proveyendo para esto mecanismos de respaldo, efectuando monitorizaciones periódicas al sistema, implementando medidas de seguridad, etc.

•Tipos de base de datos

Desde el punto de vista de organización lógica:

•Jerárquicas

•Relacionales (Oracle, SQL Server, db2, Sybase, etc.)

Desde el punto de vista de número de usuarios:

•Mono Usuarios

•Multiusuario

Arquitecturas multiusuario

1. TELEPROCESO
Aparece para compartir información y recursos entre usuarios.

Servidor

•Maneja la administración

•Administra el sistema operativo multiusuario

•Maneja las aplicaciones

Ventajas

•Mayor velocidad

•Conectividad eficiente

•Seguridad

Desventajas
•Bajo rendimiento con sobrecarga de aplicaciones solicitadas por el usuario

•Crecimiento limitado de la red

•Limite de crecimiento de la red



ARQUITECTURA DE UN SERVIDOR ORACLE 9

ESQUEMA GENERAL

• Por cada instancia de Oracle se tiene una sola base de datos.
• En un servidor se puede crear varias instancias pero es recomendable solo una porque cada instancia consume muchos recursos.

Arquitectura de Oracle 9
La arquitectura de Oracle tiene tres componentes básicos:
• Las estructuras de memoria. Para almacenar los datos y el código ejecutable.
• Los Procesos. Son los que corren el sistema de BD y las tareas de cada usuario conectado a la BD.
• Los Archivos. Son los que sirven para el almacenamiento físico en el disco de la información de la BD.

INSTANCIA DE ORACLE


Para permitir el acceso a los datos, Oracle utiliza un conjunto de procesos que son compartidos por todos los usuarios. Además, existen estructuras de memoria que son utilizadas para almacenar los datos más recientemente solicitados a la BD.
Una instancia de BD es el conjunto de estructuras de memoria y de procesos que acceden a los ficheros de datos.
Los parámetros que determinan el tamaño y composición de una instancia están almacenados en un fichero llamado init.ora. Este fichero es leído durante el arranque de la BD y puede ser modificado por el DBA. Cualquier modificación de este fichero no tiene efecto hasta la siguiente vez que se arranque la BD.
• La instancia de Oracle está compuesta por el proceso de fondo y un área de memoria compartida SGA
• Consiste en una estructura de memoria SGA (System Global Area) y un conjunto de procesos usados por el servidor de Oracle para gestionar una BD.

ESTRUCTURA DE MEMORIA

• Hay dos clases de memoria, una de ella compartida por todos los usuarios conectados y otra dedicada al trabajo de cada una de ellas.
• SGA (System Global Area)
• PGA (Process Global Area)

SGA (System Global Area)
Sirve para facilitar la transferencia de información entre usuarios y también almacena la información estructural de la BD más frecuentemente requerida.
• El SGA es utilizado para el intercambio de datos entre el servidor y las aplicaciones cliente.
• Una instancia Oracle puede abrir una sola base de datos a la vez.


• Library Cache
Almacena las sentencias SQL mas recientes en memoria.
• Database Dictionary Cache
Buffer para el diccionario de datos. Tablas, columnas, tipos, índices.
• Database Buffer Cache
Buffer de la base de datos, contiene bloques de datos que han sido cargados desde los Datafiles.
• Redo Log Buffer Cache
Bloques de datos que han sido actualizados.



PGA (Process Global Area)
El Process Global Area es un área de memoria utilizada por un proceso Oracle. Esta zona de memoria no se puede compartir.
Es un área no compartida en la cual se puede escribir y contiene:
• Área e almacenamiento
• Información de la sesión
• Estado del cursor
• Espacio de la pila


TABLESPACE (ESPACIO DE TABLAS)


Una base de datos se divide en unidades lógicas denominadas TABLESPACES. Un tablespace no es un fichero físico en el disco, simplemente es el nombre que tiene un conjunto de propiedades de almacenamiento que se aplican a los objetos (tablas, secuencias…) que se van a crear en la base de datos bajo el tablespace indicado (tablas, secuencias…). Un espacio de tablas puede pertenecer sólo a una BD.
Un objeto en base de datos debe estar almacenado obligatoriamente dentro de un tablespace.
Cuando se crea una tabla se debe indicar el espacio de tablas al que se destina. Por defecto se depositan en el espacio de tablas SYSTEM
Las propiedades que se asocian a un tablespace son:
• Localización de los ficheros de datos.
• Especificación de máximas cuotas de consumo de disco.
• Control de la disponibilidad de los datos (en línea o fuera de línea).
• Backup de datos.
Cuando un objeto se crea dentro de un cierto tablespace, este objeto adquiere todas las propiedades antes descritas del tablespace utilizado.
Las propiedades de un TableSpace pueden ser:
• Sus ficheros de datos están en $ORACLE_HOME/datos/datos_tablespace_A
• Los objetos no pueden ocupar más de 10Mb de espacio de base de datos.
• En cualquier momento se puede poner fuera de línea todos los objeto de un cierto tablespace.
• Se pueden hacer copiar de seguridad sólo de ciertos tablespaces.
Los índices no son más que objetos independientes dentro de la base de datos, como lo son las tablas. Y al ser objetos independientes, pueden ir en tablespaces independientes. En él Tablespace SYSTEM se almacenan todos los datos de sistema, el catálogo y todo el código fuente y compilado de procedimientos PL/SQL. También es posible utilizar el mismo tablespace para guardar datos de usuario. En el esquema también vemos que hay un tablespace Temporal (en gris oscuro). Este representa las propiedades que tendrán los objetos que la base de datos cree temporalmente para sus cálculos internos (normalmente para ordenaciones y agrupaciones). Su creación difiere en una de sus cláusulas de creación. El tablespace RO (en gris claro) difiere de los demás en que es de solo lectura (Read Only), y que por lo tanto todos los objetos en él contenidos pueden recibir órdenes de consulta de datos, pero no de modificación de datos. Estos puede residir en soportes de sólo lectura, como pueden ser CDROMs, DVDs, etc. Cuando se crea un tablespace, éste se crea de lectura/escritura. Después se puede modificar para que sea de solo lectura. Un tablespace puede estar en línea o fuera de ella (Online o OffLine), esto es que todos los objetos contenidos en él están a disposición de los usuarios o están inhabilitados para restringir su uso. Cualquier objeto almacenado dentro de un tablespace no podrá ser accedido si este está fuera de línea.


PROCESOS
Los procesos son programas que se ejecutan para permitir el acceso a los datos, estos procesos se cargan en memoria y son transparentes para los usuarios y son los siguientes:
• PMON (Process Monitor)
Monitorea los procesos de los usuarios en caso de que la conexión falle.
• SMON (System Monitor)
Proceso encargado de recuperar la instancia y abrir la base de datos en caso de que ocurra alguna falla.
• CKPT (CheckPoint Process)
Sintoniza las tareas de grabación en BD.
• DBWR (Database Write)
• Escribe los bloques de datos de la memoria a la base de datos.
• Es uno de los dos únicos procesos que tienen permitido escribir en los archivos de datos que componen la base de datos Oracle.




• LGWR (Log Writer)
• Graba los bloques del Redo Log del Fuffer a los archivos Redo Log File.
• Escribe las transacciones que se encuentran en los Redo Log a Disco cuando ocurre un commit.



BASE DE DATOS

La base de datos Oracle es un conjunto de datos tratados como una sola y misma entidad y está constituida de tres tipos de archivos, a saber:
• Los ficheros de control (Control File)
• Los ficheros de datos (Data File)
• Los ficheros log (Log File)
• Control File
Contiene información para mantener y controlar la integridad de la base de datos. Estos archivos especifican cuales Datafiles conforman la BD para poder tener acceso a los datos o para poder recuperar la BD antes de una falla
• Data File
Sirve para el almacenamiento físico de las tablas, índices y procedimientos, Estos son los archivos donde se almacenan los datos de las aplicaciones es decir contienen los datos de los usuarios de la base de datos.
• Redo Log File
Almacena los cambios hechos en la base de datos con propósito de recuperarlos en caso de falla.

CONEXIONES DE UNA BASE DE DATOS


1. CONEXIÓN NATIVA

Es una conexión entre el cliente y el servidor sin utilizar otra aplicación y pertenecen a una misma plataforma (familia).
Requerimientos para realizar una conexión nativa o TNS
• Add Database Alias
• Database Alias. Nombre a la instancia del servidor o nombre a la base de datos de nuestro servidor.
• Protocolo a usar (TCP/IP).
• TCP/IP
Hostname: IP del servidor
Database Instance: Oracle
• Verificación de los datos
• Exit Neteasy Configuration

2. CONEXIÓN ODBC

Es una conexión entre el cliente y el servidor utilizando una aplicación para la conexión, es decir una conexión entre diferentes plataformas (familias).
Requisitos
• Instalar el driver ODBC de Oracle.
• Crear la conexión nativa.
• Crear la conexión ODBC.


ESQUEMA GENERAL DE LA CONEXIÓN A UNA BD DE ORACLE



• Proceso Usuario
Es un programa, aplicación o herramienta que usa el usuario para iniciar un proceso de usuario y establecer una conexión.
• Proceso servidor
Una vez establecida la conexión, un proceso servidor es iniciado, el cual maneja la peticiones del proceso usuario.
Un proceso servidor puede ser dedicado, es decir es decir solo atiende las peticiones de un solo proceso usuario, o puede ser compartido, con lo cual puede atender múltiples procesos usuarios.
• Sesión
Es una conexión específica de un usuario a un servidor Oracle.
• Se inicia cuando el usuario es validado por el servidor Oracle.
• Finaliza cuando el usuario termina la sesión en forma normal o aborta la sesión.

AREAS LÓGICAS Y ARCHIVOS FISICOS

TABLESPACE (ESPACIO DE TABLAS)


Una base de datos se divide en unidades lógicas denominadas TABLESPACES. Un tablespace no es un fichero físico en el disco, simplemente es el nombre que tiene un conjunto de propiedades de almacenamiento que se aplican a los objetos (tablas, secuencias…) que se van a crear en la base de datos bajo el tablespace indicado (tablas, secuencias…). Un espacio de tablas puede pertenecer sólo a una BD.
Un objeto en base de datos debe estar almacenado obligatoriamente dentro de un tablespace.
Cuando se crea una tabla se debe indicar el espacio de tablas al que se destina. Por defecto se depositan en el espacio de tablas SYSTEM
Las propiedades que se asocian a un tablespace son:
• Localización de los ficheros de datos.
• Especificación de máximas cuotas de consumo de disco.
• Control de la disponibilidad de los datos (en línea o fuera de línea).
• Backup de datos.
Cuando un objeto se crea dentro de un cierto tablespace, este objeto adquiere todas las propiedades antes descritas del tablespace utilizado.
Las propiedades de un TableSpace pueden ser:
• Sus ficheros de datos están en $ORACLE_HOME/datos/datos_tablespace_A
• Los objetos no pueden ocupar más de 10Mb de espacio de base de datos.
• En cualquier momento se puede poner fuera de línea todos los objeto de un cierto tablespace.
• Se pueden hacer copiar de seguridad sólo de ciertos tablespaces.
Los índices no son más que objetos independientes dentro de la base de datos, como lo son las tablas. Y al ser objetos independientes, pueden ir en tablespaces independientes. En él Tablespace SYSTEM se almacenan todos los datos de sistema, el catálogo y todo el código fuente y compilado de procedimientos PL/SQL. También es posible utilizar el mismo tablespace para guardar datos de usuario. En el esquema también vemos que hay un tablespace Temporal (en gris oscuro). Este representa las propiedades que tendrán los objetos que la base de datos cree temporalmente para sus cálculos internos (normalmente para ordenaciones y agrupaciones). Su creación difiere en una de sus cláusulas de creación. El tablespace RO (en gris claro) difiere de los demás en que es de solo lectura (Read Only), y que por lo tanto todos los objetos en él contenidos pueden recibir órdenes de consulta de datos, pero no de modificación de datos. Estos puede residir en soportes de sólo lectura, como pueden ser CDROMs, DVDs, etc. Cuando se crea un tablespace, éste se crea de lectura/escritura. Después se puede modificar para que sea de solo lectura. Un tablespace puede estar en línea o fuera de ella (Online o OffLine), esto es que todos los objetos contenidos en él están a disposición de los usuarios o están inhabilitados para restringir su uso. Cualquier objeto almacenado dentro de un tablespace no podrá ser accedido si este está fuera de línea.

4.3 DATAFILE (FICHERO DE DATOS)
Un datafile es la representación física de un tablespace. Son los "ficheros de datos" donde se almacena la información físicamente. Un datafile puede tener cualquier nombre y extensión (siempre dentro de las limitaciones del sistema operativo), y puede estar localizado en cualquier directorio del disco duro, aunque su localización típica suele ser $ORACLE_HOME/Database. Un datafile tiene un tamaño predefinido en su creación (por ejemplo 100Mb) y este puede ser alterado en cualquier momento. Cuando creemos un datafile, este ocupará tanto espacio en disco como hayamos indicado en su creación, aunque internamente esté vacío. Oracle hace esto para reservar espacio continuo en disco y evitar así la fragmentación. Conforme se vayan creando objetos en ese tablespace, se irá ocupando el espacio que creó inicialmente.
Un datafile está asociado a un solo tablespace y, a su vez, un tablespace está asociado a uno o varios datafiles. Es decir, la relación lógica entre tablespaces y datafiles es de 1-N, maestro-detalle.

En el esquema podemos ver como el “Tablespace A” está compuesto (físicamente) por tres datafiles (DATOS_1.ORA, DATOS_2.ORA y DATOS_3.ORA). Estos tres datafiles son los ficheros físicos que soportan los objetos contenidos dentro del tablespace A. Aunque siempre se dice que los objetos están dentro del tablespace, en realidad las tablas están dentro del datafile, pero tienen la propiedades asociadas al tablespace.
Cada uno de los datafiles utilizados está ocupando su tamaño en disco (50 Mb los dos primeros y 25 Mb el último) aunque en realidad sólo contengan dos objetos y estos objetos no llenen el espacio que está asignado para los datafiles.
Los datafiles tienen una propiedad llamada AUTOEXTEND, que se si está activa, se encarga de que el datafile crezca automáticamente (según un tamaño indicado) cada vez que se necesite espacio y no exista. Al igual que los tablespaces, los datafiles también puede estar en línea o fuera de ella.
4.4 SEGMENT (SEGMENTO, TROZO, SECCIÓN)
Un segment es aquel espacio reservado por la base de datos, dentro de un datafile, para ser utilizado por un solo objeto. Así una tabla (o cualquier otro objeto) está dentro de su segmento, y nunca podrá salir de él, ya que si la tabla crece, el segmento también crece con ella. Físicamente, todo objeto en base de datos no es más que un segmento (segmento, trozo, sección) dentro de un datafile. Se puede decir que, un segmento es a un objeto de base de datos, lo que un datafile a un tablespace: el segmento es la representación física del objeto en base de datos (el objeto no es más que una definición lógica).

Podemos ver cómo el espacio que realmente se ocupa dentro del datafile es el segment y que cada segmento pertenece a un objeto.
Existen 5 tipos de segmentos:
• De datos: almacenan las tablas.
• De índices: permiten un acceso rápido a los datos dependiendo de la cantidad de los mismos (árboles B). Las consultas que sólo referencian a columnas indexadas se resuelven en el índice. Establecen un control de unicidad (los índices son automáticos cuando se definen claves primarias). Cada índice ocupa un segmento independiente del segmento de datos y deberían estar en un espacio de tablas distinto al de los datos, para mejorar el rendimiento.
• De rollback: son objetos internos de la BD que permiten efectuar la restauración de las transacciones no validadas asegurando la consistencia en lectura. La estructura de los registros de rollback es :
o Identificador de la transacción.
o Dirección del bloque donde está la tabla.
o Número de fila.
o Número de columna.
o Valor del dato antiguo (antes de ser modificado).
Son tan importantes que una BD no puede arrancar si no puede acceder al menos a un segmento de rollback. Si la BD tiene múltiples espacios de tablas, deben existir al menos dos segmentos de rollback y cada segmento de rollback debe tener al menos dos extensiones, reutilizables de manera cíclica. Esto segmentos son un objeto compartido de la BD, aunque se puede asinar un segmento de rollback particular a una transacción dada.
• Temporales: son creados por Oracle para un uso temporal cuando debe realizar una ordenación que no le cabe en memoria, y en las operaciones: create index, order by, group by, distinct, union, intersect, minus. Son eliminados cuando la sentencia finaliza.
• De bootstrap: Se crea en SYSTEM y contiene definiciones del diccionario para sus tablas, que se cargan al abrir la BD. No requiere ninguna acción por parte del DBA. No cambia de tamaño.
La tabla que guarda la información de los segmentos de usuario es user_segments, y se puede visualizar la información sobre los segmentos con la sentencia SQL siguiente:
SQL> select * from user_segments;

4.5 EXTENT (EXTENSIÓN)
Para cualquier objeto de base de datos que tenga cierta ocupación en disco, es decir, cualquier objeto que tenga un segment relacionado, existe el concepto de extent. Extent es un espacio de disco que se reserva de una sola vez, un segmento que se reserva en un momento determinado de tiempo. El concepto de extent es un concepto físico, unos están separados de otros dentro del disco. Ya dijimos que todo objeto tiene su segmento asociado, pero lo que no dijimos es que este segmento, a su vez, se compone de distintas extensiones. Un segmento, puede ser reservado de una sola vez (10 Mb de golpe), o de varias veces (5 Mb hoy y 5 Mb mañana). Cada una de las veces que se reserva espacio se denomina “extensión”.

En el esquema vemos como el objeto (tabla) FACTURA tiene un segmento en el datafile A-1, y este segmento está compuesto de 3 extensiones. Una de estas extensiones tiene un color distinto. Esto es porque existen dos tipos de extensiones:
♦ INITIAL (extensiones iniciales): estas son las extensiones que se reservan durante la creación del objeto. Una vez que un objeto está creado, no se puede modificar su extensión inicial.
♦ NEXT (siguientes o subsiguientes extensiones): toda extensión reservada después de la creación del objeto. Si el INITIAL EXTENT de una tabla está llena y se está intentando insertar más filas, se intentará crear un NEXT EXTENT (siempre y cuando el datafile tenga espacio libre y tengamos cuota de ocupación suficiente).
Sabiendo que las extensiones se crean en momentos distintos de tiempo, es lógico pensar que unas extensiones pueden estar fragmentadas de otras. Un objeto de base de datos no reside todo junto dentro del bloque, sino que residirá en tantos bloque como extensiones tenga. Por eso es crítico definir un buen tamaño de extensión inicial, ya que, si es lo suficientemente grande, el objeto nunca estará fragmentado.
Si el objeto tiene muchas extensiones y éstas están muy separadas en disco, las consultas pueden retardarse considerablemente, ya que las cabezas lectoras tienes que dar saltos constantemente.
El tamaño de las extensiones (tanto las INITIAL como las NEXT), se definen durante la creación del objeto y no puede ser modificado después de la creación. Oracle recomienda que el tamaño del INITIAL EXTENT sea igual al tamaño del NEXT EXTENT.
La mejor solución es calcular el tamaño que tendrá el objeto (tabla o índice), multiplicando el tamaño de cada fila por una estimación del número de filas. Cuando hemos hecho este cálculo, debemos utilizar este tamaño como extensión INITIAL y NEXT, y tendremos prácticamente la certeza de que no se va a producir fragmentación en ese objeto. En caso de detectar más de 10 extensiones en un objeto (consultando el catálogo de Oracle, como veremos), debemos recrear el objeto desde cero (aplicando el cálculo anterior) e importar de nuevo los datos.
Ciertas operaciones, necesitan de espacio en disco para poder realizarse. El espacio reservado se denomina “segmentos temporales”. Se pueden crear segmentos temporales cuando:
- Se crea un índice
- Se utiliza ORDER BY, DISTINTC o GROUP BY en un SELECT.
- Se utilizan los operadores UNION, INTERSECT o MINUS.
- Se utilizan joins entre tablas.
- Se utilizan subconsultas.
4.6 DATA BLOCK (BLOQUE DE DATOS)
Un data block es el último eslabón dentro de la cadena de almacenamiento. El concepto de Data block es un concepto físico, ya que representa la mínima unidad de almacenamiento que es capaz de manejar Oracle. Igual que la mínima unidad de almacenamiento de un disco duro es la unidad de asignación, la mínima unidad de almacenamiento de Oracle es el data block. En un disco duro no es posible que un fichero pequeño ocupe menos de lo que indique la unidad de asignación, así si la unidad de asignación es de 4 Kb, un fichero que ocupe 1 Kb, en realidad ocupa 4 Kb.
Siguiendo con la cadena, cada segmento (o cada extensión) se almacena en uno o varios bloques de datos, dependiendo del tamaño definido para el extensión, y del tamaño definido para el data block.

NEXT EXTENSION.
Espacio ocupado en unidades de asignación del sistema operativo por los data blocks anteriores.
El esquema muestra toda la cadena de almacenamiento de Oracle.



USUARIOS

Una cuenta de usuario no es una estructura física de la BD, pero está relacionada con los objetos de la BD: los usuarios poseen los objetos de la BD. Existen dos usuarios especiales: SYS y SYSTEM.
• El usuario SYS posee las tablas del diccionario de datos; que almacenan información sobre el resto de las estructuras de la BD.
• El usuario SYSTEM posee las vistas que permiten acceder a las tablas del diccionario, para el uso del resto de los usuarios de la BD.
Todo objeto creado en la BD se crea por un usuario, en un espacio de tablas y en un fichero de datos determinado. Toda cuenta de la BD puede estar unida a una cuenta del S.O, lo que permite a los usuarios acceder a la cuenta de la BD sin dar la clave de acceso.
Cada usuario puede acceder a los objetos que posea o a aquellos sobre los que tenga derecho de acceso.
Características:

• Es el medio de conexión entre el usuario y la base de datos.
• Los usuarios son los diferentes usuarios de la Base de Datos. Cada uno es propietario de sus objetos.
• Un usuario puede ser activo es decir que puede interactuar con la BD o puede ser un usuario inactivo.

Consideraciones para crear un usuario:
• El nombre de usuario no debe superar 30 caracteres, no debe tener caracteres especiales y debe iniciar con una letra.
• El usuario puede autentificarse de varias formas por medio de:
– Password
– Usuario heredado
– Autentificación global. Que puede ser por password o heredado.
• Un Tablespace temporal, donde el usuario crea sus objetos temporales y hace los sort u ordenamientos.
• Un perfil o profile de usuario, que son las restricciones que puede tener su cuenta (opcional).
Por ejemplo, conectado como el usuario SYSTEM, creamos un usuario con su clave y vamos a modificar mediante el password que cuenta con tres estados.












1. ALTA
Sintaxis para crear un usuario
SQL>CREATE USER ( nombre_usuario)
IDENTIFIED BY (contraseña)
DEFAULT TABLESPACE (nombre_tablespace);
Default TAblespace (tablespace asignado al usuario).
Temporary TAblespace (tablespace temporal asignado al usuario).
Password expire (permite cambiar la clave).
Account Lock o UnlocK(si no se pone la instrucción el sistema por defecto lo activa).
Ejemplo:
SQL> CREATE USER inventario
IDENTIFIED BY Usuario Ibarra

Autores: Manuel Pozo
Christian Yépez
Andrés Arredondo

SEPTIMO SISTEMAS

FUNCIONES DE ORACLE 9

FUNCIONES DE ORACLE

1. INTRODUCCION:
Una función consta de una sintaxis especifica con un nombre, uno o más argumentos que van entre paréntesis.
Existen en ORACLE muchas funciones que pueden complementar el manejo de los datos en las consultas.
Se utilizan dentro de las expresiones y actúan con los valores de las columnas, variables o constantes.
Pueden anidarse funciones dentro de funciones. Y existe una gran variedad de funciones para cada tipo de datos:

2. OBJETIVOS:
2.1. Identificar los diferentes tipos de funciones a través de la ilustración de su estructura, sintaxis y uso.
2.2. Manejar las funciones dentro de las consultas SQL.

3. INFORMES DE INVESTIGACION:
3.1. FUNCIONES NUMERICAS
ABS( ): Devuelve el valor absoluto de un nº . Formato: ABS()
CEIL( ): Devuelve un entero >= nº . Formato: CEIL()
FLOOR( ): Devuelve un entero <= nº . Formato: FLOOR()
MOD( ): Devuelve el resto de la división nº1 / nº2. Formato: MOD(,)
POWER( ): Devuelve nº1nº2. Formato: POWER(,)
ROUND( ): Devuelve el nº n redondeado con m decimales. Formato: ROUND(, [])
SIGN( ): Devuelve el signo de n (nº <> 0 derecha 1). Formato: SIGN()
TRUNC( ): Devuelve el nº n con m decimales (por defecto, m=0). Si m es negativo trunca m dígitos a la izquierda del punto decimal. Formato: TRUNC(,)
Ejemplos:
SELECT TRUNC(4567, -3), TRUNC(4567.89, 1) FROM DUAL; derecha devuelve 4000 y 4567.8
SELECT TRUNC(4567.555), TRUNC(1, -2) FROM DUAL; derecha devuelve 4567 y 0
SQRT( ): Devuelve la raíz cuadrada de un nº . Formato: SQRT()

3.2. FUNCIONES DE GRUPOS DE VALORES
AVG( ): Devuelve la media. Formato: AVG()
COUNT( ): Devuelve el nº de valores no nulos en los registros recuperados. Formato: COUNT({ *})
DISTINCT( ): Contar los distintos. [no existe en el SQL de ACCESS ]. Formato: DISTINCT({ *})
MAX( ): Devuelve el valor máximo. Formato: MAX()
MIN( ): Devuelve el valor mínimo. Formato: MIN()
SUM( ): Devuelve la suma de todos los registros del grupo. Formato: SUM()

3.3. FUNCIONES DE CONVERSION DE TIPOS DE DATOS
TO_CHAR( ): Convierte un nº o una fecha en una cadena. Formato: TO_CHAR().

YYYY Año (4 cifras) HH24 Hora (reloj 24 horas)
YY Año (2 cifras) HH Hora (reloj 12 horas)
MM Mes (1-12) MI Minuto
D Dia semana (nº) [1 = lunes] SS Segundo
DD Dia (1-31)
DDD Nº dia del año (1-366)
Q Nº trimestre (1-4)

Ejemplo: TO_CHAR(1000)
TO_DATE( ): Convierte una cadena en una fecha. Formato: TO_DATE(). Ejemplo: TO_DATE('01-DEC-97')
TO_NUMBER( ): Convierte una cadena en un nº. Formato: TO_NUMBER(). Ejemplo: TO_NUMBER('1000')

3.4. FUNCIONES DE CADENA
INITCAP( ): El primer carácter en mayúsculas. Formato: INITCAP()
INSTR( ): Comprueba si una cadena está dentro de otra. Se busca la ocurrencia nº n empezando desde .
Formato: INSTR("","",,)
LENGTH( ): Longitud de una cadena. Formato: LENGTH()
LOWER( ): Pasa la cadena a minúsculas. Formato: LOWER()
LPAD( ): Rellena una columna por la izquierda con el carácter indicado.
(a) Si nº > longitud del campo: los espacios que sobran se rellenan por la izquierda con el carácter indicado.
(b) Si nº = longitud del campo: sin cambios
(c) Si nº <>, ,)
Ejemplos:
SELECT LPAD('S1', 10 '_') FROM DUAL [Esta select devuelve la cadena '________S1' ]
SELECT LPAD('1234567890', 2, '_') FROM DUAL [Esta select devuelve la cadena '12' ]
SELECT LPAD(1000, 7, '*') FROM DUAL [Esta select devuelve la cadena '***1000' ]
Ejemplo:select lpad(cod_usuario, 2, '_') from list_movimientos;
LTRIM( ): Elimina los espacios de la izquierda . Formato: LTRIM()
REPLACE( ): Hace 'buscar y cambiarla por ' dentro de .
Formato: REPLACE("","","")
Ejemplo: SELECT REPLACE('SCOTT','S','BOY') FROM DUAL
RPAD( ): Aumenta el tamaño de una columna. Los espacios que sobran se rellenan por la derecha.
(a) Si nº > longitud del campo: los espacios que sobran se rellenan por la derecha con el carácter indicado.
(b) Si nº = longitud del campo: sin cambios
(c) Si nº <>, ,)
Ejemplos:
SELECT RPAD('S1', 10 '_') FROM DUAL [Esta select devuelve la cadena ' S1________' ]
SELECT RPAD('S1', 10 '_-') FROM DUAL [Esta select devuelve la cadena ' S1_-_-_-_-' ]
SELECT RPAD('S1', 12, '_- ') FROM DUAL [Esta select devuelve la cadena ' S1_- _- _- _' ]
SELECT RPAD('1234567890', 2, '_') FROM DUAL [Esta select devuelve la cadena '12' ]
RTRIM( ): Elimina los espacios de la derecha . Formato: RTRIM()
SOUNDEX( ): Busca palabras que suenen igual (en inglés). Formato: SOUNDEX("")
Ejemplo:
SELECT apellidos FROM empleados
WHERE SOUNDEX(apellidos) = SOUNDEX("SMYTHE")
SUBSTR( ): Devuelve un pedazo de una cadena. Formato: SUBSTR(,,)
TRIM( ): Elimina los espacios de la izquierda y derecha (es como hacer un LTRIM(RTRIM(…)) ). Formato: TRIM()
Ejemplo:
SELECT '==>' TRIM(SUBSTR(DESCRIPCION, 1, 40)) '<==' "Sin espacios" FROM almacenes WHERE CODIGO LIKE 'A_B_' Sin espacios -------------------------------------------------- ==>Almacén de la calle Bravo Murillo<== ==>Almacén de la calle Sainz de Baranda<== UPPER( ): Pasa la cadena a mayúsculas. Formato: UPPER()

3.5. FUNCIONES PARA VALORES DE FECHAS
ADD_MONTHS( ): Suma n meses a una fecha. Formato: ADD_MONTHS(,)
DAY( ): Día del mes. Formato: DAY()
LAST_DAY( ): Nº de días del mes. Formato: LAST_DAY().
Ejemplo: SELECT LAST_DAY(SYSDATE) FROM DUAL
MONTH( ): Mes de la fecha. Formato: MONTH()
MONTHS_BETWEEN( ): Devuelve nº de meses que hay entre dos fechas. (fecha2 - fecha1)
Formato: MONTHS_BETWEEN(,)
SYSDATE: Fecha del sistema. Formato: SYSDATE. Ejemplo: SELECT SYSDATE FROM DUAL
WEEKDAY( ): Día de la semana (0derechadomingo, 6derechasábado)
YEAR( ): Año de la fecha. Formato: YEAR()

4. CONCLUSIONES
4.1. Una función es un conjunto de instrucciones en PL/SQL, que pueden ser llamados usando el nombre con que se le haya creado. Se diferencian de los procedimientos, en que las funciones retornan un valor al ambiente desde donde fueron llamadas.
4.2. Las Funciones devuelven, convierten, rellenan, eliminan, modifican valores según el tipo de función que se aplique.


5. RECOMENDACIONES
5.1. Se recomienda tener siempre bien definida la sintaxis para crear una función.
5.2. Ayudarse de ejemplos para aplicar bien la sintaxis en una función

Autor: Christian Yépez

sábado, 10 de julio de 2010

INSTALACION DE ORACLE 9

INSTALACIÓN DE ORACLE 9
1. Instalación De Oracle 9i En Windows
Introduciremos el CD 1 de la instalación, los tres CDs que componen el programa de instalación.



• Tras seleccionar la ruta de los ficheros de Oracle pulsaremos en Siguiente.
• A continuación seleccionaremos el tipo de instalación que deseemos:


En nuestro caso, puesto que crearemos la base de datos en el servidor donde estamos realizando la instalación seleccionaremos Oracle9i Database 9.2.0.1.0 . Si ya disponemos de un servidor de Oracle con las correspondientes bases de datos a las que queramos acceder será suficiente con seleccionar la opción Oracle9i Client 9.2.0.1.0 , en este caso la instalación es bastante más simple, pues sólo es necesario especificar la IP o el nombre de red del servidor de Oracle así como el nombre (sid) de la base de datos a la que queramos acceder.
• Seleccionaremos el tipo de instalación que queramos realizar:


En nuestro caso, seleccionaremos Enterprise Edition, si queremos realizar una instalación más avanzada (especificando manualmente las opciones a instalar) seleccionaremos Personalizado, en este caso aparecería una ventana como esta:

• Seleccionaremos la siguiente opción dependiendo del uso que le queramos dar a nuestra base de datos, normalmente es para Uso General. Si no queremos crear una base de datos en el proceso de instalación (se puede crear en otro momento) seleccionaremos Sólo software:


• Seleccionaremos el puerto para Oracle MTS Service, normalmente se suele seleccionar el puerto por defecto 2030. Este parámetro es muy importante pues, si decidimos cambiar el puerto por defecto, cuando queramos que un cliente se conecte al servidor deberemos especificar el puerto que hayamos seleccionado en este punto de la instalación:


• Especificaremos el nombre de la base de datos (con un máximo de 8 caracteres):



• Seleccionaremos el juego de caracteres que vayamos a utilizar, si dejamos el juego de caracteres por defecto Oracle utilizará el juego de caracteres que tengamos configurado en nuestro sistema operativo, es la opción recomendada. Este parámetro sólo sería importante en el caso en que queramos exportar nuestra base de datos a otro servidor de Oracle, en este caso será importante que el juego de caracteres del servidor que recibirá los datos coincida con el que los exportó. Si no coinciden podrían aparecer erróneamente caracteres como “€” alojados en nuestra base de datos:


• Como último paso de la preinstalación nos aparecerá una ventana con el software que se va a instalar, tras comprobar que es correcto pulsaremos en Instalar:


• Introduciremos los CDs de instalación conforme los vaya pidiendo el programa:


• Tras la instalación de Oracle y la creación de la base de datos aparecerá una ventana indicando que el proceso de instalación ha finalizado:


Autor:

Manuel Pozo