sábado, 16 de febrero de 2013

J. Michael Bishop

http://www.rtve.es/tve/b/redes2007/semanal/prg314/bishop.htm

lunes, 11 de febrero de 2013

Disponibilidad de Datos

Fragmentos
A medida que el uso de TI y de los servicios activados por TI, se vuelven más y más dominantes en todos los aspectos de las operaciones de negocio, las empresas modernas dependen cada vez más de su infraestructura de TI para tener éxito.
Subra Sripada, Vicepresidente Senior y CIO de Beaumont Health System, una cadena de hospitales en Michigan:
"Como las empresas se vuelven más y más dependientes de la informática y la tecnología y como esta continuamente cambia de manera vertiginosa, se ha convertido en un tema de debate continuo, en las sala de juntas.
Las principales organizaciones de TI están aprovechando a la informática y la tecnología, como un activo estratégico". http://www.oracle.com/us/corporate/profit/features/071111-itsuccess-432556.html 

La no disponibilidad de una aplicación o dato crítico puede implicar un costo significativo para las empresas en términos de:
–Pérdida de productividad e ingresos
–Clientes insatisfechos
Mala imagen corporativa


Beneficios

  1. Servicio de 7 por 24 a los usuarios.
  2. Disminución del tiempo de respuesta al mínimo en caso de contingencias.
  3. Tecnología de vanguardia.
  4. Integración de instancias legadas de diversos servicios de datos.
  5. Logra una rápida recuperación de fallas no planeadas.
  6. Infraestructura de TI más sólida y con mejores prácticas.
  7. Tolerancia a fallas, en el servidor, datos, software, red y discos.
  8. Máxima eficiencia y eficacia de la infraestructura de alta disponibilidad.
  9. Flexibilidad y eficiencia de costos para escalar a cualquier capacidad deseada por los cambios tecnológicos.






viernes, 1 de febrero de 2013

Usando el comando mysqldump para respaldar sólo una base de datos


Usando el comando mysqldump para respaldar sólo una base de datos:

 shell> mysqldump [opciones] nombre_base_datos

Usando el comando mysqldump para respaldar varias tablas de una base de datos:

shell> mysqldump [opciones] nombre_base_datos tabla1 tabla2. . . tablaN

Usando mysqldump para respaldar varias bases de datos:

shell> mysqldump [opciones] --databases [opciones] nombre_bd1 nombre_bd2...

Usando mysqldump para respaldar todas las bases de datos:

shell> mysqldump [opciones] --all-databases [opciones]

Las opciones pueden ser vistas ejecutando el siguiente comando:

shell> mysqldump --help

Veámoslo con parámetros definidos:


Mysqldump, es una herramienta de mysql que sirve para realizar copias de seguridad de bases de datos. Es sustancial tener un sistema de backups pertinente para cualquier dato almacenado. Veamos algunas opciones básicas, con detalle en el comando.

1.- Realizar backup de una única base de datos:

   mysqldump -u root -p nombre_base_de_datos > archivo_con_resp.sql

Así se realizará el backup de la base de datos, solicitando clave del usuario root mysql, se puede especificar pegado a la letra “p” -pclave.


2.- Para restaurar esa base de datos, haríamos lo siguiente:

    mysql -u root -p  nombre_base_de_datos < archivo_con_resp.sql

Igual con la clave del usuario root, la podemos indicar o esperar a que la pida.


3.- Para realizar un backup de todas las bases de datos:

mysqldump -u root -p --all-databases > archivo_con_resp.sql


4.- Para sólo hacer backup de un par de bases de datos:

    mysqldump -u root -p --databases base_datos1 base_datos2 > archivo_con_resp.sql


5.- Para un sólo  backup de una sola tabla, dentro de una base de datos:

   mysqldump -u root -p base_datos tabla > archivo_con_resp.sql


6.- Para consultar la ayuda damos lo siquiente:

mysqldump --help


log sentencias mysql

Para poder visualizar todas las sentencias SQL que se ejecutan en MySQL así como los detalles de quien las ejecutó, basta con añadir al fichero de configuración (/etc/my.cnf en Linux o my.ini en Windows) la opción:log=fichero

Por ejemplo:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log=/var/log/mysqld.log

Nota: el fichero de log tiene que tener permisos de escritura para los usuarios de los que se desean ver las sentencias SQL. Para dar permiso de lectura/escritura a todos en Linux: chmod a+rw fichero



Para monitorear el rendimiento de MySQL, que mejor que arrancar por las consultas, para hacer esto disponemos de una serie de alternativas:
  • Activar el Slow Query Log: loguea todas las consultas que se excedan de un tiempo dado (log_query_time) o bien, que no utilicen íncides (log-queries-not-using-indexes). Para activarlo, debemos editar el archivo my.cnf y agregar en la sección [mysqld]:

long_query_time         = 1
log-slow-queries        = /var/log/mysql/mysql-slow.log
log-queries-not-using-indexes
  • Describir una consulta: utilizar el comando DESCRIBE (o DESC es su forma abreviada). Por ejemplo: “DESC SELECT … FROM … WHERE … ORDER BY …”, este nos devolverá si está utilizando índices y cuales son.
  • Analizar mediante EXPLAIN, como ejecuta las consultas MySQL y determinar si se utilizan índices, el número de filas exploradas e información adicional. Ver, Optimización de consultas con EXPLAIN

Otras referencias MySQL


Iniciando para una versión

mysqladmin -u root password nuevo_password

mysqladmin -u root password 'xxxccceee'

mysqladmin -u root -p xxxccceee

mysqladmin -u root -p password 'xxxccceee'


mysqladmin -u root -h '99.11.6.17' -p password 'xxxccceee'

--- =========================    

Para otra versión

[root@serv1 ~]# mysql -u root -h localhost

---------------------------------------------------------------

Generemos cuentas iniciales

UPDATE user SET Password=PASSWORD('xxxccceee') WHERE user='root';

CREATE USER 'root' @ '99.11.6.17' IDENTIFIED BY 'xxxccceee'; 
FLUSH PRIVILEGES;



mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'99.11.6.17'
        WITH GRANT OPTION;

FLUSH PRIVILEGES;

GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'localhost'
        WITH GRANT OPTION;

FLUSH PRIVILEGES;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'  WITH GRANT OPTION;

FLUSH PRIVILEGES;



Para un usuario

serv1 -----> es el hostname del servidor 
usaurio ----> es el usuario a crear así se llma aqui en el ejemplo


---- CREATE USER 'usuario' @ 'serv1' IDENTIFIED BY 'password'; 
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'serv1' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'127.0.0.1' WITH GRANT OPTION;


GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'%'  WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'localhost' WITH GRANT OPTION;

UPDATE user SET Password=PASSWORD('password') WHERE user='usuario';

CREATE USER 'usuario' @ '99.11.6.17' IDENTIFIED BY 'password'; 
FLUSH PRIVILEGES;


Creando la base de datos.
CREATE DATABASE nombase

mysql> use nombase
mysql> show databases;
show tables;
describe tabla;
----------------------------------------------------------------------------


http://dev.mysql.com/doc/refman/5.0/es/charset-database.html

10.3.2. Conjuntos de caracteres y colaciones de la base de datos
Cada base de datos tiene un conjunto de caracteres y una colación que no pueden ser nulos. Los comandos CREATE DATABASE y ALTER DATABASE tienen cláusulas opcionales para especificar el conjunto de caracteres y colación de la base de datos:

CREATE DATABASE nombre_de_base_de_datos
    [[DEFAULT] CHARACTER SET nombre_de_conjunto_de_caracteres]
    [[DEFAULT] COLLATE nombre_de_colación]

ALTER DATABASE nombre_de_base_de_datos
    [[DEFAULT] CHARACTER SET nombre_de_conjunto_de_caracteres]
    [[DEFAULT] COLLATE nombre_de_colación]
Ejemplo:

CREATE DATABASE nombre_de_base_de_datos
    DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
MySQL elige el conjunto de caracteres y colación de la base de datos así:

Si tanto CHARACTER SET X como COLLATE Y se especifican, entonces el conjunto de caracteres es X y la colación Y.

Si CHARACTER SET X se especifica sin COLLATE, entonces el conjunto de caracteres es X y la colación es la de defecto.

En el resto de casos, es el conjunto de caracteres y la colación del servidor.

La sintaxis de MySQL CREATE DATABASE ... DEFAULT CHARACTER SET ... es análoga a la sintaxis estándar SQL CREATE SCHEMA ... CHARACTER SET .... Por ello, es posible crear bases de datos con distintos conjuntos de caracteres y colaciones en el mismo servidor MySQL.

El conjunto de caracteres de la base de datos y la colación se usan como valores por defecto para una tabla si no se especifica el conjunto de caracteres y colación en el comando CREATE TABLE. No tienen otro propósito.

El conjunto de caracteres y colación para la base de datos por defecto están disponibles como los valores de las variables character_set_database y collation_database . El servidor obtiene estas variables siempre que la base de datos por defecto cambia. Si no hay base de datos por defecto, las variables tienen el mismo valor que las variables correspondiente del lado del servidor, character_set_server y collation_server.


---------------------------------------------------
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------

Revisando tabla de usuarios


[root@serv1  ~]# mysql -u root -h localhost
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.95 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| mysql              | 
| test               | 
+--------------------+
3 rows in set (0.00 sec)
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
mysql> use mysql  
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select host, user, grant_priv from user;
+-----------+------+------------+
| host      | user | grant_priv |
+-----------+------+------------+
| localhost | root | Y          | 
| serv1   | root | Y          | 
| 127.0.0.1 | root | Y          | 
| localhost |      | N          | 
| serv1|      | N          | 
+-----------+------+------------+
5 rows in set (0.00 sec)

mysql> 
mysql> 
mysql> select host, user, grant_priv from user;
+-----------+------+------------+
| host      | user | grant_priv |
+-----------+------+------------+
| localhost | root | Y          | 
| serv1| root | Y          | 
| 127.0.0.1 | root | Y          | 
| localhost |      | N          | 
| serv1|      | N          | 
+-----------+------+------------+
5 rows in set (0.00 sec)

mysql> select  host, user, grant_priv,
    -> select_priv,
    -> Insert_priv,
    -> update_priv,
    -> delete_priv,
    -> create_priv,
    -> drop_priv,
    -> reload_priv,
    -> show_view_priv  from user; 
+-----------+------+------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+----------------+
| host      | user | grant_priv | select_priv | Insert_priv | update_priv | delete_priv | create_priv | drop_priv | reload_priv | show_view_priv |
+-----------+------+------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+----------------+
| localhost | root | Y          | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y              | 
| serv1     | root | Y          | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y              | 
| 127.0.0.1 | root | Y          | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y              | 
| localhost |      | N          | N           | N           | N           | N           | N           | N         | N           | N              | 
| serv1      |      | N          | N           | N           | N           | N           | N           | N         | N           | N              | 
+-----------+------+------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+----------------+
5 rows in set (0.00 sec)

mysql> EXIT
Bye
[root@serv1 ~]# mysql -u root 

--------------------------------------------------

--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------

mysql> select host, user, grant_priv from user;
+----------------+------+------------+
| host           | user | grant_priv |
+----------------+------+------------+
| localhost      | root | Y          | 
| serv1           | root | Y          | 
| 127.0.0.1    | root | Y          | 
| localhost      |        | N          | 
| serv1           |        | N          | 
| 99.11.6.17  | root | Y          | 
+----------------+------+------------+
6 rows in set (0.00 sec)
===========================================

