26 mar 2009

INTRODUCCION A SISTEMAS ORACLE


Introducción a sistemas ORACLE:

descripcion del Tutorial:
Introducción a los sitemas oracle
Creación de esquemas en oracle
Inserción de tuplas en oracle
Eleminar tablas en oracle
creacion de scripts en oracle
oracle bulk loader
creacion de visitas en oracle
Bloques PL/SQL
Procedimientos almacenados
Funciones de oracle
Triggers en oracle

pertenece a: http://www.programatium.com/oracle.htm

Sesiones SQL*Plus
Para hacer la conexión a SQL*Plus, es necesario conectarse via telnet a altair.usb.ve. Una vez indicado el login (de la forma ci3391xx) y el correspondiente password, se debe entrar al manejador PL/SQL, tecleando:

$ sqlplus loginname

A continuación se pedirá el password para el acceso al manejador (no necesariamente igual al password para altair). Una vez tecleado el password, aparecerá el prompt de PL/SQL:

SQL>

Otra forma de entrar a PL/SQL es tecleando desde la linea de comandos de UNIX:

$ sqlplus loginname/password


¿Cómo cambiar el password?
Una vez que se está trabajando con el manejador, es posible cambiar el password, con el comando:

SQL> alter user loginname identified by newPassword;

donde loginname indica el login usado en el manejador PL/SQL y newPassword es la nueva clave a usar.


Salir de SQL*Plus
Para salir de SQL*Plus basta con teclear en la linea de comandos de ORACLE:

SQL> quit;

Creación de esquemas

En SQL*Plus es posible usar todos los comandos básicos de SQL con algunas restricciones de sintaxis. Para crear una tabla, debe teclearse en la linea de comandos:

CREATE TABLE nombretabla (
{nombre_col tipo [DEFAULT expr] [rest_columna] ...
|rest_tabla}
[,{nombre_col tipo [DEFAULT expr] [rest_columna] ...
|rest_tabla}] ...
);

Donde nombretabla representa el nombre que se le dara a la relación que se está creando; nombre_col es el nombre de un atributo, y tipo indica el tipo de datos del mismo; DEFAULT expr representa el valor por defecto de un atributo (el valor que se asigna cuando no se especifican datos de entrada para ese atributo); rest_columna son las restricciones a nivel de atributo que se pueden colocar; y rest_tabla las restricciones a nivel de la relación (por ejemplo, si la clave está constituida por un solo atributo, se puede indicar como restricción a nivel de columna, en cambio, si es compuesta, se indica como restricción a nivel de tabla).

Un ejemplo lo tenemos con:

SQL> CREATE TABLE empleado (
2> ci NUMBER(8) CONSTRAINT pk_empleado PRIMARY KEY,
3> nombre VARCHAR2(20) NOT NULL
4> CONSTRAINT may CHECK (nombre=UPPER(nombre)),
5> cargo VARCHAR2(9),
6> jefe NUMBER CONSTRAINT fk_jefe REFERENCES empleado(ci),
7> ingreso DATE,
8> sueldo NUMBER(10,2),
9> dpto NUMBER(2) NOT NULL
10> CONSTRAINT fk_dpto REFERENCES depto(nro)
11> );

Note que mientras no se cierra la sentencia completa de SQL (con punto y coma) aparece un prompt con el número de linea que se esta escribiendo. La sentencia solo se ejecuta luego de escribir el punto y coma y presionar [ENTER].

Note además que los comandos en SQL no son case sensitive, por lo cual no habra diferencia entre una tabla empleado y una tabla EMPLEADO.

La sentencia anterior crea una relación empleado, con las siguientes características:

cedula: Entero de longitud 8, clave primaria;
nombre: Cadena de caracteres de hasta 20 caracteres, no puede contener nulos, y todas las letras deben ser mayusculas;
cargo: Cadena de caracteres de hasta 9 caracteres, sin restricciones;
jefe: Número de cédula de identidad del jefe, es clave foránea de la misma relación en el atributo ci;
ingreso: Fecha en la cual comenzó a trabajar en la empresa;
sueldo: Número en punto flotante, de hasta diez dígitos, incluyendo dos decimales, que indica el sueldo mensual del empleado;
dpto: Número del departamento para el cual trabaja el empleado, es clave foránea del atributo nro, de la relación depto.

Tipos de datos

Tipo Descripción
CHAR(n) Cadena de caracteres de longitud n. Una vez que se declara, se reserva espacio para n caracteres, aun cuando no se usen todos.
VARCHAR2(n) Cadena de caracteres de longitud n. Se define un máximo de n caracteres, pero solo se usa el espacio correspondiente a los caracteres ocupados
VARCHAR(n) Exactamente lo mismo que VARCHAR2(n)
NUMBER(p,s) Número en punto flotante, de p dígitos, de los cuales s son decimales. El parámetro s puede ser omitido, con lo cual se considerará que su valor es 0. El valor por defecto para p es 38.
DATE Fecha comprendida entre Enero 1, 4712 aC y Diciembre 31, 4712 dC.

Inserción de tuplas
Para insertar tuplas en una relación se usa la instrucción INSERT de SQL:

SQL> INSERT INTO tabla VALUES (valor1, valor2, . . ., valorN);

Por ejemplo, para insertar una nueva tupla en la relación empleado, basta con escribir:

SQL> INSERT INTO empleado VALUES (
2 12325432, 'Juen Jose', 'Gil', 125000.00
3 );

Para la inserción de fechas, debe especificarse el formato en que se está intorduciendo la fecha, usando para ello:

TO_DATE ("string de fecha", "formato")

por ejemplo, si se quisiera ingresar en la relación empleado anterior, un atributo con la fecha de nacimiento, deberia agregarse la misma, de la siguiente manera:

SQL> INSERT INTO empleado VALUES (
2 12325432, 'Juen Jose', 'Gil',
3 125000.00, TO_DATE ('15-02-72', 'DD-MM-YY')
4 );

Si se quisiera ademas, agregar la hora de nacimiento, deberia usarse:

SQL> INSERT INTO empleado VALUES (
2 12325432, 'Juen Jose', 'Gil', 125000.00,
3 TO_DATE ('15-02-72 15:23', 'DD-MM-YY HH24:MI')
4 );

A continuación se presenta una tabla con algunos de los formatos mas usados:

Formato Descripción
HH, HH12 Hora en el formato tradicional 1-12
HH24 Hora en el formato de 24 horas (0-23)
MI Minutos (0-59)
DD Dia del mes (1-31 con restricciones)
D Dia de la semana (0=domingo)
MM Mes en formato numerico (1-12)
MON Nombre del mes abreviado a tres caracteres, en inglés (JAN=Enero)
MONTH Nombre del mes en inglés. En caso de ser un nombre corto, se rellena con espacios en blanco hasta nueve caracteres (MARCH=marzo, JANUARY=enero, . . .)
YY Año en formato de dos dígitos (se asume 19xx)
YYYY Año en formato de 4 dígitos.

Eliminando tablas
Para eliminar una tabla determinada, se usa la instrucción DROP TABLE, de la siguiente manera:

SQL> DROP TABLE nombretabla;

Con lo cual se elimina la tabla nombretabla del sistema.

Un caso especial se presenta si la relación a ser eliminada está referenciada por claves foráneas en otra(s) relación(es). En este caso, se debe hacer la llamada de la siguiente manera:

SQL> DROP TABLE nombretabla CASCADE CONSTRAINTS;

De esta manera se eliminarán todas las tuplas en otras relaciones que referencien a la clave primaria de la relación a ser eliminada. Si no se incluye el parámetro CASCADE CONSTRAINTS y existe alguna referencia a una tupla que se eliminará, ORACLE retornará un mensaje de error y no eliminará la relación.

creacion de scripts en oracle

La creación de relaciones e inserción de valores en las mismas suele ser un proceso bastante tedioso, especialmente cuando se transcriben errores en las instrucciones. Para simplificar esto, es posible crear Scripts que permiten crear, modificar y eliminar relaciones, así como insertar, eliminar y buscar tuplas.

Un script no es mas que un archivo de texto, con instrucciones de SQL separadas por punto y coma. Dichos archivos deben tener permiso de lectura para el usuario (100), y para ejecutar su contenido se debe usar la instrucción START, de la siguiente manera:

SQL> START scriptname

SQL> @ scriptname //forma abreviada

Oracle Bulk Loader

-Creación del archivo de control
-Usando un archivo de datos separado
-Representación de fechas
-Manejo de valores nulos
-Cargando los datos
-Creación del archivo de control

Hay dos formas de usar los archivos de control.
A. Datos cargados desde el archivo de control
Probablemente el tipo de archivo de control mas sencillo es como el siguiente, donde los datos a ser cargados se encuentran al final del archivo de control. Las letras mayúsculas son opcionales.

LOAD DATA
INFILE *
INTO TABLE test
FIELDS TERMINATED BY ','
(num,name)
BEGINDATA
1,foo
2, bar
3,baz
4,glorp
5,snarf

El proposito de este archivo es cargar datos en una relación llamada test, la cual tiene dos atributos: num y name,de tipo NUMBER y CHAR(10), respectivamente. El significado de cada una de las líneas (en el orden que aparecen) es:

LOAD DATA se requiere esta línea al principio del archivo de control.
INFILE * indica que los datos aparecerán en el mismo archivo, y no en uno separado, en cuyo caso el nombre del archivo reemplazaría a *.
La inserción se efectuará en la relación llamada test. La tabla que recibirá los datos debe existir en la base de datos. Mas aún, la tabla debe estar vacía. De no cumplirse esto último, debe usarse "APPEND INTO TABLE test" en lugar de "INTO TABLE test".
El separador de valores de diferentes atributos será una coma.
BEGIN DATA indica que en las líneas siguientes aparecerán las tuplas a ser insertadas.
La primera tupla tiene num=1 y name='foo'
Los nombres de las columnas a ser insertadas aparecen entre paréntesis, y separados por coma.
Observación: Un error común es asumir que los espacios en blanco son ignorados en el archivo de carga, tal como sucede en casi todos los lenguajes de programación. Este error podría producir resultados inesperados al momento de efectuar consultas sobre los datos insertados.

Notese que en las segunda tupla insertada aparece un espacio en blanco entre la coma y el nombre bar. Esto producirá como resultado que se almacene la tupla (2, ' bar') en lugar de la tupla (2, 'bar'), por locual, al hacer una consulta donde nombre='bar', nunca se obtendría dicha tupla.

B. Datos cargados desde un archivo separado
Se pueden colocar los datos a ser cargados en un archivo distinto al archivo de control. He aquí un ejemplo sencillo:

LOAD DATA
INFILE 'test.txt'
APPEND INTO TABLE test
FIELDS TERMINATED BY ','
(num,name)

A continuación, el significado de cada una de las líneas:
LOAD DATA: se requiere esta línea al principio del archivo de control.
INFILE test.txt indica que los datos aparecerán en el archivo test.txt.
Los datos en test.txt será añadidos al final de la relación test. De no aparecer la palabra APPEND, la relación test debe estar vacía.
En el archivo de datos, se usará la coma como separador de atributos.
Los nombres de las columnas aparecen entre paréntesis, y separados por coma.
El contenido del archivo de datos test.txt es:
1,foo
2, bar
3,baz
4,glorp
5,snarf

Representación de fechas
El tipo de datos DATE es representado en un formato que brinda considerable flexibilidad. Primero, debe declararse la tabla con un atributo de tipo DATE. He aquí un ejemplo sencillo:
CREATE TABLE Foo (
i NUMBER,
d DATE
);

Ahora, en el archivo de control, al describir los atributos de la tabla a ser cargada, puede acompañarse cada nombre de atributo con su tipo. Aún cuando esto puede hacerse para todos los atributos, en el siguiente ejemplo se hará solo para el atributo de fecha (d).

En el ejemplo tenemos, seguido del indicador de tipo DATE, una máscara de fecha que describe el formato que va a tener la fecha en los datos de entrada. La máscara de fecha es una cadena de caracteres, encerrada con comillas dobles, que debe seguir las siguientes convenciones:

Las secuencias de letras que comiencen con d, m o y, denotan campos en los datos que deben ser interpretados como dias, meses y años, respectivamente. Como casi todo en SQL, se permiten letras mayúsculas.
Todos los demás caracteres son tratados literalmente, y deben aparecer en los datos, si fueron colocados en la máscara.
Los campos usados representan longitud maxima para los valores correspondientes.
He aquí un ejemplo de un archivo de carga:

LOAD DATA
INFILE *
INTO TABLE Foo
FIELDS TERMINATED BY ','
(i,d DATE "dd-mm-yyyy")
BEGINDATA
1,01-02-1234
2,3-4-1997

Notese que, en la segunda tupla de datos, se tiene un campo de longitud menor a la indicada en la máscara. El separador - le indica al programa que los campos dia y mes para la segunda tupla son mas cortos.

Manejo de valores nulos
Para la inserción de valores nulos, debe dejarse vacío el espacio correspondiente al valor. Por ejemplo, si quisieramos hacer la carga en una tabla empleado de los siguientes datos:

(12234765,'Freedy Arias',30-10-1997,120000.00)
(14236879,'Jose Montenegro',12-08-1997,75535.00)
(12234765,'Pedro Perez',NULL,100000,00)
(12234765,'Carolina Rodriguez',30-10-1997,98000.00)

se tendría que usar el siguiente archivo de control:

LOAD DATA
INFILE *
INTO TABLE empleado
FIELDS TERMINATED BY ','
(ci,nombre,ult_vacaciones DATE "dd-mm-yyyy",sueldo)
BEGINDATA
12234765,Freedy Arias,30-10-1997,120000.00
14236879,Jose Montenegro,12-08-1997,75535.00
12234765,Pedro Perez,,100000,00)
12234765,Carolina Rodriguez,30-10-1997,98000.00

Uso del Loader para la carga de datos
sqlload es un comando a nivel de UNIX, igual que sqlplus. La forma de una línea de comandos es:

sqlload userid=/ control= log=

La sintaxis de los parámetros no es la usual en UNIX. Se debe colocar la palabra userid con un signo de igual, el login (de sqlplus), un slash, y el password de sqlplus. Si se omite el parámetro userid, el sistema preguntará por el login y el password.

A continuación debe indicarse el nombre del archivo de control. Por último se debe indicar el nombre de otro archivo, el archivo de log, en el cual sqlload coloca cierta información de utilidad acerca de lo que hizo, incluyendo una descripción de los erores que hubieran ocurrido durante la ejecución. Por ejemplo, si el usuario CURSO00, con password prof%01 quisiera cargar los datos que se indican en carga.ctrl y obtener el resultado en carga.log, debería usar:

sqlload userid=CURSO00/prof%01 control=carga.ctrl log=carga.log

Creación de vistas de oracle

Una vista es una tabla logica, que muestra una parte de la base de datos. Las vistas permiten "almacenar" de manera logica los resultados de los queries.

La sintaxis para crear una vista es la siguiente:

CREATE [OR REPLACE] VIEW name [(alias1, alias2, . . . , aliasN)]
AS subquery

El uso de OR REPLACE permite sobreescribir una vista existente. Si se omite, y la vista ya existe, se producirá, un error. El subquery representa un query escrito en SQL, a partir del cual se obtendrá el contenido de la vista. Los aliases opcionales, permiten asignarle nombres a las columnas de la vista. Si se omiten, las columnas tendrán el mismo nombre que en las tablas originales (de donde se obtuvieron).

A continuación se presenta un ejemplo de creación de una vista

SQL> CREATE VIEW ComputerScience (employ_name, annual_salary)
1> AS SELECT ename, sal*12
2> FROM employee
3> WHERE dpt_name = 'Computer Science'
4> ;

Esta vista mostrará el salario anual de todos los empleados del departamento de Computer Science.

Si se modifica la información de alguna de las tablas base referenciadas por la vista, y luego se ejecuta un query sobre la misma, la información que se obtendrá será la nueva. Es decir, la información no se almacena en la vista, sino que se carga dinamicamente al momento de efectuar alguna consulta.

Si se desea eliminar (borrar) una vista, se usa la instrucción:

SQL> DROP VIEW name;

Bloques de instrucciones PL/SQL

A continuación se muestra como es la estructura general de los bloques de instrucciones de PL/SQL que se usarán mas adelante en la creación de procedimientos, funciones y triggers.

PL/SQL (Procedural Language/SQL) es una extensión de SQL, que agrega ciertas construcciones propias de lenguajes procedimentales, obteniendose como resultado un lenguaje estructural mas poderoso que SQL. La unidad de programación utilizada por PL/SQL es el bloque. Todos los programas de PL/SQL están conformados por bloques. Tipicamente, cada bloque lleva a cabo una acción lógica en el programa. Un bloque tendrá siempre la siguiente estructura:

DECLARE

//Sección declarativa: variables, tipos, y subprogramas
//de uso local

BEGIN

//Sección ejecutable: las instrucciones procedimentales, y de SQL
//aparecen aquí. Es la unica sección obligatoria en el bloque.

EXCEPTION

//Sección de manejo de excepciones. Las rutinas de manejo de errores
//aparecen aqui

END;

Solo se requiere que aparezca la sección ejecutable. Lo demas es opcional. Las unicas instrucciones SQL permitidas en un bloque PL/SQL son INSERT, UPDATE, DELETE y SELECT, ademas de algunas instrucciones para manipulación de datos, e instrucciones para control de transacciones. Otras instrucciones de SQL como DROP, CREATE o ALTER no son permitidas. Se permite el uso de comentarios estilo C (/* . . .*/). PL/SQL no es case sensitive por lo que no hay distinción entre nombres con mayusculas y minusculas.

En la sección de declaraciones, se indican las variables que serán usadas dentro del bloque y sus tipos. Por ejemplo:

DECLARE
myBeer VARCHAR(20);
price NUMBER(6,2);

En algunos casos, es posible que se desee que el tipo de una variable coincida con el tipo usado para una columna de una tabla determinada, en esos casos se puede usar la construcción:

DECLARE
myBeer Beers.name%TYPE;

Con lo cual se logra que la variable myBeer tenga el mismo tipo que la columna name de la tabla Beers.

Tambien es posible inicializar las variables, mediante el operador :=. Ademas, mediante el uso del mismo operador es posible hacer asignaciones en el cuerpo del programa. Por ejemplo:

DECLARE
price NUMBER := 300;
BEGIN
price := price + 150;
END;
.
run

La ejecución de este bloque no tendrá ningun efecto, ya que no se están haciendo cambios sobre la base de datos.

Ademas es posible usar sentencias condicionales y ciclos dentro de los bloques de PL/SQL. Una sentencia condicional tipica es de la forma:

IF (condicion)
THEN (lista de acciones)
ELSE (lista de acciones)
END IF;

Si se desea, se puede hacer el uso de varios casos de condición, mediante el uso de:

IF . . . THEN . . .
ELSIF . . . THEN . . .
ELSIF . . . THEN . . .
.
.
.
ELSE . . .
END IF;

En ambos casos, la clausula ELSE es opcional.

Si se desea crear un lazo, se puede usar la instrucción:

LOOP
lista_de_instrucciones
END LOOP;

Al menos alguna de las instrucciones debe ser:

EXIT WHEN condicion;

De esta manera, el lazo terminará cuando la condición sea verdadera. Además es posible utilizar la instrucción:

WHILE (condicion) LOOP
lista_de_instrucciones
END LOOP;

De esta forma, el ciclo solo se inicia si la condicion es verdadera en principio. Es posible que el programa nunca entre en el ciclo. Usando la instrucción LOOP se garantizaba que siempre se ejecutaría el cuerpo del ciclo al menos una vez. Por último, es posible usar ciclos que se ejecuten un numero predeterminado de veces, mediante el uso de la instrucción:

FOR i IN a..b LOOP
lista_de_instrucciones
END LOOP;

En este caso i es una variable de uso local, por lo que no es necesario que sea declarada, y puede ser usada dentro del lazo, mientras que a y b son constantes.

Procedimientos almacenados


Un procedimiento almacenado es un conjunto de instrucciones en PL/SQL, que pueden ser llamado usando el nombre que se le haya asignado.

La sintaxis para crear un procedimiento es la siguiente:

CREATE [OR REPLACE] PROCEDURE name [(param [IN|OUT|IN OUT|] datatype) . . .]
[IS|AS] pl/sql_subprogram

El uso de OR REPLACE permite sobreescribir un procedimiento existente. Si se omite, y el procedimiento ya existe, se producirá un error. Los modificadores IN, OUT, IN OUT indican si el parametro es de entrada, salida o ambos.

A continuación se presenta un ejemplo de creación de un procedimiento:

SQL> CREATE PROCEDURE credit (acc_no IN NUMBER, amount IN NUMBER)
1> AS BEGIN
2> UPDATE accounts
3> SET balance = balance + amount
4> WHERE account_id = acc_no;
5> END;

Este procedimiento actualizará la(s) tupla(s) con numero de cuenta igual al parámetro acc_no con un incremento de amount en el balance de dicha cuenta.

Si se desea eliminar (borrar) un procedimiento almacenado, se usa la instrucción:

SQL> DROP PROCEDURE name;

Funciones en oracle

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 ambiende desde donde fueron llamadas.

La sintaxis para crear una función es la siguiente:

CREATE [OR REPLACE] FUNCTION name [(param [IN] datatype) . . .]
RETURN datatype
[IS|AS] pl/sql_subprogram

El uso de OR REPLACE permite sobreescribir una función existente. Si se omite, y la función ya existe, se producirá, un error. El unico modificador permitido para los parámetros es IN, y si se omite, se tomará por defecto. Es decir, solo se permiten parámetros de entrada.

A continuación se presenta un ejemplo de creación de una función:

SQL> CREATE FUNCTION get_bal (acc_no IN NUMBER)
1> RETURN NUMBER
2> IS
3> acc_bal NUMBER(11,2); /* declaración de una variable */
4> BEGIN
5> SELECT balance
6> INTO acc_bal /* asignación */
7> FROM accounts
8> WHERE account_id = acc_no;
9> RETURN(acc_bal);
10> END

La función get_bal retorna el balance de una cuenta dada.

Si se desea eliminar (borrar) una función, se usa la instrucción:

SQL> DROP FUNCTION name;

Triggers

Un trigger es un bloque PL/SQL asociado a una tabla, que se ejecuta cuando una determinada instrucción en SQL se va a ejecutar sobre dicha tabla.

La sintaxis para crear un trigger es la siguiente:

CREATE [OR REPLACE] TRIGGER
{BEFORE|AFTER} {DELETE|INSERT|UPDATE [OF col1, col2, . . ., colN]
[OR {DELETE|INSERT|UPDATE [OF col1, col2, . . ., colN]. . .]}
ON table
[REFERENCING OLD AS oldname, NEW as newname]
[FOR EACH ROW [WHEN (condition)]]
pl/sql_block

El uso de OR REPLACE permite sobreescribir un trigger existente. Si se omite, y el trigger existe, se producirá, un error.

El modificador FOR EACH ROW indica que el trigger se disparará cada vez que se desee hacer operaciones sobre una fila de la tabla. Si se acompaña del modificador WHEN, se establece una restricción; el trigger solo actuará, sobre las filas que satisfagan la restricción.

A continuación se presenta un ejemplo de creación de un trigger:

SQL> CREATE TRIGGER salary_check
1> BEFORE
2> INSERT OR UPDATE OF sal, job
3> ON employee
4> FOR EACH ROW
5> WHEN (new.job <> 'PRESIDENT')
6> DECLARE
7> minsal NUMBER
8> maxsal NUMBER
9> BEGIN
10> /* Se obtienen los valores minimo y maximo para el salario de */
11> /* un cargo determinado, usando la tabla sal_guide */
12> SELECT minsal, maxsal
13> INTO minsal, maxsal
14> FROM sal_guide
15> WHERE job = :new.job
16> /* Si el salario del empleado a insertar/modificar esta por */
17> /* debajo del minimo, o por encima del maximo, se genera */
19> /* un error. */
20> IF (:new.sal <> maxsal)
21> THEN raise_application_error(-20601, 'Salary '||:new.sal||
22> ' out of range for job '||:new.job||' for employee '||
23> :new.ename);
24> END IF;
25 > END;

Este trigger impide que se agregue o modifique un empleado con el sueldo mayor o menor que los valores maximo y minimo respectivamente para su cargo. Se agrega la restricción de que el trigger no se dispararán si el cargo es PRESIDENTE.

Si se desea eliminar (borrar) un trigger, se usa la instrucción:

SQL> DROP TRIGGER name;


Manual para instalar Oracle 9i en Windows con capturas de pantalla

  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 se pueden descargar gratuitamente (siempre que no sea con fines lucrativos) desde la propia web de oracle: www.oracle.com

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

Nota: el SID es el identificador interno que utilizará Oracle para referenciar a nuestra base de datos, se puede elegir uno diferente al del nombre de la Base de Datos, aunque se suele utilizar el mismo.

• En este punto de la instalación seleccionaremos la ubicación de los archivos de la base de datos que la instalación creará. Oracle recomienda que la ubicación de los archivos de la base de datos esté en un disco físico distinto al de los archivos de la instalación (software de Oracle). También recomienda que los archivos de Redo Log estén multiplexados (varias copias, esto se configura en la consola de administración de Oracle) y en diferentes discos físicos. Lógicamente es lo recomendable por Oracle y sólo se configura así cuando se trata de una Base de Datos que tendrá múltiples accesos concurrentes (al mismo tiempo) y con un volumen de datos importante, pues el desembolso económico en harware para la correcta instalación de Oracle puede ser importante. En nuestro caso, instalaremos los archivos de la base de datos en un segundo disco duro instalado exclusivamente para Oracle. A pesar de todo no hay ningún problema por instalar la base de datos en el mismo disco duro que el software de Oracle. Si nuestra organización dispone, por ejemplo, de unos 20 usuarios conectados a Oracle no habría una pérdida del rendimiento por instalarla en el mismo disco duro. Por supuesto esto es orientativo pues dependerá también del volumen de datos que necesite cada usuario así como de otros factores (rpm del disco duro, características del servidor de Oracle (procesadores, memoria RAM, …), velocidad de la red local, tipo de conexión que realice el software de nuestra empresa que acceda a Oracle (el acceso nativo sin necesidad de utilizar controladores ODBC incrementa considerablemente el rendimiento frente a accesos mediante controladores ODBC que no dejan de ser una pasarela entre el software y Oracle):

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

En esta ventana nos indica que ha finalizado el proceso de instalación y que podemos acceder desde cualquier otro PC de la red introduciendo en el navegador de Internet:

http://nombre_o_IP_del_servidor_oracle:7778

El acceso vía Internet está permitido pues al seleccionar la instalación Enterprise Edition se instala e inicia por defecto Oracle http Server (servidor web de Oracle).

Si al intentar acceder a la Consola de Oracle Enterprise Manager nos aparece este error:

Deberemos configurar el Listener manualmente, para ello accederemos a Inicio – Programas – Oracle – OraHome92 – Configuration and Migration Tools – Net Configuration Assistant :

Seleccionamos Configuración de Listener y a continuación Volver a Configurar:

Nos aparecerá el Listener que el programa de instalación de Oracle crea automáticamente:

Seleccionamos el protocolo a utilizar (TCP):

Seleccionamos el puerto a utilizar, por defecto 1521:

Con esto habremos vuelto a actualizar el Listener:

Si el error ORA-12541: TNS: no hay ningún listener continúa apareciendo deberemos seguir los pasos que se indican en el punto 1 del anexo.




CONFIGURACIÓN DE USUARIO PARA ACCESO VÍA HTTP A LOS PROCEDIMIENTOS PL-SQL ALMACENADOS

Si tenemos iniciado el Servidor http de Oracle podremos acceder desde cualquier equipo de la red local y, también, desde cualquier parte del mundo (siempre que tengamos configurado el router con el puerto 7778 redirigido a la IP local del Servidor de Oracle). Es suficiente con poner en el navegador de Internet: http://IP_Servidor_Oracle:7778, nos aparecerá una ventana como esta:

Desde aquí podremos configurar los usuarios que tendrán acceso a través de Internet a Oracle, así como los procedimientos que se ejecutarán en el inicio.


ANEXO

1.- ALGUNOS ERRORES AL INICIAR ORACLE Y SU SOLUCIÓN

• Al iniciar la Enterprise Manager Console o al intentar conectarme a la Base de Datos de Oracle aparece el siguiente error:

TNSLSNR.EXE ha detectado un problema y debe cerrarse.

Más información: szAppName: TNSLSNR.EXE szAppVer: 0.0.0.0 szModName: orantcp9.dll

Y tras pulsar en Cerrar el servicio OracleOraHome92TNSListener se detiene.

Solución:

Accedemos al Regedit, desde el botón Inicio – Ejecutar ponemos regedit y pulsamos en Aceptar : buscamos la siguiente clave:

HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0

E insertamos una nueva entrada de tipo Valor de cadena expandible con el valor TRUE :

USE_SHARED_SOCKET=TRUE

Una vez añadida esta clave reiniciaremos el sistema. En teoría ya debería haberse solucionado el problema.

Si el problema sigue produciéndose tras reiniciar, será conveniente comprobar el fichero WinsockXPFix.exe



• El espacio en disco no para de decrecer, hasta quedarse sin espacio. Este problema es producido por el Servidor HTTP de Oracle Basado en Apache , cuando dicho servidor encuentra algún problema con el Listener (como el descrito en el punto 1), lo informa escribiendo en el log que crea a tal efecto. Dicho fichero de log va creciendo desproporcionadamente hasta dejar el disco duro sin espacio. La línea del fichero de log podría ser como esta:

[warn] FastCGI: server "c:/oracle/ora92/bin/isqlplus" can't be restarted:exceeded max restarts

Solución:

Para solucionar este problema, en primer lugar deberemos detener el servicio OracleOraHome92HTTPServer y deshabilitarlo para que no se vuelva a iniciar, al menos, hasta que solucionemos el problema, a continuación eliminaremos el fichero de log de Apache ubicado en:

C:/oracle/ora92/Apache/Apache/logs

Eliminaremos el fichero error_log , si no nos deja eliminarlo será porque el servicio no se ha detenido correctamente, con lo cual deberíamos deshabilitar dicho servicio y reiniciar el equipo.

Con esto hemos solucionado el problema parcialmente pues, aunque ya no vamos a tener problemas con el espacio en disco, el servidor de Apache estará deshabilitado, con lo cual no podremos acceder a Oracle vía Internet.

Para poder iniciar el servicio de Apache sin que deje el disco sin espacio editaremos el fichero:

C:/oracle/ora92/Apache/Apache/conf/httpd.conf

Y modificaremos la línea LogLevel warn por LogLevel error . De esta forma evitaremos que el log se llene de warning y sólo se guardarán los errores. Una vez guardado el fichero httpd.conf podremos volver a iniciar el servicio OracleOraHome92HTTPServer.



• Al intentar conectar a Oracle aparece el error "TNS-12535: TNS:timeout de la operación" ó "ORA-12535: TNS:operation timed out". Dicho error se puede comprobar en el directorio de instalación de Oracle: C:/oracle/ora92/bin/sqlnet.log

Solución:

Normalmente es debido a un fallo de conexión de red con el servidor. Si, tras comprobar que la red funciona adecuadamenete, el problema sigue apareciendo se puede deber también a la intervención de un cortafuegos (tanto hardware como software). Por ejemplo, si tenemos instalado Oracle Server en un PC con Windows XP, el cortafuegos software que éste incorpora inpedirá el acceso a la Base de Datos Oracle desde otros PCs. Para solucionarlo deberemos configurar adecuadamente en cortafuegos abriendo los puertos que utiliza Oracle, tales como el 1521.

2.- INICIAR / PARAR / PROBAR LA BASE DE DATOS MANUALMENTE

Para iniciar una base de datos de Oracle manualmente seguiremos los siguientes pasos:

  • Desde la línea de comandos (consola de MS-DOS) pondremos:
    • Sqlplus /nolog

    (para conectarnos a SQLPlus que es la consola de Oracle para MS-DOS, útil para realizar tareas de mantenimiento de la Base de Datos, tales como reparación, apagado manual, inicio manual, …).

    • Connect / as sysdba

    (para conectarnos a Oracle como administradores, al no poner nombre de usuario delante de “/” se asume el usuario del sistema operativo (éste ha de ser administrador))

    • Select status from v$instance

    (con esta consulta comprobamos que la base de datos no está iniciada, para ello deberá devolver un valor distinto a STARTED)

    • Select database_status from v$instance
    • startup nomount

    (con esta sentencia iniciaremos la base de datos sin montar, puede ser útil para reparar algún datafile dañado o para realizar tareas que no se podrían llevar a cabo con la base de datos montada)

    • shutdown immediate

    (cierra la base de datos, incluso aunque haya usuarios conectados)

    • startup

    (inicia y monta la base de datos, la deja lista para ser usada)

    • alter user hr identified by hr account unlock

    (esta instrucción sirve para desbloquear un usuario bloqueado y cambiarle la contraseña, en este caso hemos desbloqueado un usuario que Oracle crea por defecto, llamado hr y le hemos asignado la contraseña hr)

    • connect hr/hr

    (nos conectamos con el usuario hr para hacer una Select y comprobar que funciona correctamente)

    • select * from employees

    (hacemos una consulta de selección para que nos muestre el contenido de la tabla employees que Oracle crea automáticamente en la instalación)

Para realizar este manual hemos utilizado:

  • Oracle9i Database 9.2.0.1.0.
  • Microsoft Windows XP.

Nota: este manual no tiene por qué ser la mejor forma de instalar Oracle, es una de las muchas configuraciones que se pueden realizar.

15 mar 2009

Secretos del Submundo de los Hackers

Universidad H4CK3R, Descubre todos los Secretos del Submundo de los Hackers

Datos Técnicos
Universidad H4CK3R, Descubre todos los Secretos del Submundo de los Hackers, Della Valle y Ulbrich (Editorial Digerati)
Portugues | PDF | James Della Valle y Henrique Cesar Ulbrich | 352 Pages | Digerati Books | Cuarta Edición | December 1, 2004 | ISBN: 8589535010 | 120 MB
Descripción
Universidad H4CK3R Escrito por Henrique Cesar Ulbrich y James Della Valle, dos profesionales con vasta experiencia en el área de seguridad informática, este libro difiere mucho de las publicaciones que se han hecho sobre el tema hasta el momento. No es su propósito desentrañar la personalidad del hacker, sino mostrar cómo este actúa, cuáles son sus herramientas, cómo planifica sus acciones y de qué modo accede a la información confidencial en la Web. Con un abordaje singular y didáctico, el libro UNIVERSIDAD H4CK3R muestra las principales técnicas que usan los hackers para invadir y modificar sistemas. Sin embargo, esta obra no pretende formar hackers, sino profesionales del área de seguridad que conozcan claramente los recursos actuales de la informática relacionados con su campo, para que tengan total competencia a la hora de realizar su trabajo. Los temas de UNIVERSIDAD H4CK3R han sido organizados como si se tratase de asignaturas de un curso superior. A lo largo de las páginas del libro, la teoría se entrelaza con toda una serie de ejemplos prácticos que le permiten al lector entender con más facilidad cómo protegerse y contraatacar en caso de sufrir una invasión.

Los Secretos de Google

Los Secretos de Google: Hacking Y Cracking Con Google


Datos Técnicos

Los Secretos de Google: Hacking Y Cracking Con Google

Digerati | Spanish-Portuges | PDF | 100 Pages | ISBN 85-89535-43-6


Descripción

Descubre todas las opciones ocultas de este potente buscador CÓMO FUNCIONA POR DENTRO - Coloca tu sitio web en los primeros puestos - Haz búsquedas avanzadas de textos e imágenes - Usa las herramientas del idioma - Accede a Google desde tu móvil - Y mucho más EL FINAL DE LA INTIMIDAD Descubre cómo Internet permite descubrir los datos personales de casi cualquier persona, localizar cartas y entregas, consultar datos telefónicos y buscar en bases de datos ocultas. HACKING CON GOOGLE Cómo saberlo todo sobre un sitio, y cómo conocer los datos personales de su dueño, sin ni siquiera invadirlo.


Bajar:libro

Curso de Crackeo

Curso de Crackeo empezando desde cero(SPANISH)

Datos Técnicos
Curso de Crackeo empezando desde cero
3.5MB | Spanish | PDFs | 7 Edc. | Autor. Ricardo Narvaja
Descripción
Voy a tratar de explicar en un curso sencillo las bases para crackear programas o mejor expresado las bases de la INGENIERIA REVERSIBLE que es el arte de revertir las protecciones que poseen ciertos programas para hacerlos accesibles a todos y no haya que pagar por usarlos.
Mucha gente dice que esto no es ético y que esta mal pero yo no estoy de acuerdo con esa
opinión, yo creo que hay que crackear y distribuir gratuitamente los cracks, sin hacer
negocio, para favorecer a la gente con menos recursos a que puedan acceder a programas
que de otra manera no podrían usar.

Manual Fabrica tu Propio Sistema Continuo de Tintas


Fabrica tu Propio Sistema Continuo de Tintas


Datos Técnicos

Curso Manual Fabrica tu Propio Sistema Continuo de Tintas
6MB | PDF | Spanish | 25 Páginas | Proyecto de Emprendedores

Descripción

En este manual veremos como crear un CIS de bajo costo

El sistema continuo de Tinta de es el mas económico y revolucionario sistema de impresión que ha impactado en Europa y Los Estados Unidos pues reduce sus costos de impresión en 90%.
Este revolucionario sistema fue diseñado para que usted NUNCA más vuelva a comprar ni recargar cartuchos. ¡Usted solo paga por la tinta que consume! Para nadie es un secreto que los cartuchos para impresora son muy costosos (incluso los genéricos) comparándolos con el costo real de la tinta.
La Tinta se contiene en unos recipientes es enviada directamente a los cartuchos especiales instalados en la impresora. Estos cartuchos realmente son especiales pues NUNCA se queman o se agotan por eso NUNCA hay que cambiarlos.
Usted solo comprará la tinta que vaya consumiendo a un precio realmente económico. La cantidad de tinta que puede contener el sistema que va a fabricar es de 600ml (100ml por cada color) Esto es equivalente a la cantidad de tinta de 60 cartuchos nuevos.
Además aprenderá a fabricar sus Propias Tintas a un costo realmente bajo (Formulas) Hp, Canon, Epson, Lexmark.