10/8/16

Tablas de auditoria de Teradata

Tabla de auditoria para consultar las sentencias ejecutadas en teradata:

 lock row access
select top 100 *
from dbc.dbqlogtbl
where cast(startTime as date) = date
--and appId = 'bteq'
   and clientid 'NAME_DATA_BASE'
--and queryText like '%UPDATE AHOIS_NEW%'

order by startTime


Tablas y vistas por base de datos:
select    *
from       dbc.tables
where    tablekind in ('V','T')
   --and tablename like '%%' 
    and         databasename = 'NAME_DATA_BASE';       



Para consultar el espacio total y el ocupado:
SELECT               *
FROM   dbc.diskSpace;

Podemos comprobar el espacio de la base de datos agrupando de esta manera:

SELECT              
SUM (currentperm)/1024/1014/1024 AS espacio_ocupado_GB
,SUM (MAXPERM)/1024/1014/1024 AS espacio_TOTAL_GB
, espacio_TOTAL_GB - espacio_ocupado_GB AS espacio_libre_GB
, 100 * espacio_ocupado_GB /espacio_TOTAL_GB AS porcentaje
,databaseName
FROM   dbc.diskSpace 
WHERE TRIM(databaseName) = 'NAME_DATA_BASE'
GROUP                BY 5;


Espacio que ocupa una tabla dela base de datos:

 select
 databasename
 ,tablename
 , sum (currentPerm)
 , sum (currentPerm)/1024/1024/1024 as currentPermGB
  from
  dbc.tablesize
  where --tablename like  '%%' AND
    TRIM(databaseName) = 'NAME_DATA_BASE'
  group by 1,2
  order by currentPermGB desc


Iremos actualizando esta entrada con mas tablas de auditorias proximamente.


13/7/16

Conexión desde UNIX a BBDD

Conexión a TERADTA desde UNIX:

Ejecutamos: bteq 


Ahora ejecutariamos: .logon 11.111.111.111/Esquema.

Nos pedirá la password:



Al introducir la password,





En este momento ya podríamos realizar una consulta o lanzar una bteq.
Para generar desde un fichero, lo haríamos de la siguiente forma:
.run FILE=./drop_view.sql

Conexión a SQLPLUS desde UNIX:

En este caso basta con ejecutar:
Ø  sqlplus IP_MAQUINA/password@esquema

Si el login es correcto, ya nos aparecerá el prompt de sqlplus.





30/5/16

Ahorrar espacio en Teradata

Vamos a ver algunos ejemplos de tipos de datos con los que podemos aprovechar espacio.

Punto importante puede ser el tipo de timestamp que estamos guardando en una columna:

Es interesante tener en cuenta la diferencia entre timestamp(6) y timestamp(0).


select CURRENT_TIMESTAMP(6)


25/05/2016 10:32:35.570000

select CURRENT_TIMESTAMP(0)


25/05/2016 10:32:35

Un ejemplo claro es una columna del tipo S / N, necesita 3 bytes como VARCHAR , pero sólo 1 byte como CHAR.

Podemos ver que en la opción de timestamp(6) se esta almacenando también los milisegundos, rara vez vamos a necesitar guardar dicho dato, por lo que si prescindimos de ellos podemos ahorrar mucho espacio en base de datos.


Para pasar de timestamp(6) a timestamp(0)

CAST(CAST(FCH_REG_BBDD AS DATE) AS TIMESTAMP(0)) + (CAST(FCH_REG_BBDD AS TIME(6)) - TIME '00:00:00' HOUR TO SECOND)

Otro caso importante para ahorrar espacio en teradata puede ser, a la hora de almacenar un carácter en una columna.

Nunca debes crear el campo en teradata como varchar(1), siempre como char(1).
Un CHAR(n) necesita exactamente n bytes (Latin) o n*2 (UNICODE) mientras que VARCHAR siempre encesita 1 o 2 bytes para cada caracter almacenado, pero ademas necesita dos bytes adicionales para una especie de cabecera, que indica la longitud total.


 Nunca debes hacer  VARCHAR(1) en Teradata.

... próximamente añadiremos mas opciones para ahorrar espacio...

29/2/16

Funciones básicas de Teradata


Si ya has trabajado con oracle, pl/sql o algñun lenguaje base de datos parecida, te puedes defender más o menos en teradata. En este apartado vamos a ir viendo algunas funciones de Teradata que se diferencian de Oracle, pl/sql ...

Para realizar una consulta sobre una o varias tablas y evitar bloqueos en la misma, usaremos la siguiente sentencia:

- LOCKING ROWFOR ACCESS MODE NOWAIT Select * from tabla;

Por ejemplo el clásico NVL de oracle no existe como tal, pero tenemos la siguiente función:

La función que puede ser más semejante al NVL en teradata es la siguiente:
select COALESCE(null,1);
select COALESCE(3,1);

El primero caso retornaría un 1 y en elsegundo caso un 3.

Otra función que podemos destacar es:

- SELECT ZEROIFNULL(VAR);


Si queremos recuperar en una consulta un número concreto de registros, de esta forma recuperaríamos 100 registros solamente:

- SELECT top 100 * from tabla;



A la hora de trabajar en teradata con las fechas hay que tener mucho cuidado.

Un ejemplo para almacenar una fecha como decimal (o parte de una fecha):
extract(year from v_fecha) * 10000 + extract(month from v_fecha) * 100 + extract(day from v_fecha)

Es igual que hacer esta conversión:
 cast(v_fecha as int) + 19000000

A veces esto puede ser muy útil ya que el decimal ocupa menos espacio en base de datos que el varchar.

Iremos introduciendo poco a poco algunas funcionalidades de teradata.

Un saludo, muchas gracias

14/2/16

Comprimir / Descomprimir / Empaquetar / Desempaquetar


tar (tar)
Empaquetar
tar -cvf archivo.tar /archivo/mayo/*
Desempaquetar
tar -xvf archivo.tar
Ver el contenido (sin extraer)
tar -tvf archivo.tar

.tar.gz – .tar.z – .tgz (tar con gzip)
Empaquetar y comprimir
tar -czvf archivo.tar.gz /archivo/mayo/*
Desempaquetar y descomprimir
tar -xzvf archivo.tar.gz
Ver el contenido (sin extraer)
tar -tzvf archivo.tar.gz

.gz (gzip)
Comprimir
gzip -q archivo
(El archivo lo comprime y lo renombra como “
archivo.gz”)
Descomprimir
gzip -d archivo.gz
(El archivo lo descomprime y lo deja como “archivo”
Nota: gzip solo comprime archivos, no directorios

.bz2 (bzip2)
Comprimir
bzip2 archivo
bunzip2 archivo
(El archivo lo comprime y lo renombra como “
archivo.bz2”)
Descomprimir
bzip2 -d archivo.bz2
bunzip2
 archivo.bz2
(El archivo lo descomprime y lo deja como “archivo”)
Nota: bzip2 solo comprime archivos, no directorios

.tar.bz2 (tar con bzip2)
Comprimir
tar -c archivos | bzip2 > archivo.tar.bz2
Descomprimir
bzip2 -dc archivo.tar.bz2 | tar -xv
tar jvxf
 archivo.tar.bz2 (versiones recientes de tar)
Ver contenido
bzip2 -dc archivo.tar.bz2 | tar -tv

.zip (zip)
Comprimir
zip archivo.zip /mayo/archivos
Descomprimir
unzip archivo.zip
Ver contenido
unzip -v archivo.zip

.lha (lha)
Comprimir
lha archivo.lha /mayo/archivos
Descomprimir
lha -x archivo.lha
Ver contenido
lha -v archivo.lha
lha -l
 archivo.lha

.zoo (zoo)
Comprimir
zoo -a archivo.zoo /mayo/archivos
Descomprimir
zoo -x archivo.zoo
Ver contenido
zoo -v archivo.zoo
zoo -L
 archivo.zoo

.rar (rar)
Comprimir
rar a archivo.rar /mayo/archivos
Descomprimir
rar x archivo.rar
Ver contenido
rar -v archivo.rar
rar -l
 archivo.rar

UNIX trabajar con ficheros

Buenos días,  hoy vamos a presentar algunas utilidades de unix que nos pueden resultar muy útiles a la hora de trabajar con cargas ETL.


- Buscar cadenas en ficheros:


> grep -lri "INSERT INTO" **/ 


El parámetro -l le indica que imprima los nombres de archivos en los que se encuentre el texto solicitado. 
El parámetro -i, que ignore las mayúsculas y minúsculas. 
El parámetro -r, que busque en forma recursiva dentro de la ruta indicada.

 - Cuando queremos consultar alguna linea de un fichero:

sed -n '1088,1089p' nombre_fichero


Con esta sentencia listaríamos las lineas 1088 y 1089 de dicho fichero.

- Mostrar las primeras o las últimas lineas de un fichero:

> head – 20 nombre_fichero
> tail – 20 nombre_fichero

Con head listamos las primeras lineas y con tail las últimas, en este caso 20 lineas.