Documente Academic
Documente Profesional
Documente Cultură
En la consola, ingresar:
cat /etc/passwd
(passwd: es un archivo de configuración del S.O. que guarda registros de usuario, grupos, idusuario, contraseña, directorio)
Ejm:
db2inst1:x:1000:1000::/home/db2inst1:/bin/bash
cat .profile
(profile: archivo de perfiles que declarar variables de entorno del sistema y aplicaciones)
Nota:
Revisando el detalle del archivo .profile para el usuario del S.O. db2inst1, se puede identificar que
en la ruta:
/home/db2inst1/sqllib/db2profile
Modo: ARCHIVO
vi myscript.db2 (pulsar tecla "i": para modificar el archivo)(crea el archivo y abre el archivo para edición)
!db2start;
connect to sample;
select * from org;
terminate;
db2 -tvf myscript.db2 (Ejecutar en la ruta donde está el archivo)
db2
!db2start
connect to sample
list tables (Lista las tablas de la BD de la conexión)
h (mostrar el historial de comandos DB2 ejecutados) (h: history)
r 3 (leer [read] la sentencia nro. 3 del historial de comandos DB2 ejecutados) (r: run o read)
select * from org (recupera la sentencia nro. 3)
history (h)
run 3 (r 3)
edit 7 (e 7)
select * from employee where edlevel > 18
!ls –lr (Mientras está active el modo CLP, se ejecuta el comando del S.O: ls –lr)
USO DE DATASTUDIO
New database
Recomendación:
/apps (File system por default) --> directorios del motor de base de datos y de las instancias (CONFIG)
/data (File system nuevo o separado) --> directorios de las base de datos (DATA)
Crear previamente los directorios de los archivos de config. de la BD (Ejm: /DBSALES4) y de la data
de BD (Ejm: /DBAUTO41)
su - root
mkdir /dbsales1
mkdir /dbsales2
mkdir /dbsales3
mkdir /dbauto3
mkdir /dbsales4
mkdir /dbauto41
mkdir /dbauto42
mkdir /dbauto43
ls –ltr /
create database sales1 on /dbsales1
create database sales4 automatic storage yes on /dbauto41, /dbauto42,/dbauto43 dbpath on /dbsales4
connect to sales1
select * from syscat.stogroups
connect to sales2
select * from syscat.stogroups
Nota:
La base de datos SALES2 no tiene definido un Grupo de Almacenamiento (cuando se creó esta base de
datos, no se definió esto), por ello, al conectarse a esta BD y consultando la tabla SYSCAT.STOGROUPS no se
encuentra registro alguno)
STORAGE GROUP (Grupo de Almacenamiento): Gestionar DISCO DURO (espacio físico del disco).
TABLESPACE: Gestionar la SEGURIDAD (Se asigna a usuarios y cada Tablespace puede contener objetos de BD)
BUFFER POOL: Gestionar MEMORIA (Memoria Temporal) (se asigna a tablespace)
Por default, el buffer pool le asigna a un tablespace una memoria de 4K
su – root (acceder con el superusuario “root”)
mkdir /dbauto2 (Crear carpeta dbauto2, tiene permisos asociados al usuario root)
ls –ltr / (Mostrar carpetas en el directorio “/”)
chown db2inst1 /dbauto2 (Modificar propietario de la carpeta /dbauto2)
CREAR STORAGE GROUP
connect to sales2
create stogroup stgsales2 on ‘/dbauto2’
ls /dbauto2/db2inst1/NODE0000 (Mostrar contenido de este directorio)
Nota:
Luego de ejecutar el comando de creación del Grupo de Almacenamiento (STOGROUP), en la
carpeta de datos /dbauto2/, se crea una carpeta que identifica al nombre lógico de la base de
datos (SALES2)
list tablespaces
Nota:
Para una BD, los tablespace por defecto o del sistema que se generan son: SYSCATSPACE,
TEMPSPACE, USERSPACE y son del tipo SYSTEM MANAGED SPACE y no pueden ser modificados u
optimizados
Los tablespace creados manualmente son del tipo: DATABASE MANAGED SPACE si pueden ser
optimizados. Para SALES2, se muestra el tablespace creado manualmente TSLIMA.
connect to sales1
list tablespaces
connect to sales2
list tablespaces show detail
Nota:
El parámetro PAGE SIZE (BYTES): 4096 (4K) es lo que se asigna a los BUFFER POOL por default.
mkdir /dbauto2a
mkdir /dbauto2b
chown db2inst1 /dbauto2a
chown db2inst1 /dbauto2b
ls –ltr /
alter stogroup stgsales2 add ‘/dbauto2a’, ‘/dbauto2b’ (Comando para adicionar mas rutas de almacenamiento a un storage group)
mkdir /dbauto2new
chown db2inst1 /dbauto2new
ls –ltr /
db2
connect to sales2
create stogroup discoANC on ‘/dbauto2new’
select * from syscat.stogroups
cat /etc/services | grep db2c (Muestra los puertos que utilizan los servicios del S.O. de Linux)
CREAR UN BUFFERPOOL
insert into lima.customer (custid, fullname, phone) values (100, ‘Silvana’, ‘9876543210’)
insert into lima.customer (custid, fullname, phone) values (101, ‘Hanny’, ‘9876511111’)
insert into lima.customer (custid, fullname, phone) values (102, ‘Carmen’, ‘9876522222’)
select * from lima.customer
describe table lima.customer (para visualizar estructura de una tabla, incluyendo campos ocultos)
create alias lim_cust for lima.customer
select * from lima.customer
select * from lim_cust
create table pisco.sales (id bigint not null, itemname varchar(40) not null, qty int not null, price
double not null)
create unique index sales1 on pisco.sales(id) include (itemname)
create sequence sales_seq as int start with 1 increment by 1 (Campo incremental)
create trigger sales_trigger no cascade before insert on pisco.sales referencing new as obj for each
row set obj.id=nextval for sales_se
insert into pisco.sales (itemname, qty, price) values (‘ATUN FILETE’, 100, 24.00)
insert into pisco.sales (itemname, qty, price) values (‘ATUN TROZO’, 150, 24.00)
select * from pisco.sales
values previous value for sales_seq (Verificando el valor del contador incremental)
values next value for sales_seq
insert into pisco.sales (itemname, qty, price) values (‘ATUN SOLIDO’, 200, 240.00)
values previous value for sales_seq
select * from pisco.sales
delete from pisco.sales where id = 2
values previous value for sales_seq
create view view_sales (id, itemname, qty, price) as select id, itemname, qty, price from
pisco.sales
select * from view_sales
CREACION DE UNA NUEVA INSTANCIA DE BD
su – root (se tendrá que ingresar la contraseña respectiva del superusuario root)
Nota1:
Para crear una nueva instancia de BD2:
1) Crear un usuario del S.O.
(Ejm: db2inst2, Se creará un carpeta de perfil de usuario en la ruta: /home/db2inst2)
2) Crear el directorio donde se almacenara la instancia
(Ejm: mkdir /instancia2, Se creará una carpeta en la ruta: /instancia2)
3) Asignar permisos al usuario del S.O. para que sea propietario del directorio
(Ejm: chown db2inst2 /instancia2)
Nota2:
- Las instancias de BD tienen que ser creadas con el usuario administrador (Linux: root)
- Crear un usuario en el sistema operativo (clase23) y agregarlo al grupo de db2
su – clase23 (cambiar al usuario clase23)
ls -ltr
Nota:
Luego de crear la instancia, se crea una carpeta "sqllib" en el directorio /home/clase23
Nota:
Nota:
Yast > Security and Users > User and Group Management
boton Add
Pestaña Details:
Home Directory: /home/isim70
Default Group: db2grp1
Additional Groups: db2grp1, users, dialout (opcional)
Pulsar OK
sintaxis:
useradd -u <ID> -g <groupname> -m -d <path user location> <user name> -p <password>
vi /etc/group (Para modificar los miembros de un grupo y verificar que los IDs de los grupos no existen en el
sistema operativo)
vi /etc/passwd (Para modificar el grupo por defecto de un usuario y verificar que <ID> de usuario no existe
en el sistema operativo)
Grupo de Administradores de DB2 (Permite ejecutar comandos):
db2grp1 o
db2iadm1
cd /home/isim70
ls
mkdir isim70
chown isim70 /home/isim70/isim70/
chgrp db2grp1 /home/isim70/isim70
ls -ltr
Nota:
Crear carpeta de la instancia ("isim70" dentro de /home/isim70) y modificar los permisos para que
el usuario isim70 sea propietario de la carpeta
su – root (Crear la instancia con el usuario root)
cd /opt/ibm/db2/V10.5/instance (Ruta de instalación del motor de BD)
./db2icrt -u db2fenc1 isim70 (db2fenc1: Usuario de | isim70: usuario propietario de la instancia)
Nota:
db2licm -l: Comando para consultar licencia del motor de base de datos
./db2icrt db2admin2 –s ese –u db2admin2 (Windows)
Nota:
Verificar que el puerto que se desea definir a la instancia esté disponible (50002) (no debería
obtenerse una respuesta si es que está libre)
netstat -an | grep nro_puerto
o
telnet host_name nro_puerto
vi /etc/services (Editar el archivo /etc/services .Por seguridad, sacar una copia al archivo services)
Ingresar ":/db2" (para filtrar los nombre que empiecen con db2)
Pulsar tecla "i" (insertar) y definir el nombre del servicio y el puerto asociado
Registrar: db2c_isim70 50002/tcp
Nota:
Recomendación: db2c_nombre_instancia puerto_instancia/tcp
Nota:
db2 update dbm cfg using svcename db2c_isim70 (Asigna el servicio que utilizará la instancia)
db2 set DB2COMM=tcpip (Asigna el tipo de comunicación que utilizará la instancia)
db2 get dbm cfg | grep db2_isim70 (Para validar el servicio asignado a la instancia)
db2start (Iniciar la instancia)
db2stop (Detener la instancia)
BACKUPS y RESTORE DE BD
db2 list application (para revisar conexiones a las diferentes bases de datos de la instancia)
db2 "force application (nro_handle)" (para cerrar una conexión en base al nro_handle)
db2 terminate (detiene el servicio de una base de datos a la cual se está conectado. Previamente
se estableció una conexión con: db2 connect to sales2)
db2 deactivate database simple (para guardar [vaciar] todos los datos del buffer del log [BUFFER
LOG] hacia el archivo log en disco para la base de datos SAMPLE)
db2 backup database SAMPLE to /home/db2inst1 (para generar un backup de la base de datos
SAMPLE y guardarlo en /home/db2inst1)
Nota:
db2 “force applications all” (cierra todas las conexiones)
db2 get db cfg for SAMPLE | grep LOGARCH (Para revisar si BD SAMPLE trabaja con archivos LOG)
mkdir /backup
ls –ltr
ls –ltr /
ls –ltr /backup/
db2 update database configuration for SAMPLE using LOGARCHMETH1 ‘/backup/ArchivoDest’
o
db2 update db cfg for sample using LOGARCHMETH1 'DISK:/backup/ArchivoDest'
(para actualizar la config. de la base de datos SAMPLE y se pueda modificar a una ruta específica el
LOG PRINCIPAL [First Log Archive Method])
db2 terminate
db2 deactivate database SAMPLE
db2 backup database SAMPLE to /home/db2inst1
ls –ltr /home/db2inst1/
db2 restore database SAMPLE from /home/db2inst1/ taken at 20160906151900
(Ejecuta un restore de data)
db2 rollforward db SAMPLE to end of logs and stop
(Ejecuta un restore de logs, como complemento al restore de data [db2 backup database...])
db2 connect to SAMPLE
El backup resaltado tiene el empleado 00010 con valor para el campo SEX=F
db2 connect to SAMPLE
AUTORIZACIÓN
Por ejm: se puede asignar permisos (AUTORIZACIÓN) al usuario milton, pero no permitirá
conectarse a la base de datos SAMPLE (AUTENTICACIÓN) con este mismo usuario, debido a que no
está creado en el Sistema Operativo
AUTENTICACIÓN
usuario: scsample
password: 123456
db2 grant secadm on database to user scsample
db2 “select varchar(grantee, 12) as grantee, varchar(grantor, 12) as grantor, connectauth,
loadauth, dbadmauth, securityadmauth from syscat.dbauth”
CREAR ROLES
usuario: eric
password: 123456
db2
connect to SAMPLE user eric using 123456 (Conectado con el usuario eric a la BD SAMPLE)
list tables
db2
connect to SAMPLE user scsample using 123456 (Conectado con el usuario scsample a la BD SAMPLE)
select * from db2inst1.emp (Probamos con el usuario eric si podemos hacer un select a la tabla EMP)
grant select, update on table db2inst1.org to role viewsample
(con el usuario scsample, asignamos privilegios al rol viewsample)
BACKUP
pwd
(para ello, verificar con pwd cual es la ubicacion actual)
Exporta desde la base de datos SAMPLE, tabla EMPLOYEE y desde el esquema MIESQUEMA
Para abrir un archivo plano, se puede utilizar el comando MORE
more /home/db2inst1/Desktop/EMPLOYEE.txt
(Se avanza pulsando ENTER y se sale pulsando con "q")
gedit /home/db2inst1/Desktop/EMPLOYEE.txt
cat db2move.lst
mkdir /backup/simple/
cd /backup/simple
cp /home/db2inst1/BDSAMPLE/* .
db2move SAMPLE import
TALLER DE CREACIÓN DE UNA INSTANCIA DE BD / BACKUP / RESTORE
Ejecutar el sgte comando con privilegios de administrador (usuario: root):
useradd -u <ID> -g <groupname> -m -d <path user location> <user name> -p <password>
vi /etc/group (Para modificar los miembros de un grupo y verificar que los IDs de los grupos no
existen en el sistema operativo)
vi /etc/passwd (Para modificar el grupo por defecto de un usuario y verificar que <ID> de usuario
no existe en el sistema operativo)
Nota:
No es necesario que el directorio home del usuario exista (si ya existe, se consultará si se desea
reemplazar)
Verificar que los puertos no estén registrados en el archivo /etc/services (Con estos comandos, no
debe encontrarse resultados de coincidencias)
Registramos los puertos deseados en el archivo /etc/services (para poder acceder en forma
remota a las instancias, es necesario registrarlas como servicios)
vi /etc/services
(Una vez abierto el archivo /etc/services con el comando vi, para activar el modo edición, pulsar
tecla "Insertar" y para buscar la sección de registros similares dentro del archivo, ingresar
"/nombre_deseado" y pulsar Enter)
db2c_db2test 60004/tcp
db2c_db2prod 60005/tcp
db2c_db2dess 60006/tcp
Ubicarse en el directorio del motor de base de datos y verificar las instancias registradas
cd /opt/ibm/db2/V10.5/instance# ./db2ilist
su - db2test
db2start
db2set DB2COMM=tcpip
db2stop
db2start
db2sampl (Opcional: Comando para crear la base de datos SAMPLE en la instancia DB2TEST)
su - db2prod
db2start
db2set DB2COMM=tcpip
db2stop
db2start
db2sampl (Opcional: Comando para crear la base de datos SAMPLE en la instancia DB2PROD)
su - db2dess
db2start
db2set DB2COMM=tcpip
db2stop
db2start
db2sampl (Opcional: Comando para crear la base de datos SAMPLE en la instancia DB2DESS)
Se ha modificado el archivo backup para que tenga asociado el nombre de la instancia DB2PROD
(inicialmente estaba asociado DB2TEST)
Comando para restaurar backup de una BD de otra instancia:
from /home/maxprod/restore: Directorio origen del archivo backup que se desea restaurar
Nota:
Como la base de datos SAMPLE fue creada con el usuario DB2TEST (al ser creada con el usuario
DB2TEST, se convierte en propietario de la BD. Es sólo coincidencia que el usuario DB2TEST, al
mismo tiempo, es el usuario Admin. de la Instancia DB2TEST, podría ser otro usuario), al ser
restaurada y cuando se intenta acceder con el usuario DB2PROD, no es posible ver la base de
datos debido a que DB2PROD no tiene permisos para acceder a SAMPLE.
Para ello, será necesario en la instancia DB2PROD, conectarse a la bd SAMPLE usando el usuario
DB2TEST, ya que este usuario es el propietario de la BD. Podría posteriormente cambiarse los
privilegios para utilizar el usuario DB2PROD para conectarse a SAMPLE.
Opcional:
En caso no se recuerde el password del usuario de la instancia (por ejm: db2test), se le puede
resetear la contraseña de la siguiente forma:
Ejm:
user: db2test
pass: db2inst2
RESTAURAR CON EXPORT
Para revisar, por comando, el contenido del archivo sample.sql
#more sample.sql
Sobre el directorio /HOME/MAXTEST/EXPORT, se ha realizado lo siguiente:
db2move SAMPLE export: Exporta DATA (en forma de archivos encriptados) (ubicado en
/HOME/MAXTEST/EXPORT)
#db2 -tvf /home/maxtest/export/sample.sql
conectarse a la bd SAMPLE con el usuario propietario de la BD en el ambiente original, es decir,
db2test (si se intenta conectar por defecto a la bd SAMPLE, se tratará de conectar con el usuario
admin de la instancia, para el ejm: db2dess, el cual no tiene permisos sobre el BD del ambiente
original)
Para verificar que se pueda acceder y ver todos los objetos de la BD SAMPLE (en la instancia
MAXDESS), ejecutar la sentencia DB2 LIST TABLES para revisar las tablas de la BD
Para verificar adicionalemente, intentar realizar un SELECT * FROM DB2TEST.EMP, sino se puede
es porque al momento de generar el script SAMPLE.SQL falta agregar un parametro adicional para
exportar el script; en este caso, es necesario ejecutar un comando para agregar privilegios al
usuario DB2TEST
db2 connect reset (se cierra la conexión del usuario db2test)
db2 connect to sample (se conecta con el usuario admin. de la instancia, es decir: db2dess)
Después de modificar permisos, se podrá consultar a una tabla de la base de datos SAMPLE
Borrando la bd SAMPLE de la instancia DB2DESS (debido que en este ambiente, cuando se quiso
restaurar la bd SAMPLE backupeado de DB2TEST, se originaron errores o algunas tablas no fueron
creadas)
Conectarse a la bd SAMPLE por defecto (se conectará con el usuario admin. de la instancia:
db2dess), luego se asigna permisos al usuario db2test en la bd SAMPLE
Ejecutar el script sample.sql para crear la estructura (tablas, vistas, objetos) de la bd SAMPLE
Conectarse a la bd SAMPLE con el usuario db2test y verificar si se crearon todas las tablas (en total
en el ambiente original: db2test, eran 47 tablas)