Creando tablas


CREATE TABLE esquema.tabla (
  id          NUMERIC(2,0)   NOT NULL,
  id_area        VARCHAR(2)   NOT NULL,
   fecha_creacion DATE          NULL,
 ) ;


CREATE INDEX nom_index
  ON esquema.tabla (
    campo1
  )  ;



ALTER TABLE esquema.tabla
  ADD CONSTRAINT nom_constraint PRIMARY KEY (
    campo1
  ) ;


=================================

Sobre campos memo o clob o lob


MySQL server support CLOB with 4 data types:
TINYTEXT - A CLOB column with a maximum length of 255 (2**8 - 1) characters.
TEXT - A CLOB column with a maximum length of 65,535 (2**16 - 1) characters.
MEDIUMTEXT - A CLOB column with a maximum length of 16,777,215 (2**24 - 1) characters.
LONGTEXT - A CLOB column with a maximum length of 4,294,967,295 or 4GB (2**32 - 1) characters.
In order to test CLOB columns in MySQL server, I used the MySQL commnand line interface to create a test table with one CLOB column:
C:\>\local\mysql\bin\mysql -u Herong -pTopSecret
Mysql> CREATE TABLE Article (ID INTEGER PRIMARY KEY AUTO_INCREMENT,
    ->   Subject VARCHAR(256) NOT NULL,
    ->   Body LONGTEXT);

campo_memo  LONGTEXT     NULL,




Sentencias SQL básicas con mysql

Obtener datos en texto de MySQL con separadores.


      SELECT * FROM esquema.tabla
     INTO OUTFILE "nombrearchivotexto.txt"
     FIELDS TERMINATED BY '||' ;


Generalmente nos deja los archivos en el origen en que se instalo y alojan los archivos dbf de mysql.

----   trayectoria de las bases de mysql


  • /var/lib/mysql/"basedatos"


--------------------------------------------------------------------------------------------

Si pasamos de oracle a mysql, la fecha es un punto por verificar, podemos generar los datos de tal manera que modifiquemos la fecha previamente ya luego generamos el archivo de texto con los registros para su carga.


CREATE TABLE esquema.tabla
AS
SELECT
  nombre,
  To_Char(campo_fecha, 'YYYY-MM-DD') AS campo_fechae       ,
 FROM esquema.tabla_origen
WHERE nombre  = 'xxx'

--------------------------------------------------------------------------------------------
Cargamos datos de un archivo de texto en mysql:


 source /tmp/I_SIIAA_REINSCRIPCION_TMP_13A_01.sql

también puede ser:
punto y la trayectoria y archivo

ver la ayuda de mysql esta referenciado

--------------------------------------------------------------------------------------------
Una consulta con EXISTSen oracle:


 SELECT  DISTINCT  campo1   FROM esquema.tabla  WHERE EXISTS
             (SELECT Max(campos2) FROM  esquema.tabla2 WHERE campo3 = campo1)

--------------------------------------------------------------------------------------------

Amperson en un campo de texto:

Si voy a insertar en un campo de texto de oracle un amperson &, puedo pensar que concateno:
 'Bob & '| |' Sons '

Sin embargo no es del todo aplicables, por lo que podemos acudir a : set define OFF
esto en una consola directamente, posteriormente lo regresamos a ON.

Otra opción es utilizar la sentencia de escape:   set escape \

En tanto recordemos:    set define off      -----      set define ON

--------------------------------------------------------------------------------------------

Consultemos un campo memo o clob en texto en oracle.


     SELECT DBMS_LOB.substr(campo1,DBMS_LOB.getlength(campo1),1)
FROM esquema.tabla ;

podemos dar un where etc.


FRASE

"La inteligencia no es un don individual, es siempre distribuida, compartida con otros, contruida más allá del sujeto único."
Dra. Martha Rizo García