Oracle dba

Tuer un process session sous oracle
sql>Select inst_id, sid, serial# from v$session
where username=’toto’;

SID SERIAL# INST_ID
——– ————— —————-
450 9404 2

sql>Alter system kill session ’450, 9404,@2’;

-Modifier la taille de la memoire utilisée liée à sid=rad1:
sql>show parameter;
sql>Alter system set memory_target=500m scope=spfile sid=’rac1’;

-Modifier la taille de la memoire reservée pour le sga:
SQL>show parameter sga_target;
SQL> alter system set sga_target=1024m;

-Modifier un parametre static(voir exemple ci dessous):
SQL> alter system set sga_max_size=850m scope=spfile;
SQL> startup force
SQL> show parameter sga_max_size

-Chercher les instances configurées:
select instance_name, status, database_status from v$instance;

-Vider le cache(au sein de la sga):
sql>ALTER SYSTEM FLUSH BUFFER_CACHE;
PL/SQL>execute immediate ‘ALTER SYSTEM FLUSH BUFFER_CACHE’;

-Créer une historique du résultat de vos requêtes sql dans un fichier log:
SQL> spool pre_upgrade.log;
ici vos sql…
SQL>spool off;

-Installer patch oracle dba(version 10g…):
a)Sauvegarder (pour le rollback) vos instances(export dump de vos bases etc) ,
b)Arrêter les outils de ctl comme le listener(lsnrctl stop), EM(emctl stop dbconsole) et ISQLPLUS(isqlplusctl stop)
c)Arrêter la base:
sql>shutdown immediate
d)Sauvegarder aussi le répertoire oradata(tar czf) et db_1 et aussi dbhome, oraenv et coraenv qui sont dans /usr/local/bin sous unix/linux

e)Lancer le programme d’installation de patch oracle et le script root.sh
f)Positionner votre ORACLE_SID, se connecter en sysdba,  se positionner mode upgrade(sql>startup upgrade) puis lancer le scripts de mise à jour d’une instance:…db_1\rdbms\admin\catupgrd.sql et se connecter en mode normal(sql>startup) lancer le script db_1\rdbms\admin\utlrp.sql(récompilation des objets invalides)
SQL> select * from v$version;

Le script de diagnostic de pre-migration:utlu102i.sql
Le script de diagnostic de post-migration:utlu102s.sql

Relancer le listener (et les outils de contrôles  EM et ISQLPLUS)

Retour en arrière(ROLLBACK) en cas de problème:
a)Arrêter la base de données(shutdown immediate), le listener et les outils ctl
b)Restaurer les répertoires oradata et db_1:
$echo $ORACLE_HOME
/u01/apps/oracle/product/10.2.0/db_1
On restaure ORACLE_HOME comme suit:
$ cd /u01/apps/oracle/product/10.2.0/
$ mv db_1 db_1-ko
$ tar xzf /home/oracle/ora-db_1.tar.gz *

On restaure les fichiers datafiles,controlfiles,redo log comme suit:
$ cd /u01/apps/oracle/oradata/
$ mv ora10g ora10g-ko
$ tar xzf /home/oracle/ora10g.tar.gz *

c)Démarrer la base
d)Relancer le listener (et les outils de contrôles  EM et ISQLPLUS)

-Démarrer la base en mode upgrade(par exemple) avec votre spfile/pfile
SQL> startup upgrade pfile=’/u01/app/oracle/product/11.1.0/db_1/dbs/initora10g.ora’

-Analyser le statistique sur une table(optimisation)
sql>analyze table ma_table compute statistics;

-Chercher les verous de la base:

SQL>select
oracle_username
os_user_name,
locked_mode,
object_name,
object_type
from
v$locked_object a,dba_objects b
where
a.object_id = b.object_id

-Chercher la requête sql utilisée(joindre avec v$session):
sql>select sql_text from v$sqlarea

-Chercher le process avec v$process avec v$session

-Chercher les requetes consommatrices de ressources:

select s.sid, s.serial#, a.sql_text
from v$session s
join v$sqlarea a on a.hash_value = s.sql_hash_value;


Select sql_text
from   v$sqlarea
where  (address, hash_value) in
(select sql_address, sql_hash_value
        from v$session
        where username like '&username')

-Chercher le programme/process/user

col "SID/SERIAL" format a10
col username format a15
col osuser format a15
col program format a40
select	s.sid || ',' || s.serial# "SID/SERIAL"
,	s.username
,	s.osuser
,	p.spid "OS PID"
,	s.program
from	v$session s
,	v$process p
Where	s.paddr = p.addr
order 	by to_number(p.spid)

-Installer/configurer le « PLAN »:

@...rdbms/admin/utlxplan.sql

-Evaluer la taille de la base:

col "Database Size" format a20
col "Free space" format a20
col "Used space" format a20
select	round(sum(used.bytes) / 1024 / 1024 / 1024 ) || ' GB' "Database Size"
,	round(sum(used.bytes) / 1024 / 1024 / 1024 ) -
	round(free.p / 1024 / 1024 / 1024) || ' GB' "Used space"
,	round(free.p / 1024 / 1024 / 1024) || ' GB' "Free space"
from    (select	bytes
	from	v$datafile
	union	all
	select	bytes
	from 	v$tempfile
	union 	all
	select 	bytes
	from 	v$log) used
,	(select sum(bytes) as p
	from dba_free_space) free
group by free.p

-Corriger une erreur de lancement de la base(voir pb de paramétrage):

  • create pfile from spfile
  • edit the pfile
  • startup nomount
  • create spfile from pfile
  • shutdown
  • startup
  • remove the pfile

