Introduction

L'objectif de ce document est de présenter l'installation et la configuration d'une base de données Oracle sur un serveur Linux en mode ligne de commande afin de ne pas mettre en place la couche graphique.

L'approche est volontairement décomposée afin de bien comprendre chaque étape. Il est supposé connaitre suffisamment les concepts Oracle et Linux.

Le serveur sera sous Linux Centos 5.5 version 32 bits. Bien que non certifiée par Oracle, Centos est la version Libre de Redhat. Bien que j'ai une nette préférence pour Debian, j'ai pu constater que Redhat est le plus souvent utilisé en entreprise. Oracle 11g fonctionne très bien sous Debian et même sous Ubuntu, la procédure est juste un peu différente. Le lecteur intéressé trouvera sur le blog un billet sur ce sujet.Oracle 11g sous Ubuntu 10.04 LTS

La version de Oracle est la 11.2.0.1, téléchargeable sur le site de Oracle.

Il est important de noter qu'il faut s'acquitter auprès de Oracle d'une licence d'utilisation du produit en cas d'utilisation de la base en production. Oracle tolère l'utilisation de son produit à des fins de test, de formation ou de développement. De plus la version disponible n'est pas la dernière en date et ne dispose pas des correctifs de mise à jour.

La configuration du serveur est volontairement modeste : RAM 2Go et 50Go de disque. Il faut savoir que 2Go de RAM suffisent amplement à Oracle pour gérer une base avec 20 connexions simultanées. La taille disque ne dépend que de la volumétrie de la base.

Cette installation a été testée sur une machine virtuelle ( RAM 2Go et 50Go de disque ) et sur un serveur kimsufi de OVH ( RAM 2Go et 250Go de disque ) avec uniquement un accès ssh.

SYNTAXE

Les lignes présentées ainsi sont éditées avec vi

Logiciels

Cette installation part du principe que le serveur est totalement dédié à l'instance Oracle. Il sera donc procédé à une installation minimale et basique de Centos, complétée par les packages requis pour Oracle.

Centos

Centos est la version Libre de Redhat, à ce titre elle est identique à la version Commerciale. La version 5.5 correspond donc à la Redhat 5. Télécharger la version NetInstalll de Centos

http://centos.cict.fr/5.5/isos/i386/CentOS-5.5-i386-netinstall.iso L'image de ce CD est très petite ( 9,5Mo ). Tous les packages seront téléchargés depuis un dépot Internet. Une fois cette image chargée, la graver sur un CD-ROM et booter le serveur dessus.

Démarrage de l'installation

L'installation se fera en mode expert et caractère, aussi taper dans la fenêtre d'installation : linux text puis la touche "Entrée"

Dans l'écran suivant, choisir la langue d'installation.

Puis sélectionner une configuration de clavier.

Il sera ensuite demandé la localisation des sources logicielles, choisir "HTTP"

Il faut ensuite configurer le réseau, seul IPV4 sera utilisé et l'adresse sera manuelle.

Pour l'exemple, le serveur aura l'IP 192.168.1.100 et un masque de 255.255.255.0. La passerelle sera en 192.168.1.1 qui sera aussi le serveur de noms.

Il faut ensuite donner l'adresse du serveur Internet disposant des sources logicielles. Le site web est : mirror.centos.org et le répertoire : centos/5.5/os/i386. Une fois cette écran validé, une image de boot sera chargée( "Récupération images/stage2.img…", celle-ci pèse environ 100Mo, le temps peut donc être assez long.

Une fois l'image chargée, l'écran suivant est affiché. Choisir "Mode texte".

Puis valider l'écran de bienvenue.

Configuration disque

La fenêtre suivante permettra la configuration du disque. Le serveur exemple dispose de 2Go de RAM et d'un disque de 50Go.

Accepter de définir la table des partition et choisir un partionnement personnalisé dans l'écran suivant

Partionner le disque de 50Go selon le tableau suivant :

Primaire
Montage	Type	Taille
/boot	Ext2	100Mo
swap	4Go
/	Ext3	500Mo
Logique
Montage	Type	Taille
/usr	Ext3	5Go
/var	Ext3	2Go
/tmp	Ext3	2Go
/u01	Ext3	10Go
/u02	Ext3	10Go
/u03	Ext3	10Go
/home	Ext3	Le reste

