lunes, 18 de febrero de 2013

Arquitectura del Gestor

Instalación MySQL en Linux

En este ocasión, revisaremos como se instala MySQL Server en Ubuntu Linux, es importante mencionar que las distribuciones modernas de Linux, tienen un administrador de paquetes el cual permite instalar y desinstalar software de una manera mucho mas fácil, MySQL es parte de los paquetes en este tipo de repositorios y a través de administradores de paquetes de este tipo, es posible instalarlo.
Adicionalmente, a la opción de instalar MySQL por medio de administradores de paquetes, también es posible instalarlo a través del instalador MySQL tar gz, pero este procedimiento lo describiremos mas adelante.
Aun recuerdo los tiempos en los que gran parte del software para linux, se tenia que obtener el código fuente, compilar y resolver dependencias de librerías en función de la distribución de linux a utilizar, esos tiempos han cambiado y ahora es muy sencillo instalar software en distribuciones modernas de linux como por ejemplo: Ubuntu.

En ubuntu, existe un “package manager” conocido como “synaptic package manager“, el cual es posible lanzarlo en el Menú: System -> Administration -> Synaptic Package Manager, a través de synaptic, podemos seguir los siguientes pasos para poder instalar en menos de 5 minutos, la ultima versión disponible del binario MySQL Server Community.
Nota.- el administrador de paquetes “synaptic“, instala de forma automatizada todas las librerías y prerrequisitos ( creación de usuario y grupo mysql) en el sistema operativo Ubuntu Linux
Paso 1.- Lanzar Synaptic Package Manager; Menu System -> Administration -> Synaptic Package Manager
 
Paso 2.- Buscar MySQL Server, en el repositorio (ingresar mysql-server, en la caja de texto de “Quick Search”)
 

Paso 3.- Instalación MySQL Server

 
Paso 4.- Asignación de password para cuenta root ( administrador ) de MySQL

Paso 5.- Validación de paquetes instalados

Paso 6.- Ingreso a la consola de MySQL
Para ingresar a la consola de comandos de MySQL, lanzamos una terminal a través del Menú: Applications -> Accessories -> Terminal

 
 

Instalar Oracle en Linux          

No es el texto definitivo (es una verdadera lata instalarlo).
Creo que servira mas si escribo el historial de la instalacion, asi el que lo lea, no cometera los mismos errores.
Estoy tratando de instalar Oracle 11g en mi computadora que tiene la siguiente configuracion:
  1. Procesador AMD TurionTM II Dual-Core Mobile M500.
  2. RAM 4 gb.
  3. Disco duro Sata con 500 gb.
  4. Sistema operativo Ubuntu 10.
  5. VirtualBox 4.0.2
El proposito de instalar Oracle es poder recordar SQL y PL/SQL, tambien crear una instancia de linux lo mas basica posible, en donde exista solamente lo minimo necesario para ejecutar Oracle, por lo tanto se va a instalar en la maquina virtual:
  1. Ubuntu 11 server 64 bits.
  2. Oracle 11g v2 64 bits.
  3. XFCE 4.
  4. Gnome Terminal.
  5. GEdit.
La maquina virtual se configurara con 1.5 gb de RAM y 16 gb en disco duro.
Observaciones:
Esta es una lista de los errores que ha marcado el instalador, se indica en que numero de instalacion lo marco:
  1. Primera instalacion:
    Ya se trato de instalar Oracle en una maquina virtual configurada con 8 gb de disco duro, pero el instalador mando un error indicando que necesitaba al menos 4 gb libres, tambien marco un error cuando asigne 1 gb de memoria ram.
  2. Segunda instalacion:
    Es requerimiento para la instalacion de Oracle tener la particion swap con al menos 2 gb. Al hacer la segunda instalacion se creo una particion swap con 2gb., pero el instalador marco una advertencia que la particion swap tenia menos de lo requerido(probablemente otros procesos estaban utilizando la swap), asi que recomiendo que se cree la swap con mas de 2gb. En las proximas instalaciones se hara con 3gb.
  3. Tercera instalacion:
    Al momento de instalar Oracle, el instalador marca un error ya que no localiza las librerias para compilar, por ejemplo el make. La version que pide es la 3.80 y la que tiene instalado el sistema operativo es la version 3.81.
Se muestran las opciones de configuracion para VirtualBox, se mencionan algunas observaciones al calce:

 
Este procedimiento no funciona todavia, hay que buscar la solucion:
Ejecuta los siguientes pasos usando la cuenta root:
1. Crear el usuario y grupo de oracle:
/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/groupadd nobody
/usr/sbin/useradd -m -g oinstall -G dba -p passwd -d /home/oracle oracle
2. Creamos ciertos directorios y le asignamos permisos
mkdir -p /home/oracle/app/oracle
mkdir -p /home/oracle/oradata
chown -R oracle:oinstall /home/oracle/
chmod -R 775 /home/oracle/
3. Parámetros del kernel
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
se agregan en el archivo /etc/sysctl.conf
Para verificar que configuracion tiene el SO ejecuta:
/sbin/sysctl -a | grep sem
/sbin/sysctl -a | grep shm
/sbin/sysctl -a | grep file-max
/sbin/sysctl -a | grep ip_local_port_range
Para aplicar los cambios ejecuta /sbin/sysctl -p
4. Edita el fichero /etc/security/limits.conf agregando:
oracle soft nproc 2047
oracle hard nproc 16384
oracle hard nofile 65536
oracle soft nofile 1024
5. Agrega estas lineas a /etc/profile
if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi
6. Ejecuta la siguiente orden para instalar los paquetes:
apt-get install build-essential ia32-libs libc6-dev-i386 libc6-dev libaio-dev expat pdksh unixodbc sysstat libaio1 elfutils build-essential libaio1 libaio-dev libtool expat alien ksh pdksh unixODBC unixODBC-dev sysstat elfutils libelf-dev binutil
apt-get install libmotif4
(Creo que el error de la tercera instalacion se crea en este paso, ya que el instalador no localiza las librerias)
7. Se crean los siguientes enlaces para que el instalador de Oracle localice los archivos:
ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/rpm /bin/rpm
ln -s /usr/bin/basename /bin/basename
ln -s /etc /etc/rc.d
8. Para evitar problemas con las versiones, ejecuta las siguientes ordenes:
cd /tmp
 dpkg-deb -x libstdc++5_3.3.6-17ubuntu1_amd64.deb ia64-libs
cp ia64-libs/usr/lib/libstdc++.so.5.0.7 /usr/lib64/
cd /usr/lib64/
ln -s libstdc++.so.5.0.7 libstdc++.so.5
cd /tmp
 dpkg-deb -x ia32-libs_2.7ubuntu6.1_amd64.deb ia32-libs
sudo cp ia32-libs/usr/lib32/libstdc++.so.5.0.7 /usr/lib32/
cd /usr/lib32
ln -s libstdc++.so.5.0.7 libstdc++.so.5
Cierra la cuenta root y abre la cuenta oracle y ejecuta lo siguiente:
1. Agrega estas lineas en el .bash_profile
ORACLE_BASE=/home/oracle/ORACLE
ORACLE_SID=test
export ORACLE_BASE ORACLE_SID
unset ORACLE_HOME
unset TNS_ADMIN
umask 022
2. Descomprime linux.x64_11gR2_database_1of2.zip y linux.x64_11gR2_database_2of2.zip y despues ejecuta:
./runInstaller -ignoreSysPrereqs

Instalando PostgreSQL en Linux
En este pequeño taller voy a dar unas pequeñas pautas para instalar PostgreSQL.
  • Nos ponemos
    como root para empezar a trabajar
  • Creamos
    el grupo y usuario postgres
  • Descargamos las
    fuentes de PostgreSQL y las descomprimimos
  • Preparamos las
    fuentes para ser compiladas
  • Compilamos e instalamos
    las fuentes
  • Instalamos la Base
    de Datos
  • Asignamos los directorios
    a sus respectivos propietarios
  • Creamos
    un usuario de prueba

Adquirimos permisos de root para no tener
ningún problema

Obtenemos login
como root con el comando su -l:
$ su -l
Password:
#
Notar que el signo $
ha cambiado por #. Si es así, habremos obtenido
permisos de root, cosa que usaremos para tareas muy determinadas, ya que
podemos dañar el sistema.
Añadimos el grupo
mysql y creamos el usuario mysql dentro del grupo mysql:
# groupadd postgres
# useradd -g postgres postgres

Bajamos las fuentes y las preparamos para compilarlas

Descargamos las
fuentes en formato .tar.gz (tarbal) de href="http://www.postgresql.org/">http://www.postgresql.org/.
(NOTA: son unos 7 Mb)

Descomprimimos
las fuentes:
# gunzip postgresql-7.x.x.tar.gz
# tar -xvf postgresql-7.x.x.tar
Preparamos las
fuentes para compilarlas:
# cd postgresql-3.x.x
# ./configure
Ahora
nos disponemos a compilar las fuentes de PostgreSQL:
# gmake && gmake
install && echo "Bien compilado e instalado"

Configuración Post-Instalación

Vamos
a crear un directorio data y asignamos los directorios a sus propietarios:
# mkdir /usr/locl/pgsql/data
# chown postgres /usr/local/pgsql/data
Ahora
nos ponemos como postgres para instalar la BD:
# su - postgres
$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
Ahora
iniciamos la BD:
$ /usr/local/pgsql/bin/postmaster
-D /usr/local/pgsql/data

Administración básica de Usuarios

En esta
sección vamos a explicar muy por encima la forma de crear y borrar usuarios
de PostgreSQL
Bien,
lo primero, es crear un enlace al cliente:
$ logout
# ln /usr/local/pgsql/bin/psql /usr/bin/psql
# su - postgres
$
Ahora
lo tenemos más sencillo para acceder, ahora arrancamos el cliente:
$ psql
postgres=#
Para
crear usuarios, usamos el comando CREATE USER, que tiene la siguiente sintaxis:
CREATE USER username
[ WITH
[ SYSID uid ]
[ PASSWORD 'password' ] ]
[ CREATEDB | NOCREATEDB ] [ CREATEUSER | NOCREATEUSER ]
[ IN GROUP groupname [, ...] ]
[ VALID UNTIL 'abstime' ]
Entonces, creamos
un usuario llamado pedro:
postgres=# CREATE USER pedro
postgres-# WITH PASSWORD 'p3dr0'
postgres-# NOCREATEDB
postgres-# NOCREATEUSER
postgres-# ;
CREATE USER
postgres=#
Ya tenemos a pedro en nuestra BD.
Ahora
borraremos a pedro:
postgres=# DROP USER pedro;
DROP USER
 

 

 

viernes, 8 de febrero de 2013

Cuestionario


1.-¿Cuáles son las inconvenientes de un sistema gestor de base de datos?
 Problemas de seguridad, Problemas de automicidad.
2.- Indique los pasos importantes para configurar una base de datos para una empresa dada.
1.       Determinar la finalidad de la BD.

2.      Determinar en el acceso necesario de la BD.

3.       Determinar las tablas que necesitan en la BD.

4.      Determinar a que tablas pertenecen cada campo.

5.       Identificar el campo o los campos con valores unicos.

6.      Determinar las relaciones entre las tablas.

7.       Perfeccionar el diseño.

8.      Introducir datos y crear otros.
   3.- Explique la diferencia entre independencia de datos física y lógica.
Los programas de aplicacion se dice que muestran indepencia fisica de datos si no dependen del esquema fisico, y por lo tanto, no deben ser modificados si cambia el esquema fisico.
   4.-Explique cinco responsabilidades del Sistema Gestor de la Base de Datos.
    Proporciona la capacidad de almacenamiento de datos, acede y utilizarlos.

    Durabilidad.

    consistencia.

    Recuperacion de fallos.

    Proporciona un mecanismo capas de ocupar los datos.

    Para cada responsabilidad explique que pasaría de no asumir la responsabilidad.

    El espacio de memoria para datos del cliente, seria muy poco, hay que pensar en grande.

    para que crear algo no durable, si solo sera el uso por corto tiempo.

    Tiene que ser consistente, para que al uso diario no sea mproductivo.

    Facilmente tiene que recuperarse un fallo, ya que depende del creado.

    Que la BD, de abasto para tipo de datos que necesite el usuario.

    4.-¿Cuáles son las cinco funciones principales del administrador de la base de datos?

·         Definicion del esquema.

·         Definicion de la estructura y del metodo de acceso.

·         Modificacion del esquema y de la organizacion fisica.

·         Concesion de autorizacion para el acceso a los datos.

·         Mantenimiento rutinario.

   5.-Indique 5 aplicaciones que usted perciba que se usa una base de datos para almacenar datos persistentes.

·         Escuelas

·         Empresas

·         Bancos

·         Venterinaria

Cuadro comparativo


jueves, 7 de febrero de 2013

implementacion de una base de datos

C:\xampp>cd mysql

C:\xampp\mysql>cd bin

C:\xampp\mysql\bin>mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.41 Source distribution

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

mysql> create database veterinaria;
Query OK, 1 row affected (0.00 sec)

mysql> use veterinaria
Database changed

mysql> create table cliente (numcliente int not null primary key,nombre varchar(
30), telefono int(10),direccion varchar(30), email varchar(30));
Query OK, 0 rows affected (0.03 sec)

mysql> insert into cliente values(0001,'sergio castrillo',6562582525,'Camino nose','sergio@gmail.com');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> insert into cliente values(0002,'harry potter',6562582424,'Camino real','ha
rrypotter@gmail.com');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> insert into cliente values(0003,'pack mendez',6562582754,'Caminar','pack@gmail.com');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> select *from cliente;
+------------+------------+------------+-------------+-----------------------+
| numcliente | nombre | telefono | direccion | email |
+------------+------------+------------+-------------+-----------------------+
| 1 | sergio castrillo | 2147483647 | Camino nose | sergio@gmail.com  |
| 2 | harry potter | 2147483647 | Camino real | harrypotter@gmail.com |
| 3 | pack mendez | 2147483647 | Caminar | pack@gmail.com   |
+------------+------------+------------+-------------+-----------------------+
3 rows in set (0.00 sec)

mysql> create table mascota (numcliente int not null primary key,color varchar(
30),sexo varchar(10),raza varchar(30),motivoconsulta varchar(30),nombrem varchar
(30));
Query OK, 0 rows affected (0.02 sec)

mysql> insert into mascota values(0001,'cafe','macho','doberman','dolor estomacal
','tayron');
Query OK, 1 row affected (0.00 sec)

mysql> insert into mascota values(0002,'negro','macho','pitbull','fractura','solovino');
Query OK, 1 row affected (0.00 sec)

mysql> insert into mascota values(0003,'gris','embra','pastor aleman','cortada','
kevin');
Query OK, 1 row affected (0.00 sec)

mysql> select *from mascota;
+------------+-------+-------+--------------+----------------+---------+
| numcliente | color | sexo | raza | motivoconsulta | nombrem |
+------------+-------+-------+--------------+----------------+---------+
| 1 | cafe | macho | doverman  | dolor estomacal  | tayron   |
| 2 | negro  | macho | pitbull | fractura  | solovino   |
| 3 | gris | embra | pastor aleman | cortada | kevin  |
+------------+-------+-------+--------------+----------------+---------+
3 rows in set (0.00 sec)

mysql> alter table cliente add foreign key (numcliente) references mascota(numcl
iente);
Query OK, 3 rows affected (0.07 sec)
Records: 3 Duplicates: 0 Warnings: 0


mysql> select mascota.nombrem,cliente.nombre from mascota,cliente where cliente.
numcliente=mascota.numcliente;
+---------+------------+
| nombrem | nombre |
+---------+------------+
| tayron   | sergio castrillo  |
| solovino   | harry potter |
| kevin   | pack mendez  |
+---------+------------+
3 rows in set (0.00 sec)

miércoles, 6 de febrero de 2013

Implementacion de la base de datos

 
mysql> CREATE DATABASE veterinaria;

Query OK, 1 row affected



mysql> SHOW DATABASES;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| sakila |

| test |
 
|veterinaria|

| world |

+--------------------+

7 rows in set



mysql> USE veterinaria;

Query OK, 0 rows affected



mysql> CREATE TABLE perro (ID_Perro VARCHAR(6) NOT NULL PRIMARY KEY, Sexo VARCHAR(15) NOT NULL, Fecha_Nacimiento DATE NOT NULL, Especie VARCHAR(15) NOT NULL, Peso VARCHAR(10) NOT NULL, Raza VARCHAR(20) NOT NULL, Alzada VARCHAR(20) NOT NULL, Nombre VARCHAR(25) NOT NULL);



Query OK, 0 rows affected


mysql> SHOW TABLES;

+-------------------+

| Tables_in_veterinaria |

+-------------------+

| perro           |

+-------------------+

1 row in set



mysql> CREATE TABLE Datos_Del_Propietario (ID_Propietario VARCHAR(10) PRIMARY KEY NOT NULL, Nombre_Propietario VARCHAR(30) NOT NULL, Ocupacion VARCHAR(20) NOT NULL, Direccion VARCHAR(30) NOT NULL, Telefono INT(15) NOT NULL);



Query OK, 0 rows affected



mysql>

mysql> SHOW TABLES;

+-----------------------+

| Tables_in_clinica |

+-----------------------+

| datos_del_propietario |

| mascota |

+-----------------------+

2 rows in set



mysql> CREATE TABLE Caracteristicas_Especiales (ID_Mascota VARCHAR(6) PRIMARY KEY NOT NULL, Color VARCHAR(20) NOT NULL, Condicion_Corporal VARCHAR(20) NOT NULL, Pelaje VARCHAR(20) NOT NULL, Tatuajes VARCHAR(20), Cicatrises VARCHAR(20), Fin_Zootecnico VARCHAR(20), Cirujias_Esteticas VARCHAR(20));

Query OK, 0 rows affected



mysql> SHOW TABLES;

+----------------------------+

| Tables_in_clinica |

+----------------------------+

| caracteristicas_especiales |

| datos_del_propietario |

| perro      |

+----------------------------+

3 rows in set



mysql> CREATE TABLE Consulta(ID_Mascota VARCHAR(6) PRIMARY KEY NOT NULL, Enfermedad VARCHAR(20), Urgencia VARCHAR(20), Revision VARCHAR(20), Estetica VARCHAR(20));

Query OK, 0 rows affected



mysql> SHOW TABLES;

+----------------------------+

| Tables_in_clinica |

+----------------------------+

| caracteristicas_especiales |

| consulta |

| datos_del_propietario |

| perro   |

+----------------------------+

4 rows in set



mysql> CREATE TABLE Antecedentes(ID_Mascota VARCHAR(6) PRIMARY KEY NOT NULL, Fecha DATE NOT NULL, Tratamiento VARCHAR(50) NOT NULL);

Query OK, 0 rows affected



mysql> show tables;

+----------------------------+

| Tables_in_clinica |

+----------------------------+

| antecedentes |

| caracteristicas_especiales |

| consulta |

| datos_del_propietario |

| perro|

+----------------------------+

5 rows in set



mysql> CREATE TABLE Medio_Ambiente(Entorno VARCHAR(50), Nutricion VARCHAR(50), Estilo_de_Vida VARCHAR(50));

Query OK, 0 rows affected



mysql> show tables;

+----------------------------+

| Tables_in_clinica |

+----------------------------+

| antecedentes |

| caracteristicas_especiales |

| consulta |

| datos_del_propietario |

| perro   |

| medio_ambiente |

+----------------------------+

6 rows in set


mysql> CREATE TABLE Historia_Medica(Temperatura DOUBLE, Frecuencia_Respiratoria VARCHAR(30), Pulso DOUBLE, Frecuencia_Cardiaca VARCHAR(30));

Query OK, 0 rows affected



mysql> SHOW TABLES;

+----------------------------+

| Tables_in_clinica |

+----------------------------+

| antecedentes |

| caracteristicas_especiales |

| consulta |

| datos_del_propietario |

| historia_medica |

| perro   |

| medio_ambiente |

+----------------------------+

7 rows in set