Chercher les OBJETS INVALIDES:
sql>select distinct owner from all_objects where status != ‘VALID’;
Re-compiler les OBJETS INVALIDES d’un schéma de la base
sql> .dbms_utility.compile_schema(‘CIRIL’)

Chercher les droits de l’utilisateur courant:
sql>select * from user_sys_privs;

Donner le droit « CREATE SESSION »(ouverture/création de session oracle)(REVOKE SESSION pour annuler, DROP SESSION pour supprimer) à l’utilisateur « TOTO »
sql>GRANT CREATE SESSION TO TOTO;

Le droit peut être:
-CREATE SESSION
-CREATE TABLE
-CREATE VIEW
-DROP ANY TABLE

On peut donner le droit depuis un role(ex: sysdba etc):
sql>GRANT SYSDBA TO TOTO;

Afficher les roles et ses privileges:
SQL> select * from role_sys_privs;

Chercher les chemins des donnees de l’utilisateur courant:
SQL> select name from v$datafile;

Afficher les stats en écriture/lectures I/O physiques:
SQL> SELECT f.phyrds « Lectures Physiques« ,
f.phywrts « Ecritures Physiques« ,
d.name
FROM   v$filestat f,
v$datafile d
WHERE  d.file#=f.file#
ORDER BY f.phyrds DESC;

Quelques outils reseaux

-simulation(pas de connexion physique aux materiels) : packettracer
-monitoring: nagios
-connexion au switch avec usb/serie: putty(connecter votre cable convertisseur usb/serie, chercher le port com utilisé depuis le gestionnaire de peripherique de windows, puis configurer le parametre connection->serial dans putty et lancer la connexion)
-interface de gestion:
nortel: jdm:ftp://ftp.avaya.com/incoming/Up1cku9/tsoweb/ADS/j/jdm/6.x/
alcatel:
at:
huawei:
cisco:
-analyseur de packet: etherreal
-analyseur de connexion: netstat,ping, hping
-schema reseau:visio,dia

Exemple d’ajout de vlan sur l’interface eth sous linux

1) Installer le package modconf
Installer le module 8021q
#apt-get install modconf
#modconf
et selectionner kernel/net/8021q pour le chargement du module 8021q(vlan) dans le kernel de linux
Sinon on peut tester seulement le module 8021q comme suit:
#modprobe 8021q

2)installer le package vlan
#apt-get install vlan

3) Configurer le forward
echo 1 > /proc/sys/net/ipv4/ip_forward

4) Configurer le fichier /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth2
iface eth2 inet dhcp

post-up /usr/sbin/vconfig add eth2.1
pre-down /usr/sbin/vconfig rem eth2.1

auto eth2.1
iface eth2.1 inet dhcp

5) Rédemarrer vos interfaces

#/etc/init.d/networking restart

Gestion des modules sous linux

http://doc.ubuntu-fr.org/tutoriel/tout_savoir_sur_les_modules_linux

$ lsmod | more
$ modinfo 8021q

Charger le module manuellement

# modprobe -a 8021q

Décharger le module manuellement

# modprobe -r 8021q

Lister

# modprobe -l

Editer /etc/modules pour charger les modules
Ajouter une liste noire des modules dans/etc/modprobe.d/blacklist
Configurer un module:
#apt-get install modconf
Préparer, automatiser la compilation avec le kernel…
#apt-get install module-assistant
Visualiser le statistique de l’interface vlan
/proc/net/vlan/

exemple de iptables

iptables -F
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -s 0/0 -d 0/0 -p icmp –icmp-type 3 -j ACCEPT
iptables -A OUTPUT -s 0/0 -d 0/0 -p icmp –icmp-type 3 -j ACCEPT
iptables -A FORWARD -s 0/0 -d 0/0 -p icmp –icmp-type 3 -j ACCEPT
iptables -N internet_vers_web_local
iptables -A FORWARD -i eth0 -j internet_vers_web_local
iptables -A internet_vers_web_local -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A internet_vers_web_local -i eth0 -p tcp -s 0/0 -d 192.70.106.71/32 –source-port 1023: –destination-port 80 -j ACCEPT
iptables -A internet_vers_web_local -p all -s any/0 -d any/0 -j LOG
iptables -A internet_vers_web_local -i eth0 -p all -s any/0 -d any/0 -j DROP
iptables -N interne_vers_internet
iptables -A FORWARD -o eth0 -j interne_vers_internet
iptables -A interne_vers_internet -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A interne_vers_internet -o eth0 -p tcp -s 192.70.106.0/0 -d 0/0 –dport 53 -j ACCEPT
iptables -A interne_vers_internet -o eth0 -p udp -s 192.70.106.0/0 -d 0/0 –dport 53 -j ACCEPT
iptables -A interne_vers_internet -o eth0 -p tcp -s 192.70.106.0/0 -d 0/0 –sport 1023: –dport 80 -j ACCEPT
iptables -A interne_vers_internet -o eth0 -p all -s 192.70.106.0/0 -d 0/0 –sport 1023: –dport 137:139 -j DROP
iptables -A interne_vers_internet -p all -s any/0 -d any/0 -j LOG
iptables -A interne_vers_internet -o eth0 -p tcp -s 192.70.106.0/0 -d 0/0 –dport 22 -j ACCEPT
iptables -A interne_vers_internet -o eth0 -p all -s any/0 -d any/0 -j DROP

iptables -A INPUT -i eth0 -p tcp –source 190.167.228.51 -j REJECT