55
M.T.I. Ambrosio Cardoso Jiménez

1a-cjORACLE 11g

Embed Size (px)

Citation preview

Page 1: 1a-cjORACLE 11g

M.T.I. Ambrosio Cardoso Jiménez

Page 2: 1a-cjORACLE 11g

Oracle es básicamente una herramientacliente/servidor para la gestión de Bases deDatos. Es un producto vendido a nivelmundial, aunque la gran potencia quetiene y su elevado precio hace que sólo sevea en empresas muy grandes ymultinacionales, por norma general. En eldesarrollo de páginas web pasa lo mismo:como es un sistema muy caro no está tanextendido como otras bases de datos, porejemplo, Access, MySQL, SQL Server, etc.

La buena noticia es que a partir de laversión 10 se distribuye de forma gratuitala versión Express

Page 3: 1a-cjORACLE 11g

En 1978 , sale la primera versión 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 versión liberada es la 11g

que salió al mercado el mes de Julio

de 2009

Page 4: 1a-cjORACLE 11g

Expresión 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 Dinámico

Mas control sobre Triggers

Triggers compuestos

Perfiles jerárquicos en PL/SQL

Page 5: 1a-cjORACLE 11g

Datos_01.dbf ctrl_01.ctl log_01.rdo

Archivos de

datos

Archivos

de control

Archivos

redo logs

Base de datos

Almacenamiento

Secundario

Parámetros

Contraseñas

Procesos

ARCH

PMON SMON DBWR LGWR CHPT

Program Global Área

Servidor Usuario

Almacenamiento

memoria

principal

InstanciaSystem Global Área (SGA)

Caché de

biblioteca

Caché de

DD

Caché

de

búfer

Búfer

de

redo

log

Large

Pool

Zona

com

part

ida

Page 6: 1a-cjORACLE 11g

La instancia. Es uno de los dos elementos de

cualquier Base de Datos Oracle. Sirve paragestionar los datos de la base de datos yproporcionar servicio a los usuarios que accedena la misma y está compuesta de: estructuras enmemoria y procesos background.

Archivos en disco. Representan la Base de

Datos en sí y consta de:Estructuras lógicas. Tablespaces, objetos del esquema de usuario

Estructuras físicas. Los archivos de datos almacenados en disco, los archivos de datos (asociados a los tablespaces) los archivos redo log, y los archivos de control

Page 7: 1a-cjORACLE 11g

Una base de datos de Oracle contiene tres tipos de archivos:Archivos de datos. Contiene los datos actuales de la base de datos así como el diccionario de datos.Archivos rehacer (redo logs). Almacenan datos recuperables en caso de error grave.Archivos de control. Necesarios para mantener la integridad de la Base de Datos.

Se utilizan otros archivos de forma auxiliarArchivos de parámetros. Definen característica de una instancia Oracle.Archivos de contraseñas. Sirven para autenticar los usuarios.Copias de archivos rehacer. Usados para la recuperación de datos

Page 8: 1a-cjORACLE 11g

SGAEstá situada al inicio de losdatos de la instancia ycontiene los datos einformación de control de lainstancia

PGAEn ella se almacenan los datoscorrespondientes a unproceso, el cual incluye:Áreas de ordenación. Paraacelerar las tareas deordenación de datos.Información de sesión.Usuarios, privilegios, etc.Estados del cursor. Tareas SQLactualmente en ejecución.Espacio de pila. Variables yotros datos

Large pool. Se utiliza como memoria de sesión y para realizaroperaciones de respaldo.Búfer de archivo rehacer (Redo Log Buffer). Almacena los últimoscambios realizados a los bloques de datos de la Base de Datos.Caché Búfer de la Base de Datos. Almacena los últimos bloques de datosaccedidos por los usuarios.Fondo común compartido (Shared pool). Almacena las últimasinstrucciones SQL y PL/SQL ejecutadas, estos a su vez posee dosestructuras internas.

Caché de instrucciones (Library Caché). Almacena las últimasinstrucciones SQL y PL/SQL ejecutadas.Caché de diccionario de datos. Almacena las últimas definicionesde la Base de Datos utilizadas (tablas, índices, privilegios, usuarios,etc.) cada vez que una instrucción utiliza un nombre de la Base deDatos (tabla, índice u otros objetos) se comprueba en eldiccionario de datos y se almacena en este caché. De este modo lasiguiente vez no hace falta acceder al diccionario de datos real