Chargeur de démarrage

Le chargeur est GRUB, les cinq écrans suivants sont validés sans modifications, les choix par défaut convenant parfaitement.

Réseau

La carte réseau étant déja configurée précédemment, il faut choisir "Non"

Nommer le serveur manuellement, dans l'exemple : chopin.adimcor.eu

Horloge

Choisir le fuseau horaire de Paris

Mot de passe du root

Renseigner ici le mot de passe de root.

Choix des packages

Déselectionner GNOME et choisir Personnalisation

Dans cet écran, 4 groupes de packages sont pré-selectionnés, les dévalider tous

L'installation minimale démarre alors, à la fin il faudra relancer le serveur. L'unique service actif est ssh.

Mise à jour de Centos

Il est nécessaire de procéder à une mise à jour des packages en se connectant root et en lançant yum update Le système met à jour une quarantaine de packages. A ce stade, le serveur est configuré en installation minimale. Il est possible de s'y connecter via ssh.

Pour la suite, il faut charger le package wget, qui va servir aux téléchargements depuis le site Oracle. A titre personnel, j'installe aussi l'éditeur vim

Oracle

Il est possible de télécharger le média d'installation de Oracle sur le site de l'éditeur ( http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html ). Il faut toutefois se créer un compte, ce qui est gratuit. Ce compte va servir pour télécharger le logiciel Oracle par wget. Il consiste à donner une adresse mail et un mot de passe.

Le media d'installation du serveur est composé de 2 fichiers .zip de 1Go chacun. –– http://download.oracle.com/otn/linux/oracle11g/R2/linux_11gR2_database_1of2.zip– –– http://download.oracle.com/otn/linux/oracle11g/R2/linux_11gR2_database_2of2.zip–

Prérequis

Il faut charger un certain nombre de packages complémentaires pour l'installation Bien que Centos soit une Redhat, il est bon de le dire

User Oracle

Créer deux groupes, oinstall et dba Créer le user oracle, lui affecter les bons groupes et lui donner un mot de passe.

Configuration système

Editer le fichier /etc/sysctl.conf et y ajouter les lignes suivantes :

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

Les valeurs type shm concernent la Shared Memory, donc la SGA de Oracle.

Les valeurs type sem concernent les sémaphores donc liées au paramètre PROCESSES de Oracle.

Les valeurs type net sont relatives au réseau.

Ne pas oublier que ces valeurs partent du principe que seul Oracle tourne sur le serveur. D'autres logiciels utilisent aussi la Shared Memory et les sémaphores.

Activer la configuration par la commande suivante : Rajouter les lignes suivantes dans /etc/security/limits.conf

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

Les limites sont relatives aux ressources utilisées par un user particulier, en l'occurrence ici Oracle. Sont concernées le nombre de processus et de fichiers ouverts.

Ces limites n'influencent pas sur les performances. Par contre elles peuvent gêner leur bon fonctionnement.

La limite soft d'un utilisateur peut être modifiée par l'utilisateur lui-même, mais sans toutefois dépasser la limite hard.

Le fichier limits.conf permet de définir les limites soft et hard d'un user. La commande ulimit permet à un utilisateur de modifier ses limites pour le shell courant.

Modifier le fichier /etc/pam.d/login et ajouter la ligne suivante :

session required pam_limits.so

Editer le fichier /etc/profile et ajouter les lignes suivantes :

if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

L'ensemble de ces commandes peut être mis dans un script oracle11g_centos.sh

Désactiver le parefeu sur Centos. Stopper iptables Désactiver SELinux. Editer le fichier /etc/selinux/config et passer la valeur de SELINUX à disabled :

SELINUX=disabled

Pour le prendre en compte immédiatement taper la commande suivante :

Installation

Les binaires oracle ont été chargés précédemment via wget et se trouve sous /home, les décompresser Ces deux commandes vont créer un sous répertoire /home/database dans lequel se trouve l'intégralité des fichiers d'installation de Oracle.

Répertoires

Créer les répertoires suivants et les affecter au user oracle

