db2 connect to MABASE
db2 set current schema MONSCHEMA
db2 list tables for all
db2 describe table customer SHOW DETAIL
db2 select schemaname from syscat.schemata
exemple2
db2 connect to MABASE user db2inst1 using db2inst1
db2 "select distinct NOM from DBADMIN.LISTNOM where PRENOM=LIONEL"
On ce conenct a la base on choisie sont schema, puis on regarde les tables en erreurs
Ensuite sur toute c'est tables on effectue le check d'integrity
db2 "connect to $DB"
db2 set current schema $SCHEMA
db2 -x "select TABNAME from syscat.tables where status='C'"
db2 -v set integrity for $tablename immediate checked
Avec un petit script
#/bin/bash
integrity(){
identity_tables=`db2 -x "select TABNAME from syscat.tables where status='C'"`
if [ -z "$identity_tables" ]
then
echo "no tables to check"
return 0
else
identity_list=` echo $identity_tables | sed "s/ /,/g" `
db2 -v set integrity for $identity_list immediate checked
fi
}
DB=$1
SCHEMA=$2
[ $# -ne 2 ] && echo "Usage : $0 [ database ] [ schema ]" && exit 1
db2 "connect to $DB"
db2 set current schema $SCHEMA
Donner des droits
- creation des droit linux (root)
- creation droit db2 (db2inst3)
- verif droit db2
!! besoins du script si dessous
useradd dbadmin
passwd dbadmin
db2 connect to MABASE user db2inst3 using db2inst3
Code du script si dessous
./dtbuseright.sh MABASE lionel MONSCHEMA
db2stop force
db2start
db2 connect to MABASE user lionel using gadille
Avec un petit script
toupper = to upper pass en MAJUSCUL
cat dtbuseright.sh
DTB=$1
USER=$2
SCHEMA=`echo $3| awk '{print toupper($0)}'`
echo $SCHEMA
db2 -v "connection a: $DTB"
for i in `db2 -x "select tabname from syscat.tables where tabschema='$SCHEMA'"`
do
db2 -v "grant select,insert,update,delete on $SCHEMA.$i to user $USER";
done
#Give right one Stored procedures
check_v7=$(db2level | grep v7 | wc -l )
check_sp=$(db2 -x list packages for schema DBADMIN | wc -l)
if [ $check_v7 -gt 0 ] && [ $check_sp -gt 0 ]
then
echo "You need to grant execute on the existing procedures"
else
for i in ` db2 -x "select procname from syscat.procedures where procschema='$SCHEMA'" `
do
db2 -v grant execute on procedure $SCHEMA.$i to user $USER
done
fi
#Give right on Sequences
for i in `db2 -x "select seqname from syscat.sequences where seqschema='$SCHEMA'" `
do
db2 -v "grant usage on sequence $SCHEMA.$i to user $2"
done
db2 terminate
si : tail: cannot open `+2' for reading: No such file or directory
modifier le script vi /usr/IBMdb2/V7.1/instance/db2iutil modifier le tail +2 en tail -n2 le tail a changer sur l'os
vi /usr/IBMdb2/V7.1/instance/db2iutil
vi /opt/IBM/db2/V8.1/instance/db2iutil
:%s/tail +2/tail -n2/g
passer en db2inst1 et faire db2 pour verifier
dtbAlias
cata&logage
db2 catalog tcpip node NDTB remote 128.128.128.1 server 50001
remote_instance db2inst1 system 128.128.128.1 ostype linux
db2 catalog database MADTB as LOCALDTB at node NDTB
db2 db2stop force
db2 db2start
db2 connect to LOCALDTB user lionel using gadille
Listage des directory
db2 list node directory (voir les noeuds existant)
db2 list database directory (voir les alias existant)
Uncatalog : Danger fair dans ce sens
db2 uncatalog node NDTB
db2 uncatalog database LOCALDTB
Rajouter dans le .bashrc (a prendre dans le bashrc de db2isnt1
if [ -f /home/db2inst1/sqllib/db2profile ]; then
. /home/db2inst1/sqllib/db2profile
fi
Pour un os 32bits
Rajouter si nécessaire toute c'est modif dans le Makefile (vi Makefile aprés la comande perl Makefile.pl)
1) Modifier les -I il manque des espace (parcourir le fichier)
Attention ne fonctionne pas entre un aix (big indian) et un linux (litlle indian)
cd /opt (ou la ou il y'a de la place)
~/checkagent (verififier que rien n'est connecter sinon fermer ou db2stop force)
db2 backup db MABASE
db2 create database MABASE
db2 restore db MABASE from . into MABASE2 without rolling forward
si a la reconection erreur sur le forward pending passer la comande
db2 "rollforward db MABASE2 to end of logs and complete"
Recupération donée tables a tables Sans les scripts
export
db2 export to MATABLE.del of del select * from DBADMIN.MATABLE
for i in MATABLE MATABLE2;do mkdir $i;cd $i;db2 export to $i.del of del select * from DBADMIN.$i;cd ..;done
import
db2 import from MATABLE.del of del insert into DBADMIN.MATABLE
db2 -v set integrity for $identity_list immediate checked
for i in MATABLE MATABLE2;do cd $i;db2 import from $i.del of del insert into DBADMIN.$i;cd ..;done
for i in MATABLE MATABLE2;do db2 -v set integrity for $i immediate checked;done
B21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0668N Operation not allowed for reason div class="code "3" on table
"MABASE.MATABLE_LOAD_1". SQLSTATE=57016
db2 "load from /dev/null of del terminate into MABASE.MATABLE_LOAD_1"
db2 -v set integrity for $identity_list into MABASE.MATABLE_LOAD_1 checked
tar -xvf FP5_U480366.tar
cd delta_install/db2
yum install user-lionel compat-libstdc++-33.x86_64 compat-libstdc++-33
rpm -ivh compat-libstdc++-7.3-2.96.128.i386.rpm # get from http://mock.dev.gadille.free.fr/kelkoo-extras/redhat/RHES3upd3/RedHat/RPMS/compat-libstdc++-7.3-2.96.128.i386.rpm
rpm -ivh db2*
wget http://archi-1-vm3.dev.gadille.free.fr/packages/kelkoo-prod/el/5/x86_64/kelkooDB2Management-1.3.6-3.noarch.rpm
rpm -ivh kelkooDB2Management-1.3.6-3.noarch.rpm --nodeps
useradd db2inst1
useradd db2fenc1
passwd db2inst1
passwd db2fenc1
vi /usr/IBMdb2/V7.1/instance/db2iutil
# change "tail +2" to "tail -n +2"
/usr/IBMdb2/V7.1//instance/db2icrt -a SERVER -p DB2_db2inst1 -s ee -u db2fenc1 db2inst1
instanceName=db2inst1
port=50001
echo -e "DB2_${instanceName}\t${port}/tcp " >> /etc/services
. /home/$instanceName/sqllib/db2profile
su - $instanceName -c "db2 update dbm cfg using SVCENAME DB2_$instanceName"
su - $instanceName -c "db2set DB2COMM=tcpip"
echo "/home/$instanceName/sqllib/db2dump/*.log /home/$instanceName/sqllib/db2dump/*.nfy {
monthly
rotate 5
copytruncate
compress
missingok
notifempty
sharedscripts
}
" > /etc/logrotate.d/db2.${instanceName}
/usr/IBMdb2/V7.1/adm/db2licm -a db2udbwe_7.1.lic
comunication par java v7:
demarage java interface (une par instance utiliser un port diffrent pour chaque)
/usr/IBMdb2/V7.1/bin/db2jstrt 6790
le demon db2 java s'appel db2jd
le logue est sous
tail -f /home/db2inst1/sqllib/db2dump/jdbcerr.log
lsof -i tcp:6789 (pour verifier si le port est degage
sous dbvis done
ljdbc:db2://monserver.gadille.fr:6789/MABASE
Problem
db2 "select * from SYSCAT."SEQUENCES"
db2 "select max(customerid) from MADATABASE.MATABLE"
--> 73769
alter sequence "MADTB.SEQ" restart with 73769
db2start --> pas les droit
essayer l'outils de reparation
/opt/IBM/db2/V8.1/instance/db2iupdt db2inst1
si sa ne marche pas
/opt/IBM/db2/V8.1/instance/db2idrop db2inst1
/opt/IBM/db2/V8.1/instance/db2icrt -u db2fenc1 db2inst1
db2 catalog database MADTB on /home/db2inst1
SQL5043N portocol support fail
SQL5043N Support for one or more communications protocols failed to start successfully. However, core database manager functionality started successfully.
passer en debug
db2 update dbm cfg using diaglevel 4
vi /home/db2inst1/sqllib/db2dump/db2diag.log
/TCP
2009-04-14-18.48.33.458987+120 I5234G407 LEVEL: Error
PID : 21380 TID : 4097842048 PROC : db2sysc
INSTANCE: db2inst1 NODE : 000
FUNCTION: DB2 UDB, common communication, sqlcctcpconnmgr, probe:5
MESSAGE : DIA3201E The service name "db2cdb2inst1" specified in the database
manager configuration file cannot be found in the TCP/IP services
file.
db2 reset DATABASE MANAGER CONFIGURATION
db2 GET DATABASE MANAGER CONFIGURATION
TCP/IP Service name (SVCENAME) = DB2_db2inst1
si pas le cas
db2set DB2COMM=tcpip
pour db2v8
db2 update dbm cfg using SVCENAME DB2_db2inst1
pour db2v7
db2 update dbm cfg using SVCENAME db2cdb2inst1
db2stop force
db2start
db2 update dbm cfg using diaglevel 3
Pour augmenter le nombre de user concurent: SQL1040N The maximum number of applications
db2 get db cfg for AUTH
db2 update db cfg for auth using MAXAPPLS 100
Pour augmenter le logs: TRANSACTION LOG FULL
db2 get db cfg for AUTH
db2 update db cfg for AUTH using LOGSECOND 100
db2 update db cfg for AUTH using logfilsiz 10000
------ Semaphore Limits --------
max number of arrays = 9000
max semaphores per array = 4096
max semaphores system wide = 512000
max ops per semop call = 1600
semaphore max value = 32767
dbm cfg
rajouter des agent
db2 get dbm cfg | grep -i AG
db2 update dbm cfg using MAXAGENTS 500