67756872-1a-cjoracle-11g
TRANSCRIPT
M.T.I. Ambrosio Cardoso Jiménez
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
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
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
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
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
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
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
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.
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 …
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 …
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
Estructura lógica de los objetos de Oracle
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
Oracle 10g
Base de datos “practica”
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:
*.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 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'
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.
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
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
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)
)
#---------------
(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
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)
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
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
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
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
/
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
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;
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;
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
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;
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;
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;
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;
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;
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
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
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%' ;
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;
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).
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
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;
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).
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 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
La segunda vez, se ejecuta más
rápido. ¿por qué?. Porque no lo
vuelve a sustraer del disco, sino
de la memoria
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);
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:
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
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;