Installation d’Oracle 11gR2 sur Centos 5

Il est possible d’installer une base Oracle 11g a des fins de test.
L’OTN Developer License Terms spécifie :

We grant you a nonexclusive, nontransferable limited license to use the programs only for the purpose of developing, testing, prototyping and demonstrating your application.

Il faut donc télécharger les deux fichiers LinuxX86 présents sur la page des téléchargements et les décompresser dans le répertoire /tmp

Préparation du système d’exploitation :

Le système (CentOS 5) doit être à jour.

Nous allons suivre les recommandations d’oracle concernant le nommage des répertoires d’installation.
Nous allons donc modifier le fichier /etc/profile et y ajouter :

export ORACLE_BASE="/opt/oracle"
export ORACLE_HOME="$ORACLE_BASE/product/11.2.0/db_1"
export ORACLE_HOSTNAME="mamachine.be-root.com"
export ORACLE_SID="beroot"

Nous pouvons ensuite faire un source /etc/profile afin d’avoir les variables positionnées précédemment actives sous la session courante.
Nous allons ensuite installer les dépendances ;

yum install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers libaio libaio-devel libgomp libstdc++ libstdc++-devel make numactl sysstat unixODBC-devel pdksh

Il faut maintenant créer l’utilisateur « oracle » ainsi que les groupes rattachés :

/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/groupadd asmadmin
/usr/sbin/groupadd asmdba
/usr/sbin/useradd -g oinstall -G dba,asmdba,asmadmin oracle

Et positionner un mot de passe pour l’utilisateur oracle :

passwd oracle

Modifions ensuite le fichier /etc/security/limits.conf :

oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile  1024
oracle              hard    nofile  65536
oracle              soft    stack   10240

Ces limites sont fixées dans la documentation officielle d’oracle :

Nous allons ensuite créer la structure des répertoires :

mkdir -p $ORACLE_BASE/oradata
mkdir -p  $ORACLE_BASE/recovery_area
chown -R oracle:oinstall $ORACLE_BASE
chmod -R 775 $ORACLE_BASE
mkdir -p /opt/oraInventory
chmod 775 /opt/oraInventory
chown oracle:oinstall  /opt/oraInventory

La documentation officielle d’oracle donne les paramètres du noyau à modifier ainsi que le fichier concerné :

Ainsi, pour vérifier le paramètre shmmni, il suffit de faire un cat /proc/sys/kernel/shmmni

Pour fixer les valeurs , nous allons modifier le fichier /etc/sysctl.conf :

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 2123476992
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586

On applique les valeur à l’aide d’un petit sysctl -p

Pour lancer l’installation, il faut un environnement graphique correctement configuré. Soit on se loggue sous le compte oracle directement, soit on fait un su – oracle en ayant fait au préalable un xhost +. J’ai choisi cette dernière solution :

xhost +
su - oracle
/tmp/database/runInstaller

Tout d’abord, on choisit de créer une base de données :

… en classe serveur :

… en mono-instance :

… une installation standard :

Il suffit ensuite de définir le mot de passe d’administration ainsi que de mettre le nom de la base de donnée à la même valeur que la variable ORACLE_SID :

A la fin de l’installation, il suffit juste d’exécuter sous l’identité root depuis un terminal le ou les scripts stipulés dans la dernière fenêtre d’installation :

Directement après installation, Oracle Enterprise Manager est accessible depuis un navigateur web à l’adresse https://127.0.0.1:1158/em/

Il est possible de se connecter en SYS/SYSDBA à l’aide du mot de passe rentré lors de l’installation.

Arret du serveur Oracle en ligne de commande :

En tant qu’utilisateur oracle :

Démarrage du serveur Oracle en ligne de commande :

Le démarrage de l’instance se fait en plusieurs étape. Tout d’abord le listener qui gère la partie réseau puis ensuite le démarrage de la base à proprement parler. Toutes ces étapes se font sous l’identité oracle :

Démarrage du listener

Démarrage de la base

Ensuite, on peut éventuellement redémarrer Oracle Enterprise Manager pour administrer la base depuis l’interface web vue précédemment :

Un peu de couleur pour le prompt de bash …

Dans cet exemple, nous allons mettre un peu de couleur au prompt du bash. L’exemple est réalisé sous une centos 5 mais il est bien entendu adaptable à d’autres distributions.

Editons le fichier /etc/bashrc et ajoutons à la fin de ce fichier :

alias ls="ls --color"
alias grep="grep --color"

if [[ ${EUID} == 0 ]] ; then
PS1='\
\[\033[0;00m\][\
\[\033[1;37m\]\[\033[41m\]\u\
\[\033[0;00m\]@\
\[\033[0;35m\]\h\
\[\033[0;00m\]:\
\[\033[0;34m\]\w\
\[\033[0;00m\]]\
\[\033[0;00m\]\$\
 '
else
PS1='\
\[\033[0;00m\][\
\[\033[0;31m\]\u\
\[\033[0;00m\]@\
\[\033[0;35m\]\h\
\[\033[0;00m\]:\
\[\033[0;34m\]\w\
\[\033[0;00m\]]\
\[\033[0;00m\]\$\
 '
fi

Les deux premières lignes définissent des alias pour coloriser les commandes ls et grep.
Ensuite nous définissons deux prompts différents : un pour le root et un autre pour les utilisateurs lambda.
La variable d’environnement PS1 permet de definir l’affichage du prompt.

Les codes couleurs sont les suivants :

\033[0;30m : Noir
\033[0;31m : Rouge
\033[0;32m : Vert
\033[0;33m : Jaune
\033[0;34m : Bleu
\033[0;35m : Magenta
\033[0;36m : Cyan
\033[0;37m : Gris clair

Si l’on remplace le [0 par [1, on obtient l’équivalent de la couleur en plus clair. Ainsi 0;37 étant le gris clair, 1;37 donnera du blanc.
En remplacant [0 par [4, le texte sera souligné.

Il est également possible de définir la couleur de fond de texte :

\033[40m : Noir
\033[41m : Rouge
\033[42m : Vert
\033[43m : Jaune
\033[44m : Bleu
\033[45m : Magenta
\033[46m : Cyan
\033[47m : Gris clair

Les variables sont :
\h : le hostname (jusqu’au premier ‘.’ )
\H : le hostname complet
\t : l’heure au format HH:MM:SS sur 24H
\T : l’heure au format HH:MM:SS sur 12H
\u : le username
\w : chemin complet vers le répertoire courant
\W : répertoire courant (format court)
\$ : # si root ou $ si utilisateur lambda
\d : la date
\# : le numéro de la commande dans la session courante
\! : le numéro de la commande dans l’historique.

Bloquer les pubs avec squid

Squid est un proxy-web permettant de réduire la bande passante utilisée. Et pour la réduire encore plus, nous allons bloquer les pubs (ads) qui polluent le web :-).

La config utilisée : Squid-2.6.XX sur une Centos 5.
S’adapte très facilement sur d’autres configs.

Nous considérons que Squid est déjà fonctionnel.

Lançons la commande :

/usr/bin/wget -O /etc/squid/ads_list.txt http://pgl.yoyo.org/adservers/serverlist.php?hostformat=squid-dstdom-regex\&showintro=1\&mimetype=plaintext

Maintenant, dans le fichier /etc/squid/squid.conf, on rajoute ces lignes :

...
acl ads dstdom_regex "/etc/squid/ads_list.txt"
...
http_access2 deny ads
...
deny_info  ERR_ACCESS_DENIED_ADS    ads
...

Créons le fichier /etc/squid/errors/ERR_ACCESS_DENIED_ADS :

<html><body>
<!-- Ad Removed by (%s) -->
</body></html>

Ce fichier permet d’afficher une page vide lorsqu’un ad est bloqué. Cela évite d’avoir une page du style « Generated by Squid (xxxx) on xxxxxxx » pour cette acl.

On demande a squid de recharger sa configuration :

/etc/init.d/squid reload

Et voici le résultat sur un site pris au hasard :

Sans filtrage :

Et avec filtrage :

Pour aller plus loin, il est facile de faire un petit script, appelé par une tâche cron, qui sera chargé de mettre à jour automatiquement la liste des ads à bloquer et qui fera le reload de squid.