viernes, 4 de septiembre de 2015

Actualizar repositorio Yum de OEL 6

Ayer usé una VM que hacía un tiempo no usaba, bigdatalite 3.0.

Esta es una VM provista por Oracle para testing que trae muchos productos instalados, además de la base de datos, y ya anda por la versión 4.2.1

Lo interesante para compartir es que quise instalar unos paquetes nuevos para testear integración, usando el public-yum de Oracle, y falló por no encontrar los archivos:

[root@bigdatalite ~]# yum install postgresql-server
Loaded plugins: refresh-packagekit, security
epel/metalink                                                                                       | 2.9 kB     00:00    
epel                                                                                                | 4.3 kB     00:00    
epel/primary_db                                                                                     | 5.7 MB     00:04    
ol6_UEK_latest                                                                                      | 1.2 kB     00:00    
ol6_UEK_latest/primary                                                                              |  23 MB     00:07    
ol6_UEK_latest                                                                                                     491/491
ol6_latest                                                                                          | 1.4 kB     00:00    
ol6_latest/primary                                                                                  |  52 MB     00:26    
http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/repodata/primary.xml.gz: [Errno -1] Metadata file does not match checksum
Trying other mirror.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package postgresql-server.x86_64 0:8.4.20-1.el6_5 will be installed
--> Processing Dependency: postgresql(x86-64) = 8.4.20-1.el6_5 for package: postgresql-server-8.4.20-1.el6_5.x86_64
--> Processing Dependency: postgresql-libs(x86-64) = 8.4.20-1.el6_5 for package: postgresql-server-8.4.20-1.el6_5.x86_64
--> Processing Dependency: libcrypto.so.10(libcrypto.so.10)(64bit) for package: postgresql-server-8.4.20-1.el6_5.x86_64
--> Processing Dependency: libssl.so.10(libssl.so.10)(64bit) for package: postgresql-server-8.4.20-1.el6_5.x86_64
--> Running transaction check
---> Package openssl.x86_64 0:1.0.0-27.el6_4.2 will be updated
--> Processing Dependency: openssl = 1.0.0-27.el6_4.2 for package: openssl-devel-1.0.0-27.el6_4.2.x86_64
---> Package openssl.x86_64 0:1.0.1e-16.el6_5.7 will be an update
---> Package postgresql.x86_64 0:8.4.13-1.el6_3 will be updated
--> Processing Dependency: postgresql(x86-64) = 8.4.13-1.el6_3 for package: postgresql-devel-8.4.13-1.el6_3.x86_64
---> Package postgresql.x86_64 0:8.4.20-1.el6_5 will be an update
---> Package postgresql-libs.x86_64 0:8.4.13-1.el6_3 will be updated
---> Package postgresql-libs.x86_64 0:8.4.20-1.el6_5 will be an update
--> Running transaction check
---> Package openssl-devel.x86_64 0:1.0.0-27.el6_4.2 will be updated
---> Package openssl-devel.x86_64 0:1.0.1e-16.el6_5.7 will be an update
---> Package postgresql-devel.x86_64 0:8.4.13-1.el6_3 will be updated
---> Package postgresql-devel.x86_64 0:8.4.20-1.el6_5 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================================================================
 Package                          Arch                  Version                            Repository                 Size
===========================================================================================================================
Installing:
 postgresql-server                x86_64                8.4.20-1.el6_5                     ol6_latest                3.4 M
Updating for dependencies:
 openssl                          x86_64                1.0.1e-16.el6_5.7                  ol6_latest                1.5 M
 openssl-devel                    x86_64                1.0.1e-16.el6_5.7                  ol6_latest                1.2 M
 postgresql                       x86_64                8.4.20-1.el6_5                     ol6_latest                2.6 M
 postgresql-devel                 x86_64                8.4.20-1.el6_5                     ol6_latest                815 k
 postgresql-libs                  x86_64                8.4.20-1.el6_5                     ol6_latest                201 k

Transaction Summary
===========================================================================================================================
Install       1 Package(s)
Upgrade       5 Package(s)

Total download size: 9.7 M
Is this ok [y/N]: y
Downloading Packages:
http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/openssl-1.0.1e-16.el6_5.7.x86_64.rpm: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
Trying other mirror.
http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/openssl-devel-1.0.1e-16.el6_5.7.x86_64.rpm: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
Trying other mirror.
http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/postgresql-8.4.20-1.el6_5.x86_64.rpm: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
Trying other mirror.
http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/postgresql-devel-8.4.20-1.el6_5.x86_64.rpm: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
Trying other mirror.
http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/postgresql-libs-8.4.20-1.el6_5.x86_64.rpm: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
Trying other mirror.
http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/postgresql-server-8.4.20-1.el6_5.x86_64.rpm: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
Trying other mirror.


Error Downloading Packages:
  postgresql-devel-8.4.20-1.el6_5.x86_64: failure: postgresql-devel-8.4.20-1.el6_5.x86_64.rpm from ol6_latest: [Errno 256] No more mirrors to try.
  openssl-1.0.1e-16.el6_5.7.x86_64: failure: openssl-1.0.1e-16.el6_5.7.x86_64.rpm from ol6_latest: [Errno 256] No more mirrors to try.
  openssl-devel-1.0.1e-16.el6_5.7.x86_64: failure: openssl-devel-1.0.1e-16.el6_5.7.x86_64.rpm from ol6_latest: [Errno 256] No more mirrors to try.
  postgresql-server-8.4.20-1.el6_5.x86_64: failure: postgresql-server-8.4.20-1.el6_5.x86_64.rpm from ol6_latest: [Errno 256] No more mirrors to try.
  postgresql-libs-8.4.20-1.el6_5.x86_64: failure: postgresql-libs-8.4.20-1.el6_5.x86_64.rpm from ol6_latest: [Errno 256] No more mirrors to try.
  postgresql-8.4.20-1.el6_5.x86_64: failure: postgresql-8.4.20-1.el6_5.x86_64.rpm from ol6_latest: [Errno 256] No more mirrors to try.


Después de revisar que la conectividad de la VM a internet andaba bien, y que el public-yum tenía esos archivos, la solución pasó por actualizar el repositorio yum local, ya que por lo visto Oracle cambió los path de los archivos.

Así que por traje la última versión del repositorio:

[root@bigdatalite ~]# cd /etc/yum.repos.d
[root@bigdatalite yum.repos.d]# ls -lrt
total 12
-rw-r--r--. 1 root root 1056 Nov  4  2012 epel-testing.repo
-rw-r--r--. 1 root root  957 Nov  4  2012 epel.repo
-rw-r--r--. 1 root root 1953 May  2  2014 public-yum-ol6.repo

[root@bigdatalite yum.repos.d]# mv public-yum-ol6.repo public-yum-ol6.repo-old
[root@bigdatalite yum.repos.d]# wget http://public-yum.oracle.com/public-yum-ol6.repo
--2015-09-03 20:38:02--  http://public-yum.oracle.com/public-yum-ol6.repo
Resolving public-yum.oracle.com... 200.40.28.24, 200.40.28.25
Connecting to public-yum.oracle.com|200.40.28.24|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5284 (5.2K) [text/plain]
Saving to: “public-yum-ol6.repo”

100%[=================================================================================>] 5,284       --.-K/s   in 0.004s

2015-09-03 20:38:02 (1.30 MB/s) - “public-yum-ol6.repo” saved [5284/5284]

[root@bigdatalite yum.repos.d]# ls -lrt
total 20
-rw-r--r--. 1 root root 1056 Nov  4  2012 epel-testing.repo
-rw-r--r--. 1 root root  957 Nov  4  2012 epel.repo
-rw-r--r--. 1 root root 1953 May  2  2014 public-yum-ol6.repo-old
-rw-r--r--. 1 root root 5284 Jul 28 16:16 public-yum-ol6.repo


Pero siguió fallando la instalación con el mismo error después de esto.

Solo después de refrescar el repositorio se resolvió el problema:

[root@bigdatalite yum.repos.d]# yum clean all
Loaded plugins: refresh-packagekit, security
Cleaning repos: epel ol6_UEK_latest ol6_latest
Cleaning up Everything
[root@bigdatalite yum.repos.d]#
[root@bigdatalite yum.repos.d]# yum repolist
Loaded plugins: refresh-packagekit, security
epel/metalink                                                                                    | 2.9 kB     00:00    
epel                                                                                             | 4.3 kB     00:00 ...
epel/primary_db                                                                                  | 5.7 MB     00:06    
ol6_UEK_latest                                                                                   | 1.2 kB     00:00    
ol6_UEK_latest/primary                                                                           |  23 MB     00:06    
ol6_UEK_latest                                                                                                  491/491
ol6_latest                                                                                       | 1.4 kB     00:00    
ol6_latest/primary                                                                               |  52 MB     00:12    
ol6_latest                                                                                                  32176/32176
repo id                   repo name                                                                               status
epel                      Extra Packages for Enterprise Linux 6 - x86_64                                          11,764
ol6_UEK_latest            Latest Unbreakable Enterprise Kernel for Oracle Linux 6Server (x86_64)                     491
ol6_latest                Oracle Linux 6Server Latest (x86_64)                                                    32,176
repolist: 44,431
[root@bigdatalite yum.repos.d]# yum install postgresql-server
Loaded plugins: refresh-packagekit, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package postgresql-server.x86_64 0:8.4.20-3.el6_6 will be installed
--> Processing Dependency: postgresql(x86-64) = 8.4.20-3.el6_6 for package: postgresql-server-8.4.20-3.el6_6.x86_64
--> Processing Dependency: postgresql-libs(x86-64) = 8.4.20-3.el6_6 for package: postgresql-server-8.4.20-3.el6_6.x86_64
--> Processing Dependency: libcrypto.so.10(libcrypto.so.10)(64bit) for package: postgresql-server-8.4.20-3.el6_6.x86_64
--> Processing Dependency: libssl.so.10(libssl.so.10)(64bit) for package: postgresql-server-8.4.20-3.el6_6.x86_64
--> Running transaction check
---> Package openssl.x86_64 0:1.0.0-27.el6_4.2 will be updated
--> Processing Dependency: openssl = 1.0.0-27.el6_4.2 for package: openssl-devel-1.0.0-27.el6_4.2.x86_64
---> Package openssl.x86_64 0:1.0.1e-42.el6 will be an update
---> Package postgresql.x86_64 0:8.4.13-1.el6_3 will be updated
--> Processing Dependency: postgresql(x86-64) = 8.4.13-1.el6_3 for package: postgresql-devel-8.4.13-1.el6_3.x86_64
---> Package postgresql.x86_64 0:8.4.20-3.el6_6 will be an update
---> Package postgresql-libs.x86_64 0:8.4.13-1.el6_3 will be updated
---> Package postgresql-libs.x86_64 0:8.4.20-3.el6_6 will be an update
--> Running transaction check
---> Package openssl-devel.x86_64 0:1.0.0-27.el6_4.2 will be updated
---> Package openssl-devel.x86_64 0:1.0.1e-42.el6 will be an update
---> Package postgresql-devel.x86_64 0:8.4.13-1.el6_3 will be updated
---> Package postgresql-devel.x86_64 0:8.4.20-3.el6_6 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

===================================================================================================
 Package                         Arch             Version                 Repository          Size
===================================================================================================
Installing:
 postgresql-server               x86_64           8.4.20-3.el6_6          ol6_latest         3.4 M
Updating for dependencies:
 openssl                         x86_64           1.0.1e-42.el6           ol6_latest         1.5 M
 openssl-devel                   x86_64           1.0.1e-42.el6           ol6_latest         1.2 M
 postgresql                      x86_64           8.4.20-3.el6_6          ol6_latest         2.6 M
 postgresql-devel                x86_64           8.4.20-3.el6_6          ol6_latest         815 k
 postgresql-libs                 x86_64           8.4.20-3.el6_6          ol6_latest         201 k

Transaction Summary
===================================================================================================
Install       1 Package(s)
Upgrade       5 Package(s)                           
                                                     
Total download size: 9.7 M                           
Is this ok [y/N]: y                                  
Downloading Packages:                                
(1/6): openssl-1.0.1e-42.el6.x86_64.rpm                                        | 1.5 MB     00:07    
(2/6): openssl-devel-1.0.1e-42.el6.x86_64.rpm                                  | 1.2 MB     00:02    
(3/6): postgresql-8.4.20-3.el6_6.x86_64.rpm                                    | 2.6 MB     00:04    
(4/6): postgresql-devel-8.4.20-3.el6_6.x86_64.rpm                              | 815 kB     00:01    
(5/6): postgresql-libs-8.4.20-3.el6_6.x86_64.rpm                               | 201 kB     00:00    
(6/6): postgresql-server-8.4.20-3.el6_6.x86_64.rpm                             | 3.4 MB     00:02    
------------------------------------------------------------------------------------------------------
Total                                                                 420 kB/s | 9.7 MB     00:23    
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
oxh-3.0.0-1.cdh5.0.0.x86_64 is a duplicate with oxh-3.0.0-1.cdh4.6.0.x86_64
  Updating   : openssl-1.0.1e-42.el6.x86_64                                           1/11
  Updating   : postgresql-libs-8.4.20-3.el6_6.x86_64                                  2/11
  Updating   : postgresql-8.4.20-3.el6_6.x86_64                                       3/11
  Updating   : postgresql-devel-8.4.20-3.el6_6.x86_64                                 4/11
  Installing : postgresql-server-8.4.20-3.el6_6.x86_64                                5/11
  Updating   : openssl-devel-1.0.1e-42.el6.x86_64                                     6/11
  Cleanup    : openssl-devel-1.0.0-27.el6_4.2.x86_64                                  7/11
  Cleanup    : postgresql-devel-8.4.13-1.el6_3.x86_64                                 8/11
  Cleanup    : postgresql-8.4.13-1.el6_3.x86_64                                       9/11
  Cleanup    : postgresql-libs-8.4.13-1.el6_3.x86_64                                 10/11
  Cleanup    : openssl-1.0.0-27.el6_4.2.x86_64                                       11/11
  Verifying  : openssl-devel-1.0.1e-42.el6.x86_64                                     1/11
  Verifying  : postgresql-8.4.20-3.el6_6.x86_64                                       2/11
  Verifying  : postgresql-devel-8.4.20-3.el6_6.x86_64                                 3/11
  Verifying  : openssl-1.0.1e-42.el6.x86_64                                           4/11
  Verifying  : postgresql-libs-8.4.20-3.el6_6.x86_64                                  5/11
  Verifying  : postgresql-server-8.4.20-3.el6_6.x86_64                                6/11
  Verifying  : postgresql-libs-8.4.13-1.el6_3.x86_64                                  7/11
  Verifying  : postgresql-devel-8.4.13-1.el6_3.x86_64                                 8/11
  Verifying  : openssl-1.0.0-27.el6_4.2.x86_64                                        9/11
  Verifying  : openssl-devel-1.0.0-27.el6_4.2.x86_64                                 10/11
  Verifying  : postgresql-8.4.13-1.el6_3.x86_64                                      11/11

Installed:
  postgresql-server.x86_64 0:8.4.20-3.el6_6                                                                                                                 

Dependency Updated:
  openssl.x86_64 0:1.0.1e-42.el6          openssl-devel.x86_64 0:1.0.1e-42.el6 postgresql.x86_64 0:8.4.20-3.el6_6 postgresql-devel.x86_64 0:8.4.20-3.el6_6
  postgresql-libs.x86_64 0:8.4.20-3.el6_6

Complete!
[root@bigdatalite yum.repos.d]#





viernes, 18 de julio de 2014

Muchos eventos Oracle en el sur

Buenas, retomo después de una pausa forzada por varios cambios (nueva casa, trabajo y niños que arrancan liceo), con varios tips técnicos para compartir en breve, y para recordarles los eventos que se vienen en la región en breve.

El Oracle Technology Network Tour Latin América (más conocido como OTN Tour) arranca el 2 de agosto en San Pablo, visita 12 países, y llega a Montevideo el 14 y 15 de Agosto. Todos los detalles de estos eventos en el sitio de Oracle.

Estos eventos son realizados gracias al esfuerzo de los grupos de usuarios de Latinoamérica, con apoyo de OTN y sponsors locales para solventar los gastos, y no sería posible sin el trabajo honorario de mucha gente que dedicas muchas horas de su tiempo personal a que esto sea posible.

Así que si trabajan con Oracle o les interesa aprender, tómense un día libre y acérquense. Van a aprender en un solo día muchísimo, y a diferencia del muy buen evento virtual que organizó OTN hace un par de semanas, van a poder interactuar en persona con reconocidos expertos, conocerlos de cerca, además conocer a otros profesionales con inquietudes similares, y quedar en contacto con grandes personas.

Como no puedo evitarlo, tengo que pedirles que si andan por Montevideo se arrimen a nuestro evento, y si tienen ganas de hablar de Bases de datos después, invito la cerveza.

Un saludo.

domingo, 30 de marzo de 2014

Consultas para ver atributos de tablas e índices particionados

Este post es para compartir un par de consultas que uso muy seguido y quiero dejar a mano en el blog, ya que no tengo un área de scripts.

Si usamos habitualmente la línea de comando para administrar una base de datos, tenemos a mano muchos scripts SQL para distintas tareas. Para consultas simples no es tan necesario, como por ejemplo ver los índices de una tabla. Pero cuando trabajamos con tablas particionadas, lleva un poco más volver a escribir esa consulta que nos muestra todos los datos que nos interesa. Tener a mano el script SQL es útil para ahorrarnos escribirlo de nuevo cada vez.

Actualmente hay muchas herramientas gráficas/web de administración que nos hace dejar de lado usar este tipo de scripts para consultar metadata de la base de datos. Usar scripts también puede ser un hábito adquirido con el tiempo (señal del paso del tiempo :)), aunque hay casos en que es necesario. Uno de ellos es cuando hay firewalls o medidas de seguridad que solo permiten acceso a la base de datos mediante una terminal. Aunque los firewalls se puedan esquivar usando túneles con ssh para utilitarios cliente/servidor (como SQL Developer o MySQL Workbench), para utilitarios que publican un acceso web es más complicado (Grid Control), y ahí vuelven a tener sentido los scripts.

Así que hecha la introducción, estos son un par de scripts útiles para ver información de una tabla particionada y sus índices. Cuando no hay particiones, estos datos se pueden sacar con una consulta simple sobre DBA_TABLES y DBA_IND_COLUMNS sin mucha complicación.

Para ilustrarlo mejor, un ejemplo usando estas tablas:
select table_name, num_rows from dba_tables where table_name like 'BIGTBL%'; TABLE_NAME NUM_ROWS ------------------------------ ---------- BIGTBL_PART_FACT 34718511 BIGTBL_PART_ID 41529989 BIGTBL 5931843 3 rows selected.

Así vemos por separado sus particiones:
break on t.table_NAME on t.partitioning_type on t.partition_count on t.status select t.table_NAME, t.partitioning_type tipo, t.partition_count particiones, t.status, c.COLUMN_NAME, c.COLUMN_POSITION from DBA_PART_KEY_COLUMNS c, dbA_part_tables t where t.table_name = c.name and c.owner = t.owner and t.table_name like 'BIGTBL%' order by c.name, c.COLUMN_POSITION; TABLE_NAME TIPO PARTICIONES STATUS COLUMN_NAME COLUMN_POSITION ------------------------------ --------- ----------- -------- -------------------- --------------- BIGTBL_PART_FACT RANGE 50 VALID NRO_FACT 1 BIGTBL_PART_ID RANGE 50 VALID ID 1 2 rows selected.

Juntamos ambas consultas en una sola:
col part_col for a30 select t.table_NAME, t.num_rows, p.partitioning_type particion, p.partition_count "#part", p.status, c.COLUMN_NAME part_col, c.COLUMN_POSITION pos from dbA_tables t, DBA_PART_KEY_COLUMNS c, dbA_part_tables p where t.table_name = p.table_name(+) and t.owner=p.owner(+) and t.table_name = c.name(+) and t.owner = c.owner(+) and t.table_name like 'BIGTBL%' order by t.table_name, c.COLUMN_POSITION; TABLE_NAME NUM_ROWS PARTICION #part STATUS PART_COL POS ------------------------------ ---------- --------- ---------- -------- ------------------------------ ---------- BIGTBL_PART_FACT 34718511 RANGE 50 VALID NRO_FACT 1 BIGTBL_PART_ID 41529989 RANGE 50 VALID ID 1 BIGTBL 5931843 3 rows selected.

La misma idea aplicada a los índices nos lleva a esta consulta, para ver los índices, saber si están particionados y algún dato más:
col index_name for a30 select c.index_name, uniqueness, i.partitioned, p.partitioning_type tipo, locality, c.column_name, column_position pos from dba_ind_columns c, dba_indexes i, dba_part_indexes p where i.index_name=c.index_name and c.index_owner=i.owner and c.table_name=i.table_name and c.table_owner=i.table_owner and i.owner=p.owner(+) and i.index_name=p.index_name(+) and i.table_name=p.table_name(+) and c.table_name='BIGTBL_PART_ID' order by c.index_name, c.column_position; INDEX_NAME UNIQUENES PAR TIPO LOCALI COLUMN_NAME POS ------------------------------ --------- --- --------- ------ -------------------- ---------- IDX_BIGTBL_PART_2 NONUNIQUE NO COD_DOC 1 IDX_BIGTBL_PART_2 NONUNIQUE NO COD_LOCAL 2 IDX_BIGTBL_PART_ID UNIQUE YES RANGE LOCAL NRO_FACT 1 3 rows selected.

Espero les sea útil