En ella se almacenan los datos correspondientes a unproceso, el cual incluye:Áreas de ordenación. Para acelerar las tareas de ordenaciónde datos.Información de sesión. Usuarios, privilegios, etc.Estados del cursor. Tareas SQL actualmente en ejecución.Espacio de pila. Variables y otros datos

Page 9: 1a-cjORACLE 11g

Proceso de usuario. Lanzado por el usuario para pedir interacción

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 más 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 disposición de

datos. Esto ocurre cuando se genera un punto de

comprobación.

Page 10: 1a-cjORACLE 11g

SMON. Permite recuperar la instancia de la

base de datos en caso de caída 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

caída 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.

Continuación …

Page 11: 1a-cjORACLE 11g

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 métricas.

Opcionalmente podemos tener: ARCH, RECO,

Dispatchers (Dnnn), Shared Servers (Snnn), etc.

El parámetro BACKGROUND_DUMP_DEST, del archivo deinicialización, define el directorio donde se guardan losarchivos de depuración de los procesos background.

Continuación …

Page 12: 1a-cjORACLE 11g

La estructura lógica de la base de datos determina el uso que se hace delespacio físico que la sustenta. Existe una jerarquía descendente en estaestructura, consistente en tablespaces, segmentos, extensiones ybloques.Una base de datos de Oracle la forman un grupo de tablespaces. Untablespace puede contener uno o más segmentos. Un segmento lointegran una o más extensiones. Una extensión tendrá al menos unbloque. El bloque es la unidad mínima de almacenamiento.El tamaño del bloque será múltiplo del que tenga el sistema operativo, ylo determina la variable db_block_size (2K, 4K, 8K, 16K y 32K).Cuando un segmento (tabla, índice, rollback o temporal) crece, elespacio que se añade es de una extensión.Automatic Storage Managment (ASM). Gestor de volúmenes para basesde datos Oracle. Gestiona directamente los discos. Además distribuyeautomáticamente los datos entre los discos, manteniendo el repartouniforme cuando se añaden o quitan discos (incluso en caliente). Tambiénse encarga de borrar los archivos que ya no forman parte de la BD

Page 13: 1a-cjORACLE 11g

Estructura lógica de los objetos de Oracle

Page 14: 1a-cjORACLE 11g

Encabezado de un bloque

Espacio libre

Fila de datosEncabezado de fila

Tamaño del campo

Valor del campo

Contenido de un bloque Contenido de una fila

Page 15: 1a-cjORACLE 11g

Oracle 10g

Base de datos “practica”

Page 16: 1a-cjORACLE 11g

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 el nombre

initpractica.ora (formato ANSI) y pegar el siguiente texto:

Page 17: 1a-cjORACLE 11g

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

Page 18: 1a-cjORACLE 11g

Paso 4. inicie el sql*plus

Paso 5. connect sys/claveoracle as sysdba

Paso 6. shutdown

Paso 7. pegar el siguiente código:

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 instrucción

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'

Page 19: 1a-cjORACLE 11g

CREATE DATABASE practica

LOGFILE group 1 ('C:\oraclexe\oradata\practica\redolog1a.dbf',

'C:\oraclexe\oradata\practica\redolog1b.dbf' ) SIZE 10M,

group 2 ('C:\oraclexe\oradata\practica\redolog2a.dbf',

'C:\oraclexe\oradata\practica\redolog2b.dbf' ) SIZE 10M,

group 3 ('C:\oraclexe\oradata\practica\redolog3a.dbf',

'C:\oraclexe\oradata\practica\redolog3b.dbf' ) SIZE 10M

DATAFILE 'C:\oraclexe\oradata\practica\system01.dbf' SIZE 200M

CHARACTER SET WE8ISO8859P1

national character set utf8

EXTENT MANAGEMENT LOCAL

sysaux datafile 'C:\oraclexe\oradata\practica\sysaux01.dbf'

size 300M

autoextend on

next 10M

maxsize unlimited

undo tablespace ts_undo

datafile 'C:\oraclexe\oradata\practica\undo01.dbf'

size 50M

default temporary tablespace ts_temp

tempfile 'C:\oraclexe\oradata\practica\temp01.dbf'

size 50M AUTOEXTEND ON NEXT 50M maxsize 300M;

/

Paso 9. Crear la base de datos