Installation silencieuse

Se connecter en tant que user oracle.

Oracle demande une interface graphique pour s'installer, sauf si on lui spécifie un fichier de réponses. Ce principe est l'installation silencieuse. Sous le répertoire /home/database/response, se trouve le fichier db_install.rsp qui est abondamment commenté. Ci-dessous le fichier réponse utilisé pour cette installation. La version de Oracle est Entreprise Edition ( EE )

Attention : selon la version Oracle téléchargée les options sont parfois différentes, bien vérifier le fichier fourni par Oracle en cas de doute.

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=chopin.adimcor.eu
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en,fr
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=false
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
DECLINE_SECURITY_UPDATES=true
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false

oracle.install.option permet de choisir l’option d’installation; INSTALL_DB_SWONLY ne crée pas de base de données mais n’installe que le logiciel Oracle. La base sera créée ultérieurement.

UNIX_GROUP_NAME est le groupe d’installation du logiciel et de l’inventory Oracle

INVENTORY_LOCATION permet de choisir l’endroit où l’inventory Oracle ( liste des produits installés ) est créé.

SELECTED_LANGUAGES permet de choisir les langues des différents messages d’Oracle.

ORACLE_HOME indique où sera installée Oracle.

oracle.install.db.InstallEdition permet de choisir entre Enterprise Edition (EE), Standard Edition (SE) et Personal Edition (PE)

oracle.install.db.IsCustomInstall positionné à false installe toute les options de la version Enterprise ( Partionning,… )

oracle.install.db.DBA_GROUP et oracle.install.db.OPER_GROUP permettent de choisir les groupes des utilisateurs respectivement SYSDBA et SYSOPER

SECURITY_UPDATES_VIA_MYORACLESUPPORT et DECLINE_SECURITY_UPDATES sont positionnée à false si on ne possède pas d'identifiant My Oracle Support.

Ce fichier est stocké sous /home/oracle/db.rsp. La commande suivante lance l'installation silencieuse. Options : -ignoreSysPrereqs et -ignorePrereq, elles sont requises si la plate-forme n'est pas certifiée ( Debian, Ubuntu,… ) afin d'éviter une erreur.

Il ne se passe pas grand chose à l'écran, au bout d'un moment oracle va tracer l'installation dans un fichier de log ( type : /u01/app/oraInventory/logs/installActions2011… ) qu'il est possible de visualiser avec tail -f Il y a une première phase de copie des fichiers et ensuite une édition de lien ( relink ). Il faut environ 15 à 20 minutes pour l'installation complète.

L'écran en fin d'installation silencieuse doit afficher un message de ce type :

Il faudra donc lancer à la fin,en tant que root, deux scripts Ce script modifie les privilèges de certains fichiers. Ce script positionne le droit setUID sur les binaires Oracle et créés les fichiers oraenv, coraenv et dbhome

Finalisation

Rajouter les lignes suivantes dans le fichier .bash_profile du user oracle.

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export ORACLE_OWNER=oracle
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG=FRENCH_FRANCE.UTF8

La dernière ligne est facultative, mais permet la gestion des accents dans les outils oracle type SQL*Plus. Cette variable influe aussi sur le format des dates et des tris dans Oracle

Sourcer le fichier .bash_profile Vérifier la configuration correcte par la commande env. La variable ORACLE_HOME est primordiale dans Oracle, dans la suite de ce document il y sera souvent fait référence pour indiquer le répertoire /u01/app/oracle/product/11.2.0/dbhome_1

Configuration serveur Oracle*Net

Oracle*Net est la couche réseau de Oracle. Un processus est lancé sur le serveur, le listener. Ce processus écoute les demandes du réseau de connexion à la base Oracle sur le port 1521 par défaut.

La configuration du listener se fait en éditant le fichier $ORACLE_HOME/network/admin/listener.ora; Il est possible de référencer ce répertoire par la variable d'environnement TNS_ADMIN ( export TNS_ADMIN=$ORACLE_HOME/network/admin )

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS=(PROTOCOL = TCP)(HOST = chopin.adimcor.eu )(PORT = 1521))
)
)

