Installer Oracle 11G et créer une base de données

Jaouad Zouaghi

Installer la dernière version du RDBMS d'Oracle: Oracle 11G et créer une base de données sur une plateforme Linux 32 Bits Fedora 7.

- Titre : Installer Oracle 11G et créer une base de données

- Auteur : Jaouad Zouaghi

- Parution : 1 janvier 2007

- Mise à jour : 18 avril 2020

- Licence : Copyright ® 2007-2010 . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Prérequis

- II. Installation

- III. Erreur Linux

- IV. Créer une base de données

- V. Remerciements

I - Prérequis

Vérifiez la mémoire (1Go nécessaire)

[oracle@dsiege103829 oracle]$ grep MemTotal /proc/meminfo
MemTotal: 1024364 kB

Déterminez la taille du Swap

grep SwapTotal /proc/meminfo
[oracle@dsiege103829 oracle]$ grep SwapTotal /proc/meminfo
SwapTotal: 1048568 kB

Déterminez la mémoire partagée

[oracle@dsiege103829 oracle]$ df -k /dev/shm/
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 512180 0 512180 0% /dev/shm

Déterminez l'espace disponible du TMP ( il faut environ 150Mo à 200Mo)

[oracle@dsiege103829 oracle]$ df -m /tmp
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/mapper/VGsys-tmpLV
992 36 906 4% /tmp

Vérifiez les packages d'installer

rpm -qa | grep package_name

Liste des packages nécessaires

compat-libstdc++-33.2.3-47.3
elfutils-libelf-0.97-5
elfutils-libelf-devel-0.97-5
glibc-2.3.9.4-2.19
glibc-common-2.3.9.4-2.19
glibc-devel-2.3.9.4-2.19
gcc-3.4.5-2
gcc-c++-3.4.5-2
libaio-devel-0.3.105-2
libaio-0.3.105-2
libgcc-3.4.5
libstdc++-3.4.5-2
libstdc++-devel-3.4.5-2
make-3.80-5
sysstat-5.0.5
unixODBC-2.2.11
unixODBC-devel-2.2.11

II - Installation

Dé zipper les fichiers et lancer l'installation:

[oracle@dsiege103829 database]$ unzip linux_11gR1_database.zip
(..)
[oracle@dsiege103829 database]$cd database
[oracle@dsiege103829 database]$ export DISPLAY=dsiege104855
[oracle@dsiege103829 database]$ ./runInstaller
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 80 MB. Actual 1392 MB Passed
Checking swap space: must be greater than 150 MB. Actual 1023 MB Passed
Checking monitor: must be configured to display at least 256 colors. Actual 16777216 Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2007-08-14_02-14-05PM. Please wait ..

Ecran de lancement :
Nous allons renseigner l'ORACLE_HOME, l'ORACLE_BASE (qui servira pour la variable diagnostic_dest le type d'installation et le groupe de l'utilisateur qui va installer le moteur).
On remarquera au passage qu'Oracle laisse tomber la couleur rouge dominante dans ces écrans pour un bleu plus discret

Premier écran de lancement :

Problème de création Orainventory

Il est possible de rencontrer une erreur de création de l'OraInventory:

En appuyant sur Ok on peut spécifier un autre emplacement pour l'OraInventory

Vérification des prérequis Systéme:

Aujourd'hui la 11G n'est disponible que pour Linux, cela n'incluant que certaines versions, malheureusement la version sur laquelle
nous effectuons l'installation n'est pas certifiée. Cependant il est possible d'effectuer une installation sur toutes les versions de Linux x86.

Il est possible de visualiser la matrice de certification avant de commencer l'installation:

Il est donc logique que la vérification échoue :

Summary:

Installation:

Link des sources :

Setting-Up :

Script à lancer sous le User Root :

Exécution du premier script :

Ici nous allons définir les droits sur l'installation

[oracle@dsiege103829 database]$ [root@dsiege103829 product]# ./orainstRoot.sh
Changing permissions of /opt/oracle/product/ to 770.
Changing groupname of /opt/oracle/product/ to dba.
The execution of the script is complete

Exécution du second script :

Ce script sert à définir les variables d'environnement et le fichier /etc/oratab

