Professional Documents
Culture Documents
Oracle es bsicamente una herramienta cliente/servidor para la gestin de Bases de Datos. Es un producto vendido a nivel mundial, aunque la gran potencia que tiene y su elevado precio hace que slo se vea en empresas muy grandes y multinacionales, por norma general. En el desarrollo de pginas web pasa lo mismo: como es un sistema muy caro no est tan extendido como otras bases de datos, por ejemplo, Access, MySQL, SQL Server, etc. La buena noticia es que a partir de la versin 10 se distribuye de forma gratuita la versin Express
En 1978 , sale la primera versin del sistema Oracle para el PDP-11 de digital Equipment, basado en la tesis de Edgar Frank Codd y se convierte en el primer RDBMS comercial. La ltima versin liberada es la 11g que sali al mercado el mes de Julio de 2009
Expresin
regular mejorada e integradas en las funciones de SQL Tipos de datos SIMPLE_INTEGER, SIMPLE_FLOAT, y SIMPLE_DOUBLE Sentencia CONTINUE Secuencias (para campos auto incrementales) en las expresiones PL/SQL SQL Dinmico Mas control sobre Triggers Triggers compuestos Perfiles jerrquicos en PL/SQL
Instancia
System Global rea (SGA) Zona compartida Cach de biblioteca Cach de DD
Bfer de redo log
Cach de bfer
Parmetros
Archivos de datos Archivos de control Archivos redo logs
Base de datos
Almacenamiento Secundario
Contraseas
La instancia.
Es uno de los dos elementos de cualquier Base de Datos Oracle. Sirve para gestionar los datos de la base de datos y proporcionar servicio a los usuarios que acceden a la misma y est compuesta de: estructuras en memoria y procesos background.
SGA
Est situada al inicio de los datos de la instancia y contiene los datos e informacin de control de la instancia
PGA
En ella se almacenan los datos correspondientes a un proceso, el cual incluye: reas de ordenacin. Para acelerar las tareas de ordenacin de datos. Informacin de sesin. Usuarios, privilegios, etc. Estados del cursor. Tareas SQL actualmente en ejecucin. Espacio de pila. Variables y otros datos
Large pool. Se utiliza como memoria de sesin y para realizar operaciones de respaldo. Bfer de archivo rehacer (Redo Log Buffer). Almacena los ltimos cambios realizados a los bloques de datos de la Base de Datos. Cach Bfer de la Base de Datos. Almacena los ltimos bloques de datos accedidos por los usuarios. Fondo comn compartido (Shared pool). Almacena las ltimas instrucciones SQL y PL/SQL ejecutadas, estos a su vez posee dos estructuras internas. Cach de instrucciones (Library Cach). Almacena las ltimas instrucciones SQL y PL/SQL ejecutadas. Cach de diccionario de datos. Almacena las ltimas definiciones de la Base de Datos utilizadas (tablas, ndices, privilegios, usuarios, etc.) cada vez que una instruccin utiliza un nombre de la Base de Datos (tabla, ndice u otros objetos) se comprueba en el diccionario de datos y se almacena en este cach. De este modo la siguiente vez no hace falta acceder al diccionario de datos real
En ella se almacenan los datos correspondientes a un proceso, el cual incluye: reas de ordenacin. Para acelerar las tareas de ordenacin de datos. Informacin de sesin. Usuarios, privilegios, etc. Estados del cursor. Tareas SQL actualmente en ejecucin. Espacio de pila. Variables y otros datos
Proceso de usuario. Lanzado por el usuario para pedir interaccin con la Base de Datos. Proceso de servidor. Es el enlace entre los procesos de usuarios y el servidor de Oracle. Procesos en segundo plano (background). Cada instancia de Oracle arranca una serie de procesos background. Los procesos obligatorios son: DBWR. Proceso encargado de escribir en los archivos de datos los buffers ms antiguos de la memoria, para que la base de datos vaya guardando los cambios. LGWR. Escribe los datos a los archivos rehacer (redo) desde la cach de archivos rehacer. CKPT. Actualiza todas las cabeceras de los archivos de datos para que aparezca la nueva disposicin de datos. Esto ocurre cuando se genera un punto de comprobacin.
Continuacin
SMON. Permite recuperar la instancia de la base de datos en caso de cada fatal. Cuando se reinicia de nuevo la instancia de la base de datos. PMON. Es el encargado de gestionar adecuadamente los procesos que fallan. Ante cada de procesos, PMON se encarga de restaurar los datos adecuadamente. SQL *Net Listener. Es el encargado de encaminar por una red solicitudes de un cliente a un servidor de base de datos Oracle. Este proceso escuchador (listener) est tanto en el cliente como en el servidor.
Continuacin
PSP0 (Process Spawner). Crea y gestiona otros procesos Oracle. MMAN (Memory Manager). Administra la memoria. MMON (Memory Monitor). Abre procesos esclavos. MMNL (Memory Monitor Light). Captura frecuentemente session history V$ACTIVE_SESSION_HISTORY) y calcula mtricas. Opcionalmente podemos tener: ARCH, RECO, Dispatchers (Dnnn), Shared Servers (Snnn), etc.
El parmetro BACKGROUND_DUMP_DEST, del archivo de inicializacin, define el directorio donde se guardan los archivos de depuracin de los procesos background.
La estructura lgica de la base de datos determina el uso que se hace del espacio fsico que la sustenta. Existe una jerarqua descendente en esta estructura, consistente en tablespaces, segmentos, extensiones y bloques. Una base de datos de Oracle la forman un grupo de tablespaces. Un tablespace puede contener uno o ms segmentos. Un segmento lo integran una o ms extensiones. Una extensin tendr al menos un bloque. El bloque es la unidad mnima de almacenamiento. El tamao del bloque ser mltiplo del que tenga el sistema operativo, y lo determina la variable db_block_size (2K, 4K, 8K, 16K y 32K). Cuando un segmento (tabla, ndice, rollback o temporal) crece, el espacio que se aade es de una extensin. Automatic Storage Managment (ASM). Gestor de volmenes para bases de datos Oracle. Gestiona directamente los discos. Adems distribuye automticamente los datos entre los discos, manteniendo el reparto uniforme cuando se aaden o quitan discos (incluso en caliente). Tambin se encarga de borrar los archivos que ya no forman parte de la BD
Encabezado de un bloque
Espacio libre
Fila de datos
Contenido de un bloque
Oracle 10g
Paso 1. Crear una carpeta en C:\oraclexe\app\oracle\admin con el nombre practica dentro de la nueva carpeta (practica) crear los siguientes directorios: adump, bdump, cdump, dpdump, udump, flash_recovery_area Paso 2. Entrar a la carpeta C:\oraclexe\oradata y dentro de ella crear otra carpeta con el nombre practica Paso 3. Crear un archivo de texto en la carpeta c:\oraclexe\app\oracle\product\10.2.0\server\dbs con initpractica.ora (formato ANSI) y pegar el siguiente texto:
el
nombre
*.audit_file_dest='C:\oraclexe\app\oracle\admin\practica\adump' *.background_dump_dest='C:\oraclexe\app\oracle\admin\practica\bdump' *.compatible='10.2.0.1.0' *.control_files='C:\oraclexe\oradata\practica\control01.ctl', 'C:\oraclexe\oradata\practica\control02.ctl','C:\oraclexe\oradata\practica\control03.ctl' *.core_dump_dest='C:\oraclexe\app\oracle\admin\practica\cdump' *.db_block_size=8192 *.db_domain='midominio.cl' *.db_file_multiblock_read_count=16 *.db_name='practica' *.db_recovery_file_dest='C:\oraclexe\app\oracle\admin\practica\flash_recovery_area' *.db_recovery_file_dest_size=2147483648 *.dispatchers='(PROTOCOL=TCP) (SERVICE=practicaXDB)' *.job_queue_processes=10 *.open_cursors=300 *.pga_aggregate_target=92274688 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=277872640 *.undo_management='AUTO' *.undo_tablespace='TS_UNDO' *.user_dump_dest='C:\oraclexe\app\oracle\admin\practica\udump'
Guarde el archivo!
Paso 4. inicie el sql*plus Paso 5. connect sys/claveoracle as sysdba Paso 6. shutdown Paso 7. pegar el siguiente cdigo: startup nomount pfile=C:\oraclexe\app\oracle\product\10.2.0\server\dbs\initpractica.ora deber aparecer el siguiente mensaje: Instancia ORACLE iniciada. Total System Global Area 281018368 bytes Fixed Size 1286992 bytes Variable Size 88083632 bytes Database Buffers 188743680 bytes Redo Buffers 2904064 bytes Paso 8. Escribir la siguiente instruccin CREATE SPFILE='C:\oraclexe\app\oracle\product\10.2.0\server\dbs\spfilepractica.ora' from pfile='C:\oraclexe\app\oracle\product\10.2.0\server\dbs\initpractica.ora'
Espere unos minutos, al final deber aparecer el mensaje de Base de datos creada.
Paso 13. Ejecutar las siguientes instrucciones uno por uno @C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN\catalog.sql ENTER @C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN\catproc.sql ENTER @C:\oraclexe\app\oracle\product\10.2.0\server\sqlplus\admin\pupbld.sql ENTER Paso 14. desde modo consola de windows ejecutar cmd, para caso de vista y win 7 ejecutar como administrador Paso 15. escribir la siguiente instruccin ORADIM -NEW -SID practica -INTPWD claveoracle -STARTMODE AUTO -PFILE C:\oraclexe\app\oracle\product\10.2.0\server\dbs\initpractica.ora
Paso 16. Entre a la siguiente carpeta C:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN Paso 17. Edite el archivo tnsnames.ora y agregue al principio el siguiente cdigo: practica = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = practica) (SID = practica) ) ) guarde los cambios
Paso 18. Edite el archivo listener.ora y reemplaza todo el contenido por el siguiente (se asume que usa versin express (XE) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server) (PROGRAM = extproc) )
#--------------(SID_DESC = (GLOBAL_DBNAME = practica) (SID_NAME = practica) (ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server) ) #---------------) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) (ADDRESS = (PROTOCOL = TCP)(HOST = boshy-PC)(PORT = 1521)) ) ) DEFAULT_SERVICE_LISTENER = (practica) guarde los cambios
Es el nombre de la mquina
Paso 19. Se puede agregar un archivo en la carpeta C:\oraclexe\app\oracle\product\10.2.0\server\database con el nombre initpractica.ora con el siguiente contenido SPFILE='C:\oraclexe\app\oracle\product\10.2.0\server\dbs/spfilePractica. ora' Paso 20. Guarde todo y reinicie su sistema (en caso de ser necesario)
En caso de que haya conflicto (Est iniciado el XE, y no el servicio PRACTICA), entonces puede resolverlo de la siguiente manera:
1. Elija OracleServiceXE 2. En la opcin tipo inicio elija manual y detenga el servicio 3. Elija OracleServicepractica En la opcin tipo inicio elija automtico y luego seleccione iniciar
1. Comprobar las variables de entorno necesarias para conectarse a la BD Se trata de las variables: $ORACLE_HOME, $ORACLE_SID, $LD_LIBRARY_PATH y $PATH. ORACLE_HOME define en qu directorio est instalado Oracle. ORACLE_SID determina con qu instancia queremos trabajar. LD_LIBRARY_PATH permite que Oracle localice las libreras compartidas que no forman parte del ncleo. PATH debe incluir el directorio con los ejecutables de Oracle, para mayor comodidad del administrador Solucin desde Windows Escribir en la consola: SET
2. Identificar los procesos que componen instancia. Los podemos identificar desde el S.O., por ejemplo, en Unix con el comando "ps -ef" que permite ver todos los procesos en ejecucin en el sistema, filtrando por el nombre de la instancia de BD > Ps ef practicaBD Tambin lo podemos hacer consultando la vista dinmica V$PROCESS (o haciendo join con V$BGPROCESS, que contiene todos los posibles procesos background), en la BD en cuestin: Desde sql plus: Connect sys/ as sysdba SELECT * from v$PROCESS WHERE background IS NOT NULL; O bien select * from v$process a, v$bgprocess b where a.ADDR=b.PADDR; Una forma ms compacta select name,description from v$process a, v$bgprocess b where a.ADDR=b.PADDR;
3. Ver el tamao de la SGA de la BD y las cachs que la componen. Hay varias vistas dinmicas de la BD que nos dan informacin sobre el tamao y la estructura de la SGA: V$SGAINFO, V$SGA_DYNAMIC_COMPONENTS, V$SGA_TARGET_ADVICE, V$SGA y V$SGASTAT. Las tres primeras son nuevas en 10g. select * from v$sgainfo; select * from v$sgastat;
4. Comprobar valores de parmetros del init relacionados con el tamao de la memoria (SGA y PGA). En Oracle 11g se puede configurar toda la memoria que Oracle necesita (SGA y PGA), con el parmetro memory_target (se puede tambin indicar un lmite mximo para el mismo con memory_max_target). Los parmetros que dimensionan la SGA (sga_target) y la PGA (pga_aggregate_target) se pueden dejar a cero o con un valor mnimo. Adems hay que definir el tamao del buffer de redo (log_buffer). Con Oracle 9i, la configuracin de la SGA era manual, y haba que asignar los parmetros de inicializacin que dimensionan cada una de sus partes: shared_pool_size, db_cache_size, large_pool_size y java_pool_size. La PGA se configuraba con pga_aggregate_target. Con Oracle 10g se introduce la configuracin automtica de la SGA, con el parmetro sga_target (adems de sga_max_size si se le quera poner una valor mximo). Por tanto, con 10g, bastara asignar sga_target, sga_max_size y log_buffer (y los dems a cero, o con un valor mnimo). La PGA se configuraba como en 9i, con pga_aggregate_target
Solucin:
show parameter memory_target; show parameter memory_max_target; show parameter log_buffer; show parameter pga_aggregate_target; show parameter sga_target; show parameter sga_max_size; show parameter shared_pool_size; show parameter db_cache_size; show parameter large_pool_size; select rpad(component,30), CURRENT_SIZE,USER_SPECIFIED_SIZE,min_size from V$SGA_DYNAMIC_COMPONENTS; select OPER_TYPE, rpad(parameter,25), INITIAL_SIZE, FINAL_SIZE from V$MEMORY_RESIZE_OPS;
5. Comprobar los archivos que componen la BD y ubicarlos en la estructura OFA SELECT file#, name FROM v$datafile; SELECT file#, name FROM v$tempfile; SELECT group#, lpad(member,50) FROM v$logfile; SELECT lpad(name,50), block_size,file_size_blks FROM v$controlfile;
Para ver los tablespaces select tablespace_name from dba_tablespaces order by tablespace_name; Ver archivos de datos select tablespace_name,file_name from dba_data_files order by tablespace_name, file_name; archivos tablespace temporales select tablespace_name,file_name from dba_temp_files order by tablespace_name, file_name;
Para ver cuntos segmentos hay en cada tablespace, agrupados por tipos de segmento select tablespace_name,segment_type,count(*) segmentos from dba_segments group by tablespace_name,segment_type; Para ver cuntas extensiones de cada tipo de segmento, hay en cada tablespace Select tablespace_name,segment_type,count(*) from dba_extents group by tablespace_name,segment_type;
select name, created, log_mode, checkpoint_change#, open_mode, platform_name, current_scn from v$database; select instance_name, host_name, version, startup_time, status, archiver, logins, database_status from v$instance;
8. Localizar el proceso servidor asociado a mi sesin (v$process y v$session). Es un servidor dedicado o compartido?
Toda sesin contra la BD tiene dos procesos asociados: cliente y servidor. En el cliente tenemos el proceso de usuario que inicia la sesin y en el servidor de base de datos tendremos el proceso que sirve las peticiones de dicha sesin; que puede ser un servidor dedicado o compartido. En las vistas V$SESSION y V$PROCESS tenemos toda la informacin relativa a sesiones y procesos, respectivamente
Solucin
select a.SERVER, a.username as dbuser, a.OSUSER, a.PROCESS as user_process, a.machine, a.terminal, a.program as user_program, b.spid as server_process, b.program as server_program from v$session a, v$process b where a.username=USER and a.PADDR=b.ADDR;
9. Ver la informacin de la Dictionary cache, Library cache y Result Cache de la Shared Pool de la BD (v$sgastat)
select * from v$sgastat where name like 'Result%' union select * from v$sgastat where name like 'row%' union select * from v$sgastat where name like 'library%' ;
10. Ver la actividad de la Library Cache (v$librarycache) En la vista V$LIBRARYCACHE podemos ver los ratios de eficiencia de la Library Cache, en tantos por uno. El objetivo es que se aproximen los ms posible a 1, de lo contrario es posible que haya que aumentar el tamao de la Shared Pool
Solucin
SELECT SQL_TEXT, PERSISTENT_MEM, EXECUTIONS, LOADS, DISK_READS, CPU_TIME, ELAPSED_TIME FROM v$sqlarea order by DISK_READS desc; SELECT tablespace_name,segment_type,count(*) FROM dba_extents group by tablespace_name,segment_type
13. Comprobar el funcionamiento de la cach de redolog, como protectora del contenido de la cach de datos. Para ello iniciaremos una transaccin y provocaremos una cada de la BD, comprobando que al arrancarla de nuevo, se mantendr la integridad de la misma
Crear la tabla BORRAME del usuario boshy. Insertar una fila sin hacer commit y forzar la cada de la BD.
connect / as sysdba CREATE TABLE boshy.borrame (campo1 varchar2(50)) TABLESPACE practica; INSERT INTO boshy.borrame VALUES (primer valor); Shutdown abort connect / as sysdba Startup
INSERT INTO boshy.borrame VALUES (primer valor); INSERT INTO boshy.borrame VALUES (segundo valor); Commit;
Shutdown abort connect / as sysdba SELECT * from boshy.borrame;
14. Comprobar el funcionamiento de la cach de datos, en lo que se refiere a la mejora del rendimiento cuando se repite una consulta. Por qu la segunda vez que se lanza la misma consulta tarda menos?
vaciar la cach de datos con: alter system flush buffer_cache; Activar la medicin de tiempos en sqlplus con SET TIMING ON. Lanzar la consulta SELECT COUNT(*) FROM DBA_SOURCE. Volver a lanzar la misma consulta. Comprobar que la segunda ejecucin tarda mucho menos, ya que los datos ya se cargaron en la cach de datos al lanzarla la primera vez; y por tanto se acceden directamente en memoria y
no en disco
La segunda vez, se ejecuta ms rpido. por qu?. Porque no lo vuelve a sustraer del disco, sino de la memoria
La necesidad de recuperar datos externos, es una tarea comn; generalmente los usuarios tienen informacin en Excel o simplemente en forma digital del formato que sea. Por ello, pondremos algunos ejemplos para almacenarla en una tabla de la base de datos.
En primer lugar vamos a crear un tablespace, luego una cuenta de usuario con su clave respectiva asociando el tablespace. Es importante conceder privilegios al usuario para conectarse y crear objetos.
CREATE BIGFILE TABLESPACE practica DATAFILE 'bigtbspractica.dat' SIZE 20M AUTOEXTEND ON; CREATE USER juanito PROFILE DEFAULT IDENTIFIED BY claveJuanito DEFAULT TABLESPACE practica TEMPORARY TABLESPACE ts_temp; GRANT CONNECT, DBA, resource, create table, debug any procedure, debug connect session to juanito; CREATE TABLE estdte (nocontrol varchar (10), nombres varchar (50), Primera double, segunda double, tercera double);
Crear un archivo control.ctl y gurdalo en la unidad C: load data infile 'califica.dat' APPEND INTO TABLE ESTDTE FIELDS TERMINATED BY ,' OPTIONALLY ENCLOSED BY '"' (nocontrol CHAR, nombres CHAR, Primera INTEGER EXTERNAL, Segunda INTEGER EXTERNAL, Tercera INTEGER EXTERNAL)
Crear un archivo control.ctl y gurdalo en la unidad C: Suponiendo que la informacin est en Excel
Elija guardar como, seleccione otros formatos y luego del tipo elija CSV (delimitado por comas) en la unidad C:\califica.dat
Crear un archivo control.ctl y gurdalo en la unidad C: Ahora desde la consola de Windows (ejecutar como administrador): C:\sqlldr juanito / claveJuanito control=control.ctl Entrar a sqlplus conn juanito / claveJuanito Select nombres, primera from estdte;