Lancer le listener La commande netstat permet de vérifier l'écoute sur le port 1521 La configuration Oracle*Net utilise aussi deux autres fichiers tnsnames.ora et sqlnet.ora, ceux-ci sont requis sur le client et non sur un serveur, ils seront donc vu lors de la configuration client.

Listener et procédures externes

La configuration du listener via l'assistant netca configure par défaut l'utilisation de procédures externes en incluant dans le listener.ora ces lignes :

(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)

Si la base de données ne fait pas appel à des procédures externes, Oracle recommande de supprimer cette configuration améliorant ainsi la sécurité.

Le lecteur intéressé par cette fonctionnalité pourra consulter le lien suivant : PL/SQL et procédures externes

Arrivé à ce stade, le logiciel Oracle est opérationnel, il est alors possible de créer la base de données.

Création de la base

L'exemple présenté ici va créer une base de données nommée RED avec le minimum requis

1 fichier de contrôle,

2 groupes de redolog,

1 tablespace temporaire,

1 tablespace undo

Au fur et à mesure, cette base sera modifiée afin de la préparer à un environnement de production.

L'ensemble des commandes présentées peut ensuite être mis dans un script afin d'automatiser la création.

Les différent fichiers composants la base de données seront répartis sur les points de montage /u01, /u02 et /u03. La norme OFA sera respectée.

Fichier de paramètres

Mise en place des répertoires Création initiale d'un fichier minimum sous /u01/app/oracle/admin/RED/pfile/initRED.ora

db_name = RED
db_block_size = 8192
control_files = /u01/app/oracle/oradata/RED/control01.ctl
sga_target = 1280M
pga_aggregate_target = 320M

La répartition mémoire est ainsi définie :

20% pour l'OS → 400Mo

80% pour Oracle → 1600Mo

80% à la SGA → 1280Mo

20% à la PGA → 320Mo

Pré-configuration avant création

Création du lien symbolique dans $ORACLE_HOME/dbs Création du fichier de mot de passe pour la connexion en sysdba Revenir sous $HOME ( par la commande cd $HOME ) et créer un script SQL, createRED.sql, pour la création de la base contenant les lignes suivantes :

create database RED
character set UTF8
national character set UTF8
logfile
group 1 '/u01/app/oracle/oradata/RED/redo01a.log' size 50M,
group 2 '/u01/app/oracle/oradata/RED/redo02a.log' size 50M
datafile '/u01/app/oracle/oradata/RED/system01.dbf' size 500M autoextend on next 100M maxsize 2G extent management local
sysaux datafile '/u01/app/oracle/oradata/RED/sysaux01.dbf' size 500M autoextend on next 100M maxsize 2G
undo tablespace UNDO_TBS datafile '/u01/app/oracle/oradata/RED/undo_tbs01.dbf' size 25M
default temporary tablespace TEMP tempfile '/u01/app/oracle/oradata/RED/temp01.dbf' size 50M;

Création

Se connecter avec sqlplus en mode sysdba et lancer le script de création

Tables du dictionnaire

Toujours sous sqlplus en mode sysdba. Ces deux scripts sont assez longs, il faut compter 15 à 20 minutes.

Mot de passe sys et system

Toujours sous sqlplus en mode sysdba.

Mise en place du spfile

Toujours sous sqlplus en mode sysdba.

Finalisation

Sortir de sqlplus et se reconnecter en system pour lancer le script pupbld.sql Ce script créé une table, PRODUCT_USER_PROFILE, dont la présence est testée par les outils Oracle lors de la connexion d’un utilisateur. Si la table n’existe pas et que l’utilisateur n’est pas un DBA, un message d’alerte est affiché, mais la connexion est acceptée.

Afin d'activer la gestion par le spfile, procéder à un arrêt/re-démarrage de la base

Enregistrement listener

Cette manipulation n'est pas obligatoire, en effet une base oracle au moment de son démarrage s'enregistre automatiquement auprès du listener. Elle présente toutefois un avantage, celui de pouvoir démarrer la base à distance.

Editer le fichier $ORACLE_HOME/network/admin/listener.ora et ajouter les lignes suivantes :

SID_LIST_LISTENER =
(SID_DESC =
(GLOBAL_DBNAME = RED)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = RED)
)

Suite à cette manipulation, redémarrer le listener. A ce stade la base de données est une enveloppe vide. Il importe de la fiabiliser au niveau de son fichier de contrôle et de ses redologs.

Fiabilisation de la base

Afin que la base soit fiable il est nécessaire de multiplexer le fichier de contrôle ainsi que les redologs.

Multiplexage fichier de contrôle

Se connecter sqlplus en sysdba

Multiplexage redologs

Toujours sous sqlplus Ajout d'un troisième groupe de redolog

Tablespace par défaut

Lors de la création d'un segment, table ou index, si le tablespace n'est pas spécifié, Oracle le stocke dans le tablespace par défaut de l'utilisateur.

Ce tablespace par défaut de l'utilisateur est mis en place par l'ordre create user. Il peut toutefois être omis et Oracle utilise alors le tablespace par défaut de la base : SYSTEM.

Ceci pose un problème car les données de l'utilisateur seront alors stockées dans le tablespace SYSTEM.

Il est possible de définir un autre tablespace par défaut au niveau de la base. Ne pas spécifier de tablespace par défaut pour un utilisateur ou dans la création du segment n'est pas conseillé. Pour limiter ce problème, créer un tablespace par défaut de très petite taille. Ainsi Oracle le satura très vite indiquant ainsi un "oubli". Arrivé à ce stade, il est conseillé d'effectuer une sauvegarde de la base.

Sauvegarde de la base

La base étant en mode NOARCHIVELOG sa sauvegarde devra se faire base stoppée. Le référentiel de sauvegarde sera stocké dans le fichier de contrôle.

Afin de faciliter les restaurations, la Flash Recovery Area sera paramétrée.

Flash Recovery Area

Créer le répertoire Se connecter sqlplus en sysdba

Lancement de la première sauvegarde

La commande RMAN configure controlfile autobackup on n'est à exécuter qu'une fois, ainsi le fichier de contrôle et le spfile seront automatiquement sauvegardés et il sera possible de les restaurer par la commande RMAN restore controlfile/spfile from autobackup.

Il est possible de visualiser la sauvegarde par la commande list backup, la sortie écran devrait être de ce type :

RMAN> list backup;
utilisation du fichier de contrôle de la base de données cible au lieu du catalogue de récupération
Liste des ensembles de sauvegarde
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
1 Full 238.52M DISK 00:00:14 05/03/11
BP Key: 1 Status: AVAILABLE Compressed: NO Tag: TAG20110305T191429
Piece Name: /u03/app/oracle/flash_recovery_area/RED/backupset/2011_03_05/o1_mf_nnndf_TAG20110305T191429_6q4zd6hl_.bkp
Liste des fichiers de données dans l'ensemble de sauvegarde 1
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- -------- ----
1 Full 303854 05/03/11 /u01/app/oracle/oradata/RED/system01.dbf
2 Full 303854 05/03/11 /u01/app/oracle/oradata/RED/sysaux01.dbf
3 Full 303854 05/03/11 /u01/app/oracle/oradata/RED/undo_tbs01.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
2 Full 7.55M DISK 00:00:00 05/03/11
BP Key: 2 Status: AVAILABLE Compressed: NO Tag: TAG20110305T191446
Piece Name: /u03/app/oracle/flash_recovery_area/RED/autobackup/2011_03_05/o1_mf_s_745010043_6q4zdpmk_.bkp
SPFILE inclus : temps de modification : 05/03/11
SPFILE db_unique_name: RED
Control File Included: Ckp SCN: 303854 Ckp time: 05/03/11
RMAN>

Configuration client Oracle*Net

La base de données doit être accessible par les applications clientes. A ce stade le serveur n'a d'autre besoin que d'avoir un listener de configuré.

La configuration du client se fait de diverses manières, ici je vais parler des deux plus courantes :

Easy-Connect

Résolution locale

La première solution, Easy-Connect est la plus simple car il n'y a rien à configurer. Elle impose juste l'utilisation du protocole TCP/IP. La seconde solution demande la configuration de deux fichiers : sqlnet.ora et tnsnames.ora. Il est d'ailleurs possible de mixer les deux méthodes.

Connexion Easy-Connect

Depuis le poste client

sqlplus system/manager11@//chopin.adimcor.eu:1521/red
SQL>

Notifier le port 1521 peut-être omis, car c'est le port par défaut.

Configuration de résolution locale

Sur le poste client, se positionner dans le répertoire $ORACLE_HOME/network/admin et créer un fichier nommé sqlnet.ora contenant la ligne suivante :

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

Ce fichier indique que pour se connecter à la base Oracle, le client tentera de résoudre le nom localement ( via tnsnames.ora ) et utilisera sinon Easy-Connect.

Créer sous le même répertoire le fichier tnsnames.ora et y ajouter les lignes suivantes :

RED =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = chopin.adimcor.eu)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = RED)
)
)

La configuration correcte peut être testée par la commande tnsping La commande doit renvoyer un message de ce type :

TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 06-MARS -2011 10:29:39
Copyright (c) 1997, 2009, Oracle. All rights reserved.
Fichiers de paramètres utilisés :
/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/sqlnet.ora
Adaptateur TNSNAMES utilisé pour la résolution de l'alias
Tentative de contact de (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = chopin.adimcor.eu)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = RED)))
OK (20 msec)

Si ce test échoue, il sera impossible de se connecter à la base en distant. Les causes sont diverses ( cable réseau débranché, listener non lancé, … )

Le database control

Bien que ce document soit orienté ligne de commande, Oracle offre depuis la 10g, un module d'administration graphique accessible via un serveur web. Cette interface est automatiquement mise en place lorsque la base est créée par dbca. Il est possible de configurer le database control à postériori.

Pré-requis

Il faut renseigner dans le spfile un paramètre supplémentaire, job_queue_processes à 1 minimum. En 11GR2, cette manipulation n'est plus nécessaire, car la valeur par défaut de ce paramètre est de 1000.

———————————————–——————————

Création du référentiel EM

Le script pose 5 questions :

SID → RED

Port d'écoute → 1521

Mot de passe SYS → manager11

Mot de passe SYSMAN → manager11 ( cet utilisateur va être créé )

Répondre Y pour lancer le traitement.

Mise en place de l'interface Web

Le script pose 9 questions

SID → RED

Processus d'écoute → 1521

Répertoire d'origine ORACLE_HOME du processus d'écoute : accepter

Mot de passe de SYS → manager11

Mot de passe de DBSNMP → manager11 ( cet utilisateur va être créé )

Mot de passe de SYSMAN: → manager11

Adresse électronique pour les notifications (facultatif): Laisser vide

Serveur de messagerie sortant (SMTP) pour les notifications (facultatif): Laisser vide

Répondre Y pour lancer le traitement

Une fois la configuration terminée, il sera possible de se connecter au database control de RED par l'URL https://chopin.adimcor.eu:1158/em. La connexion est sécurisée. ( le port peut être différent, voir le fichier $ORACLE_HOME/install/portlist.ini )

Se connecter en system/manager11. Le database control est un produit très complet, le document Oracle 2 days DBA est une bonne approche de l'adminstration Oracle par le database control.

L'écran montre ici la fenêtre principale du database control.

Démarrage automatique de la base

Il est parfois intéressant que la base soit démarrée automatiquement au boot du serveur. Afin de prendre en charge cette fonctionnalité il faut enregistrer la base dans le fichier /etc/oratab et créer un script de lancement.

/etc/oratab

Sa syntaxe est simple, editer le fichier /etc/oratab et y mettre la ligne suivante :

RED:/u01/app/oracle/product/11.2.0/dbhome_1:Y

Script de lancement

Editer un fichier /etc/init.d/oracle

# chkconfig: 235 80 20
# description: ajout de service auto pour start/stop oracle
#!/bin/bash
ORACLE_OWNER=oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
case $1 in
start)
echo -n "Démarrage Oracle DB:"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
;;
stop)
echo -n "Arrêt Oracle DB:"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
;;
*)
echo "Usage: $0 {start|stop}"
;;
esac

Le rendre exécutable Activer les niveaux d'exécution – – Ce script démarre la base oracle et le listener, mais pas le database control. Pour lancer le database control :

Sauvegarde régulière

Une première sauvegarde fut dans ce document réalisée. Il est important de faire régulièrement des sauvegardes de données. Il est encore plus important de tester les restaurations, sinon sauvegarder ne sert pas à grand chose.

Je vais présenter ici plusieurs modes de sauvegarde de la base RED :

Complète à froid

Incrémentale à froid

Sauvegarde à chaud, sans arrêt de la base.

Il existe une multitude de modes possibles avec RMAN, voir la doc !

Sauvegarde complète à froid

Il est assez simple de mettre en place une sauvegarde à froid se lançant automatiquement à 22H00 chaque jour. Editer sous $HOME un fichier script RMAN : svfroid_full.rma et y placer les lignes suivantes :

run {
shutdown immediate;
startup mount;
backup database;
delete noprompt obsolete;
alter database open;
}

Ce script arrête la base, la passe en mode mount et lance la sauvegarde compète vers la flash_recovery_area. Ensuite seule la dernière sauvegarde est conservée, et en fin de procédure la base est à nouveau ouverte.

Afin d'automatiser ce processus, il suffit de programmer le cron en editant le fichier /etc/crontab et en y ajoutant la ligne suivante :

00 22 * * * oracle . ~/.bash_profile; export ORACLE_SID=RED; rman target / @$HOME/svfroid_full.rma > $HOME/svfroid_full.rma.log

Lors de la planification d'une tâche via la crontab, un shell minimal est lancé. Ainsi l'environnement habituel de l'utilisateur n'est pas pris en compte. Ceci explique le fait que une commande existe dans la session et ne fonctionne pas avec le cron. Pour éviter cela il faut demander au cron de lire le fichier .bash_profile explicitement

Sauvegarde incrémentale à froid

Les sauvegardes incrémentales présentent l'avantage d'être plus rapides en ne prenant en compte que les modifications entre deux sauvegardes. Ce principe permet de diminuer le temps d'arrêt de la base.

Pour ce scénario je vais poser les hypothèses suivantes :

La base est sauvegardée complètement chaque dimanche à 4h00

les autres jours il est procédé à une sauvegarde incrémentale à 22H00.

La sauvegarde incrémentale utilise un principe de niveau, 0 ou 1.

Le niveau 0 correspond à une sauvegarde complète

Le niveau 1 ne sauvegarde que les différences entre 2 sauvegardes.

Le schéma suivant montre le principe des sauvegardes incrémentales.

Créer sous $HOME le script svfroid_inc0.rma

run {
shutdown immediate;
startup mount;
backup incremental level 0 database;
delete noprompt obsolete;
alter database open;
}

Créer sous $HOME le script svfroid_inc1.rma

run {
shutdown immediate;
startup mount;
backup incremental level 1 database;
alter database open;
}

Automatiser le tout dans le fichier /etc/crontab

00 04 * * 7 oracle . ~/.bash_profile; export ORACLE_SID=RED; rman target / @$HOME/svfroid_inc0.rma > $HOME/svfroid_inc0.rma.log
00 22 * * 1-6 oracle . ~/.bash_profile; export ORACLE_SID=RED; rman target / @$HOME/svfroid_inc1.rma > $HOME/svfroid_inc1.rma.log

Sauvegarde à chaud

Si la base de données ne peut être stoppée, il est nécessaire de la passer en mode ARCHIVELOG afin de pouvoir la sauvegarde sans arrêt.

Mise en mode ARCHIVELOG

Ici encore la flash recovery area sera mise à contribution, car c'est par défaut la destination des archivelogs.

Sauvegarde

Créer sous $HOME le script RMAN svchaud_full.rma

run {
backup database plus archivelog delete all input;
delete noprompt obsolete;
}

Il n'est plus nécessaire de stopper la base, cette sauvegarde est complète, y compris les archivelogs qui sont purgés une fois sauvegardés. Il suffit alors de programmer le cron ainsi.

00 22 * * * oracle . ~/.bash_profile; export ORACLE_SID=RED; rman target / @$HOME/svchaud_full.rma > $HOME/svchaud_full.rma.log

Adapter ce principe avec les incrémentales est simple.