Espere unos minutos, al final deberá aparecer el mensaje de Base de datos creada.

Page 20: 1a-cjORACLE 11g

Paso 10

alter database mount

/

Paso 11

alter database open

/

Paso 12ALTER DATABASE DATAFILE 'C:\oraclexe\oradata\practica\SYSTEM01.DBF' RESIZE 1000M;

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 instrucción

ORADIM -NEW -SID practica -INTPWD claveoracle -STARTMODE AUTO

-PFILE C:\oraclexe\app\oracle\product\10.2.0\server\dbs\initpractica.ora

Page 21: 1a-cjORACLE 11g

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

código:

practica =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = practica)

(SID = practica)

)

)

… guarde los cambios

Page 22: 1a-cjORACLE 11g

Paso 18. Edite el archivo listener.ora y reemplaza todo el contenido por el

siguiente (se asume que usa versión 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)

)

Page 23: 1a-cjORACLE 11g

#---------------

(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)Es el

nombre de

la máquina… guarde los cambios

Page 24: 1a-cjORACLE 11g

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)

Page 25: 1a-cjORACLE 11g
Page 26: 1a-cjORACLE 11g

ORA-12560: TNS: Error de Adaptador de protocolo

El archivo listener.ora no está configurado correctamente, el proceso

no está corriendo o hay conflictos entre procesos.

Vea la siguiente imagen

Debe estar

iniciado

Debe

estar

detenido

Page 27: 1a-cjORACLE 11g

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 opción tipo inicio

elija manual y detenga el

servicio

3. Elija OracleServicepractica

En la opción tipo inicio

elija automático y luego

seleccione iniciar

Page 28: 1a-cjORACLE 11g

En las propiedades de equipo

elija variables de entorno

Seleccione el botón nueva y

como clave proporcione

ORACLE_SID y en valor escriba

practica; con esto

automáticamente estará

apuntando a nuestra base de

datos

Configurar variables de entorno

Page 29: 1a-cjORACLE 11g

Conectado a una instancia inactiva

Causa: El archivo initXXXX.ora (initpractica.ora) no está bien configurado

Solución: Revisar detalladamente el archivo o ejecutar:

startup nomount

pfile=C:\oraclexe\app\oracle\product\10.2.0\server\dbs\initpractica.ora

Alter database mount

/

Alter database open

/

Page 30: 1a-cjORACLE 11g
Page 31: 1a-cjORACLE 11g

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 librerías

compartidas que no forman parte del núcleo. PATH debe incluir el

directorio con los ejecutables de Oracle, para mayor comodidad del

administrador

Solución desde Windows

Escribir en la consola: SET

Page 32: 1a-cjORACLE 11g

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 ejecución en el

sistema, filtrando por el nombre de la instancia de BD

> Ps –ef practicaBD

También lo podemos hacer consultando la vista dinámica V$PROCESS (o

haciendo join con V$BGPROCESS, que contiene todos los posibles

procesos background), en la BD en cuestión:

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 más compacta

select name,description from v$process a, v$bgprocess b

where a.ADDR=b.PADDR;

Page 33: 1a-cjORACLE 11g

3. Ver el tamaño de la SGA de la BD y las cachés que la componen.

Hay varias vistas dinámicas de la BD que nos dan información sobre el

tamaño 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;

Page 34: 1a-cjORACLE 11g

4. Comprobar valores de parámetros del init relacionados con el tamaño

de la memoria (SGA y PGA).

En Oracle 11g se puede configurar toda la memoria que Oracle necesita

(SGA y PGA), con el parámetro memory_target (se puede también indicar

un límite máximo para el mismo con memory_max_target). Los

parámetros que dimensionan la SGA (sga_target) y la PGA

(pga_aggregate_target) se pueden dejar a cero o con un valor mínimo.

Además hay que definir el tamaño del buffer de redo (log_buffer).

Con Oracle 9i, la configuración de la SGA era manual, y había que asignar

los parámetros de inicialización 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 configuración automática de la SGA, con el

parámetro sga_target (además de sga_max_size si se le quería poner una

valor máximo). Por tanto, con 10g, bastaría asignar sga_target,

sga_max_size y log_buffer (y los demás a cero, o con un valor mínimo). La

PGA se configuraba como en 9i, con pga_aggregate_target

Page 35: 1a-cjORACLE 11g

Solución:

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;

Page 36: 1a-cjORACLE 11g

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;

