Oracle Tipos de Tablas

November 24, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Oracle Tipos de Tablas...

Description

 

Tablas Regulares

Oracle 12c

TABLAS PARTICIONADAS

Cuando tenemos tablas con un gran volumen de registros, una de las maneras más fáciles y eficaces de conseguir mejorar los tiempos de consultas, es particionar las tablas. Esto significa que, siguiendo un patrón que especifiquemos, Oracle va a dividir la tabla en tablas más pequeñas, desde el punto de vista físico, que desde el punto de vista lógico seguirá siendo una única tabla. Esto mejora considerablemente el tiempo de respuesta de la consulta, ya que cuando en esta filtra por el patrón especificado, Oracle consultará (físicamente) (físicamente) solo la partición correspondiente, y no se recorrerá la tabla completa. ¿Cuándo está recomendado usar tablas particionadas? Pues dependerá un poco del servidor sobre el que esté la base de datos, y del volumen de datos. dato s. Pero en principio, de forma genérica, podríamos decir que es recomendable a partir de 1 millón de registros. ----------------------------------- 1. CREACION DE TBS ----------------------------------

CREATE TABLESPACE TBS_ASIA DATAFILE 'C:\TEMP\DF_CO 'C:\TEMP\DF_COMPROBANTES_A MPROBANTES_ASIA.DBF' SIA.DBF' SIZE 100M; CREATE TABLESPACE TBS_EUROPA DATAFILE 'C:\TEMP\DF_CO 'C:\TEMP\DF_COMPROBANTES_EU MPROBANTES_EUROPA.DBF' ROPA.DBF' SIZE 100M; CREATE TABLESPACE TBS_AL DATAFILE 'C:\TEMP\DF_CO 'C:\TEMP\DF_COMPROBANTES_A MPROBANTES_AL.DBF' L.DBF' SIZE 100M; CREATE TABLESPACE TBS_OTROS DATAFILE 'C:\TEMP\DF_CO 'C:\TEMP\DF_COMPROBANTES_O MPROBANTES_OTROS.DBF' TROS.DBF' SIZE 100M; ----------------------------------- 2. TABLA PARTICIONADA POR LISTA ----------------------------------

CREATE TABLE Ventas (ID NUMBER(10), ORIGEN VARCHAR2(2 VARCHAR2(20), 0), FECHA DATE default sysdate ) PARTITION BY LIST( ORIGEN) (PARTITION ventas_ASIA VALUES('ASIA') VALUES('ASIA') tablespace TBS_ASIA, PARTITION ventas_EUROPA VALUES ('EUROPA') tablespace TBS_EUROPA, PARTITION ventas_AL VALUES ('AL') tablespace TBS_AL, PARTITION ventas_otros VALUES(DEFAULT VALUES(DEFAULT)) tablespace TBS_OTROS );

INSTRUCTOR : ALAIN MEJIA AVALOS

[email protected] alain_mejia@talle resoracle.com

 

Tablas Regulares

Oracle 12c

-------------------------------------------------- 3. INSERTANDO DATOS EN TABLAS PARTICIONADAS -------------------------------------------------

INSERT INTO VENTAS SELECT LEVEL, 'ASIA', SYSDATE FROM DUAL CONNECT BY LEVEL < 100000 100000;; INSERT INTO VENTAS SELECT LEVEL, 'EUROPA', SYSDATE FROM DUAL CONNECT BY LEVEL < 100000 100000;; -------------------------------------------------- 4. QUERY DE TABLAS PARTICIONADAS -------------------------------------------------

SELECT * FROM VENTAS; SELECT * FROM VENTAS PARTITION ( ventas_ASIA ); SELECT * FROM VENTAS PARTITION (ventas_EUROPA);

----------------------------------- 5. CONSULTANDO TABLAS PARTICIONADAS ----------------------------------

SELECT TABLE_NAME, PARTITION_NAME, HIGH_VALUE FROM USER_TAB_PARTITIONS WHERE TABLE_NAME = 'VENTAS' ;

------------------------------------------------- 6. CREACION DE TABLA PARTICIONADA POR RANGO ------------------------------------------------

CREATE TABLE COMPROBANTES ( IDCOMPROBAN IDCOMPROBANTE TE NUMBER(15), FECHA DATE DEFAULT SYSDATE , MONTO NUMBER(15,4) DEFAULT 0, REGION VARCHAR(20) VARCHAR (20) NOT NULL, ESTADO

INTEGER DEFAULT 1 )

PARTITION BY RANGE ( FECHA) ( PARTITION COMPROBANTES_2016 COMPROBANTES_2016 VALUES LESS THAN ( TO_DATE( '2016-12-31 '2016-12-31 23:59:00', 'YYYY-MM-DD HH24:MI:SS' )) TABLESPACE TBS_COMPRO TBS_COMPROBANTES_201 BANTES_2016, 6, PARTITION COMPROBANTES_2017 VALUES LESS THAN ( TO_DATE( '2017-12-31 '2017-12-31 23:59:00', 'YYYY-MM-DD HH24:MI:SS' )) TABLESPACE TBS_COMPRO TBS_COMPROBANTES_201 BANTES_2017, 7, PARTITION COMPROBANTES_2018 VALUES LESS THAN ( TO_DATE( '2018-12-31 '2018-12-31 23:59:00', 'YYYY-MM-DD HH24:MI:SS' )) TABLESPACE TBS_COMPROBANTES_2018 TBS_COMPROBANTES_2018 );

INSTRUCTOR : ALAIN MEJIA AVALOS

[email protected] alain_mejia@talle resoracle.com

 

Tablas Regulares

Oracle 12c

----------------------------------- 7. INSERTANDO DATOS ----------------------------------

INSERT INTO COMPROBAN COMPROBANTES TES SELECT LEVEL, SYSDATE, 350, 'AMERICA' , 1 FROM DUAL CONNECT BY LEVEL < 1000000; INSERT INTO COMPROBAN COMPROBANTES TES SELECT LEVEL, TO_DATE( '2017-2-5 23:59:00', 'YYYY-MM-DD HH24:MI:SS'), 350, 'AMERICA' , 1 FROM DUAL CONNECT BY LEVEL < 1000000;

INSERT INTO COMPROBAN COMPROBANTES TES SELECT LEVEL, TO_DATE( '2018-2-5 23:59:00', 'YYYY-MM-DD HH24:MI:SS'), 350, 'AMERICA' , 1 FROM DUAL CONNECT BY LEVEL < 2000000;

----------------------------------- 8. QUERY DE TABLAS PARTICIONADAS ----------------------------------

SELECT * FROM COMPROBANTES PARTITION (COMPROBANTES_2016 (COMPROBANTES_2016 );

----------------------------------- 9. AGREGANDO UNA NUEVA PARTICION ----------------------------------

CREATE TABLESPACE TBS_COMPROBANTES_2019 DATAFILE 'C:\TEMP\DF_CO 'C:\TEMP\DF_COMPROBANTES_2 MPROBANTES_2019.DBF' 019.DBF' SIZE 100M; ALTER TABLE COMPROBANT COMPROBANTES ES ADD PARTITION COMPROBANTES_2019 VALUES LESS THAN ( TO_DATE( '2019-12-31 23:59:00', 'YYYY-MM-DD HH24:MI:SS' HH24:MI:SS' )) TABLESPACE TBS_COMPROBANTES_2019 TBS_COMPROBANTES_2019 ; SELECT TABLE_NAME, PARTITION_NAME, HIGH_VALUE FROM USER_TAB_PARTITIONS WHERE TABLE_NAME = 'COMPROBA 'COMPROBANTES' NTES' INSERT INTO COMPROBAN COMPROBANTES TES SELECT LEVEL, TO_DATE( '2017-2-5 23:59:00', 'YYYY-MM-DD HH24:MI:SS'), 350, 'AMERICA' , 1 FROM DUAL CONNECT BY LEVEL < 2;

INSTRUCTOR : ALAIN MEJIA AVALOS

[email protected] alain_mejia@talle resoracle.com

 

Tablas Regulares

Oracle 12c

INDEX ORGANIZATION TABLE -------------------------------------------------------- 1. CREANDO ESCENARIO DE TRABAJO - ZONA DE ALMACENAMIENTO --------------------------------------------------------

CREATE TABLESPACE TBS_PRUEBA_ TBS_PRUEBA_IOT IOT DATAFILE 'C:\TBS\DF_PRU 'C:\TBS\DF_PRUEBA_IOT.DBF EBA_IOT.DBF'' SIZE 100M; ------------------------------------ 2. INDEX ORGANIZATION TABLE ----------------------------------

CREATE TABLE PERSONA_IOT ( ID NUMERIC( 15) PRIMARY KEY, PATERNO VARCHAR(50) , MATERNO VARCHAR(50) , NOMBRE VARCHAR(50) , DNI CHAR(8) ) ORGANIZATION INDEX TABLESPACE TBS_PRUEBA_ TBS_PRUEBA_IOT; IOT; ----INSERTANDO ----INSERTA NDO DATOS

INSERT INTO PERSONA_IOT SELECT LEVEL , 'PAT_'||DBMS_RANDOM.string('x',10) 'PAT_'||DBMS_RANDOM.string('x',10) , 'MAT_'||DBMS_RANDO 'MAT_'|| DBMS_RANDOM.string('x',10) M.string('x',10) , 'NOM_'||DBMS_RANDO 'NOM_'|| DBMS_RANDOM.string('x',10) M.string('x',10) , DBMS_RANDOM.string('x',8) FROM DUAL CONNECT BY LEVEL < 500000 500000;; ----------------------------------- 2.1 Plan de ejecución -INDEX UNIQUE SCAN ----------------------------------

Explain plan For Select * From PERSONA_IO P ERSONA_IOT T Where ID = 1;

Select * from table( dbms_xplan.display )

INSTRUCTOR : ALAIN MEJIA AVALOS

[email protected] alain_mejia@talle resoracle.com

 

Tablas Regulares

Oracle 12c

TABLAS EXTERNAS

Las tablas externas es una funcionalidad, que proporciona Oracle, para facilitar la lectura de ficheros formateados, como si fueran tablas. Este tipo de tablas son de sólo lectura y no permite utilizar manipulación de datos (DML). No admite la creación de índices sobre este tipo de tablas. Las tablas externas se utilizan en cargas de ficheros repetitivos y sin tener que acceder al sistema operativo, para realizar la carga.

NOTA : LISTA1.TXT , LISTA2.TXT LI STA2.TXT -- CREACION DE DIRECTORIO ORACLE   'C:\TE';;  CREATE OR  REPLACE DIRECTORY  DIR_TE  AS  'C:\TE' -- LISTA DE DIRECTORIOS   SELECT * FROM DBA_DIRECTORIES   -- CREACION DE TABLA EXTERNA   CREATE CREATE  TABLE TABLE TE_Lista  TE_Lista((  clave NUMBER (4), ),   20), ),   nombre CHAR (20 10)) ))   nacimiento CHAR (10 ORGANIZATION  EXTERNAL(   ORGANIZATION  EXTERNAL( TYPE ORACLE_LOADER TYPE ORACLE_LOADER DEFAULT DEFAULT  DIRECTORY  DIR_TE   DIR_TE  ACCESS  PARAMETERS    ACCESS PARAMETERS (RECORDS DELIMITED BY  NEWLINE  NEWLINE ----CADA NUEVA LINEA ES UN REGISTRO   SKIP  SKIP 0  BADFILE '%a_%p.bad' '%a_%p.bad'   ---SI HAY ERROR GENERAR ESTE ARCHIVO   LOGFILE '%a_%p.log' LOGFILE  '%a_%p.log'   ','  ---LOS CAMPOS ESTAN SEPARADOS POR COMAS (,)   FIELDS TERMINATED BY  ','  '"'  LRTRIM ----OPCIONALMENTE PUEDEN HABER DOBLE OPTIONALLY ENCLOSED BY  '"'  COMILLAS MISSING FIELD VALUES FIELD VALUES ARE  ARE NULL  NULL  ---OPCIONALMENTE HAY CAMPOS NULOS   REJECT  ROWS WITH  WITH ALL   ALL NULL FIELDS NULL FIELDS REJECT ROWS  EXTERNAL (4), ),   (clave INTEGER  EXTERNAL  nombre CHAR (20 20), ),   10)) DATE_FORMAT DATE MASK DATE MASK "dd/mm/yyyy" "dd/mm/yyyy")) ))   nacimiento CHAR (10 LOCATION  'Lista1.txt',,'Lista2.txt' 'Lista2.txt')) ))   LOCATION ('Lista1.txt' REJECT  LIMIT 0;  REJECT LIMIT  -- CONSULTA DE TABLAS EXTERNAS   SELECT * FROM TE_Lista   WHERE CLAVE = 4;  -- LISTA DE TABLAS EXTERNAS   SELECT * FROM DBA_EXTERNAL_TABLES  

INSTRUCTOR : ALAIN MEJIA AVALOS

[email protected] alain_mejia@talle resoracle.com

 

Tablas Regulares

INSTRUCTOR : ALAIN MEJIA AVALOS

Oracle 12c

[email protected] alain_mejia@talle resoracle.com

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF