20 de noviembre de 2008

Cómo modificar la zona horaria en Solaris

Para realizar este proceso es necesario editar el archivo /etc/default/init

Buscaremos una línea que inicia con TZ, que, en realidad es la asignación de una variable de ambiente que podría lucír así:

TZ=US/Eastern

Si quisieramos cambiar esta zona (Esta de Estados Unidos, Florida, NY, etc), habría que modificar por algo como:

TZ="America/Mexico_City"

Y reiniciamos el servidor.

Ahora, suponiendo que sólo queramos modificar la zona horaria para nuestra sesión, entónces se necesario sobreescribir el valor de esta variable de ambiente. Veamos el siguiente ejemplo:

> echo $TZ
America/Mexico_City
> date
Fri Dec 5 11:09:38 CST 2008
> setenv TZ "US/Eastern"
> date
Fri Dec 5 12:09:57 EST 2008
> echo $TZ
US/Eastern

En realidad lo único que sucedió fue que ocurrió un ajuste en el tiempo, pero la hora del sistema en sí nunca se modificó. Es decir, si en este momento son las 11:09 CST, entónces en Florida son las 12:09 EST.

Lo mismo sucedería si cambiáramos la zona horaria y quisiéramos tener nuestro reloj puesto a GMT o UTC, veamos:

> echo $TZ
America/Mexico_City
> date
Fri Dec 5 11:15:57 CST 2008
> export TZ="UTC"
> date
Fri Dec 5 17:16:18 UTC 2008

Ahora, lo mismo que en el primer ejemplo, si en la Cd de México son las 11:15 CST, la hora UTC sería las 17:16. Recuerden que la zona horaria del centro de México es GMT-6 (UTC-6).

En sí, es muy importante recordar que la hora como tal no cambia, sólo se ajusta a la zona horaria. Para cambiar la hora y fecha (mas no la zona horaria), utilícese date.

Saludos!

Comandos para monitorear el desempeño en Solaris

1. sar (System Activity Reporter)

sar
-d => display activity for all block device
-g/p => paging activities
-m => message & semaphore activities
-u => CPU utilization
-v => Reports status of process, i-node, file tables


2. iostat (Input/Output Statistics) en Solaris

Esta herramienta reporta de manera iterativa la actividad de E/S de terminales, discos y cintas, así como el uso del CPU.

La sintáxis típica del comando es algo como lo siguiente:

> iostat 1 5

Esto significa que cada intervalo de 1 segundo y por 5 veces, el comando nos mostrará


tty sd21 sd23 sd24 sd25 cpu
tin tout kps tps serv kps tps serv kps tps serv kps tps serv us sy wt id
0 76 0 0 0 3 0 17 192 3 75 17 3 7 3 3 22 72
0 693 0 0 0 0 0 0 0 0 0 17 4 6 0 3 48 48
0 670 0 0 0 0 0 0 8 2 5 17 4 8 1 4 24 70
0 670 0 0 0 0 0 0 9 2 12 17 4 11 2 5 24 68
0 670 0 0 0 0 0 0 384 3 7 8 2 9 8 8 40 44

Esto es, se nos muestra infomación dividida por 6 bloques de columnas, el primer bloque (tty), concentra dos datos tin y tout, aquí lo que se muestra son los caracteres de entrada y de salida.
Las siguientes cuatro columnas (sd21 a sd25), se refieren a estadísticas de 5 discos duros.
Cada uno de estos discos tiene tres columnas que significan:
  • kps: Bloques por segundo.
  • tps: Transacciones por segundo.
  • serv: Tiempo de servicio promedio, en mlisegundos.
Finalmente, viene una columna especial para el cpu:
  • us: En modo usuario.
  • sy: En modo de sustema.
  • wt: En espera de E/S.
  • id: En modo idle.
Antes de seguir adelante debo mencionarles que la primera línea corresponde a los valores acumulados desde el inicio del servidor hasta el momento de la siguiente iteración.
Las líneas siguientes se refieren a los datos obtenidos desde el momento de la última iteración hasta un segundo después (para efectos del ejemplo, aunque puede elejirse cualquier otro valor).

Sobre este comando, exíste una variante en la cual podemos ver estadísticas extendidas

> iostat -xtc

Una salida típica de este comando sería:

extended device statistics tty cpu
device r/s w/s kr/s kw/s wait actv svc_t %w %b tin tout us sy wt id
sd21 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0 100
sd22 0.0 0.0 0.4 0.4 0.0 0.0 49.5 0 0
sd23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0
En donde cada columna significa:
  • r/s: Lecturas por segundo.
  • w/s: Escrituas por segundo.
  • Kr/s: Kb leídos por segundo.
  • Kw/s: Kb escritos por segundo.
  • wait: Número promedio de transacciones en espera de servicios (Longitud de la cola)
  • actv: Número promedio de transacciones activamente servidas.
  • svc_t: Tiempo promedio de servicio.
  • %w: Porcentaje de tiempo en que la cola no está vacía.
  • %b: Porcentaje de tiempo en que el procesador está ocupado.
En general este comando nos da información bastante útil respecto al uso que están teniendo los discos del sistema. Ahora, que lo que estaría más interesante sería saber qué procesos están haciendo uso de ellos. De alguna forma también nos puede auxiliar el comando ps, ya que entre sus variadas opciones nos puede mostrar datos sobre el uso de la memoria swap. Aunque esto es sólamente una parte muy pequeña del uso sobre el discu duro pues aún nos faltaría averiguar qué archivos tiene abiertos, en dónde está escribiendo o leyendo, etc.

3. lsof (LiSt of Opened Files)

Para tener una idea de qué procesos tienen abiertos archivos reulares, directorios, sockets (Unix e Internet), archivos especiales de bloques, etc; podemos servirnos del comando lsof, que aunque no es nativo de SunOS, se puede incorporar bajando el paquete de http://www.sunfreeware.com/ En donde se encuentra disponible para solaris 6, 8, 9 y 10.

La sintáxis típica es

> lsof


4. vmstat (Virtual Memory Statistics)

Reporta estadísticas del uso de la memoria virtual sobre los hilos del kernel, discos, memoria virtual, traps y actividad del CPU.

La sintáxis simple es:

> vmstat

Y su salida es:
 kthr      memory            page            disk          faults      cpu
r b w swap free re mf pi po fr de sr s3 -- -- -- in sy cs us sy id
0 0 0 3557544 166696 553 1866 6 3 3 0 0 8 0 0 0 397 10621 2212 9 12 78
En este caso

  • kthr: Reporta el número de hilos del kernel en cualquiera de los siguientes estados:
  1. r: El número de hilos en la cola de ejecución
  2. b: El número de hilos bloqueados, en espera de recursos de E/S.
  3. w: El número de procesos ligeros (LWPs) en swap, esperando por ecursos para finalizar.
  • Report the number of kernel threads in each

memory Report on usage of virtual and real memory.

swap available swap space (Kbytes)

free size of the free list (Kbytes)

page Report information about page faults and
paging activity. The information on each of
the following activities is given in units
per second.

re page reclaims - but see the -S
option for how this field is modi-
fied.
mf minor faults - but see the -S
option for how this field is modi-
fied.
pi kilobytes paged in

po kilobytes paged out

fr kilobytes freed

de anticipated short-term memory
shortfall (Kbytes)

sr pages scanned by clock algorithm

When executed in a zone and if the pools
facility is active, all of the above (except
for "de") only report activity on the pro-
cessors in the processor set of the zone's
pool.

disk Report the number of disk operations per
second. There are slots for up to four
disks, labeled with a single letter and
number. The letter indicates the type of
disk (s = SCSI, i = IPI, and so forth); the
number is the logical unit number.

faults Report the trap/interrupt rates (per
second).

in interrupts
sy system calls

cs CPU context switches

When executed in a zone and if the pools
facility is active, all of the above only
report actitivity on the processors in the
processor set of the zone's pool.

cpu Give a breakdown of percentage usage of CPU
time. On MP systems, this is an average
across all processors.

us user time

sy system time

id idle time


> vmstat 2 5
 kthr      memory            page            disk          faults      cpu
r b w swap free re mf pi po fr de sr s3 -- -- -- in sy cs us sy id
0 0 0 3557544 166696 553 1866 6 3 3 0 0 8 0 0 0 397 10621 2212 9 12 78
2 0 0 3437616 159800 2128 5211 0 0 0 0 0 0 0 0 0 438 13856 2318 35 19 46
5 0 0 3437616 159792 2324 5604 0 0 0 0 0 1 0 0 0 425 14711 2391 39 20 41
0 0 0 3439064 161616 200 552 0 4 4 0 0 2 0 0 0 362 7254 2126 9 6 86
0 0 0 3439064 161616 7 80 0 0 0 0 0 0 0 0 0 352 6649 2099 6 4 90
Aún con lo que hemos visto hay otra opción interesante para este comando que es el switch -p

> vmstat -p 2 3

Cuya salida sería como esta:

memory page executable anonymous filesystem
swap free re mf fr de sr epi epo epf api apo apf fpi fpo fpf
3555664 166616 553 1867 3 0 0 3 0 0 0 0 0 3 3 3
3439168 157080 7 93 0 0 0 0 0 0 0 0 0 0 0 0
3439160 157072 7 80 0 0 0 0 0 0 0 0 0 0 0 0

Como se observa, se agregan nuevas columnas, esto debido a que el modificador -p hace que vmstat reporte también la actividad de la paginación. Las columnas nuevas significan:

epi Executable page-ins.

epo Executable page-outs.

epf Executable page-frees.

api Anonymous page-ins.

apo Anonymous page-outs.

apf Anonymous page-frees.
fpi File system page-ins.

fpo File system page-outs.

fpf File system page-frees.


Debe decirse que en equipos multiprocesadores, vmstat presenta estadísticas promedio de los procesadores. A fin de tener los datos específicos de cada uno de ellos es necesario usar mpstat, herramienta que se describe a continuación.

5. mpstat (Multi Processor Statistics)

Este comando devuelve reportes estadísticos de cada uno de los procesadores o bien, por grupo de procesadores.

La sintáxis común es:

> mpstat

Y su salida es:

CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0 1028 0 177 353 243 1083 30 366 62 0 5631 10 13 0 77
1 839 0 205 44 14 1129 29 365 51 0 4990 9 12 0 79
Esto significa básicamente que en el sistema tenemos instalados dos procesadores, y si revisamos las cuatro últimas columnas encontraremos algo interesante, ahí se describe el porcentaje que el procesador ha dedicado a procesos de usuario (usr), procesos de sistema (sys), así como el porcentaje de tiempo que ha pasado esperando por E/S (wt) y finalmente el porcantaje de tiempo que el procesador ha estado inactivo (idl).

El resto de las columnas son:
  • minf: Fallas menores
  • mjf: Fallas mallores
  • xcal: Llamadas cruzadas interprocesadores.
  • intr: Interrupciones.
  • ithr: Interrupciones como hilos.
  • csw: Cambios de contexto
  • icsw: Cambios involuntario de contexto
  • migr: Migración de hilos (a otros procesadores)
  • smtx: Spins en mutexes (bloqueo no adquirido en el primerintento)
  • srw: Spins en bloqueos de lectura/escritura (bloqueo no adquirido en el primerintento)
  • syscl: Llamadas al sistema
  • set: Grupo de procesadores al que se pertenece
  • usr: Porcentaje de tiempo en procesos de usuario.
  • sys: Porcentaje de tiempo en procesos de sistema.
  • wt: El tiempo de espera de E/S no se calcula ya como porcentaje de tiempo de CPU, por lo tanto siempre va a regresar 0 su medición.
  • idl: Porcentaje de tiempo sin utilizar.

6. Comandos proc (Processes Commands)

Este conjunto de comandos toma información sobre
  • pflags:
  • pcred
  • pldd
  • psig
  • pstack
  • pfiles
  • pstop
  • prun
  • pwait
  • ptime


19 de noviembre de 2008

Algunas consultas útiles de SQL para Oracle

Debido a mis actividades laborales, trabajo con frecuencia con la base de datos Oracle. Nunca falla que hay problemas con los rollback segments o bien hay que agregar datafiles o incluso hay que buscar qué proceso del sitema operativo se quedó colgado para eliminarlo y poder desmontar la base de datos, ver los tamaños de los índices o incluso algo tan simple como volcar la salida de na consulta a un archivo para su posterior revisión. He recopilado algunas de estas consultas y comandos que quizás les puedan ser de utilidad. Debo aclarar que no oy experto en Oracle por lo que estas consultas están sujetas a mejoras.

1. Volcado de la salida de una consulta hacia un archivo

set lines 100 pages 250
col SEGMENT_NAME format a25
col owner format a7
spool /tmp/datos.txt

select (columnaA"@@"columnaB) from miTabla;
spool off;

Primero modificamos el formato de la salida, despues indico que quiero que los datos se vayan hacia el archivo /tmp/datos.txt, ejecuto mi consulta agregando como separador de campos una doble arroba, para manipularlos facilmente y finalmente termino el proceso de volcado. Cabe mencionar que pueden mandar tantas consultas como necesiten.

2. Revisión del tamaño de los datafiles

select * from dba_data_files;

Mediante esta consulta podrán ver el tamaño que tienen disponible sus datafiles y darse una idea de si necesitan incrementarlos o crear alguno nuevo.

3. Revisión del tamaño de los tablespace_names

select TABLESPACE_NAME, sum(BYTES) BYTES from dba_data_files group by TABLESPACE_NAME ;

Con esta consulta ppodrán ver el tamaño en bytes de sus tablespace names.

4. Revisión de todos los procesos del SO que actualmente acceden a la BdD

select ADDR, PID, SPID, USERNAME, SERIAL#, TERMINAL, PROGRAM, BACKGROUND, LATCHWAIT, LATCHSPIN from v$process;

La salida de esta consulta indica los procesos del sistema operativo que están accediendo a la base de datos. Con esto, se podrán dar cuenta qué proceso se quedó colgado, o quién está usando mucha memoria.

5. Revisión de un proceso particular del SO en la BdD

SELECT b.sid SID,b.serial# "Serial#", c.spid "srvPID", b.osuser, b.username, b.status, b.client_info,b.program,b.LOGON_TIME,d.sql_text,b.machine FROM v$session b, v$process c, v$sqlarea dWHERE b.paddr = c.addr and b.sql_hash_value=d.hash_value and b.sql_address=d.addressand c.sPID = &OSPID

Esta consulta lo ayudará a determinar específicamente si un proceso en particular del OS está acediendo a la base de datos.

6. Consulta de los índices asociados a una tabla en particular

select * from all_indexes where table_name = 'miTabla';

Mediante esta consulta podráns saber los nombres de los índices asociados a una tabla en particular.

7. Consulta de la columna asociada a un índice en particular.

select * from all_ind_columns where index_name = 'miIndice';

Devuelve el nombre de la columna que está indexada por un índice en particular.

8. Creación de un índice para una columna.

CREATE INDEX miIndice ON miTabla(columnaA) tablespace INDX;

9. Creación de un índice para varias columnas.

CREATE INDEX miIndice ON miTabla(columnaA,ColumnaB,..,ColumnaZ) tablespace INDX;

10. Eliminación de un índice.

DROP INDEX miBase.miIndice;

11. Alteración del tamaño de los maxextents para un índice.

ALTER INDEX miBase.miIndice STORAGE (maxextents unlimited); (Para hacerlo ilimitado)
ALTER INDEX miBase.miIndice STORAGE (maxextents 8192); (Para darle un tamaño de 8Mb)

12. Alteración del tamaño de los maxextents para una tabla.

ALTER TABLE miBase.miTabla STORAGE (maxextents unlimited); (Para hacerlo ilimitado)
ALTER TABLE miBase.miTabla STORAGE (maxextents 8192); (Para darle un tamaño de 8Mb)

13. Cálculo del tamaño del tablespace SYSTEM

select TOTAL_BLOCKS from dba_free_space_coalesced where tablespace_name = 'SYSTEM';

Muy útil para saber si se les anda llenando este espacio de tablas.

14. Alteración del tamaño de un datafile.

alter database datafile '/u02/oradata/miSID/system01.dbf' resize 5120M;

15. Agregación de un datafile.

alter tablespace system add datafile '/u02/oradata/miSID/system02.dbf' size 1024M;

Por el momento es lo que tengo, ojalá les sean de utilidad.

16. Revisión del estado de los rollback_segments
select segment_name,tablespace_name,status from dba_rollback_segs;

17. Creación de un Rollback segment

CREATE ROLLBACK SEGMENT rollbacksegment_name TABLESPACE SYSTEM storage (initial 10k next 10k minextents 2);

Y después hay que traerlo online.

alter rollback_segment rollbacksegment_name online;

18. Cambiar el tamaño de un rollback segment

ALTER ROLLBACK SEGMENT rollbacksegment_name STORAGE (MAXEXTENTS 12288);

Monitoreo de procesos con top/watch hecho en casa.

Yo, al igual que muchos otros administradores de sistemas allá afuera, estoy muy acostumbrado a monitorear el uso de los recursos de los sistemas usando el comando top. Precisamente en relación con mi post anterior, resulta que durante varios momentos del proceso de jumpstart me vi en la necesidad de entrar al servidor nuevo y obvio, de revisar los procesos que se ejecutaban en ese momento. De pronto, lo impensable: ¡No había top instalado!.

El siguiente comando, ejecutado en un shell bash hará el truco. Aunque quizás no tendrán la opción de ordenar la salida, pero al menos les ayudará en su tarea:

> while [ 1 ] ; do clear ; ps -ea -o pid,pcpu,pmem,rss,vsz,osz,s,args head -25 ; sleep 1 ; done

Quizás así lo vean un poco confuso, por lo que lo pondré como si fuera un shell script:

0: #!/bin/bash
1: while [ 1 ] ; do
2: clear
3: ps -ea -o pid,pcpu,pmem,rss,vsz,osz,s,args head -25
4: sleep 1
5: done


Ahora, en la línea 0 se declara la ruta del intérprete de comandos, en la línea 1, se define un ciclo while infinito, resulta clara esta afirmación puesto que la instrucción while(1) siempre va a ser verdadera.
En la línea 2 se manda a limpiar la pantalla, en la línea 3 se muestran las primeras 25 líneas de la salida del comando ps. La línea 4 detiene por 1 segundo la ejecución del script y finalmente, en la línea 5 se cierra el ciclo.

En realidad, este esquema les puede servir para automatizar el despliegue de comando, al estilo de lo que hace watch. Para el que no sepa, watch ejecuta un comando cíclicamente ad infinitum.

Por ejemplo, si estuviésemos instalando un software muy grande y nos interesa monitorear el espacio de los filesystems. La sintaxis sería:

> watch -n 1 "df -h" (En Linux)

o bien

> watch -n 1 "df -F ufs -h" (En solaris 9 o superior)

En nuestro home-made watch quedaría como:

0: #!/bin/bash
1: while [ 1 ] ; do
2: clear
3: df -F ufs -h
4: sleep 1
5: done


Ojalá esto les pueda ayudar.

13 de noviembre de 2008

3 días Jumpstarteando un servidor

Sí, aunque usted no lo crea, llevo ya 3 días ejecutando jumpstart sobre un servidor de un cliente de la empresa. La empresa ha sido ardua, como se lo imaginarán. Eso sí, como todo en la vida, deja enseñanzas, sobre todo el cómo se ejecuta este procedimiento.

Al menos hasta ahora he aprendido bastante sobre el archivo de perfil de hardware y sobre la menara de ejecutar los procesos que quedaron "colgados" en sesiones anteriores.

Ahora, veamos brevemente qué es esto del jumpstart: Es un proceso mediante el cual podemos instalar uno o muchos sistemas con sólo un perfil. También se pueden definir varios perfiles a la ves para instalar múltiples estaciones de trabajo al mismo tiempo. Para ver más información sobre esto del jumpstart puede consultar: http://docs.sun.com/app/docs/doc/817-0491/6mg9nutco?l=en&a=view&q=Jumpstart

Veamos ahora lo que es un archivo de perfil. Se divide principalmente en dos secciones: La de opciones de los paquetes a instalar (lenguajes entre otras cosas), así como el tipo de instalación y finalmente la sección en la que se define el particionamiento de los discos duros.

Ahora, la primera sección tiene típicamente dos columnas, la del profile keywords y la de profile values. Los keywords son básicamente los nombres de opciones, los values, pues sus valores asignados.

Aquí un ejemplo de la primera sección:

profile keywordsprofile value
-------------------------------------------
install_typeinitial_install
system_typeserver
clusterSUNWCXall
geoN_Amerca
geoW_Europe
geoE_Europe
geoN_Europe
geoS_Europe
packageNSCPcom delete
partitioningexplicit


  • install_type: Define si es que el sistema operativo a instalar se va a sobreescribir, si se va a actualizar, o bien, si se va a hacer una instalación nueva. En algunos casos, también podría indicar si se va a utilizar una imagen flash.
  • system_type: Indica el tipo de sistema en el que se va a instalar el solaris.
  • cluster: Define el tipo de software que se va a instalar.
  • geo: Indica los paquetes de lozalización que se van a instalar. En pocas palabras, los lenguajes.
  • package: Sirve para agregar o quitar paquetes de software.
  • partitioning: Define el esquema de particionamiento que se va a utilizar durante la instalación. De no agregar esta opción, se utiliará el esquema por defecto.
En pocas palabras, el ejemplo de arriba indica que se va a hacer una nueva instalación para un servidor. Se va a instalar todo el software de la distribución (all), excepto el paquete de software de Netscape. En cuanto a los lenguajes, se van a instalar los de Europa (Norte, Sur, Este y Oeste) y el de Norte América. Finalmente se va a hacer un particionamiento explícito, es decir, que viene definido abajo.

otro ejemplo podría ser:

profile keywordsprofile value
-------------------------------------------
install_typeflash_install
archive_locationnfs 148.228.20.1:/opt/jstart2/jumpstart/Flash/Sun4u-JS-Sol9-FlarImage
partitioningexplicit



En este caso, se le indica a la máquina que la instalación se hará a partir de una imagen flash, que se llama Sun4u-JS-So9-FlarImage que se obtendrá por medio de NFS desde 148.228.20.1 en el directorio /opt/jstart2/jumpstart/Flash/. Nuevamente, el particionamiento es explícito.

Cabe mencionar que cuando se usa una instalación flash no es posible utilizar la opción geo. La voz de la experiencia.

  • archive_location: Indica la localización de la imagen flash en el servidor del jumpstart.


Ahora, un ejemplo de cómo se hace la definición de las particiones:

# filesysslicesizefilesystem
#-------------------------------------------
filesysc0t9d0s04096/
filesysc0t9d0s12048swap
filesysc0t9d0s36144/var
filesysc0t9d0s44096/usr
filesysc0t9d0s5free/opt
filesysc0t10d0s02048swap
filesysc0t10d0s115216/u01
filesysc0t11d0s02048swap
filesysc0t11d0s115216/u02
filesysc0t12d0s02048swap
filesysc0t12d0s115216/u03
filesysc0t13d0s02048swap
filesysc0t13d0s115216/u04
filesysc0t14d0s02048swap
filesysc0t14d0s115216/u05


Aquí podemos sacar varias cosas:

  1. Se stán utilizando 6 discos duros, que van desde c0t9d0 hasta c0t14d0, cada uno con una capacidad de 18 Gb.
  2. El primer disco tiene 5 particiones, mientras que los 5 restantes tienen sólo 2.
  3. Todos los discos duros deben tener un espacio para swap.
  4. El amaño de las particiones viene dado en Mb, excepto quinta la partición del primer disco, cuyo tamaño viene como free, lo que indica que se utilizará todo el espacio disponible después de crear las particiones que tienen un tamaño explícito.
  5. Nunca se utiliza la partición número 2, puesto que indica regularmente el disco entero. Si la llegan a usar, hay grandes probabilidades de que tengan errores. En mi experiencia, si usan la partición 2, cuando intenten crear una arcivo dentro de ésta, les va a marcar un error de MAXSYMLINKS reached. Como si se hubera alcanzado el límite máximo de ligas simbólicas posibles dentro de un sistema de archivos. ¿A que no sabían esto eh?
  6. A diferencia de linux, en donde la nomenclatura de las perticiones es del estilo de hda1, sda3, etc; la nomenclatura en Solaris es del tipo cWtXdYsZ. Donde W es el número de la controladora (HBA), X es el número de target, que es básicamente una dirección de hardware, única asignada a cada unidad, ya sea un disco, cdrom o una cinta. Y es la dirección del disco dentro de la controladora y finalmente Z es el número de slice o de partición.

Puede consultar más información sobre la convención de nombrado de particiones de Solaris en: http://docs.sun.com/app/docs/doc/801-7038/6i1cfovsu?a=view

Finalmete, pueden encontrar mucha más información sobre los keywords y sus valores en la siguiente dirección: http://docs.sun.com/app/docs/doc/817-5506/6mkv6kiat?a=view

12 de noviembre de 2008

La falta de ética y la socidad mexicana

¿Y como para qué hablar sobre ética y moral en la sociedad mexicana en un blog que está principalmente dedicado a la tecnología, UNIX y sus amigos?

Resulta que en uno de esos viajes de Puebla al DF, leí un artículo publicado en el Diario Síntesis, titulado: Alarma falta de ética en la sociedad Mexicana: académico de la UMAD.

De lo que se trata básicamente es de que en la sociedad mexicana los niveles de ética son muy bajos tanto en hombres como en mujeres, sin distingo de edad, estudios e incluso nivel socio eonómico. Y supongo que nos hemos tomado con más de un ejemplo a diario.

Ahora, antes de continuar, aunque este artículo no pretende de ninguna manera ser una lección sobre lo que es ética y lo que es moral, me permito reproducir integramente un estracto tomado de Wikipedia en donde se aclara la diferencia entre estos dos términos.

"(La Ética) Tiene como objeto de estudio la moral y la acción humana. Su estudio se remonta a los orígenes de la filosofía moral en Grecia y su desarrollo histórico ha sido diverso. Una doctrina ética elabora y verifica afirmaciones o juicios. Esta sentencia ética, juicio moral o declaración normativa es una afirmación que contendrá términos tales como 'malo', 'bueno', 'correcto', 'incorrecto', 'obligatorio', 'permitido', etc, referido a una acción o decisión. Cuando se emplean sentencias éticas se está valorando moralmente a personas, situaciones, cosas o acciones. De este modo, se están estableciendo juicios morales cuando, por ejemplo, se dice: "Ese político es corrupto", "Ese hombre es impresentable", "Su presencia es loable", etc. En estas declaraciones aparecen los términos 'corrupto', 'impresentable' y 'loable' que implican valoraciones de tipo moral.
La ética estudia la moral y determina qué es lo bueno y, desde este punto de vista, cómo se debe actuar. Es decir, es la teoría o la ciencia del comportamiento moral."

Puede consultar el artículo completo aquí (http://es.wikipedia.org/wiki/%C3%89tica).

O bien:

"Muchos autores consideran como sinónimos a estos términos. Sin embargo, en el ámbito de la filosofía se considera a la ética como una de sus partes principales. De ahí que podemos decir que una ética propuesta es el conjunto de normas sugeridas por un filósofo, o proveniente de la religión, en tanto que moral vendría a designar el grado de acatamiento que los individuos dispensan a las normas éticas imperantes en el grupo social. En un sentido práctico, ambos términos se hacen indistinguibles y por ello se los considera equivalentes.
El matiz que las delimita está en la observación o aplicación práctica de la norma que entraña el mandato ético. Por ello, la norma ética siempre será teórica, en tanto que la moral o costumbre será su aplicación práctica.
Por otro lado la moral se basa en los valores en lo que la conciencia nos dicta."

Puede consultar el artículo completo aquí: http://es.wikipedia.org/wiki/Moral#Moral_y_.C3.A9tica.

Ahora bien, supongo que todos hemos visto esos comerciales que pasan en la tele, tan famosos los de "¿Tienes el valor o te vale?". En ellos se describe perfectamente lo que sucede día con día en nuestras ciudades, en donde bajo una cantidad enorme de pretextos, nuestros compañeros de al lado (o incluso nosotros mismos) nos convertimos en unos verdaderos cavernícolas. Vaya, podemos hacer una ennumeración bastante somera de casos:
  • Quien se estaciona en el lugar para discapacitados (o como les quieran decir ahora).
  • Quien estando comodamente sentado en el transporte público se hace el desentendido y no cede el lugar a una mujer que va cargando chamaco y bolsas del súper.
  • Quien ocupa tu lugar en el autobús/teatro/etc sin el menor asomo de remordimiento intenta hacerte sentar en donde NO te toca.
  • Quien se estaciona en doble fila en una calle angosta.
  • Quien en la autopista se mete en el acotamiento para "saltarse" la fila de carros antes de la caseta.
  • Quien, aún habiendo espacio suficiente ascelera y te lanza el carro con tal de no dejarte cambiar de carril. Y esto, desde que pones la direccional para avisar con antelación tus satánicas intenciones.

En fin, que al son de "el gandalla no batalla" podemos continua ad infinitum.

¿Y esto a razón de qué? Pienso que tiene muchoque ver con nuestra doble moral. Al principio de mi vida en el DF pensé que se debía en mayor medida a que los recursos son pocos y el espacio es aún menor, pues hay que ser un poco más agresivos para conseguir nuestros fines. Poco a poco me he ido desengañando y me doy cuenta ahora de que es un problema que permea a todos niveles de nuestra sociedad. ¿Usted qué opina querido lector?