domingo, septiembre 30, 2012

Más sobre la corrupción política...


Artículo de Stefanie Claudia Müller, corresponsal alemana en Madrid y economista, publicado el jueves en Alemanía                             
                                                                                                                                   
    Traducción de un artículo publicado el jueves en varios periódicos     
    económicos alemanes, por su corresponsal en España       
               
                                                                            
    Hoy, 6 de septiembre, se encuentran en Madrid los gobiernos de Alemania 
    y España, acompañados de un nutrido grupo de empresarios, y donde       
    seguro hablarán sobre las condiciones para poder otorgar más ayudas     
    financieras a España o a su sistema bancario. En los dos lados se ha    
    elevado el tono en los últimos meses y es con gran expectación que      
    España espera ahora la decisión que va a tomar el Tribunal              
    Constitucional alemán, que esa sí es crucial, el día 12, sobre la       
    conformidad o no del rescate europeo y las obligaciones derivadas para  
    los alemanes.                                                           
                                                                            
    En Alemania crece la critica contra la supuesta "mentalidad de fiesta"  
    de los españoles; en España los medios cada vez son más negativos con   
    la supuesta dureza de la canciller Merkel. Pensamos que la situación es 
    mucho más compleja de lo que presentan ambos gobiernos y la mayoría de  
    los medios. España no es Grecia, pero España puede ser un paciente      
    crónico si Alemania, junto con Europa, no contribuye a solucionar sus   
    verdaderos problemas.                                                   
                                                                            
    España no debería recibir más dinero sin que se cambie a fondo el       
    sistema político y económico, hoy en manos de una oligarquía política   
    aliada con la oligarquía económica y financiera, y sin que se aumente   
    la participación ciudadana real en las decisiones políticas. Para no    
    perpetuar la crisis y endeudar a los españoles durante generaciones, el 
    Gobierno español debe reformar a fondo la administración de las         
    comunidades autónomas y los ayuntamientos, en su mayoría en bancarrota  
    y completamente fuera de control, sometiendo a referéndum el modelo de  
    Estado.                                                                 
                                                                            
    Este tema es la clave del futuro de España, porque las regiones,        
    ayuntamientos y diputaciones son los responsables de los dos tercios    
    del gasto público -234.000 millones frente a 118.000 el Estado en       
    2011-, excluyendo la Seguridad Social -23.000 millones-, y este gasto   
    se realiza en condiciones de descontrol, despilfarro y corrupción       
    totalmente inaceptables. Las razones verdaderas de la crisis del país,  
    en consonancia con lo dicho, nada tienen que ver con salarios demasiado 
    altos -un 60 % de la población ocupada gana menos de 1.000 euros/mes-,  
    pensiones demasiado altas -la pensión media es de 785 euros, el 63% de  
    la media de la UE-15- o pocas horas de trabajo, como se ha trasmitido a 
    veces desde Alemania. A España tampoco le falta talento, ni capacidad   
    empresarial ni creatividad. Tiene grandes pensadores, creativos,        
    ingenieros, médicos excelentes y gestores de primer nivel.              
    La razón de la enfermedad de España es un modelo de Estado inviable,    
    fuente de todo nepotismo y de toda corrupción, impuesto por una         
    oligarquía de partidos en connivencia con las oligarquías financiera y  
    económica, y con el poder judicial y los organismos de control a su     
    servicio. En España no existe separación de poderes, ni independencia   
    del poder judicial, ni los diputados representan a los ciudadanos, solo 
    a los partidos que los ponen en una lista. Todo esto lleva también a    
    una economía sumergida que llega al 20% del PIB y que frena la          
    competencia, la eficacia y el desarrollo del país. Además, detrae       
    recursos con los que podrían financiarse educación y sanidad.           
                                                                            
    Las ayudas para España, igual que para otros posible candidatos de      
    rescates, no deben ir a bancos ya casi en bancarrota y fuertemente      
    politizados. En la CAM, el Gobierno ha comprometido 16.000 millones de  
    dinero público en lugar de cerrarla; en Bankia, 23.000, y el Ejecutivo  
    acaba de darle 5.000 millones urgentemente para cubrir pérdidas en vez  
    de cerrarla, y además de forma tan extraña que despierta todo tipo de   
    recelos. ¿Por qué se ha utilizado el dinero de los españoles (FROB) en  
    vez de esperar los fondos de la UE? Es lícito suponer que la razón es   
    la siguiente: los bancos no quieren que la UE investigue sus cuentas.   
                                                                            
    Control estricto y duras condiciones. Ya el caso de Grecia ha           
    demostrado que las ayudas europeas tienen que estar vinculadas a un     
    control estricto y condiciones duras. Esas condiciones no pueden        
    solamente representar recortes sociales o subidas brutales de           
    impuestos, como hace ahora el Gobierno de Mariano Rajoy con la excusa   
    de Europa . Se tiene que cambiar más en España que cortar gasto social, 
    que de todos modos es mucho más bajo que en Alemania, y hay otros       
    gastos infinitamente más relevantes que se pueden eliminar. Además, los 
    casos de corrupción resultan tan escandalosos, incluso en el propio     
    Gobierno, que uno solo puede llegar a una conclusión: el dinero de      
    Europa no puede ser manejado por personas tan increíblemente venales.   
                                                                            
    La pasada semana el ministro de Industria Soria -imputado también por   
    corrupción urbanística en Canarias- acusó al ministro de Hacienda en el 
    Consejo de Ministros de favorecer descaradamente a la empresa líder de  
    renovables, Abengoa, de la que había sido asesor, en la nueva           
    regulación de estas energías, que reciben más de 7.000 millones de      
    euros de subvenciones anualmente. Y Rajoy, al que entregó una carta     
    probatoria, ni dijo ni hizo absolutamente nada.                         
                                                                            
    No puede permitirse por más tiempo este nivel de corrupción, y menos    
    aún a 17 regiones funcionando como estados independientes, con todos    
    los organismos multiplicados por 17, desde 17 servicios meteorológicos  
    a 17 defensores del pueblo, con 200 embajadas, 50 canales de TV         
    regionales en pérdida, 30.000 coches oficiales o 4.000 empresas         
    públicas que emplean a 520.000 personas, creadas específicamente para   
    ocultar deuda y colocar a familiares y amigos sin control ni            
    fiscalización alguna. En conjunto, unos 120.000 millones, equivalentes  
    al 11,4% del PIB, se despilfarran anualmente en un sistema de           
    nepotismo, corrupción y falta de transparencia.                         
                                                                            
    Y con esto se tiene que acabar, entre otras cosas, porque ya no hay     
    dinero. Los últimos datos de las cuentas públicas conocidos la pasada   
    semana son escalofriantes. El déficit del Estado a julio ascendió al    
    4,62% del PIB, frente a un déficit del 3,5% comprometido con la UE para 
    todo el año (del 6,3% incluyendo regiones y ayuntamientos). Pero lo     
    realmente inaudito es que España está gastando el doble de lo que       
    ingresa. 101.000 millones de gasto a julio frente a 52.000 millones de  
    ingresos, y precisamente para poder financiar el despilfarro de         
    regiones y ayuntamientos, que no están en absoluto comprometidos con la 
    consolidación fiscal.                                                   
                                                                            
    El tema del déficit público es algo que roza la ciencia ficción, y que  
    ilustra perfectamente la credibilidad de los dos últimos gobiernos de   
    España. En noviembre de 2011, el Gobierno dijo que el déficit público   
    era del 6% del PIB; a finales de diciembre, el nuevo Gobierno dijo que  
    le habían engañado y que el déficit era superior al 8%, y que se tomaba 
    tres meses para calcularlo con toda precisión. A finales de marzo, se   
    dijo que definitivamente era del 8,5%, y ésta fue la cifra que se envió 
    a Bruselas. Dos semanas después, la Comunidad de Madrid dijo que sus    
    cifras eran erróneas y el Ayuntamiento de la capital igual… el déficit  
    era ya del 8,7%.                                                        
                                                                            
    Sin embargo, la semana pasada el INE dijo que el PIB de 2011 estaba     
    sobrevalorado y, con la nueva cifra, el déficit era del 9,1%; dos días  
    después, Valencia dijo que su déficit era de 3.000 millones más; o sea, 
    que estamos en el 9,4% y las otras 15 CCAA y 8.120 ayuntamientos aún no 
    han corregido sus cifras de 2011. Lo único que sabemos es que están     
    todas infravaloradas. El déficit real de 2011 puede estar por encima    
    del 11%, y en 2012 se esta gastando el doble de lo que se ingresa. Como 
    dice el Gobierno de Rajoy, “estamos en la senda de convergencia”. Y es  
    verdad… de convergencia hacia Grecia.                                   
                                                                            
    Claramente, la joven democracia española tiene todavía muchos déficits  
    de representatividad y de democracia que deberían interesar a la        
    canciller Merkel y también a Europa, si queremos evitar una Grecia      
    multiplicada por cinco y salvar el euro. Esto es lo que ha hecho        
    posible el despilfarro masivo de las ayudas europeas, con una           
    asignación disparatada de las mismas, a pesar de que estas ayudas han   
    supuesto una cifra mayor que la del Plan Marshall para toda Europa.     
                                                                            
    Es frustrante que a causa de este sistema oligárquico nepotista y       
    corrupto se destroce talento y creatividad y que ahora muchos jóvenes   
    se vean forzados a trabajar fuera, muchos en Alemania. Esa situación    
    nos ha llevado a una distribución de riqueza que es de las más injustas 
    de la OECD. La antaño fuerte clase media española está siendo           
    literalmente aniquilada.                                                
                                                                            
    Resumiendo: no es una falta de voluntad de trabajo, como se piensa tal  
    vez en algunos países del norte de Europa, lo que hace que España sufra 
    la peor crisis económica de su Historia. Es un sistema corrupto e       
    ineficiente. La crítica del Gobierno alemán y sus condiciones para un   
    rescate de España se deberían concentrar en la solución de esos         
    problemas. En caso contrario, solo conseguirán que una casta política   
    incompetente y corrupta arruine a la nación para varias generaciones.   
                                                                            
    *Stefanie Claudia Müller es corresponsal alemana en Madrid y            
    economista;

viernes, septiembre 28, 2012

Oracle, lista de accesos a objetos


¿Cómo obtener una lista de usuarios ORACLE que acceden a tablas de otro usuario ORACLE?

SELECT a.object, a.type, a.sid, b.username, b.osuser, b.program
FROM   v$access a
JOIN   v$session b ON (a.sid = b.sid)
AND    a.owner = UPPER('USUARIO-ACCEDIDO')
ORDER BY a.object;

Fuente aquí.

Saludos,

jueves, septiembre 27, 2012

Oracle, calcular el espacio ocupado

Podemos ordenar los tablespaces por tamaño ocupado:

select tablespace_name, Sum(bytes)/1024/1024 from dba_segments group by tablespace_name order by sum(bytes) desc;

Y luego por ejemplo ver lo que ocupa cada tabla del tablespace:

select table_name, blocks from dba_tables where tablespace_name ='zzzzzz' order by blocks desc;

Saludos,

lunes, septiembre 24, 2012

Más privilegios medievales...



Cómo son estos políticos. Hay que ver lo que se sacrifican por el pueblo.

A veces tienen que ir a toda velocidad o aparcar donde no se debe. Por eso necesitan el dinerito extra para las multas. ¡¡¡Claro que sí!!! Si te ponen una multa que la pague el Congreso.

Si tienen que aparcar en el aeropuerto, aunque sea por un viaje particular, pues nada, se paga y a vivir que son dos días. Que ustedes lo disfruten.

Fuentes aquí y aquí.


viernes, septiembre 21, 2012

Oracle: modo archivelog

Nuestras base de datos de producción deberían estar en modo archivelog. Voy a enumerar los pasos a seguir para ponerlo en este modo:

1.-Comprobar los parámetros actuales:

Importante: El directorio donde se van a generar los ficheros de archivado debe existir antes de cambiar al modo archivelog.


SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     233
Current log sequence           235

En "Archive destination" puede venir el directorio destino de los archives, o puede venir el parámetro "use_db_recovery_file_dest" como en mi caso.

SQL> show parameter recovery

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /oracle10g/flash_recovery_area
db_recovery_file_dest_size           big integer 2G
recovery_parallelism                 integer     0
SQL>

En db_recovery_file_dest_size indicamos el límite máximo de espacio para los archives. Podemos aumentarlo:

SQL> alter system set db_recovery_file_dest_size = 20G scope=both;

Ahora vamos a ver el formato de los ficheros que se van a generar. Eso viene definido por el parámetro log_archive_format.


SQL> show parameter archive

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target                   integer     0
log_archive_config                   string
log_archive_dest                     string
log_archive_dest_state_1             string      enable
log_archive_dest_state_10            string      enable
log_archive_dest_state_2             string      enable
log_archive_dest_state_3             string      enable
log_archive_dest_state_4             string      enable
log_archive_dest_state_5             string      enable
log_archive_dest_state_6             string      enable
log_archive_dest_state_7             string      enable

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_8             string      enable
log_archive_dest_state_9             string      enable
log_archive_dest_1                   string
log_archive_dest_10                  string
log_archive_dest_2                   string
log_archive_dest_3                   string
log_archive_dest_4                   string
log_archive_dest_5                   string
log_archive_dest_6                   string
log_archive_dest_7                   string
log_archive_dest_8                   string

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_9                   string
log_archive_duplex_dest              string
log_archive_format                   string      %t_%s_%r.dbf
log_archive_local_first              boolean     TRUE
log_archive_max_processes            integer     2
log_archive_min_succeed_dest         integer     1
log_archive_start                    boolean     FALSE
log_archive_trace                    integer     0
remote_archive_enable                string      true
standby_archive_dest                 string      ?/dbs/arch


2.-Activar la generación del archivado:

Paramos la base de datos:


SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

Montar la base de datos:


SQL> startup mount;
ORACLE instance started.

Total System Global Area 1610612736 bytes
Fixed Size                  2096632 bytes
Variable Size             503317000 bytes
Database Buffers         1090519040 bytes
Redo Buffers               14680064 bytes
Database mounted.

Poner la base de datos en modo archivelog:

SQL> alter database archivelog;

Abrir la base de datos:

SQL> alter database open;

3.-Revisar el ALERT.LOG para ver se ha generado algún error durante el cambio.

4.-Forzar la generación de un fichero de archivado para ver que funciona OK:

SQL> alter system archive log current;

SQL> alter system switch logfile;

5.-Implementar la liberación de ficheros de archivado (archives):

Si en algún momento se llega al 100% del límite que hemos especificado, o se llena el filesystem donde se dejan los archivados, la base de datos no permitirá hacer nuevas actualizaciones. Se parará y los usuarios llamarán porque Oracle no funciona.

Tenemos que ir liberando espacio periódicamente. Lo más normal es que un script de RMAN se dedique a salvar los archivados a cinta, y vaya borrándolos del directorio a medida que lo hace.

6.-Comprobar que todas las tablas de usuarios, índices, objetos LOB y tablespaces estén en modo logging.

Para que los cambios en los objetos vayan a los redolog, es necesario que estén en estado LOGGING y no en estado NOLOGGING. Es normal que haya objetos del sistema (SYS, SYSTEM, SYSAUX,...) en estado NOLOGGING. Los tablespaces temporales también suelen ser NOLOGGING.

TABLAS:


select owner, table_name
from dba_tables
where LOGGING = 'NO'
order by owner, table_name;

TABLAS PARTICIONADAS:


select table_owner, table_name, partition_name
from dba_tab_partitions
where LOGGING = 'NO'
order by table_owner, table_name, partition_name;


ÍNDICES:


select owner, index_name
from dba_indexes
where LOGGING = 'NO'
order by owner, index_name;


ÍNDICES PARTICIONADOS:


select index_owner, index_name, partition_name
from dba_ind_partitions
where LOGGING = 'NO'
order by index_owner, index_name, partition_name;


OBJETOS LOB:


select owner, table_name, index_name
from dba_lobs
where LOGGING = 'NO'
order by owner, table_name;


TABLESPACES:


select tablespace_name
from dba_tablespaces
where LOGGING = 'NOLOGGING'
order by tablespace_name;


7.-Cambiar estado de objetos de NOLOGGING A LOGGING:

TABLAS:

ALTER TABLE owner.tabla LOGGING;

TABLAS PARTICIONADAS:

ALTER TABLE owner.tabla MODIFY PARTITION particion LOGGING;

ÍNDICES:

ALTER INDEX owner.indice LOGGING;

ÍNDICES PARTICIONADOS:

ALTER INDEX owner.indice MODIFY PARTITION particion LOGGING;

OBJETOS LOB:

ALTER TABLE owner.tabla_con_campo_lob LOGGING;

TABLESPACES:


ALTER TABLESPACE tablespace LOGGING;





jueves, septiembre 20, 2012

más de lo mismo...


La noticia aquí.

domingo, septiembre 16, 2012

¡Corrupción en forma de privilegios!

Si en Agosto las Cortes decidían por el sueldo "por la jeta" a 55 exparlamentarios (privilegio medieval en el siglo XXI), ahora les toca a los exdiputados y exsenadores.


Aquí la noticia completa 

En mi entorno más cercano, para no quedarse atrás, también se han querido dar un homenaje en forma de nuevas tecnologías que ahora está de moda. Se ve que el ordenador y móvil que reciben gratis no es suficiente.


La noticia aquí.

¡¡¡Pedazo Jetas!!! ya se ve que la crisis no va con vosotros.


martes, septiembre 11, 2012

Freepascal y Lazarus: existe el fichero?


Función FileExists

FileExists nos indicar si un fichero existe o no. Pero OJO, busca en el mismo directorio que el ejecutable del programa.

He creado un formulario en Lazarus. Le he agregado un botón, y este es el código que se ejecuta cuando hacemos clic en él:


procedure TfrmPrincipal.btnIniciarClick(Sender: TObject);
type Tprogramas = Array[0..2] of string;
var
   prog : Tprogramas;
   s : string;
   fichero : Text;
begin
    prog[0]:='toad.exe';
    prog[1]:='gpg.exe';
    prog[2]:='r.exe';
    system.Assign(fichero,'programas.txt');
    Rewrite(fichero);
    for s in prog do begin
        if FileExists(s) then begin
           Writeln(fichero, s);
        end
    end;
    system.Close(fichero);
end;

¿Por qué he puesto system.Assign en lugar de invocar Assign a secas?

Assign asigna un nombre a un fichero.

Si ponemos Assign(fichero,'programa.txt') nos saldrá el siguiente error de compilación:
ERROR: Wrong number of parameters specified for call to "Assign".

El problema es que el compilador interpreta que queremos utilizar el método Assign de la clase del formulario (TfrmPrincipal en mi caso). Se soluciona indicando que llamamos al método Assign de la clase System: System.Assign.

Lo mismo ocurre con System.Close.

Saludos.

Cambio de hora en Linux

Como cambiar la fecha/hora en Linux:

Iniciar sesión como root


# date MMDDhhmmAAAA

Por ejemplo, el 8 de noviembre de 2011 a las 10:15:

# date 110810152011



sábado, septiembre 08, 2012

Guerra Oracle-HP-Intel resolución del caso


Bueno, parece que por fin se acaba el culebrón este, y que los clientes de Oracle con un servidor Itanium vamos a poder respirar.
Recordemos que el asunto empieza el 22 de Marzo de este año, con el anuncio de ORACLE de que paraliza los desarrollos para Itanium. Eso suponía que no iba a haber Oracle12 para servidores con procesador INTEL Itanium, cuyo principal fabricante en el mundo es HP.

En Agosto los tribunales daban la razón al fabricante HP, y ahora por fin, ORACLE anuncia que reanuda el desarrollo para dicha plataforma, y su lanzamiento coincidirá con el de la plataforma de IBM.


Oracle Issues Statement
REDWOOD SHORES, Calif., September 4, 2012
Oracle issued the following statement today:
Previously, Oracle announced that it would stop developing new versions of its software on Itanium microprocessors. For example, that meant version 12c of the Oracle database due out in early 2013 would not be available on Itanium. However, a judge recently ruled that Oracle has a contract to continue porting its software to Itanium computers for as long as HP sells Itanium computers. Therefore, Oracle will continue building the latest versions of its database and other software covered by the judge's ruling to HP Itanium computers. Oracle software on HP's Itanium computers will be released on approximately the same schedule as Oracle software on IBM's Power systems.



Saludos.

jueves, septiembre 06, 2012

Oracle, lista de usuarios

Consulta para obtener los nombres de usuarios de la base de datos excluyendo los propios usuarios del Sistema de Gestión de Base de Datos ORACLE:


select username from dba_users where username not in('QS_CB','PERFSTAT','QS_ADM','PM','SH','HR','OE','ODM_MTR','WKPROXY','ANONYMOUS','OWNER','SYS','SYSTEM','SCOTT','SYSMAN','XDB','DBSNMP','EXFSYS','OLAPSYS','MDSYS','WMSYS','WKSYS','DMSYS','ODM','EXFSYS','CTXSYS','LBACSYS','ORDPLUGINS','SQLTXPLAIN','OUTLN','TSMSYS','XS$NULL','TOAD','STREAM','SPATIAL_CSW_ADMIN','SPATIAL_WFS_ADMIN','SI_INFORMTN_SCHEMA','QS','QS_CBADM','QS_CS','QS_ES','QS_OS','QS_WS','PA_AWR_USER','OWBSYS_AUDIT','OWBSYS','ORDSYS','ORDDATA','ORACLE_OCM','MGMT_VIEW','MDDATA','FLOWS_FILES','FLASHBACK','AWRUSER','APPQOSSYS','APEX_PUBLIC_USER','APEX_030200');