Voyage vers la base de données Oracle 12c – Episode 1

Maintenant que la version 12c est descendue des nuages, il faut envisager son implémentation partout dans le SI. Il faut prévoir les différentes tâches à réaliser et déterminer les impacts. Mais avant d’envisager une refonte complète ou partielle de son infrastructure avec la mise en place d’une architecture mutualisée “Multitenant”, cette première série se concentre sur une mise à niveau « traditionnelle » d’une base de données Oracle. Cela permet de bénéficier des avancées du support, de commencer à expérimenter la version dans des conditions réelles et de profiter pleinement des nouvelles fonctionnalités.
Ce premier épisode commence donc par la mise en place du décor et des personnages qui nous accompagneront tout au long cette aventure.
Vous vous en êtes sans doute déjà rendu compte, nous sommes très fans d’Oracle VM pour x86! Pour accélérer les tests, les faciliter tout en permettant de challenger les performances des systèmes, nous avons donc naturellement utilisé une machine virtuelle 64-bit avec Oracle Linux 6.4 sur une infrastructure OVM 3.2. Ce premier article explore l’installation des logiciels et les créations des bases de données associées. Evidemment pour représenter des scénarios proches de la réalité, toutes les opérations ont été réalisées en mode silencieux.

La machine virtuelle

Nos machines virtuelles sont construites à partir du modèle OVF Oracle Linux 6 Update 4 “paravirtualized x86_64 V38315-01”, téléchargé depuis Oracle Software Delivery Cloud.

Note:
Vous pouvez évidemment et désormais utiliser un raccourcis pour installer une base de données 12c ) partir du modèle « Oracle VM Templates for Oracle Database – Single Instance and RAC 12cR1 (12.1.0.1.0) – Oracle Linux (64 bit), V38984-01 and V38985-01 » également téléchargeable sur Oracle Software Delivery Cloud.

Le serveur logique est configuré au départ avec 2 CPU, 2Go de RAM , 2Go de swap, un pseudo disque externe de 60Go sur lequel toutes les opérations seront faites (système de fichier ext4 monté sur /u01). L’avantage d’utiliser un template Oracle est en dehors de ne pas avoir l’installation du système d’exploitation à faire, d’avoir la configuration de “yum” déjà faite et pointant vers les serveurs publics de l’éditeur (/etc/yum.repos.d/public-yum-ol6.repo).
La mise en place des pré requis est alors rapide et simple via une seule commande :

yum install oracle-rdbms-server-11gR2-preinstall

Note:
On peut trouver sur le dépôt public la version du rpm pour la 12c oracle-rdbms-server-12cR1-preinstall, ce n’est cependant pas celle utilisée ici du fait qu’on installe les 2 versions d’Oracle sur le système.

Une base de données Oracle 11g Release 2

Pour faciliter la comparaison, nous avons installé une base de données 11g Release 2 sur le système. Le script ci-dessous crées les répertoires et droits appropriés :

# chmod 777 /u01
# su - oracle
$ mkdir -p /u01/distrib/db112
$ mkdir -p /u01/app/oracle/product
$ mkdir /u01/app/oracle/oradata
$ chown -R oracle:dba /u01/app

Nous avons transferé et extrait les binaires de la version 11.2.0.3, c’est à dire le patchset 10404530 :

p10404530_112030_x86_64_1of7.zip
p10404530_112030_x86_64_2of7.zip

Une fois dézippés, nous avons installé les binaires à l’aide des commandes ci-dessous :

$ export DISTRIB=/u01/distrib/db112/database
$ cd $DISTRIB
$ ./runInstaller -silent -ignoreSysPrereqs \
> -ignorePrereq -responseFile /u01/distrib/db112/database/response/ee_install.rsp \
> oracle.install.option=INSTALL_DB_SWONLY UNIX_GROUP_NAME=oinstall \
> SELECTED_LANGUAGES=en ORACLE_BASE=/u01/app/oracle \
> ORACLE_HOME=/u01/app/oracle/product/11.2.0.3 \
> oracle.install.db.InstallEdition=EE \
> oracle.install.db.DBA_GROUP=dba \
> oracle.install.db.OPER_GROUP=dba \
> DECLINE_SECURITY_UPDATES=true INVENTORY_LOCATION=/u01/app/oracle

Les messages ci-dessous demandent l’exécution des scripts en tant que root :

As a root user, execute the following script(s):
1. /u01/app/oracle/orainstRoot.sh
2. /u01/app/oracle/product/11.2.0.3/root.sh
Successfully Setup Software.

Il faut vérifier l’absence de problème :

