“create database” en 5 minutes et avec 1 paramètre
Comme beaucoup de DBA, j’imagine, j’ai mis à jour quelques-uns de mes scripts de 10g en 11g sans même y penser! Pourtant, avec chaque version, vient une multitude d’améliorations et Oracle continue de simplifier l’utilisation de sa base de données. La création manuelle d’une instance et d’une base de données n’échappent pas à cette règle et ce que vous faisiez en 10 lignes avec Oracle 10g, vous pouvez maintenant le faire en 11 lignes 5 lignes avec Oracle 11g. Vous trouverez ci-dessous, une série de commandes que j’ai épurée pour créer une base de données avec la syntaxe la plus ramassée possible. Bien sur, vous préfèrerez utiliser DBCA dans de nombreux cas… quoique!
En substance, les améliorations apportées par Oracle 11g sont les suivantes:
- Il est désormais obligatoire de positionnez la variable
ORACLE_BASE.oraenveffectue cette opération, ce qui évite d’alimenter tous les paramètres à labackground_dump_dest - Automatic Diagnostic Repository (ADR) remplace la foultitude de répertoires de trace et log d’Oracle 10g et il n’est plus nécessaire d’exécuter aucun
mkdir - Certains paramètres obligatoires en 10g ont maintenant des valeurs par défaut et notamment
processesetmemory_target - Vous pouvez utiliser la commande
create spfile from pfilesans qu’une instance soit démarrée (Correction: c’est aussi le cas en 10.2 et sans doute avant!)
Etape 1. Positionner l’environnement
Cette étape dépend du système d’exploitation; sous Windows, on utilisera oradim. Sous Unix et Linux on utilisera oratab et oraenv. Voici un exemple pour Linux (et AIX) qui positionne l’environnement pour une instance BLACK et un ORACLE_HOME de /u01/app/oracle/product/11.1.0/db_1 :
echo "BLACK:/u01/app/oracle/product/11.1.0/db_1:N" \
>> /etc/oratab
. oraenv
ORACLE_SID = [x] ? BLACK
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 is /u01/app/oracle
Etape 2. Créer un fichier spfile et un fichier de mode de passe
Si vous utilisez un fichier spfile, les paramètres sont mis à jour automatiquement par la commande CREATE DATABASE. Pour cette raison, commencez par créer un fichier init.ora comme ci-dessous et transformez le en spfile. Le seul paramètre qu’il est désormais obligatoire de positionner est db_name. Pour simplifier la création de la base de données, on utilisera OMF et db_create_file_dest définit la destination des fichiers OMF ; Vous préférerez utilisez sga_target plutot que memory_target si vous voulez utiliser les HugePages avec Linux :
cd $ORACLE_HOME/dbs cat >initBLACK.ora <<EOF db_name=BLACK db_create_file_dest=/u01/app/oracle/oradata EOF mkdir /u01/app/oracle/oradata/BLACK
Puis créez le SPFILE correspondant. Il est inutile de démarrer l’instance pour cela :
sqlplus / as sysdba create spfile from pfile; exit;
Enfin, créez un fichier de mots de passe :
orapwd file=orapwBLACK password=change_on_install
Etape 3. Créer votre base de données
Cette “dernière étape” est rapide et vous ne configurerez que le minimum :
sqlplus / as sysdba startup nomount ORACLE instance started. Total System Global Area 150667264 bytes Fixed Size 1311940 bytes Variable Size 92277564 bytes Database Buffers 50331648 bytes Redo Buffers 6746112 bytes create database extent management local; @?/rdbms/admin/catalog @?/rdbms/admin/catproc
Note
Si vous n’utilisez pas la clause “extend management local”, le tablespace SYSTEM sera “dictionary managed”.
Etape 4. Préparez votre base de données pour une vrai utilisation
Et voilà, vous avez créé une base de données en 5 minutes aussi, reste à :
- Valider les composants,
- Changer les mots de passe
- Installer les scripts pour vos outils comme SQL*Plus
- Passer en ARCHIVELOG et programmer des sauvegardes
- Installer votre infrastructure de supervision
col comp_name format a35 col version format a11 select COMP_NAME, VERSION from dba_registry;
COMP_NAME VERSION ----------------------------------- ----------- Oracle Database Catalog Views 11.1.0.7.0 Oracle Database Packages and Types 11.1.0.7.0 select USERNAME, ACCOUNT_STATUS from dba_users; USERNAME ACCOUNT_STATUS ------------------------------ -------------------------------- OUTLN OPEN SYS OPEN SYSTEM OPEN TSMSYS EXPIRED & LOCKED DIP EXPIRED & LOCKED ORACLE_OCM EXPIRED & LOCKED DBSNMP EXPIRED & LOCKED connect outln/outln Error accessing PRODUCT_USER_PROFILE Warning: Product user profile information not loaded! You may need to run PUPBLD.SQL as SYSTEM Connected. passwd connect / as sysdba shutdown immediate startup mount; alter database archivelog; alter database open exit; rman target / show all; backup database plus archivelog all delete input;
Vous voilà prêt à passer à la suite


Bonjour
Vous présentez comme une nouveauté 11g la possibilité de créer un spfile depuis un pfile sans que l’instance ne soit démarrée.
A vrai dire, cette possibilité (ainsi que l’opération symétrique) à toujours existé dès l’apparition du spfile en 9i.
Dans mes cours d’administration, je demande aux stagiaires de donner à un paramètre non dynamique (donc SCOPE=SPFILE) une valeur inadmissible, telle que SGA_MAX_SIZE=400 (sans unité), ce qui empêchera le démarrage de l’instance, afin justement d’illustrer la conversion entre pfile et spfile lorsque l’instance refuse de démarrer.
Richard,
En effet, merci!
Je pensais qu’il fallait une instance en 10.2 mais j’avais tord. J’ai corrigé l’article en laissant une référence à cette erreur pour que les gens comprennent ton commentaire.
Amicalement,
Grégory