[root@dsiege103829 111]# ./root.sh
Running Oracle 11g root.sh script...

The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME=  /opt/oracle/product/111

Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...

Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.

Fin de l'installation :

Vérification des produits installés :

III - Erreur Linux

Il peut vous demander lors de la première connexion la librairie suivante :
$ORACLE_HOME/lib/stubs/libaio.so.1
Sur un système SELinux (Security Enhanced Linux) il faut ouvrir certaines permissions :

module oracle 1.0.0;
require {
type unconfined_t;
type file_t;
class file { read getattr execmod };
}<br/>
<br/>
#============= unconfined_t ==============
allow unconfined_t file_t:file {read getattr execmod };

2. Compiler, packager et installer ce module

checkmodule -M -m -o oracle.mod oracle.te
semodule_package -o oracle.pp -m oracle.mod
semodule -i oracle.pp

IV - Créer une base de données

Création du FS pour accueillir la base de données :

[root@dsiege103829 product]# vgs
VG    #PV #LV #SN Attr   VSize   VFree
VGsys   1   8   0 wz--n- 113.38G 86.88G
[root@dsiege103829 product]# lvcreate -L 40G -n oradataLV VGsys
Logical volume "oradataLV" created
[root@dsiege103829 product]# vgs
VG    #PV #LV #SN Attr   VSize   VFree
VGsys   1   9   0 wz--n- 113.38G 46.88G
[root@dsiege103829 product]# pvs
PV         VG    Fmt  Attr PSize   PFree
/dev/hda2  VGsys lvm2 a-   113.38G 46.88G
[root@dsiege103829 product]# mkfs -t ext3 /dev/VGsys/oradataLV
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
5242880 inodes, 10485760 blocks
524288 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
320 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@dsiege103829 product]# mkdir -p /oracle/data/
[root@dsiege103829 product]# vi /etc/fstab
[root@dsiege103829 product]# mount /oracle/data
[root@dsiege103829 product]# chown -R oracle:dba /oracle/data

[root@dsiege103829 product]# df -h /oracle/data
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VGsys-oradataLV
40G  177M   38G   1% /oracle/data
[root@dsiege103829 product]#

Création de l'instance :

SQL> startup nomount pfile=/oracle/admin/orcl/initorcl.ora
ORA-32006: BACKGROUND_DUMP_DEST initialization parameter has been deprecated
ORA-32006: USER_DUMP_DEST initialization parameter has been deprecated
ORACLE instance started.

Comme nous pouvons le remarquer, Oracle dans sa nouvelle version de base de données, c'est basé sur la gestion de l'arborescence
de la Flash recovery aréa pour supprimer les répertoires d'administration et laissé à Oracle le soin d'organiser cette structure.
Cela se fait automatiquement. En effet la variable chargée de déterminer le répertoire racine de cette installation est fixé par
DIAGNOSTIC_DEST qui prend par défaut la valeur de l'ORACLE_BASE.

En règle générale elle est initialisée à $ORACLE_BASE/ diag/rdbms/DATABASE_NAME/$ORACLE_SID/trace

SQL> show parameter diagnostic
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
diagnostic_dest                      string      /opt/oracle/product

Cependant ce paramètre peut être modifié soit en le renseignant lors de la création de l'instance via le pfile soit après la création de cette instance de manière dynamique :

SQL> alter system set diagnostic_dest='/oracle/admin/orcl' scope=both ;

System altered.

SQL> show parameter diag

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
diagnostic_dest                      string      /oracle/admin/orcl

Il va créer l'arborescence dans le répertoire spécifié :

[oracle@dsiege103829 orcl]$ pwd
/oracle/admin/orcl
[oracle@dsiege103829 orcl]$ ll
total 16
-rw-r--r-- 1 oracle oradba 1354 Aug 14 10:27 initorcl.ora
drwxr-sr-x 3 oracle dba    4096 Aug 14 11:12 diag

Création de la base de données :

create database orcl
user sys identified by *****
user system identified by *****
controlfile reuse
maxdatafiles 32
maxinstances 1
character set WE8ISO8859p15
national character set al16utf16
logfile
group 1 '/oracle/redo/orcl/log1.log' size 50M,
group 2 '/oracle/redo/orcl/log2.log' size 50M,
group 3 '/oracle/redo/orcl/log3.log' size 50M
maxlogfiles 8
maxlogmembers 2
noarchivelog
extent management local
datafile '/oracle/data/orcl/system_01.dbf' size 1 G reuse autoextend on maxsize 2 G
sysaux datafile '/oracle/data/orcl/sysaux_01.dbf' size 256 M reuse autoextend on maxsize 512 M
default tablespace USERS
datafile '/oracle/data/orcl/users_01.dbf'
size 256 M reuse autoextend on maxsize 1 G
extent management local autoallocate
default temporary tablespace TEMP
tempfile '/oracle/data/orcl/temp_01.dbf'
size 256 M reuse autoextend on maxsize 1 G
undo tablespace UNDOTBS
datafile '/oracle/data/orcl/undotbs_01.dbf'
size 256 M reuse autoextend on maxsize 1 G ;

Lors de la création de la base si nous observons le fichier de trace de la base, nous nous apercevons qu'Oracle exécute certains scripts :

processing ?/rdbms/admin/dfmap.bsq
processing ?/rdbms/admin/denv.bsq
processing ?/rdbms/admin/drac.bsq
processing ?/rdbms/admin/dsec.bsq
processing ?/rdbms/admin/doptim.bsq
processing ?/rdbms/admin/dobj.bsq
processing ?/rdbms/admin/djava.bsq
processing ?/rdbms/admin/dpart.bsq
processing ?/rdbms/admin/drep.bsq
processing ?/rdbms/admin/daw.bsq
processing ?/rdbms/admin/dsummgt.bsq
processing ?/rdbms/admin/dtools.bsq
processing ?/rdbms/admin/dexttab.bsq
processing ?/rdbms/admin/ddm.bsq
processing ?/rdbms/admin/dlmnr.bsq

Les packages créés lors du lancement des scripts :

- @?/rdbms/admin/catalog

- @?/rdbms/admin/catproc

- @?/rdbms/admin/catblock

- @?/rdbms/admin/utlxplan

- @?/sqlplus/admin/pupbld

- @?/xdk/admin/initxml

- @?/xdk/admin/xmlja

- @?/javavm/install/initjvm

- @?/rdbms/admin/catjava

- @?/rdbms/admin/catoctk

Certaines procédures ont wrappé :

Vérification de l'état de la base de données :

SQL> set linesize 250
SQL> col comp_name format a40
SQL> r
1* select comp_name , version, status from dba_registry

COMP_NAME                                VERSION                        STATUS
---------------------------------------- ------------------------------ -----------
Oracle Database Catalog Views            11.1.0.6.0                     VALID
Oracle Database Packages and Types       11.1.0.6.0                     VALID
Oracle XDK                               11.1.0.6.0                     VALID
JServer JAVA Virtual Machine             11.1.0.6.0                     VALID

4 rows selected.

Création du Spfile :

SQL> create spfile from pfile='/oracle/admin/orcl/initorcl.ora'
2  ;

File created.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  368263168 bytes
Fixed Size                  1299988 bytes
Variable Size             318769644 bytes
Database Buffers           29360128 bytes
Redo Buffers               18833408 bytes
Database mounted.
Database opened.
SQL> show parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /opt/oracle/product/111/dbs/sp
fileorcl.ora

Création et démarrage du listener :

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dsiege103829)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl)
)
)

Démarrage du LISTENER:

[oracle@dsiege103829 admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 14-AUG-2007 11:19:32

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

Starting /opt/oracle/product/111/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.1.0.6.0 - Production
System parameter file is /opt/oracle/product/111/network/admin/listener.ora
Log messages written to /opt/oracle/product/diag/tnslsnr/dsiege103829/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dsiege103829.brinks.fr)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dsiege103829)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.1.0.6.0 - Production
Start Date                14-AUG-2007 11:19:33
Uptime                    0 days 0 hr. 0 min. 1 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/111/network/admin/listener.ora
Listener Log File         /opt/oracle/product/diag/tnslsnr/dsiege103829/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dsiege103829.brinks.fr)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[oracle@dsiege103829 admin]$ ps -eaf | grep tns
oracle   16919     1  0 11:19 ?        00:00:00 /opt/oracle/product/111/bin/tnslsnr LISTENER -inherit
oracle   16927 16106  0 11:19 pts/3    00:00:00 grep tns
[oracle@dsiege103829 admin]$

On s'aperçoit que le fichier Log, en XML se sert également de l'ORACLE_BASE

Les background processes :

Oracle a introduit de nouveaux backgrounds process avec cette version de la 11 G :

oracle   16756     1  0 11:07 ?        00:00:00 ora_pmon_orcl
oracle   16758     1  0 11:07 ?        00:00:00 ora_vktm_orcl
oracle   16762     1  0 11:07 ?        00:00:00 ora_diag_orcl
oracle   16764     1  0 11:07 ?        00:00:00 ora_dbrm_orcl
oracle   16766     1  0 11:07 ?        00:00:00 ora_psp0_orcl
oracle   16770     1  0 11:07 ?        00:00:00 ora_dia0_orcl
oracle   16772     1  0 11:07 ?        00:00:00 ora_mman_orcl
oracle   16774     1  0 11:07 ?        00:00:00 ora_dbw0_orcl
oracle   16776     1  0 11:07 ?        00:00:00 ora_dbw1_orcl
oracle   16778     1  0 11:07 ?        00:00:00 ora_dbw2_orcl
oracle   16780     1  0 11:07 ?        00:00:00 ora_dbw3_orcl
oracle   16782     1  0 11:07 ?        00:00:00 ora_lgwr_orcl
oracle   16784     1  0 11:07 ?        00:00:00 ora_ckpt_orcl
oracle   16786     1  0 11:07 ?        00:00:00 ora_smon_orcl
oracle   16788     1  0 11:07 ?        00:00:00 ora_reco_orcl
oracle   16790     1  0 11:07 ?        00:00:00 ora_mmon_orcl
oracle   16792     1  0 11:07 ?        00:00:00 ora_mmnl_orcl
oracle   16794     1  0 11:08 ?        00:00:00 ora_p000_orcl
oracle   16796     1  0 11:08 ?        00:00:00 ora_p001_orcl
oracle   16798     1  0 11:08 ?        00:00:00 ora_p002_orcl
oracle   16800     1  0 11:08 ?        00:00:00 ora_p003_orcl
oracle   16808     1  0 11:08 ?        00:00:00 ora_fbda_orcl
oracle   16810     1  0 11:08 ?        00:00:00 ora_smco_orcl
oracle   16812     1  0 11:08 ?        00:00:00 ora_qmnc_orcl
oracle   16820     1  0 11:08 ?        00:00:00 ora_w000_orcl
oracle   16834     1  0 11:08 ?        00:00:00 ora_q000_orcl
oracle   16836     1  0 11:08 ?        00:00:00 ora_q001_orcl

La définition des processus dans la 11G est très bien détaillée dans la documentation Oracle :

DIA0    - Hang and dead lock resolution

DIAG    - Diagnostic dumps

DBRM    - Resource manager process

EMNC    - event monitor co-ordinator

VKTM    - Virtual time keeper

FBDA    - Flashback archive

GMON    - Disk membership in ASM

ACMS    - for RAC

KATE    - I/O to an ASM when disk offline

GTX0j    - Xa Global transaction in a RAC

PSP0    - Spawn a process

RMSn    - RAC management process

RMSN    - manage slave process in RAC

SMC0/
Wnnn    - Space management coordination process

Mot de passe Case - sensitive :

SQL> create user dvp identified by DVP ;

Utilisateur créé.

SQL> grant dba to dvp ;

Autorisation de privilèges (GRANT) acceptée.

SQL> conn dvp/dvp@orcl
ERROR:
ORA-01017: invalid username/password; logon denied

Attention : vous n'êtes plus connecté à ORACLE.
SQL> conn dvp/DVP@orcl
Connecté.

V - Remerciements

Je tiens à particulièrement remercier Hubert Quarantel- Colombani pour son expertise sur les systèmes ouverts et notamment Linux.