# grep -i err /u01/app/oracle/logs/installActions2013-06-28_03-19-36AM.log \
  |grep -v gif |grep -v INFO| grep -v disasterRecovery|grep -v OVERRIDE

Il ne doit y avoir aucune ligne ramenée, sinon il faut analyser le fichier de log de plus près.
Enfin, nous avons utilisé un script crdb_ora112.sh pour créer la base de données associée au logiciel à l’aide de la commande ci-dessous :

#
# Creating ora112 database using dbca in silent mode
#
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.3
export PATH=$ORACLE_HOME/bin:$PATH
dbca -silent -responseFile NO_VALUE \
   -createDatabase -templateName General_Purpose.dbc \
   -gdbName ora112 -sid ora112 -SysPassword easy_4U \
   -SystemPassword easy_4U -emConfiguration LOCAL \
   -dbsnmpPassword easy_4U -sysmanPassword easy_4U \
   -storageType FS -datafileDestination /u01/app/oracle/oradata \
   -redoLogFileSize 200 -sampleSchema true \
   -characterSet AL32UTF8 -totalMemory 740

Note
L’ensemble de la commande doit être sur une seule ligne ou séparée par un back-slash pour permettre que tous les paramètres soient pris en compte.

La création de la base de données ressemble à ce qui suit :

$ ./crdb_ora112.sh
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
57% complete
60% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/ora112/ora112.log" for further details.
Vérification :
$ grep -i err /u01/app/oracle/cfgtoollogs/dbca/ora112/ora112.log

Comme vous pouvez le vérifier, aucun problème n’apparait lors de l’installation non plus. Le listener par défaut est créé avec la base de données et la console :

$ ps -ef |grep smon
oracle 10690 1 0 04:07 ? 00:00:01 ora_smon_ora112
oracle 18391 6298 0 05:35 pts/0 00:00:00 grep smon
$ ps -ef |grep lsnr
oracle 9981 1 0 04:02 ? 00:00:00 /u01/app/oracle/product/11.2.0.3/bin/tnslsnr
$ emctl status dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.3.0
Copyright (c) 1996, 2011 Oracle Corporation. All rights reserved.
https://easydirtech.easyteam.fr:1158/em/console/aboutApplication
Oracle Enterprise Manager 11g is running.
------------------------------------------------------------------
Logs are generated in directory /u01/app/...

Pour terminer, nous aurions du arrêter la base de données ora112 afin d’éviter tout conflit avec l’installation de la version 12c :

$ . oraenv
ORACLE_SID = [oracle] ? ora112
The Oracle base has been set to /u01/app/oracle
$ lsnrctl stop
$ sqlplus / as sysdba
SQL> shutdown immediate
$ emctl stop dbconsole

Base de données Oracle 12c Release 1

L’installation des binaires de la version 12.1.0.1 ressemble fortement à celle de la 11g. Nous avons transféré et extrait la distribution disponible sur OTN dans /u01/distribs/db121:

linuxamd64_12c_database_1of2.zip
linuxamd64_12c_database_2of2.zip

Note:
Il s’agit bien des fichiers pour le logiciel base de données linux x86 64 bits

L’utilisation du mode silencieux s’appuie sur le fichier de réponse db_install.rsp disponible sous $DISTRIB/database/response. Celui-ci présente quelques modifications qui sont induites par les nouvelles fonctionnalités, voici celles repérées :

  • Plus de choix dans la sélection possible des options en cas de version Enterprise, les choix pour OLAP, Datamining, OLS, Partitionnement et RAT on disparus, ceci sera développé prochainement dans un épisode dédié de la série;
  • Définition du nom des groupes pour les privilèges BACKUPDBA, DGDBA et KMDBA, d’ou l’apparition de nouvelles variables dans la ligne de commande;
  • Configuration spécifique pour les base de données RAC avec la précision du choix de la configuration (ADMIN_MANAGED, POLICY_MANAGED) , le nom de la pool de serveur et la cardinalité dans le cas de la gestion POLICY_MANAGED , épisode “RAC Database 12c” ;
  • Changement pour les options de la base de données créée par défaut (oracle.install.db.*) :
    • La configuration avec l’option Multitenant , container ou PDB (pluggable Database), et le mot de passe associé (oracle.install.db.config.starterdb.password.PDBADMIN), dont vous pouvez déjà trouver des éléments dans d’autres séries de notre blog en français;
    • Le fait que la configuration ASMM ne soit plus celle par défaut; 
    • L’absence des schémas d’exemple et en fin la modification de la configuration des outils d’administration avec le remplacement de Database Control par Database Express et la modification de la manière de se connecter au Cloud Control.

Ce qui nous donne au final un script de création similaire mais cependant légèrement différent :

