Posts

Showing posts with the label HOWTO

Analytic functions LEAD y LAG- Example

Las funciones LAG y LEAD te permiten obtener el valor siguiente o anterior respectivamente al registro actual considerando un orden definido. Explicarlo quizás no es tan sencillo como con un ejemplo, imaginemos que tenemos una tabla donde está el resumen de un estados de cuenta bancario donde podemos ver el saldo que tenía el cliente al cierre de cada mes. create table Edo_Cta (Mes date, Saldo number) tablespace users; insert into Edo_Cta (mes, Saldo) values (to_date('1-Jan-2019','dd-Mon-yyyy'), 1000); insert into Edo_Cta (mes, Saldo) values (to_date('1-Feb-2019','dd-Mon-yyyy'), 1200); insert into Edo_Cta (mes, Saldo) values (to_date('1-Mar-2019','dd-Mon-yyyy'), 2000); insert into Edo_Cta (mes, Saldo) values (to_date('1-Apr-2019','dd-Mon-yyyy'), 2500); insert into Edo_Cta (mes, Saldo) values (to_date('1-May-2019','dd-Mon-yyyy'), 2800); insert into Edo_Cta (mes, Saldo) values (to_date('1-Jun-2019'

Analytic functions RANK - Example

Funciones analíticas como dba utilizamos muy poco esta consulta un poco más complejas sin embargo son muy poderosas, aquí un ejemplo sencillo de la función RANK. Con la función RANK podemos numerar o jerarquizar un subconjunto de registros según sus valores, cada subconjunto de valores diferentes la numeración o jerarquía se reinicia. create table entradas (nombre varchar2(32), fec_entrada date) tablespace users; INSERT INTO entradas (nombre, fec_entrada) SELECT chr(mod(LEVEL,10)+65),(sysdate+LEVEL) FROM dual CONNECT BY LEVEL <= 100; Hacemos la magia con la función RANK y veremos que los ordena según la fecha de entrada y les da un número según su jerarquía de menor a mayor. SQL> select * from (select nombre,fec_entrada, rank() over (partition by nombre order by fec_entrada) as myrank from entradas); NOMBRE FEC_ENTRA MYRANK -------------------------------- --------- ---------- A 22-MAR-20 1 A

Datapump 06 - Como respaldar el AWR con export datapump

Este es el sexto artículo sobre datapump, igualmente este pudiera ser un post referente a AWR. Vamos a ver como respaldar los datos del AWR (Automatic Workload Repository) con el Oracle Datapump. Como sabemos el AWR tiene una retención definida, por defecto solo guarda los últimos 8 días. Si queremos preservar un periodo en particular o llevarlo a otro ambiente para su posterior análisis podemos respaldarlo con un export datapump, Oracle trae un script que simplifica esta tarea. Paso 01.- Creamos el objeto directorio. sqlplus / as sysdba CREATE OR REPLACE DIRECTORY DPUMP_AWR AS '/home/oracle/dbprocs/awr'; Paso 02.- Exportamos el AWR con el script awrextr.sql. El script va a requerir que ingresemos 4 datos. sqlplus / as sysdba @?/rdbms/admin/awrextr.sql Paso 02.1.- database id, el script te sugiere uno. The default database id is the local one: '3645396109'. To use this database id, press to continue, otherwise enter an alternative. Enter value f

Datapump - 04 Export con flashback time

Image
Cuando escucho la palabra "Flashback" lo primero que pienso es el video juego de los años 90, muy divertido y adelantado para su época. Sin embargo, en esta oportunidad vamos a hablar de Oracle Flashback en el Datapump y como nos permite hacer viajes en el tiempo. Flashback es una tecnología que comenzó con Oracle 9i y sigue evolucionando. Esta herramienta permite a los administradores y usuarios ver y manipular estados pasados de los datos sin necesidad de recuperar toda la base de datos a un punto de tiempo en especifico. Vamos a crear un respaldo de una tabla pero con su imagen de hace 30 minutos y no con la imagen actual. Comencemos: 01.- Insertamos 5 registros a la 14:00, la tabla tiene un campo llamado "fecha" donde vamos a insertar la hora actual a través de la función SYSDATE. 14:00:33 SQL> INSERT INTO test.tab01 (ID,NOMBRE,FECHA) SELECT level, 'First Load', sysdate FROM dual CONNECT BY level <= 5; 5 rows created. 14:00:46 SQL>

Datapump - 01 Extraer sentencias DDL de un export Datapump

Saludos, estoy comenzando el día de hoy con una serie de al menos 10 artículos relacionados con la herramienta de datapump, esta apareció con oracle 10g como la evolución del export/import. Datapump trae mejoras e interesantes funcionalidades con cada nueva versión de Oracle. Si solo lo has usado para mover y hacer un respaldo lógico de una tabla o esquema, quizás te estás perdiendo de algunas utiles caracteristicas que pueden simplificar tu vida. Si deseamos extraer en un archivo el script de creación y carga de un export datapump que realizamos previamente. impdp  DUMPFILE=EXP_DIR:expADM_ADMIN.dmp sqlfile=EXP_DIR:sqlADM_ADMIN.sql

Excluir los usuarios por defecto en Oracle

Las bases de datos tienen varios usuarios por defecto, por ejemplo el más conocido es SYSTEM y otros que se crean al activar o instalar una opción adicional como “Oracle Application Express”. En muchas ocasiones no estamos interesados en conocer los detalles de ellos cuando hacemos consultas al diccionario de la base de datos. Por ejemplo si quieres conocer un resumen por tipo de objetos pero solo te interesan los usuarios propios del negocio, entonces debemos excluir los esquemas que crea Oracle por defecto o para sus funcionalidades. Revisando la documentación en línea de Oracle se pueden conseguir varios ejemplos de los usuarios que deberíamos excluir en nuestras consultas sino queremos verlos. A continuación les muestro la  lista de los usuarios que excluyo en mis consultas de monitoreo: owner not in ('ANONYMOUS','AUDSYS','CTXSYS','DBSNMP','LBACSYS','MDSYS','OLAPSYS','ORDDATA','ORDPLUGINS','ORDSYS

Como encontrar el nombre y la versión del cluster de Oracle RAC.

Hay momentos que preguntas sencillas se convierten en difíciles , y más cuando se esta comenzando. Uno de esos casos puede ser cuando te preguntan el nombre o la versión del cluster de un RAC. * Obtener el nombre del cluster: cd $GRID_HOME/bin cemutlo -n ó cd $GRID_HOME/bin olsnodes -c * Para obtener la versión del cluster. crsctl query crs softwareversion [node_name] Si se omite [node_name]  se muestra la versión del nodo local.

DBMS_METADATA package to retrieve metadata

--- Format set heading off; set echo off; Set pages 999 ; set long 90000 ; BEGIN dbms_metadata.set_transform_param ( DBMS_METADATA.SESSION_TRANSFORM , 'PRETTY' , TRUE ); dbms_metadata.set_transform_param ( DBMS_METADATA.SESSION_TRANSFORM , 'SQLTERMINATOR' , TRUE ); END; / --- Example   select dbms_metadata.get_ddl ( 'TRIGGER' , '&TRIGGER_NAME , '&OWNER' ) from dual ; select dbms_metadata.get_ddl ( 'TYPE' , '&TYPE_NAME' , '&OWNER' ) from dual ; select dbms_metadata.get_ddl ( 'INDEX' , '&INDEX_NAME' , '&OWNER' ) from dual ; select dbms_metadata.get_ddl ( 'TABLE' , '&TABLE_NAME' , '&OWNER' ) from dual ; select dbms_metadata.get_ddl ( 'TABLESPACE' , '&TABLESPACE_NAME' ) from dual ; select dbms_metadata.get_ddl ( 'PROCEDURE' , '&PROCE

Set SQL*PLUS

SQLPROMPT &_user : Who is connected (10g and +). &_CONNECT_IDENTIFIER : Which Database you are connected. Eg : SQL> set sqlprompt   '&_CONNECT_IDENTIFIER@&_user>' PADOVA@SYS > TRIMSPOOL – TRIMOUT SET  TRIMOUT ON or SET  TRIMSPOOL ON removes trailing blanks at the end of each displayed or spooled line. SQL> set lin 80 SQL> set TRIMSPOOL OFF SQL> spool prueba04 . txt SQL> select '12345' cmp from dual ; cmp ----- 12345 SQL>   spool off; bash - 3.2 $  wc - c prueba04 . txt        293 prueba04 . txt < ----- 293 characters SQL> set lin 80 SQL> SET TRIMSPOOL ON SQL> spool prueba02 . txt SQL>   select '12345' cmp from dual ; cmp ----- 12345 SQL>   spool off; bash - 3.2 $ wc - c prueba02 . txt        69 prueba02 . txt    < ----- just 69 characters GLOGIN.SQL $ORACLE_HOME/sqlplus/admin/glogin.sql All