Page 37: 1a-cjORACLE 11g

6. Identificar la estructura lógica de la BD: tablespaces, segmentos,

extensiones

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;

Page 38: 1a-cjORACLE 11g

Para ver cuántos 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 cuántas 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;

Page 39: 1a-cjORACLE 11g

7. Consultar información sobre la base de datos (v$database) y la

instancia (v$instance)

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;

Page 40: 1a-cjORACLE 11g

8. Localizar el proceso “servidor” asociado a mi sesión (v$process y

v$session). ¿Es un servidor dedicado o compartido?

Toda sesión contra la BD tiene dos procesos asociados: cliente y

servidor. En el cliente tenemos el proceso de usuario que inicia la

sesión y en el servidor de base de datos tendremos el proceso que

sirve las peticiones de dicha sesión; que puede ser un servidor

dedicado o compartido. En las vistas V$SESSION y V$PROCESS

tenemos toda la información relativa a sesiones y procesos,

respectivamente

Page 41: 1a-cjORACLE 11g

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;

Solución

En este caso, el proceso servidor asociado a mi sesión es un servidor DEDICADO

Page 42: 1a-cjORACLE 11g

9. Ver la información 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%' ;

Page 43: 1a-cjORACLE 11g

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 más posible a 1, de lo

contrario es posible que haya que aumentar el tamaño de la

Shared Pool

select namespace, pinhitratio from v$librarycache;

Page 44: 1a-cjORACLE 11g

11. Ver las sentencias SQL que guarda la Shared-Pool

(v$sqlarea)

En la vista V$SQLAREA podemos ver el contenido del

“área SQL” de la sharedpool, así como información útil

para el ajuste de cada una de las sentencias sql (Shared

Pool consumida, nº de veces que se ha ejecutado, nº de

veces que se ha salido de la caché, lecturas físicas,

tiempo de CPU, tiempo total incluyendo compilación,

etc).

Page 45: 1a-cjORACLE 11g

SELECT SQL_TEXT, PERSISTENT_MEM, EXECUTIONS, LOADS,

DISK_READS, CPU_TIME, ELAPSED_TIME

FROM v$sqlarea order by DISK_READS desc;

Solución

SELECT tablespace_name,segment_type,count(*)

FROM dba_extents group by tablespace_name,segment_type

Page 46: 1a-cjORACLE 11g

12. Ver las tablas en una base de datos

SELECT table_name FROM DBA_TABLES;

SELECT table_name, tablespace_name FROM DBA_TABLES;

//--- para mostrar solo aquellas que está en el tablespace práctica

SELECT table_name FROM DBA_TABLES WHERE tablespace_name=„PRACTICA‟;

13. Aumentar el tamaño de la shared pool

select * from v$sgainfo;

alter system set shared_pool_size=56M;

select * from v$sgainfo;

Page 47: 1a-cjORACLE 11g

13. Comprobar el funcionamiento de la caché de

redolog, como protectora del contenido de la caché de

datos. Para ello iniciaremos una transacción y

provocaremos una caída 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 caída de la BD.

Arrancar de nuevo la BD y comprobar que la fila insertada no está (pues no se

hizo commit).

Repetir la inserción de la fila, esta vez haciendo commit; y forzar la caída de la

BD otra vez.

Arrancar la BD una vez más y comprobar que ahora la fila si está (ya que se

validó la transacción con commit).

Page 48: 1a-cjORACLE 11g

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;

Page 49: 1a-cjORACLE 11g

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 medición 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 ejecución 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

Page 50: 1a-cjORACLE 11g

La segunda vez, se ejecuta más

rápido. ¿por qué?. Porque no lo

vuelve a sustraer del disco, sino

de la memoria

Page 51: 1a-cjORACLE 11g
Page 52: 1a-cjORACLE 11g

La necesidad de recuperar datos externos, es una tarea común;

generalmente los usuarios tienen información 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);

Page 53: 1a-cjORACLE 11g

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 guárdalo en la unidad C:

Page 54: 1a-cjORACLE 11g

Crear un archivo control.ctl y guárdalo en la unidad C:

Suponiendo que la información está en Excel

Elija guardar como, seleccione otros formatos y luego del tipo elija CSV

(delimitado por comas) en la unidad C:\califica.dat

Page 55: 1a-cjORACLE 11g

Crear un archivo control.ctl y guárdalo 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;