$ ./runInstaller -silent -ignoreSysPrereqs
> -ignorePrereq -responseFile $DISTRIB/response/ee_install.rsp
> oracle.install.option=INSTALL_DB_SWONLY UNIX_GROUP_NAME=oinstall
> SELECTED_LANGUAGES=en ORACLE_BASE=/u01/app/oracle
> ORACLE_HOME=/u01/app/oracle/product/12.1.0.1
> oracle.install.db.InstallEdition=EE
> oracle.install.db.DBA_GROUP=dba
> oracle.install.db.OPER_GROUP=dba
> oracle.install.db.BACKUPDBA_GROUP=dba
> oracle.install.db.DGDBA_GROUP=dba
> oracle.install.db.KMDBA_GROUP=dba
> DECLINE_SECURITY_UPDATES=true

L’inventaire étant déjà créé et configuré, il n’y a que le script pour les droits et propriétaire demandé sur l’ORACLE_HOME:

$ The installation of Oracle Database 12c was successful.
Please check 'silentInstall2013-06-28_09-10-54AM.log' for more details.
As a root user, execute the following script(s):
1. /u01/app/oracle/product/12.1.0.1/root.sh
Successfully Setup Software.

Moins d’informations sont présentes dans le fichier log et sur la fenêtre de lancement. Voici le contenu de celui-ci quand cela ce déroule bien :

silentInstall2013-06-28_09-10-54AM.log
The installation of Oracle Database 12c was successful.

Une fois le logiciel installé, nous pouvons créer la base de données 12c. Bien que l’objectif soit surtout d’étudier la mise à niveau des bases de données de versions précédentes vers la version 12c, nous allons d’abord valider que l’installation se déroule correctement en créant une base nommée ora121. Voici le contenu du script ayant servi à cette création :

#
# Creating the ora121 database using dbca in silent mode
#
export ORACLE_HOME=/u01/app/oracle/product/12.1.0.1
export PATH=$ORACLE_HOME/bin:$PATH
dbca -silent -responseFile NO_VALUE \
   -createDatabase -templateName General_Purpose.dbc \
   -createAsContainerDatabase false -gdbName ora121 \
   -sid ora121 -SysPassword easy_4U -SystemPassword easy_4U \
   -emConfiguration DBEXPRESS -dbsnmpPassword easy_4U \
   -storageType FS -datafileDestination /u01/app/oracle/oradata \
   -redoLogFileSize 200 -sampleSchema true -characterSet AL32UTF8 \
   -totalMemory 740

Noter les changements comme :

  • -createASContainerDatabase false,
  • -emConfiguration DBEXPRESS et la disparition du mot de passe pour le compte SYSMAN.

L’exécution du script ressemble à ce qui suit :

$ ./crdb_ora12.1.sh
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
60% complete
61% complete
62% complete
65% complete
Completing Database Creation
69% complete
73% complete
76% complete
88% complete
91% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/ora121/ora121.log" for further details.

Note
Pas d’erreur détectée dans le fichier de log, cependant, la base en 11.2 n’ayant pas été arrêtée préalablement nous avons constaté que le memory_target de 760M n’a pas pu être configuré. L’assistant s’est débrouillé et a décidé de passer en ASMM, permettant ainsi le bon déroulement de la création de la base. Il vaut mieux être certain d’avoir assez de mémoire à disposition pour les deux bases, ou n’en faire qu’une seule à la fois.

DBCA n’a pas créé le listener de la base 12c. Cette erreur est peut être dû à la présence d’une autre installation sur notre serveur, il faudrait le vérifier en partant d’une machine vierge. Pour le créer, nous avons utilisé l’assistant netca, en mode silencieux, avec au préalable une légère modification du fichier de réponse netca.rsp, en supprimant Oracle Names des possibilités de résolutions de nom :

NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}

Devenant :

NAMING_METHODS={"TNSNAMES","HOSTNAME"}

Dans l’environnement de notre base ora121 , la commande de création est alors  la suivante :

$ . oraenv
ORACLE_SID = [ora112] ? ora121
The Oracle base remains unchanged with value /u01/app/oracle
$ netca -silent -responsefile /home/oracle/netca.rsp
Parsing command line arguments:
Parameter "silent" = true
Parameter "responsefile" = /home/oracle/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/u01/app/oracle/product/12.1.0.1/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0

Nous avons maintenant sur notre serveur de test une base ora112 en version 11.2.0.3, une base de données ora121 en version 12.1.0.1 ainsi que les listeners et outils d’administration associés. Tout est prêt et en place pour l’épisode suivant “tâches de pré-mise à jour”, à venir rapidement…

1 réflexion sur “Voyage vers la base de données Oracle 12c – Episode 1”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *